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

Side by Side Diff: ash/common/wm/mru_window_tracker_unittest.cc

Issue 2736573002: chromeos: Move files in //ash/common to //ash, part 2 (Closed)
Patch Set: Created 3 years, 9 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
OLDNEW
(Empty)
1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "ash/common/wm/mru_window_tracker.h"
6
7 #include "ash/common/test/ash_test.h"
8 #include "ash/common/wm/window_state.h"
9 #include "ash/common/wm_shell.h"
10 #include "ash/common/wm_window.h"
11 #include "ash/public/cpp/shell_window_ids.h"
12 #include "ui/base/hit_test.h"
13
14 namespace ash {
15
16 class MruWindowTrackerTest : public AshTest {
17 public:
18 MruWindowTrackerTest() {}
19 ~MruWindowTrackerTest() override {}
20
21 std::unique_ptr<WindowOwner> CreateTestWindow() {
22 return AshTest::CreateTestWindow(gfx::Rect(0, 0, 400, 400));
23 }
24
25 MruWindowTracker* mru_window_tracker() {
26 return WmShell::Get()->mru_window_tracker();
27 }
28
29 private:
30 DISALLOW_COPY_AND_ASSIGN(MruWindowTrackerTest);
31 };
32
33 // Basic test that the activation order is tracked.
34 TEST_F(MruWindowTrackerTest, Basic) {
35 std::unique_ptr<WindowOwner> w1_owner(CreateTestWindow());
36 WmWindow* w1 = w1_owner->window();
37 std::unique_ptr<WindowOwner> w2_owner(CreateTestWindow());
38 WmWindow* w2 = w2_owner->window();
39 std::unique_ptr<WindowOwner> w3_owner(CreateTestWindow());
40 WmWindow* w3 = w3_owner->window();
41 w3->Activate();
42 w2->Activate();
43 w1->Activate();
44
45 WmWindow::Windows window_list = mru_window_tracker()->BuildMruWindowList();
46 ASSERT_EQ(3u, window_list.size());
47 EXPECT_EQ(w1, window_list[0]);
48 EXPECT_EQ(w2, window_list[1]);
49 EXPECT_EQ(w3, window_list[2]);
50 }
51
52 // Test that minimized windows are not treated specially.
53 TEST_F(MruWindowTrackerTest, MinimizedWindowsAreLru) {
54 // TODO(sky): fix me. Fails in mash because of http://crbug.com/654887.
55 if (WmShell::Get()->IsRunningInMash())
56 return;
57
58 std::unique_ptr<WindowOwner> w1_owner(CreateTestWindow());
59 WmWindow* w1 = w1_owner->window();
60 std::unique_ptr<WindowOwner> w2_owner(CreateTestWindow());
61 WmWindow* w2 = w2_owner->window();
62 std::unique_ptr<WindowOwner> w3_owner(CreateTestWindow());
63 WmWindow* w3 = w3_owner->window();
64 std::unique_ptr<WindowOwner> w4_owner(CreateTestWindow());
65 WmWindow* w4 = w4_owner->window();
66 std::unique_ptr<WindowOwner> w5_owner(CreateTestWindow());
67 WmWindow* w5 = w5_owner->window();
68 std::unique_ptr<WindowOwner> w6_owner(CreateTestWindow());
69 WmWindow* w6 = w6_owner->window();
70 w6->Activate();
71 w5->Activate();
72 w4->Activate();
73 w3->Activate();
74 w2->Activate();
75 w1->Activate();
76
77 w1->GetWindowState()->Minimize();
78 w4->GetWindowState()->Minimize();
79 w5->GetWindowState()->Minimize();
80
81 // By minimizing the first window, we activate w2 which will move it to the
82 // front of the MRU queue.
83 EXPECT_TRUE(w2->IsActive());
84
85 WmWindow::Windows window_list = mru_window_tracker()->BuildMruWindowList();
86 EXPECT_EQ(w2, window_list[0]);
87 EXPECT_EQ(w1, window_list[1]);
88 EXPECT_EQ(w3, window_list[2]);
89 EXPECT_EQ(w4, window_list[3]);
90 EXPECT_EQ(w5, window_list[4]);
91 EXPECT_EQ(w6, window_list[5]);
92 }
93
94 // Tests that windows being dragged are only in the WindowList once.
95 TEST_F(MruWindowTrackerTest, DraggedWindowsInListOnlyOnce) {
96 std::unique_ptr<WindowOwner> w1_owner(CreateTestWindow());
97 WmWindow* w1 = w1_owner->window();
98 w1->Activate();
99
100 // Start dragging the window.
101 w1->GetWindowState()->CreateDragDetails(
102 gfx::Point(), HTRIGHT, aura::client::WINDOW_MOVE_SOURCE_TOUCH);
103
104 // During a drag the window is reparented by the Docked container.
105 WmWindow* drag_container = w1->GetRootWindow()->GetChildByShellWindowId(
106 kShellWindowId_DockedContainer);
107 drag_container->AddChild(w1);
108 EXPECT_TRUE(w1->GetWindowState()->is_dragged());
109
110 // The dragged window should only be in the list once.
111 WmWindow::Windows window_list =
112 mru_window_tracker()->BuildWindowListIgnoreModal();
113 EXPECT_EQ(1, std::count(window_list.begin(), window_list.end(), w1));
114 }
115
116 } // namespace ash
OLDNEW
« no previous file with comments | « ash/common/wm/mru_window_tracker.cc ('k') | ash/common/wm/overview/cleanup_animation_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698