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

Side by Side Diff: ash/root_window_controller_unittest.cc

Issue 97013002: [Input View] Makes the input view window support window.resizeTo() and w3c visibility API its web c… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 7 years 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 | « no previous file | ash/shell/keyboard_controller_proxy_stub.h » ('j') | 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 "ash/root_window_controller.h" 5 #include "ash/root_window_controller.h"
6 6
7 #include "ash/session_state_delegate.h" 7 #include "ash/session_state_delegate.h"
8 #include "ash/shelf/shelf_layout_manager.h" 8 #include "ash/shelf/shelf_layout_manager.h"
9 #include "ash/shell.h" 9 #include "ash/shell.h"
10 #include "ash/shell_window_ids.h" 10 #include "ash/shell_window_ids.h"
11 #include "ash/system/tray/system_tray_delegate.h" 11 #include "ash/system/tray/system_tray_delegate.h"
12 #include "ash/test/ash_test_base.h" 12 #include "ash/test/ash_test_base.h"
13 #include "ash/wm/system_modal_container_layout_manager.h" 13 #include "ash/wm/system_modal_container_layout_manager.h"
14 #include "ash/wm/window_properties.h" 14 #include "ash/wm/window_properties.h"
15 #include "ash/wm/window_state.h" 15 #include "ash/wm/window_state.h"
16 #include "ash/wm/window_util.h" 16 #include "ash/wm/window_util.h"
17 #include "base/command_line.h" 17 #include "base/command_line.h"
18 #include "ui/aura/client/focus_change_observer.h" 18 #include "ui/aura/client/focus_change_observer.h"
19 #include "ui/aura/client/focus_client.h" 19 #include "ui/aura/client/focus_client.h"
20 #include "ui/aura/client/window_tree_client.h" 20 #include "ui/aura/client/window_tree_client.h"
21 #include "ui/aura/env.h" 21 #include "ui/aura/env.h"
22 #include "ui/aura/root_window.h" 22 #include "ui/aura/root_window.h"
23 #include "ui/aura/test/event_generator.h" 23 #include "ui/aura/test/event_generator.h"
24 #include "ui/aura/test/test_event_handler.h"
24 #include "ui/aura/test/test_window_delegate.h" 25 #include "ui/aura/test/test_window_delegate.h"
25 #include "ui/aura/test/test_windows.h" 26 #include "ui/aura/test/test_windows.h"
26 #include "ui/aura/window.h" 27 #include "ui/aura/window.h"
27 #include "ui/aura/window_tracker.h" 28 #include "ui/aura/window_tracker.h"
29 #include "ui/keyboard/keyboard_controller_proxy.h"
28 #include "ui/keyboard/keyboard_switches.h" 30 #include "ui/keyboard/keyboard_switches.h"
29 #include "ui/views/controls/menu/menu_controller.h" 31 #include "ui/views/controls/menu/menu_controller.h"
30 #include "ui/views/widget/widget.h" 32 #include "ui/views/widget/widget.h"
31 #include "ui/views/widget/widget_delegate.h" 33 #include "ui/views/widget/widget_delegate.h"
32 34
33 using aura::Window; 35 using aura::Window;
34 using views::Widget; 36 using views::Widget;
35 37
36 namespace ash { 38 namespace ash {
37 namespace { 39 namespace {
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 aura::Window* lost_focus) OVERRIDE { 80 aura::Window* lost_focus) OVERRIDE {
79 if (window_ == lost_focus) 81 if (window_ == lost_focus)
80 delete window_; 82 delete window_;
81 } 83 }
82 84
83 aura::Window* window_; 85 aura::Window* window_;
84 86
85 DISALLOW_COPY_AND_ASSIGN(DeleteOnBlurDelegate); 87 DISALLOW_COPY_AND_ASSIGN(DeleteOnBlurDelegate);
86 }; 88 };
87 89
88 class ClickTestWindow : public views::WidgetDelegateView {
89 public:
90 ClickTestWindow() : mouse_presses_(0) {}
91 virtual ~ClickTestWindow() {}
92
93 // Overridden from views::WidgetDelegate:
94 virtual views::View* GetContentsView() OVERRIDE {
95 return this;
96 }
97
98 aura::Window* CreateTestWindowWithParent(aura::Window* parent) {
99 DCHECK(parent);
100 views::Widget* widget = Widget::CreateWindowWithParent(this, parent);
101 return widget->GetNativeView();
102 }
103
104 // Overridden from views::View:
105 virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE {
106 mouse_presses_++;
107 return false;
108 }
109
110 int mouse_presses() const { return mouse_presses_; }
111
112 private:
113 int mouse_presses_;
114
115 DISALLOW_COPY_AND_ASSIGN(ClickTestWindow);
116 };
117
118 } // namespace 90 } // namespace
119 91
120 namespace test { 92 namespace test {
121 93
122 class RootWindowControllerTest : public test::AshTestBase { 94 class RootWindowControllerTest : public test::AshTestBase {
123 public: 95 public:
124 views::Widget* CreateTestWidget(const gfx::Rect& bounds) { 96 views::Widget* CreateTestWidget(const gfx::Rect& bounds) {
125 views::Widget* widget = views::Widget::CreateWindowWithContextAndBounds( 97 views::Widget* widget = views::Widget::CreateWindowWithContextAndBounds(
126 NULL, CurrentContext(), bounds); 98 NULL, CurrentContext(), bounds);
127 widget->Show(); 99 widget->Show();
(...skipping 511 matching lines...) Expand 10 before | Expand all | Expand 10 after
639 // Test for http://crbug.com/263599. Virtual keyboard should be able to receive 611 // Test for http://crbug.com/263599. Virtual keyboard should be able to receive
640 // events at blocked user session. 612 // events at blocked user session.
641 TEST_F(VirtualKeyboardRootWindowControllerTest, 613 TEST_F(VirtualKeyboardRootWindowControllerTest,
642 ClickVirtualKeyboardInBlockedWindow) { 614 ClickVirtualKeyboardInBlockedWindow) {
643 aura::Window* root_window = Shell::GetPrimaryRootWindow(); 615 aura::Window* root_window = Shell::GetPrimaryRootWindow();
644 aura::Window* keyboard_container = Shell::GetContainer(root_window, 616 aura::Window* keyboard_container = Shell::GetContainer(root_window,
645 internal::kShellWindowId_VirtualKeyboardContainer); 617 internal::kShellWindowId_VirtualKeyboardContainer);
646 ASSERT_TRUE(keyboard_container); 618 ASSERT_TRUE(keyboard_container);
647 keyboard_container->Show(); 619 keyboard_container->Show();
648 620
649 ClickTestWindow* main_delegate = new ClickTestWindow(); 621 aura::Window* keyboard_window = Shell::GetInstance()->keyboard_controller()->
650 scoped_ptr<aura::Window> keyboard_window( 622 proxy()->GetKeyboardWindow();
651 main_delegate->CreateTestWindowWithParent(keyboard_container)); 623 keyboard_container->AddChild(keyboard_window);
652 keyboard_container->layout_manager()->OnWindowResized(); 624 keyboard_window->SetBounds(gfx::Rect());
653 keyboard_window->Show(); 625 keyboard_window->Show();
654 aura::test::EventGenerator event_generator(root_window, 626
655 keyboard_window.get()); 627 aura::test::TestEventHandler* handler = new aura::test::TestEventHandler;
628 root_window->SetEventFilter(handler);
629
630 aura::test::EventGenerator event_generator(root_window, keyboard_window);
656 event_generator.ClickLeftButton(); 631 event_generator.ClickLeftButton();
657 int expected_mouse_presses = 1; 632 int expected_mouse_presses = 1;
658 EXPECT_EQ(expected_mouse_presses, main_delegate->mouse_presses()); 633 EXPECT_EQ(expected_mouse_presses, handler->num_mouse_events() / 2);
659 634
660 for (int block_reason = FIRST_BLOCK_REASON; 635 for (int block_reason = FIRST_BLOCK_REASON;
661 block_reason < NUMBER_OF_BLOCK_REASONS; 636 block_reason < NUMBER_OF_BLOCK_REASONS;
662 ++block_reason) { 637 ++block_reason) {
663 BlockUserSession(static_cast<UserSessionBlockReason>(block_reason)); 638 BlockUserSession(static_cast<UserSessionBlockReason>(block_reason));
664 event_generator.ClickLeftButton(); 639 event_generator.ClickLeftButton();
665 expected_mouse_presses++; 640 expected_mouse_presses++;
666 EXPECT_EQ(expected_mouse_presses, main_delegate->mouse_presses()); 641 EXPECT_EQ(expected_mouse_presses, handler->num_mouse_events() / 2);
667 UnblockUserSession(); 642 UnblockUserSession();
668 } 643 }
669 } 644 }
670 645
671 // Test for http://crbug.com/299787. RootWindowController should delete 646 // Test for http://crbug.com/299787. RootWindowController should delete
672 // the old container since the keyboard controller creates a new window in 647 // the old container since the keyboard controller creates a new window in
673 // GetWindowContainer(). 648 // GetWindowContainer().
674 TEST_F(VirtualKeyboardRootWindowControllerTest, 649 TEST_F(VirtualKeyboardRootWindowControllerTest,
675 DeleteOldContainerOnVirtualKeyboardInit) { 650 DeleteOldContainerOnVirtualKeyboardInit) {
676 aura::Window* root_window = ash::Shell::GetPrimaryRootWindow(); 651 aura::Window* root_window = ash::Shell::GetPrimaryRootWindow();
677 aura::Window* keyboard_container = Shell::GetContainer(root_window, 652 aura::Window* keyboard_container = Shell::GetContainer(root_window,
678 internal::kShellWindowId_VirtualKeyboardContainer); 653 internal::kShellWindowId_VirtualKeyboardContainer);
679 ASSERT_TRUE(keyboard_container); 654 ASSERT_TRUE(keyboard_container);
680 // Track the keyboard container window. 655 // Track the keyboard container window.
681 aura::WindowTracker tracker; 656 aura::WindowTracker tracker;
682 tracker.Add(keyboard_container); 657 tracker.Add(keyboard_container);
683 // Mock a login user profile change to reinitialize the keyboard. 658 // Mock a login user profile change to reinitialize the keyboard.
684 ash::Shell::GetInstance()->OnLoginUserProfilePrepared(); 659 ash::Shell::GetInstance()->OnLoginUserProfilePrepared();
685 // keyboard_container should no longer be present. 660 // keyboard_container should no longer be present.
686 EXPECT_FALSE(tracker.Contains(keyboard_container)); 661 EXPECT_FALSE(tracker.Contains(keyboard_container));
687 } 662 }
688 663
689 } // namespace test 664 } // namespace test
690 } // namespace ash 665 } // namespace ash
OLDNEW
« no previous file with comments | « no previous file | ash/shell/keyboard_controller_proxy_stub.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698