summaryrefslogtreecommitdiffstats
path: root/views
diff options
context:
space:
mode:
authorsky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-08 20:13:43 +0000
committersky@chromium.org <sky@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-07-08 20:13:43 +0000
commitf75589fc5f64d80fe68eef29d8641e8114422dab (patch)
treec285576fba572c1ef320955ae9eda697960ed71b /views
parent125b23418f58a984ed004144ecf0af44a5ab100f (diff)
downloadchromium_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.cc8
-rw-r--r--views/widget/root_view.cc4
-rw-r--r--views/widget/root_view.h1
-rw-r--r--views/widget/widget.cc4
-rw-r--r--views/widget/widget.h1
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;