diff options
Diffstat (limited to 'content/browser/frame_host')
4 files changed, 12 insertions, 9 deletions
diff --git a/content/browser/frame_host/interstitial_page_impl.cc b/content/browser/frame_host/interstitial_page_impl.cc index 4628c70..6899d42 100644 --- a/content/browser/frame_host/interstitial_page_impl.cc +++ b/content/browser/frame_host/interstitial_page_impl.cc @@ -581,7 +581,7 @@ WebContentsView* InterstitialPageImpl::CreateWebContentsView() { WebContentsView* wcv = static_cast<WebContentsImpl*>(web_contents())->GetView(); RenderWidgetHostViewBase* view = - wcv->CreateViewForWidget(render_view_host_); + wcv->CreateViewForWidget(render_view_host_, false); render_view_host_->SetView(view); render_view_host_->AllowBindings(BINDINGS_POLICY_DOM_AUTOMATION); diff --git a/content/browser/frame_host/render_widget_host_view_guest.cc b/content/browser/frame_host/render_widget_host_view_guest.cc index 546cba0..20782e8 100644 --- a/content/browser/frame_host/render_widget_host_view_guest.cc +++ b/content/browser/frame_host/render_widget_host_view_guest.cc @@ -46,7 +46,7 @@ blink::WebGestureEvent CreateFlingCancelEvent(double time_stamp) { RenderWidgetHostViewGuest::RenderWidgetHostViewGuest( RenderWidgetHost* widget_host, BrowserPluginGuest* guest, - RenderWidgetHostViewBase* platform_view) + base::WeakPtr<RenderWidgetHostViewBase> platform_view) : RenderWidgetHostViewChildFrame(widget_host), // |guest| is NULL during test. guest_(guest ? guest->AsWeakPtr() : base::WeakPtr<BrowserPluginGuest>()), @@ -177,7 +177,8 @@ void RenderWidgetHostViewGuest::Destroy() { // The RenderWidgetHost's destruction led here, so don't call it. DestroyGuestView(); - platform_view_->Destroy(); + if (platform_view_) // The platform view might have been destroyed already. + platform_view_->Destroy(); } gfx::Size RenderWidgetHostViewGuest::GetPhysicalBackingSize() const { @@ -419,7 +420,7 @@ void RenderWidgetHostViewGuest::ShowDefinitionForSelection() { // Vertical offset from guest's top to embedder's bottom edge. embedder_bounds.bottom() - guest_bounds.y()); - RenderWidgetHostViewMacDictionaryHelper helper(platform_view_); + RenderWidgetHostViewMacDictionaryHelper helper(platform_view_.get()); helper.SetTargetView(rwhv); helper.set_offset(guest_offset); helper.ShowDefinitionForSelection(); diff --git a/content/browser/frame_host/render_widget_host_view_guest.h b/content/browser/frame_host/render_widget_host_view_guest.h index 697d922..30edf5f 100644 --- a/content/browser/frame_host/render_widget_host_view_guest.h +++ b/content/browser/frame_host/render_widget_host_view_guest.h @@ -39,9 +39,10 @@ class CONTENT_EXPORT RenderWidgetHostViewGuest public ui::GestureConsumer, public ui::GestureEventHelper { public: - RenderWidgetHostViewGuest(RenderWidgetHost* widget, - BrowserPluginGuest* guest, - RenderWidgetHostViewBase* platform_view); + RenderWidgetHostViewGuest( + RenderWidgetHost* widget, + BrowserPluginGuest* guest, + base::WeakPtr<RenderWidgetHostViewBase> platform_view); virtual ~RenderWidgetHostViewGuest(); bool OnMessageReceivedFromEmbedder(const IPC::Message& message, @@ -176,7 +177,7 @@ class CONTENT_EXPORT RenderWidgetHostViewGuest // The platform view for this RenderWidgetHostView. // RenderWidgetHostViewGuest mostly only cares about stuff related to // compositing, the rest are directly forwared to this |platform_view_|. - RenderWidgetHostViewBase* platform_view_; + base::WeakPtr<RenderWidgetHostViewBase> platform_view_; #if defined(USE_AURA) scoped_ptr<ui::GestureRecognizer> gesture_recognizer_; #endif diff --git a/content/browser/frame_host/render_widget_host_view_guest_unittest.cc b/content/browser/frame_host/render_widget_host_view_guest_unittest.cc index 172be97..b658158 100644 --- a/content/browser/frame_host/render_widget_host_view_guest_unittest.cc +++ b/content/browser/frame_host/render_widget_host_view_guest_unittest.cc @@ -34,7 +34,8 @@ class RenderWidgetHostViewGuestTest : public testing::Test { widget_host_ = new RenderWidgetHostImpl( &delegate_, process_host, MSG_ROUTING_NONE, false); view_ = new RenderWidgetHostViewGuest( - widget_host_, NULL, new TestRenderWidgetHostView(widget_host_)); + widget_host_, NULL, + (new TestRenderWidgetHostView(widget_host_))->GetWeakPtr()); } virtual void TearDown() { |