Isolate the code using content::WebContentsImpl
This commit is contained in:
parent
a9cdd6614a
commit
2e94a730cc
4 changed files with 40 additions and 19 deletions
|
@ -55,7 +55,6 @@
|
||||||
#include "chrome/browser/ssl/security_state_tab_helper.h"
|
#include "chrome/browser/ssl/security_state_tab_helper.h"
|
||||||
#include "content/browser/renderer_host/render_widget_host_impl.h"
|
#include "content/browser/renderer_host/render_widget_host_impl.h"
|
||||||
#include "content/browser/renderer_host/render_widget_host_view_base.h"
|
#include "content/browser/renderer_host/render_widget_host_view_base.h"
|
||||||
#include "content/browser/web_contents/web_contents_impl.h"
|
|
||||||
#include "content/common/view_messages.h"
|
#include "content/common/view_messages.h"
|
||||||
#include "content/public/browser/child_process_security_policy.h"
|
#include "content/public/browser/child_process_security_policy.h"
|
||||||
#include "content/public/browser/favicon_status.h"
|
#include "content/public/browser/favicon_status.h"
|
||||||
|
@ -1727,9 +1726,7 @@ void WebContents::StartPainting() {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#if defined(ENABLE_OSR)
|
#if defined(ENABLE_OSR)
|
||||||
const auto* wc_impl =
|
auto* osr_wcv = GetOffScreenWebContentsView();
|
||||||
reinterpret_cast<content::WebContentsImpl*>(web_contents());
|
|
||||||
auto* osr_wcv = static_cast<OffScreenWebContentsView*>(wc_impl->GetView());
|
|
||||||
if (osr_wcv)
|
if (osr_wcv)
|
||||||
osr_wcv->SetPainting(true);
|
osr_wcv->SetPainting(true);
|
||||||
#endif
|
#endif
|
||||||
|
@ -1740,9 +1737,7 @@ void WebContents::StopPainting() {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#if defined(ENABLE_OSR)
|
#if defined(ENABLE_OSR)
|
||||||
const auto* wc_impl =
|
auto* osr_wcv = GetOffScreenWebContentsView();
|
||||||
reinterpret_cast<content::WebContentsImpl*>(web_contents());
|
|
||||||
auto* osr_wcv = static_cast<OffScreenWebContentsView*>(wc_impl->GetView());
|
|
||||||
if (osr_wcv)
|
if (osr_wcv)
|
||||||
osr_wcv->SetPainting(false);
|
osr_wcv->SetPainting(false);
|
||||||
#endif
|
#endif
|
||||||
|
@ -1753,10 +1748,7 @@ bool WebContents::IsPainting() const {
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
#if defined(ENABLE_OSR)
|
#if defined(ENABLE_OSR)
|
||||||
const auto* wc_impl =
|
auto* osr_wcv = GetOffScreenWebContentsView();
|
||||||
reinterpret_cast<content::WebContentsImpl*>(web_contents());
|
|
||||||
auto* osr_wcv = static_cast<OffScreenWebContentsView*>(wc_impl->GetView());
|
|
||||||
|
|
||||||
return osr_wcv && osr_wcv->IsPainting();
|
return osr_wcv && osr_wcv->IsPainting();
|
||||||
#else
|
#else
|
||||||
return false;
|
return false;
|
||||||
|
@ -1768,10 +1760,7 @@ void WebContents::SetFrameRate(int frame_rate) {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
#if defined(ENABLE_OSR)
|
#if defined(ENABLE_OSR)
|
||||||
const auto* wc_impl =
|
auto* osr_wcv = GetOffScreenWebContentsView();
|
||||||
reinterpret_cast<content::WebContentsImpl*>(web_contents());
|
|
||||||
auto* osr_wcv = static_cast<OffScreenWebContentsView*>(wc_impl->GetView());
|
|
||||||
|
|
||||||
if (osr_wcv)
|
if (osr_wcv)
|
||||||
osr_wcv->SetFrameRate(frame_rate);
|
osr_wcv->SetFrameRate(frame_rate);
|
||||||
#endif
|
#endif
|
||||||
|
@ -1782,10 +1771,7 @@ int WebContents::GetFrameRate() const {
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
#if defined(ENABLE_OSR)
|
#if defined(ENABLE_OSR)
|
||||||
const auto* wc_impl =
|
auto* osr_wcv = GetOffScreenWebContentsView();
|
||||||
reinterpret_cast<content::WebContentsImpl*>(web_contents());
|
|
||||||
auto* osr_wcv = static_cast<OffScreenWebContentsView*>(wc_impl->GetView());
|
|
||||||
|
|
||||||
return osr_wcv ? osr_wcv->GetFrameRate() : 0;
|
return osr_wcv ? osr_wcv->GetFrameRate() : 0;
|
||||||
#else
|
#else
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -48,6 +48,10 @@ class AtomJavaScriptDialogManager;
|
||||||
class WebContentsZoomController;
|
class WebContentsZoomController;
|
||||||
class WebViewGuestDelegate;
|
class WebViewGuestDelegate;
|
||||||
|
|
||||||
|
#if defined(ENABLE_OSR)
|
||||||
|
class OffScreenWebContentsView;
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace api {
|
namespace api {
|
||||||
|
|
||||||
// Certain events are only in WebContentsDelegate, provide our own Observer to
|
// Certain events are only in WebContentsDelegate, provide our own Observer to
|
||||||
|
@ -393,6 +397,10 @@ class WebContents : public mate::TrackableObject<WebContents>,
|
||||||
return ++request_id_;
|
return ++request_id_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if defined(ENABLE_OSR)
|
||||||
|
OffScreenWebContentsView* GetOffScreenWebContentsView() const;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Called when we receive a CursorChange message from chromium.
|
// Called when we receive a CursorChange message from chromium.
|
||||||
void OnCursorChange(const content::WebCursor& cursor);
|
void OnCursorChange(const content::WebCursor& cursor);
|
||||||
|
|
||||||
|
|
26
atom/browser/api/atom_api_web_contents_osr.cc
Normal file
26
atom/browser/api/atom_api_web_contents_osr.cc
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
// Copyright (c) 2018 GitHub, Inc.
|
||||||
|
// Use of this source code is governed by the MIT license that can be
|
||||||
|
// found in the LICENSE file.
|
||||||
|
|
||||||
|
#include "atom/browser/api/atom_api_web_contents.h"
|
||||||
|
|
||||||
|
#include "atom/browser/osr/osr_web_contents_view.h"
|
||||||
|
#include "content/browser/web_contents/web_contents_impl.h"
|
||||||
|
|
||||||
|
// Including both web_contents_impl.h and node.h would introduce a error, we
|
||||||
|
// have to isolate the usage of WebContentsImpl into a clean file to fix it:
|
||||||
|
// error C2371: 'ssize_t': redefinition; different basic types
|
||||||
|
|
||||||
|
namespace atom {
|
||||||
|
|
||||||
|
namespace api {
|
||||||
|
|
||||||
|
OffScreenWebContentsView* WebContents::GetOffScreenWebContentsView() const {
|
||||||
|
const auto* impl =
|
||||||
|
static_cast<const content::WebContentsImpl*>(web_contents());
|
||||||
|
return static_cast<OffScreenWebContentsView*>(impl->GetView());
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace api
|
||||||
|
|
||||||
|
} // namespace atom
|
|
@ -712,6 +712,7 @@
|
||||||
}], # OS=="win"
|
}], # OS=="win"
|
||||||
['enable_osr==1', {
|
['enable_osr==1', {
|
||||||
'lib_sources': [
|
'lib_sources': [
|
||||||
|
'atom/browser/api/atom_api_web_contents_osr.cc',
|
||||||
'atom/browser/osr/osr_web_contents_view_mac.mm',
|
'atom/browser/osr/osr_web_contents_view_mac.mm',
|
||||||
'atom/browser/osr/osr_web_contents_view.cc',
|
'atom/browser/osr/osr_web_contents_view.cc',
|
||||||
'atom/browser/osr/osr_web_contents_view.h',
|
'atom/browser/osr/osr_web_contents_view.h',
|
||||||
|
|
Loading…
Reference in a new issue