diff options
author | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-08 20:13:43 +0000 |
---|---|---|
committer | sky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-07-08 20:13:43 +0000 |
commit | f75589fc5f64d80fe68eef29d8641e8114422dab (patch) | |
tree | c285576fba572c1ef320955ae9eda697960ed71b /views | |
parent | 125b23418f58a984ed004144ecf0af44a5ab100f (diff) | |
download | chromium_src-f75589fc5f64d80fe68eef29d8641e8114422dab.zip chromium_src-f75589fc5f64d80fe68eef29d8641e8114422dab.tar.gz chromium_src-f75589fc5f64d80fe68eef29d8641e8114422dab.tar.bz2 |
Fixes crash in views desktop. The problem was
CreateRenderWidgetHostView would delete the old RenderWidgetHostView.
Also fixes compile error in views_unittests.
BUG=none
TEST=none
R=ben@chromium.org
Review URL: http://codereview.chromium.org/7329027
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@91888 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views')
-rw-r--r-- | views/view_unittest.cc | 8 | ||||
-rw-r--r-- | views/widget/root_view.cc | 4 | ||||
-rw-r--r-- | views/widget/root_view.h | 1 | ||||
-rw-r--r-- | views/widget/widget.cc | 4 | ||||
-rw-r--r-- | views/widget/widget.h | 1 |
5 files changed, 14 insertions, 4 deletions
diff --git a/views/view_unittest.cc b/views/view_unittest.cc index 6d96195..75c8e21 100644 --- a/views/view_unittest.cc +++ b/views/view_unittest.cc @@ -2605,17 +2605,17 @@ TEST_F(ViewLayerTest, ResetTransformOnLayerAfterAdd) { transform.SetScale(2.0f, 2.0f); view->SetTransform(transform); widget()->SetContentsView(view); - EXPECT_EQ(2.0f, view->GetTransform().matrix()[0]); + EXPECT_EQ(2.0f, view->GetTransform().matrix().get(0, 0)); ASSERT_TRUE(view->layer() != NULL); - EXPECT_EQ(2.0f, view->layer()->transform().matrix()[0]); + EXPECT_EQ(2.0f, view->layer()->transform().matrix().get(0, 0)); View* parent = view->parent(); parent->RemoveChildView(view); parent->AddChildView(view); - EXPECT_EQ(2.0f, view->GetTransform().matrix()[0]); + EXPECT_EQ(2.0f, view->GetTransform().matrix().get(0, 0)); ASSERT_TRUE(view->layer() != NULL); - EXPECT_EQ(2.0f, view->layer()->transform().matrix()[0]); + EXPECT_EQ(2.0f, view->layer()->transform().matrix().get(0, 0)); } // Makes sure that layer persists after toggling the visibility diff --git a/views/widget/root_view.cc b/views/widget/root_view.cc index b26aa9f..0e5ecce 100644 --- a/views/widget/root_view.cc +++ b/views/widget/root_view.cc @@ -70,6 +70,10 @@ void RootView::SetContentsView(View* contents_view) { Layout(); } +View* RootView::GetContentsView() { + return child_count() > 0 ? GetChildViewAt(0) : NULL; +} + void RootView::NotifyNativeViewHierarchyChanged(bool attached, gfx::NativeView native_view) { PropagateNativeViewHierarchyChanged(attached, native_view, this); diff --git a/views/widget/root_view.h b/views/widget/root_view.h index cbee30f..b33ecf5 100644 --- a/views/widget/root_view.h +++ b/views/widget/root_view.h @@ -56,6 +56,7 @@ class RootView : public View, // Sets the "contents view" of the RootView. This is the single child view // that is responsible for laying out the contents of the widget. void SetContentsView(View* contents_view); + View* GetContentsView(); // Called when parent of the host changed. void NotifyNativeViewHierarchyChanged(bool attached, diff --git a/views/widget/widget.cc b/views/widget/widget.cc index c640c39..d564abf 100644 --- a/views/widget/widget.cc +++ b/views/widget/widget.cc @@ -337,6 +337,10 @@ void Widget::SetContentsView(View* view) { root_view_->SetContentsView(view); } +View* Widget::GetContentsView() { + return root_view_->GetContentsView(); +} + gfx::Rect Widget::GetWindowScreenBounds() const { return native_widget_->GetWindowScreenBounds(); } diff --git a/views/widget/widget.h b/views/widget/widget.h index 2811cfd..c02cefc 100644 --- a/views/widget/widget.h +++ b/views/widget/widget.h @@ -245,6 +245,7 @@ class Widget : public internal::NativeWidgetDelegate, // fit the entire size of the RootView. The RootView takes ownership of this // View, unless it is set as not being parent-owned. void SetContentsView(View* view); + View* GetContentsView(); // Returns the bounds of the Widget in screen coordinates. gfx::Rect GetWindowScreenBounds() const; |