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

Side by Side Diff: components/mus/ws/server_window_drawn_tracker_unittest.cc

Issue 2119963002: Move mus to //services/ui (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 5 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 2015 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 "components/mus/ws/server_window_drawn_tracker.h"
6
7 #include <stddef.h>
8
9 #include "base/macros.h"
10 #include "components/mus/ws/server_window.h"
11 #include "components/mus/ws/server_window_drawn_tracker_observer.h"
12 #include "components/mus/ws/test_server_window_delegate.h"
13 #include "testing/gtest/include/gtest/gtest.h"
14
15 namespace mus {
16
17 namespace ws {
18 namespace {
19
20 class TestServerWindowDrawnTrackerObserver
21 : public ServerWindowDrawnTrackerObserver {
22 public:
23 TestServerWindowDrawnTrackerObserver()
24 : change_count_(0u),
25 ancestor_(nullptr),
26 window_(nullptr),
27 is_drawn_(false) {}
28
29 void clear_change_count() { change_count_ = 0u; }
30 size_t change_count() const { return change_count_; }
31 const ServerWindow* ancestor() const { return ancestor_; }
32 const ServerWindow* window() const { return window_; }
33 bool is_drawn() const { return is_drawn_; }
34
35 private:
36 // ServerWindowDrawnTrackerObserver:
37 void OnDrawnStateWillChange(ServerWindow* ancestor,
38 ServerWindow* window,
39 bool is_drawn) override {
40 change_count_++;
41 ancestor_ = ancestor;
42 window_ = window;
43 is_drawn_ = is_drawn;
44 }
45
46 void OnDrawnStateChanged(ServerWindow* ancestor,
47 ServerWindow* window,
48 bool is_drawn) override {
49 EXPECT_EQ(ancestor_, ancestor);
50 EXPECT_EQ(window_, window);
51 EXPECT_EQ(is_drawn_, is_drawn);
52 }
53
54 size_t change_count_;
55 const ServerWindow* ancestor_;
56 const ServerWindow* window_;
57 bool is_drawn_;
58
59 DISALLOW_COPY_AND_ASSIGN(TestServerWindowDrawnTrackerObserver);
60 };
61
62 } // namespace
63
64 TEST(ServerWindowDrawnTrackerTest, ChangeBecauseOfDeletionAndVisibility) {
65 TestServerWindowDelegate server_window_delegate;
66 std::unique_ptr<ServerWindow> window(
67 new ServerWindow(&server_window_delegate, WindowId()));
68 server_window_delegate.set_root_window(window.get());
69 TestServerWindowDrawnTrackerObserver drawn_observer;
70 ServerWindowDrawnTracker tracker(window.get(), &drawn_observer);
71 window->SetVisible(true);
72 EXPECT_EQ(1u, drawn_observer.change_count());
73 EXPECT_EQ(window.get(), drawn_observer.window());
74 EXPECT_EQ(nullptr, drawn_observer.ancestor());
75 EXPECT_TRUE(drawn_observer.is_drawn());
76 drawn_observer.clear_change_count();
77
78 window->SetVisible(false);
79 EXPECT_EQ(1u, drawn_observer.change_count());
80 EXPECT_EQ(window.get(), drawn_observer.window());
81 EXPECT_EQ(nullptr, drawn_observer.ancestor());
82 EXPECT_FALSE(drawn_observer.is_drawn());
83 drawn_observer.clear_change_count();
84
85 window->SetVisible(true);
86 EXPECT_EQ(1u, drawn_observer.change_count());
87 EXPECT_EQ(window.get(), drawn_observer.window());
88 EXPECT_EQ(nullptr, drawn_observer.ancestor());
89 EXPECT_TRUE(drawn_observer.is_drawn());
90 drawn_observer.clear_change_count();
91
92 ServerWindow* old_window = window.get();
93 window.reset();
94 EXPECT_EQ(1u, drawn_observer.change_count());
95 EXPECT_EQ(old_window, drawn_observer.window());
96 EXPECT_EQ(nullptr, drawn_observer.ancestor());
97 EXPECT_FALSE(drawn_observer.is_drawn());
98 }
99
100 TEST(ServerWindowDrawnTrackerTest, ChangeBecauseOfRemovingFromRoot) {
101 TestServerWindowDelegate server_window_delegate;
102 ServerWindow root(&server_window_delegate, WindowId());
103 server_window_delegate.set_root_window(&root);
104 root.SetVisible(true);
105 ServerWindow child(&server_window_delegate, WindowId());
106 child.SetVisible(true);
107 root.Add(&child);
108
109 TestServerWindowDrawnTrackerObserver drawn_observer;
110 ServerWindowDrawnTracker tracker(&child, &drawn_observer);
111 root.Remove(&child);
112 EXPECT_EQ(1u, drawn_observer.change_count());
113 EXPECT_EQ(&child, drawn_observer.window());
114 EXPECT_EQ(&root, drawn_observer.ancestor());
115 EXPECT_FALSE(drawn_observer.is_drawn());
116 drawn_observer.clear_change_count();
117
118 root.Add(&child);
119 EXPECT_EQ(1u, drawn_observer.change_count());
120 EXPECT_EQ(&child, drawn_observer.window());
121 EXPECT_EQ(nullptr, drawn_observer.ancestor());
122 EXPECT_TRUE(drawn_observer.is_drawn());
123 }
124
125 TEST(ServerWindowDrawnTrackerTest, ChangeBecauseOfRemovingAncestorFromRoot) {
126 TestServerWindowDelegate server_window_delegate;
127 ServerWindow root(&server_window_delegate, WindowId());
128 server_window_delegate.set_root_window(&root);
129 root.SetVisible(true);
130 ServerWindow child(&server_window_delegate, WindowId());
131 child.SetVisible(true);
132 root.Add(&child);
133
134 ServerWindow child_child(&server_window_delegate, WindowId());
135 child_child.SetVisible(true);
136 child.Add(&child_child);
137
138 TestServerWindowDrawnTrackerObserver drawn_observer;
139 ServerWindowDrawnTracker tracker(&child_child, &drawn_observer);
140 root.Remove(&child);
141 EXPECT_EQ(1u, drawn_observer.change_count());
142 EXPECT_EQ(&child_child, drawn_observer.window());
143 EXPECT_EQ(&root, drawn_observer.ancestor());
144 EXPECT_FALSE(drawn_observer.is_drawn());
145 drawn_observer.clear_change_count();
146
147 root.Add(&child_child);
148 EXPECT_EQ(1u, drawn_observer.change_count());
149 EXPECT_EQ(&child_child, drawn_observer.window());
150 EXPECT_EQ(nullptr, drawn_observer.ancestor());
151 EXPECT_TRUE(drawn_observer.is_drawn());
152 }
153
154 TEST(ServerWindowDrawnTrackerTest, VisibilityChangeFromNonParentAncestor) {
155 TestServerWindowDelegate server_window_delegate;
156 ServerWindow root(&server_window_delegate, WindowId());
157 ServerWindow child1(&server_window_delegate, WindowId());
158 ServerWindow child2(&server_window_delegate, WindowId());
159 ServerWindow child3(&server_window_delegate, WindowId());
160 server_window_delegate.set_root_window(&root);
161
162 root.Add(&child1);
163 child1.Add(&child2);
164 child2.Add(&child3);
165
166 root.SetVisible(true);
167 child1.SetVisible(false);
168 child2.SetVisible(false);
169 child3.SetVisible(true);
170
171 TestServerWindowDrawnTrackerObserver drawn_observer;
172 ServerWindowDrawnTracker tracker(&child3, &drawn_observer);
173
174 EXPECT_FALSE(child3.IsDrawn());
175
176 // Make |child1| visible. |child3| should still be not drawn, since |child2|
177 // is still invisible.
178 child1.SetVisible(true);
179 EXPECT_EQ(0u, drawn_observer.change_count());
180 EXPECT_EQ(nullptr, drawn_observer.window());
181 EXPECT_EQ(nullptr, drawn_observer.ancestor());
182 EXPECT_FALSE(drawn_observer.is_drawn());
183 EXPECT_FALSE(child3.IsDrawn());
184
185 child2.SetVisible(true);
186 EXPECT_EQ(1u, drawn_observer.change_count());
187 EXPECT_EQ(&child3, drawn_observer.window());
188 EXPECT_EQ(nullptr, drawn_observer.ancestor());
189 EXPECT_TRUE(drawn_observer.is_drawn());
190 EXPECT_TRUE(child3.IsDrawn());
191 }
192
193 TEST(ServerWindowDrawnTrackerTest, TreeHierarchyChangeFromNonParentAncestor) {
194 TestServerWindowDelegate server_window_delegate;
195 ServerWindow root(&server_window_delegate, WindowId());
196 ServerWindow child1(&server_window_delegate, WindowId());
197 ServerWindow child2(&server_window_delegate, WindowId());
198 ServerWindow child11(&server_window_delegate, WindowId());
199 ServerWindow child111(&server_window_delegate, WindowId());
200 server_window_delegate.set_root_window(&root);
201
202 root.Add(&child1);
203 root.Add(&child2);
204 child1.Add(&child11);
205 child11.Add(&child111);
206
207 root.SetVisible(true);
208 child1.SetVisible(false);
209 child2.SetVisible(true);
210 child11.SetVisible(false);
211 child111.SetVisible(true);
212
213 TestServerWindowDrawnTrackerObserver drawn_observer;
214 ServerWindowDrawnTracker tracker(&child111, &drawn_observer);
215 EXPECT_FALSE(child111.IsDrawn());
216
217 // Move |child11| as a child of |child2|. |child111| should remain not drawn.
218 child2.Add(&child11);
219 EXPECT_EQ(0u, drawn_observer.change_count());
220 EXPECT_EQ(nullptr, drawn_observer.window());
221 EXPECT_EQ(nullptr, drawn_observer.ancestor());
222 EXPECT_FALSE(drawn_observer.is_drawn());
223 EXPECT_FALSE(child111.IsDrawn());
224
225 child11.SetVisible(true);
226 EXPECT_EQ(1u, drawn_observer.change_count());
227 EXPECT_EQ(&child111, drawn_observer.window());
228 EXPECT_EQ(nullptr, drawn_observer.ancestor());
229 EXPECT_TRUE(drawn_observer.is_drawn());
230 EXPECT_TRUE(child111.IsDrawn());
231 }
232
233 } // namespace ws
234
235 } // namespace mus
OLDNEW
« no previous file with comments | « components/mus/ws/server_window_drawn_tracker_observer.h ('k') | components/mus/ws/server_window_observer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698