diff options
author | derat@chromium.org <derat@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-01 00:34:54 +0000 |
---|---|---|
committer | derat@chromium.org <derat@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-11-01 00:34:54 +0000 |
commit | 89f15ec58f62f57dcbd954361f32af7194481a45 (patch) | |
tree | 8e073bfc469ed67f3386041f865f90a3c46de609 /content | |
parent | 63c23932894ff9e154a8795ef674b1592f16d722 (diff) | |
download | chromium_src-89f15ec58f62f57dcbd954361f32af7194481a45.zip chromium_src-89f15ec58f62f57dcbd954361f32af7194481a45.tar.gz chromium_src-89f15ec58f62f57dcbd954361f32af7194481a45.tar.bz2 |
aura: Work around RenderWidgetHostTest.Background segfault.
This test was creating an aura::Window but not calling its
Init() method, resulting in a segfault when
RenderWidgetHostViewAura::SetBackground() tried to access
the window's layer.
I have a more ambitious change in progress to add a
RenderWidgetHostView::InitAsChild() method and update a
bunch of callers; this is just a quick workaround so try
bots will stop failing.
BUG=102450
TEST=manual: test no longer segfaults
Review URL: http://codereview.chromium.org/8432020
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@108048 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content')
3 files changed, 15 insertions, 5 deletions
diff --git a/content/browser/renderer_host/render_widget_host_unittest.cc b/content/browser/renderer_host/render_widget_host_unittest.cc index c38224f..9d7024f 100644 --- a/content/browser/renderer_host/render_widget_host_unittest.cc +++ b/content/browser/renderer_host/render_widget_host_unittest.cc @@ -21,6 +21,10 @@ #include "ui/base/keycodes/keyboard_codes.h" #include "ui/gfx/canvas_skia.h" +#if defined(USE_AURA) +#include "content/browser/renderer_host/render_widget_host_view_aura.h" +#endif + using base::TimeDelta; using content::BrowserThreadImpl; @@ -426,6 +430,10 @@ TEST_F(RenderWidgetHostTest, Background) { #if !defined(OS_MACOSX) scoped_ptr<RenderWidgetHostView> view( content::GetContentClient()->browser()->CreateViewForWidget(host_.get())); +#if defined(USE_AURA) + // TODO(derat): Call this on all platforms: http://crbug.com/102450. + static_cast<RenderWidgetHostViewAura*>(view.get())->InitAsChild(); +#endif host_->SetView(view.get()); // Create a checkerboard background to test with. 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 170d871..9cdd057 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura.cc +++ b/content/browser/renderer_host/render_widget_host_view_aura.cc @@ -91,7 +91,7 @@ RenderWidgetHostViewAura::RenderWidgetHostViewAura(RenderWidgetHost* host) RenderWidgetHostViewAura::~RenderWidgetHostViewAura() { } -void RenderWidgetHostViewAura::Init() { +void RenderWidgetHostViewAura::InitAsChild() { window_->Init(ui::Layer::LAYER_HAS_TEXTURE); } @@ -104,7 +104,7 @@ void RenderWidgetHostViewAura::InitAsPopup( popup_parent_host_view_ = static_cast<RenderWidgetHostViewAura*>(parent_host_view); window_->SetType(aura::WINDOW_TYPE_MENU); - Init(); + window_->Init(ui::Layer::LAYER_HAS_TEXTURE); window_->SetParent(NULL); Show(); @@ -113,9 +113,9 @@ void RenderWidgetHostViewAura::InitAsPopup( void RenderWidgetHostViewAura::InitAsFullscreen( RenderWidgetHostView* reference_host_view) { - window_->SetType(aura::WINDOW_TYPE_POPUP); is_fullscreen_ = true; - Init(); + window_->SetType(aura::WINDOW_TYPE_POPUP); + window_->Init(ui::Layer::LAYER_HAS_TEXTURE); window_->SetParent(NULL); window_->Fullscreen(); diff --git a/content/browser/renderer_host/render_widget_host_view_aura.h b/content/browser/renderer_host/render_widget_host_view_aura.h index 471ac0c6..5f7d9ce 100644 --- a/content/browser/renderer_host/render_widget_host_view_aura.h +++ b/content/browser/renderer_host/render_widget_host_view_aura.h @@ -30,7 +30,9 @@ class RenderWidgetHostViewAura : public RenderWidgetHostView, explicit RenderWidgetHostViewAura(RenderWidgetHost* host); virtual ~RenderWidgetHostViewAura(); - void Init(); + // TODO(derat): Add an abstract RenderWidgetHostView::InitAsChild() method and + // update callers: http://crbug.com/102450. + void InitAsChild(); // Overridden from RenderWidgetHostView: virtual void InitAsPopup(RenderWidgetHostView* parent_host_view, |