Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: ui/views/widget/native_widget_aura_unittest.cc

Issue 251733004: Set kCanMaximizeKey/kCanResizeKey before adding to parent. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: delete delegate Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « ui/views/widget/native_widget_aura.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/views/widget/native_widget_aura.h" 5 #include "ui/views/widget/native_widget_aura.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/message_loop/message_loop.h" 10 #include "base/message_loop/message_loop.h"
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
93 parent->SetBounds(gfx::Rect(20, 40, 480, 320)); 93 parent->SetBounds(gfx::Rect(20, 40, 480, 320));
94 scoped_ptr<Widget> widget(new Widget()); 94 scoped_ptr<Widget> widget(new Widget());
95 NativeWidgetAura* window = Init(parent.get(), widget.get()); 95 NativeWidgetAura* window = Init(parent.get(), widget.get());
96 window->CenterWindow(gfx::Size(500, 600)); 96 window->CenterWindow(gfx::Size(500, 600));
97 97
98 // |window| should be no bigger than |parent|. 98 // |window| should be no bigger than |parent|.
99 EXPECT_EQ("20,40 480x320", window->GetNativeWindow()->bounds().ToString()); 99 EXPECT_EQ("20,40 480x320", window->GetNativeWindow()->bounds().ToString());
100 widget->CloseNow(); 100 widget->CloseNow();
101 } 101 }
102 102
103 class TestLayoutManagerBase : public aura::LayoutManager {
104 public:
105 TestLayoutManagerBase() {}
106 virtual ~TestLayoutManagerBase() {}
107
108 // aura::LayoutManager:
109 virtual void OnWindowResized() OVERRIDE {}
110 virtual void OnWindowAddedToLayout(aura::Window* child) OVERRIDE {}
111 virtual void OnWillRemoveWindowFromLayout(aura::Window* child) OVERRIDE {}
112 virtual void OnWindowRemovedFromLayout(aura::Window* child) OVERRIDE {}
113 virtual void OnChildWindowVisibilityChanged(aura::Window* child,
114 bool visible) OVERRIDE {}
115 virtual void SetChildBounds(aura::Window* child,
116 const gfx::Rect& requested_bounds) OVERRIDE {}
117
118 private:
119 DISALLOW_COPY_AND_ASSIGN(TestLayoutManagerBase);
120 };
121
103 // Used by ShowMaximizedDoesntBounceAround. See it for details. 122 // Used by ShowMaximizedDoesntBounceAround. See it for details.
104 class TestLayoutManager : public aura::LayoutManager { 123 class MaximizeLayoutManager : public TestLayoutManagerBase {
105 public: 124 public:
106 TestLayoutManager() {} 125 MaximizeLayoutManager() {}
126 virtual ~MaximizeLayoutManager() {}
107 127
108 virtual void OnWindowResized() OVERRIDE { 128 private:
109 } 129 // aura::LayoutManager:
110 virtual void OnWindowAddedToLayout(aura::Window* child) OVERRIDE { 130 virtual void OnWindowAddedToLayout(aura::Window* child) OVERRIDE {
111 // This simulates what happens when adding a maximized window. 131 // This simulates what happens when adding a maximized window.
112 SetChildBoundsDirect(child, gfx::Rect(0, 0, 300, 300)); 132 SetChildBoundsDirect(child, gfx::Rect(0, 0, 300, 300));
113 } 133 }
114 virtual void OnWillRemoveWindowFromLayout(aura::Window* child) OVERRIDE {
115 }
116 virtual void OnWindowRemovedFromLayout(aura::Window* child) OVERRIDE {
117 }
118 virtual void OnChildWindowVisibilityChanged(aura::Window* child,
119 bool visible) OVERRIDE {
120 }
121 virtual void SetChildBounds(aura::Window* child,
122 const gfx::Rect& requested_bounds) OVERRIDE {
123 }
124 134
125 private: 135 DISALLOW_COPY_AND_ASSIGN(MaximizeLayoutManager);
126 DISALLOW_COPY_AND_ASSIGN(TestLayoutManager);
127 }; 136 };
128 137
129 // This simulates BrowserView, which creates a custom RootView so that 138 // This simulates BrowserView, which creates a custom RootView so that
130 // OnNativeWidgetSizeChanged that is invoked during Init matters. 139 // OnNativeWidgetSizeChanged that is invoked during Init matters.
131 class TestWidget : public views::Widget { 140 class TestWidget : public views::Widget {
132 public: 141 public:
133 TestWidget() : did_size_change_more_than_once_(false) { 142 TestWidget() : did_size_change_more_than_once_(false) {
134 } 143 }
135 144
136 // Returns true if the size changes to a non-empty size, and then to another 145 // Returns true if the size changes to a non-empty size, and then to another
(...skipping 16 matching lines...) Expand all
153 162
154 DISALLOW_COPY_AND_ASSIGN(TestWidget); 163 DISALLOW_COPY_AND_ASSIGN(TestWidget);
155 }; 164 };
156 165
157 // Verifies the size of the widget doesn't change more than once during Init if 166 // Verifies the size of the widget doesn't change more than once during Init if
158 // the window ends up maximized. This is important as otherwise 167 // the window ends up maximized. This is important as otherwise
159 // RenderWidgetHostViewAura ends up getting resized during construction, which 168 // RenderWidgetHostViewAura ends up getting resized during construction, which
160 // leads to noticable flashes. 169 // leads to noticable flashes.
161 TEST_F(NativeWidgetAuraTest, ShowMaximizedDoesntBounceAround) { 170 TEST_F(NativeWidgetAuraTest, ShowMaximizedDoesntBounceAround) {
162 root_window()->SetBounds(gfx::Rect(0, 0, 640, 480)); 171 root_window()->SetBounds(gfx::Rect(0, 0, 640, 480));
163 root_window()->SetLayoutManager(new TestLayoutManager); 172 root_window()->SetLayoutManager(new MaximizeLayoutManager);
164 scoped_ptr<TestWidget> widget(new TestWidget()); 173 scoped_ptr<TestWidget> widget(new TestWidget());
165 Widget::InitParams params(Widget::InitParams::TYPE_WINDOW); 174 Widget::InitParams params(Widget::InitParams::TYPE_WINDOW);
166 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; 175 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
167 params.parent = NULL; 176 params.parent = NULL;
168 params.context = root_window(); 177 params.context = root_window();
169 params.show_state = ui::SHOW_STATE_MAXIMIZED; 178 params.show_state = ui::SHOW_STATE_MAXIMIZED;
170 params.bounds = gfx::Rect(10, 10, 100, 200); 179 params.bounds = gfx::Rect(10, 10, 100, 200);
171 widget->Init(params); 180 widget->Init(params);
172 EXPECT_FALSE(widget->did_size_change_more_than_once()); 181 EXPECT_FALSE(widget->did_size_change_more_than_once());
173 widget->CloseNow(); 182 widget->CloseNow();
174 } 183 }
175 184
185 class PropertyTestLayoutManager : public TestLayoutManagerBase {
186 public:
187 PropertyTestLayoutManager() : added_(false) {}
188 virtual ~PropertyTestLayoutManager() {}
189
190 bool added() const { return added_; }
191
192 private:
193 // aura::LayoutManager:
194 virtual void OnWindowAddedToLayout(aura::Window* child) OVERRIDE {
195 EXPECT_TRUE(child->GetProperty(aura::client::kCanMaximizeKey));
196 EXPECT_TRUE(child->GetProperty(aura::client::kCanResizeKey));
197 added_ = true;
198 }
199
200 bool added_;
201
202 DISALLOW_COPY_AND_ASSIGN(PropertyTestLayoutManager);
203 };
204
205 class PropertyTestWidgetDelegate : public views::WidgetDelegate {
206 public:
207 explicit PropertyTestWidgetDelegate(Widget* widget) : widget_(widget) {}
208 virtual ~PropertyTestWidgetDelegate() {}
209
210 private:
211 // views::WidgetDelegate:
212 virtual bool CanMaximize() const OVERRIDE {
213 return true;
214 }
215 virtual bool CanResize() const OVERRIDE {
216 return true;
217 }
218 virtual void DeleteDelegate() OVERRIDE {
219 delete this;
220 }
221 virtual Widget* GetWidget() OVERRIDE {
222 return widget_;
223 }
224 virtual const Widget* GetWidget() const OVERRIDE {
225 return widget_;
226 }
227
228 Widget* widget_;
229 DISALLOW_COPY_AND_ASSIGN(PropertyTestWidgetDelegate);
230 };
231
232 // Verifies that the kCanMaximizeKey/kCanReizeKey have the correct
233 // value when added to the layout manager.
234 TEST_F(NativeWidgetAuraTest, TestPropertiesWhenAddedToLayout) {
235 root_window()->SetBounds(gfx::Rect(0, 0, 640, 480));
236 PropertyTestLayoutManager* layout_manager = new PropertyTestLayoutManager();
237 root_window()->SetLayoutManager(layout_manager);
238 scoped_ptr<TestWidget> widget(new TestWidget());
239 Widget::InitParams params(Widget::InitParams::TYPE_WINDOW);
240 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
241 params.delegate = new PropertyTestWidgetDelegate(widget.get());
242 params.parent = NULL;
243 params.context = root_window();
244 widget->Init(params);
245 EXPECT_TRUE(layout_manager->added());
246 widget->CloseNow();
247 }
248
176 TEST_F(NativeWidgetAuraTest, GetClientAreaScreenBounds) { 249 TEST_F(NativeWidgetAuraTest, GetClientAreaScreenBounds) {
177 // Create a widget. 250 // Create a widget.
178 Widget::InitParams params(Widget::InitParams::TYPE_WINDOW); 251 Widget::InitParams params(Widget::InitParams::TYPE_WINDOW);
179 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; 252 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
180 params.context = root_window(); 253 params.context = root_window();
181 params.bounds.SetRect(10, 20, 300, 400); 254 params.bounds.SetRect(10, 20, 300, 400);
182 scoped_ptr<Widget> widget(new Widget()); 255 scoped_ptr<Widget> widget(new Widget());
183 widget->Init(params); 256 widget->Init(params);
184 257
185 // For Aura, client area bounds match window bounds. 258 // For Aura, client area bounds match window bounds.
186 gfx::Rect client_bounds = widget->GetClientAreaBoundsInScreen(); 259 gfx::Rect client_bounds = widget->GetClientAreaBoundsInScreen();
187 EXPECT_EQ(10, client_bounds.x()); 260 EXPECT_EQ(10, client_bounds.x());
188 EXPECT_EQ(20, client_bounds.y()); 261 EXPECT_EQ(20, client_bounds.y());
189 EXPECT_EQ(300, client_bounds.width()); 262 EXPECT_EQ(300, client_bounds.width());
190 EXPECT_EQ(400, client_bounds.height()); 263 EXPECT_EQ(400, client_bounds.height());
191 } 264 }
192 265
193 namespace {
194
195 // View subclass that tracks whether it has gotten a gesture event. 266 // View subclass that tracks whether it has gotten a gesture event.
196 class GestureTrackingView : public views::View { 267 class GestureTrackingView : public views::View {
197 public: 268 public:
198 GestureTrackingView() 269 GestureTrackingView()
199 : got_gesture_event_(false), 270 : got_gesture_event_(false),
200 consume_gesture_event_(true) {} 271 consume_gesture_event_(true) {}
201 272
202 void set_consume_gesture_event(bool value) { 273 void set_consume_gesture_event(bool value) {
203 consume_gesture_event_ = value; 274 consume_gesture_event_ = value;
204 } 275 }
(...skipping 15 matching lines...) Expand all
220 private: 291 private:
221 // Was OnGestureEvent() invoked? 292 // Was OnGestureEvent() invoked?
222 bool got_gesture_event_; 293 bool got_gesture_event_;
223 294
224 // Dictates what OnGestureEvent() returns. 295 // Dictates what OnGestureEvent() returns.
225 bool consume_gesture_event_; 296 bool consume_gesture_event_;
226 297
227 DISALLOW_COPY_AND_ASSIGN(GestureTrackingView); 298 DISALLOW_COPY_AND_ASSIGN(GestureTrackingView);
228 }; 299 };
229 300
230 } // namespace
231
232 // Verifies a capture isn't set on touch press and that the view that gets 301 // Verifies a capture isn't set on touch press and that the view that gets
233 // the press gets the release. 302 // the press gets the release.
234 TEST_F(NativeWidgetAuraTest, DontCaptureOnGesture) { 303 TEST_F(NativeWidgetAuraTest, DontCaptureOnGesture) {
235 // Create two views (both sized the same). |child| is configured not to 304 // Create two views (both sized the same). |child| is configured not to
236 // consume the gesture event. 305 // consume the gesture event.
237 GestureTrackingView* view = new GestureTrackingView(); 306 GestureTrackingView* view = new GestureTrackingView();
238 GestureTrackingView* child = new GestureTrackingView(); 307 GestureTrackingView* child = new GestureTrackingView();
239 child->set_consume_gesture_event(false); 308 child->set_consume_gesture_event(false);
240 view->SetLayoutManager(new FillLayout); 309 view->SetLayoutManager(new FillLayout);
241 view->AddChildView(child); 310 view->AddChildView(child);
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 delegate->ClearGotMove(); 473 delegate->ClearGotMove();
405 // Simulate a maximize with animation. 474 // Simulate a maximize with animation.
406 delete widget->GetNativeView()->RecreateLayer().release(); 475 delete widget->GetNativeView()->RecreateLayer().release();
407 widget->SetBounds(gfx::Rect(0, 0, 500, 500)); 476 widget->SetBounds(gfx::Rect(0, 0, 500, 500));
408 EXPECT_TRUE(delegate->got_move()); 477 EXPECT_TRUE(delegate->got_move());
409 widget->CloseNow(); 478 widget->CloseNow();
410 } 479 }
411 480
412 } // namespace 481 } // namespace
413 } // namespace views 482 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/widget/native_widget_aura.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698