OLD | NEW |
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 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 | 49 |
50 private: | 50 private: |
51 DISALLOW_COPY_AND_ASSIGN(NativeWidgetAuraTest); | 51 DISALLOW_COPY_AND_ASSIGN(NativeWidgetAuraTest); |
52 }; | 52 }; |
53 | 53 |
54 TEST_F(NativeWidgetAuraTest, CenterWindowLargeParent) { | 54 TEST_F(NativeWidgetAuraTest, CenterWindowLargeParent) { |
55 // Make a parent window larger than the host represented by rootwindow. | 55 // Make a parent window larger than the host represented by rootwindow. |
56 scoped_ptr<aura::Window> parent(new aura::Window(NULL)); | 56 scoped_ptr<aura::Window> parent(new aura::Window(NULL)); |
57 parent->Init(aura::WINDOW_LAYER_NOT_DRAWN); | 57 parent->Init(aura::WINDOW_LAYER_NOT_DRAWN); |
58 parent->SetBounds(gfx::Rect(0, 0, 1024, 800)); | 58 parent->SetBounds(gfx::Rect(0, 0, 1024, 800)); |
59 scoped_ptr<Widget> widget(new Widget()); | 59 scoped_ptr<Widget> widget(new Widget()); |
60 NativeWidgetAura* window = Init(parent.get(), widget.get()); | 60 NativeWidgetAura* window = Init(parent.get(), widget.get()); |
61 | 61 |
62 window->CenterWindow(gfx::Size(100, 100)); | 62 window->CenterWindow(gfx::Size(100, 100)); |
63 EXPECT_EQ(gfx::Rect( (640 - 100) / 2, | 63 EXPECT_EQ(gfx::Rect( (640 - 100) / 2, |
64 (480 - 100) / 2, | 64 (480 - 100) / 2, |
65 100, 100), | 65 100, 100), |
66 window->GetNativeWindow()->bounds()); | 66 window->GetNativeWindow()->bounds()); |
67 widget->CloseNow(); | 67 widget->CloseNow(); |
68 } | 68 } |
69 | 69 |
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
362 parent->Init(aura::WINDOW_LAYER_NOT_DRAWN); | 362 parent->Init(aura::WINDOW_LAYER_NOT_DRAWN); |
363 parent->SetBounds(gfx::Rect(0, 0, 480, 320)); | 363 parent->SetBounds(gfx::Rect(0, 0, 480, 320)); |
364 scoped_ptr<Widget> widget(new Widget()); | 364 scoped_ptr<Widget> widget(new Widget()); |
365 NativeWidgetAura* window = Init(parent.get(), widget.get()); | 365 NativeWidgetAura* window = Init(parent.get(), widget.get()); |
366 window->Show(); | 366 window->Show(); |
367 window->Close(); | 367 window->Close(); |
368 base::MessageLoop::current()->RunUntilIdle(); | 368 base::MessageLoop::current()->RunUntilIdle(); |
369 widget->GetNativeTheme(); // Shouldn't crash. | 369 widget->GetNativeTheme(); // Shouldn't crash. |
370 } | 370 } |
371 | 371 |
| 372 // Used to track calls to WidgetDelegate::OnWidgetMove(). |
| 373 class MoveTestWidgetDelegate : public WidgetDelegateView { |
| 374 public: |
| 375 MoveTestWidgetDelegate() : got_move_(false) {} |
| 376 virtual ~MoveTestWidgetDelegate() {} |
| 377 |
| 378 void ClearGotMove() { got_move_ = false; } |
| 379 bool got_move() const { return got_move_; } |
| 380 |
| 381 // WidgetDelegate overrides: |
| 382 virtual void OnWidgetMove() OVERRIDE { got_move_ = true; } |
| 383 |
| 384 private: |
| 385 bool got_move_; |
| 386 |
| 387 DISALLOW_COPY_AND_ASSIGN(MoveTestWidgetDelegate); |
| 388 }; |
| 389 |
| 390 // This test simulates what happens when a window is normally maximized. That |
| 391 // is, it's layer is acquired for animation then the window is maximized. |
| 392 // Acquiring the layer resets the bounds of the window. This test verifies the |
| 393 // Widget is still notified correctly of a move in this case. |
| 394 TEST_F(NativeWidgetAuraTest, OnWidgetMovedInvokedAfterAcquireLayer) { |
| 395 // |delegate| deletes itself when the widget is destroyed. |
| 396 MoveTestWidgetDelegate* delegate = new MoveTestWidgetDelegate; |
| 397 Widget* widget = |
| 398 Widget::CreateWindowWithContextAndBounds(delegate, |
| 399 root_window(), |
| 400 gfx::Rect(10, 10, 100, 200)); |
| 401 widget->Show(); |
| 402 delegate->ClearGotMove(); |
| 403 // Simulate a maximize with animation. |
| 404 delete widget->GetNativeView()->RecreateLayer(); |
| 405 widget->SetBounds(gfx::Rect(0, 0, 500, 500)); |
| 406 EXPECT_TRUE(delegate->got_move()); |
| 407 widget->CloseNow(); |
| 408 } |
| 409 |
372 } // namespace | 410 } // namespace |
373 } // namespace views | 411 } // namespace views |
OLD | NEW |