diff options
author | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-08 09:05:28 +0000 |
---|---|---|
committer | oshima@chromium.org <oshima@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-08 09:05:28 +0000 |
commit | d068ad571907ca1298268cf87bbe6a5bc764279d (patch) | |
tree | 778b52edeafd30eb270f274c3a741e5038fc4dea /content | |
parent | 1033acdb0f7fc15dacaad6778c6a8ba73cd31e35 (diff) | |
download | chromium_src-d068ad571907ca1298268cf87bbe6a5bc764279d.zip chromium_src-d068ad571907ca1298268cf87bbe6a5bc764279d.tar.gz chromium_src-d068ad571907ca1298268cf87bbe6a5bc764279d.tar.bz2 |
Fix leaks in RenderWidgetHost(ViewAura)Test
* Use RWHV::Destroy to delete RWHV
* replace RWHV in host after current RWHV is deleted.
BUG=112798
TEST=bots reports no leak on these tests.
Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=120902
Review URL: https://chromiumcodereview.appspot.com/9360001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@120957 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
3 files changed, 12 insertions, 12 deletions
diff --git a/content/browser/renderer_host/render_widget_host_unittest.cc b/content/browser/renderer_host/render_widget_host_unittest.cc index a279c88..ef87f2b 100644 --- a/content/browser/renderer_host/render_widget_host_unittest.cc +++ b/content/browser/renderer_host/render_widget_host_unittest.cc @@ -428,13 +428,10 @@ TEST_F(RenderWidgetHostTest, ResizeThenCrash) { // Tests setting custom background TEST_F(RenderWidgetHostTest, Background) { #if !defined(OS_MACOSX) - scoped_ptr<RenderWidgetHostView> view( - RenderWidgetHostView::CreateViewForWidget(host_.get())); -#if defined(USE_AURA) - // TODO(derat): Call this on all platforms: http://crbug.com/102450. - static_cast<RenderWidgetHostViewAura*>(view.get())->InitAsChild(NULL); -#endif - host_->SetView(view.get()); + RenderWidgetHostView* view = + RenderWidgetHostView::CreateViewForWidget(host_.get()); + view->InitAsChild(NULL); + host_->SetView(view); // Create a checkerboard background to test with. gfx::CanvasSkia canvas(gfx::Size(4, 4), true); @@ -472,6 +469,7 @@ TEST_F(RenderWidgetHostTest, Background) { // renderer -- if not, then maybe the test doesn't apply?). #endif + view->Destroy(); #else // TODO(port): Mac does not have gfx::Canvas. Maybe we can just change this // test to use SkCanvas directly? diff --git a/content/browser/renderer_host/render_widget_host_view_aura.cc b/content/browser/renderer_host/render_widget_host_view_aura.cc index e75a137..2ad87f7 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura.cc +++ b/content/browser/renderer_host/render_widget_host_view_aura.cc @@ -341,6 +341,7 @@ void RenderWidgetHostViewAura::RenderViewGone(base::TerminationStatus status, void RenderWidgetHostViewAura::Destroy() { delete window_; + window_ = NULL; } void RenderWidgetHostViewAura::SetTooltipText(const string16& tooltip_text) { diff --git a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc index fab353d..491f92f 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc +++ b/content/browser/renderer_host/render_widget_host_view_aura_unittest.cc @@ -21,22 +21,23 @@ class RenderWidgetHostViewAuraTest : public RenderViewHostTestHarness { virtual void SetUp() { RenderViewHostTestHarness::SetUp(); old_rwhv_ = rvh()->view(); - rwhv_aura_.reset(static_cast<RenderWidgetHostViewAura*>( - RenderWidgetHostView::CreateViewForWidget(rvh()))); + rwhv_aura_ = static_cast<RenderWidgetHostViewAura*>( + RenderWidgetHostView::CreateViewForWidget(rvh())); } virtual void TearDown() { aura::Window* window = rwhv_aura_->GetNativeView(); if (window->parent()) window->parent()->RemoveChild(window); - + rwhv_aura_->Destroy(); + // Destroying RWHV sets the host's view to NULL, so destroying view first, + // then set the view. rvh()->SetView(old_rwhv_); - rwhv_aura_.reset(); RenderViewHostTestHarness::TearDown(); } protected: - scoped_ptr<RenderWidgetHostViewAura> rwhv_aura_; + RenderWidgetHostViewAura* rwhv_aura_; private: RenderWidgetHostView* old_rwhv_; |