diff --git a/atom/browser/native_window_mac.h b/atom/browser/native_window_mac.h index af0f157ecaef..69bf3afef65a 100644 --- a/atom/browser/native_window_mac.h +++ b/atom/browser/native_window_mac.h @@ -89,6 +89,7 @@ class NativeWindowMac : public NativeWindow, void SetContentProtection(bool enable) override; void SetBrowserView(NativeBrowserView* browser_view) override; void SetParentWindow(NativeWindow* parent) override; + gfx::NativeView GetNativeView() override; gfx::NativeWindow GetNativeWindow() override; gfx::AcceleratedWidget GetAcceleratedWidget() override; void SetProgressBar(double progress, const ProgressState state) override; diff --git a/atom/browser/native_window_mac.mm b/atom/browser/native_window_mac.mm index 330d48226dc4..755e46c4f326 100644 --- a/atom/browser/native_window_mac.mm +++ b/atom/browser/native_window_mac.mm @@ -1314,6 +1314,10 @@ void NativeWindowMac::SetParentWindow(NativeWindow* parent) { [parent->GetNativeWindow() addChildWindow:window_ ordered:NSWindowAbove]; } +gfx::NativeView NativeWindowMac::GetNativeView() { + return inspectable_web_contents()->GetView()->GetNativeView(); +} + gfx::NativeWindow NativeWindowMac::GetNativeWindow() { return window_; } diff --git a/atom/browser/osr/osr_render_widget_host_view.cc b/atom/browser/osr/osr_render_widget_host_view.cc index 7d370fbed651..22cbd7a15c58 100644 --- a/atom/browser/osr/osr_render_widget_host_view.cc +++ b/atom/browser/osr/osr_render_widget_host_view.cc @@ -415,13 +415,13 @@ OffScreenRenderWidgetHostView::OffScreenRenderWidgetHostView( frame_rate_threshold_ms_(0), last_time_(base::Time::Now()), scale_factor_(kDefaultScaleFactor), + size_(native_window->GetSize()), painting_(true), is_showing_(!render_widget_host_->is_hidden()), is_destroyed_(false), popup_position_(gfx::Rect()), hold_resize_(false), pending_resize_(false), - size_(native_window->GetSize()), weak_ptr_factory_(this) { DCHECK(render_widget_host_); #if !defined(OS_MACOSX) @@ -839,6 +839,30 @@ gfx::Size OffScreenRenderWidgetHostView::GetRequestedRendererSize() const { return GetDelegatedFrameHost()->GetRequestedRendererSize(); } +content::RenderWidgetHostViewBase* + OffScreenRenderWidgetHostView::CreateViewForWidget( + content::RenderWidgetHost* render_widget_host, + content::RenderWidgetHost* embedder_render_widget_host, + content::WebContentsView* web_contents_view) { + if (render_widget_host->GetView()) { + return static_cast( + render_widget_host->GetView()); + } + + OffScreenRenderWidgetHostView* embedder_host_view = nullptr; + if (embedder_render_widget_host) { + embedder_host_view = static_cast( + embedder_render_widget_host->GetView()); + } + + return new OffScreenRenderWidgetHostView( + transparent_, + callback_, + render_widget_host, + embedder_host_view, + native_window_); +} + #if !defined(OS_MACOSX) ui::Layer* OffScreenRenderWidgetHostView::DelegatedFrameHostGetLayer() const { return const_cast(root_layer_.get()); diff --git a/atom/browser/osr/osr_render_widget_host_view.h b/atom/browser/osr/osr_render_widget_host_view.h index f1d6a0066dc6..0c2ece40ad39 100644 --- a/atom/browser/osr/osr_render_widget_host_view.h +++ b/atom/browser/osr/osr_render_widget_host_view.h @@ -26,6 +26,7 @@ #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/resize_lock.h" +#include "content/browser/web_contents/web_contents_view.h" #include "third_party/skia/include/core/SkBitmap.h" #include "third_party/WebKit/public/platform/WebVector.h" #include "ui/base/ime/text_input_client.h" @@ -152,6 +153,11 @@ class OffScreenRenderWidgetHostView gfx::Size GetPhysicalBackingSize() const override; gfx::Size GetRequestedRendererSize() const override; + content::RenderWidgetHostViewBase* CreateViewForWidget( + content::RenderWidgetHost*, + content::RenderWidgetHost*, + content::WebContentsView*) override; + #if !defined(OS_MACOSX) // content::DelegatedFrameHostClient: int DelegatedFrameHostGetGpuMemoryBufferClientId(void) const; diff --git a/atom/browser/osr/osr_web_contents_view.cc b/atom/browser/osr/osr_web_contents_view.cc index 38dbbe00440d..303a73ec5ac0 100644 --- a/atom/browser/osr/osr_web_contents_view.cc +++ b/atom/browser/osr/osr_web_contents_view.cc @@ -105,30 +105,6 @@ content::RenderWidgetHostViewBase* relay->window.get()); } -content::RenderWidgetHostViewBase* - OffScreenWebContentsView::CreateViewForWidget( - content::RenderWidgetHost* render_widget_host, - content::RenderWidgetHost* embedder_render_widget_host) { - if (render_widget_host->GetView()) { - return static_cast( - render_widget_host->GetView()); - } - - OffScreenRenderWidgetHostView* embedder_host_view = nullptr; - if (embedder_render_widget_host) { - embedder_host_view = static_cast( - embedder_render_widget_host->GetView()); - } - - auto relay = NativeWindowRelay::FromWebContents(web_contents_); - return new OffScreenRenderWidgetHostView( - transparent_, - callback_, - render_widget_host, - embedder_host_view, - relay->window.get()); -} - content::RenderWidgetHostViewBase* OffScreenWebContentsView::CreateViewForPopupWidget( content::RenderWidgetHost* render_widget_host) { diff --git a/atom/browser/osr/osr_web_contents_view.h b/atom/browser/osr/osr_web_contents_view.h index 57aee80d91f9..ffb3b38619c4 100644 --- a/atom/browser/osr/osr_web_contents_view.h +++ b/atom/browser/osr/osr_web_contents_view.h @@ -45,9 +45,6 @@ class OffScreenWebContentsView : public content::WebContentsView, content::RenderWidgetHostViewBase* CreateViewForWidget( content::RenderWidgetHost* render_widget_host, bool is_guest_view_hack) override; - content::RenderWidgetHostViewBase* CreateViewForWidget( - content::RenderWidgetHost* render_widget_host, - content::RenderWidgetHost* embedder_render_widget_host) override; content::RenderWidgetHostViewBase* CreateViewForPopupWidget( content::RenderWidgetHost* render_widget_host) override; void SetPageTitle(const base::string16& title) override;