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

Side by Side Diff: mojo/services/public/cpp/view_manager/tests/node_unittest.cc

Issue 338093008: Client side name cleanup (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 6 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "mojo/services/public/cpp/view_manager/view_tree_node.h" 5 #include "mojo/services/public/cpp/view_manager/node.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/strings/stringprintf.h" 8 #include "base/strings/stringprintf.h"
9 #include "mojo/services/public/cpp/view_manager/lib/view_tree_node_private.h" 9 #include "mojo/services/public/cpp/view_manager/lib/node_private.h"
10 #include "mojo/services/public/cpp/view_manager/node_observer.h"
10 #include "mojo/services/public/cpp/view_manager/util.h" 11 #include "mojo/services/public/cpp/view_manager/util.h"
11 #include "mojo/services/public/cpp/view_manager/view_tree_node_observer.h"
12 #include "testing/gtest/include/gtest/gtest.h" 12 #include "testing/gtest/include/gtest/gtest.h"
13 13
14 namespace mojo { 14 namespace mojo {
15 namespace view_manager { 15 namespace view_manager {
16 16
17 // ViewTreeNode ---------------------------------------------------------------- 17 // Node ------------------------------------------------------------------------
18 18
19 typedef testing::Test ViewTreeNodeTest; 19 typedef testing::Test NodeTest;
20 20
21 // Subclass with public ctor/dtor. 21 // Subclass with public ctor/dtor.
22 class TestViewTreeNode : public ViewTreeNode { 22 class TestNode : public Node {
23 public: 23 public:
24 TestViewTreeNode() { 24 TestNode() {
25 ViewTreeNodePrivate(this).set_id(1); 25 NodePrivate(this).set_id(1);
26 } 26 }
27 ~TestViewTreeNode() {} 27 ~TestNode() {}
28 28
29 private: 29 private:
30 DISALLOW_COPY_AND_ASSIGN(TestViewTreeNode); 30 DISALLOW_COPY_AND_ASSIGN(TestNode);
31 }; 31 };
32 32
33 TEST_F(ViewTreeNodeTest, AddChild) { 33 TEST_F(NodeTest, AddChild) {
34 TestViewTreeNode v1; 34 TestNode v1;
35 TestViewTreeNode v11; 35 TestNode v11;
36 v1.AddChild(&v11); 36 v1.AddChild(&v11);
37 EXPECT_EQ(1U, v1.children().size()); 37 EXPECT_EQ(1U, v1.children().size());
38 } 38 }
39 39
40 TEST_F(ViewTreeNodeTest, RemoveChild) { 40 TEST_F(NodeTest, RemoveChild) {
41 TestViewTreeNode v1; 41 TestNode v1;
42 TestViewTreeNode v11; 42 TestNode v11;
43 v1.AddChild(&v11); 43 v1.AddChild(&v11);
44 EXPECT_EQ(1U, v1.children().size()); 44 EXPECT_EQ(1U, v1.children().size());
45 v1.RemoveChild(&v11); 45 v1.RemoveChild(&v11);
46 EXPECT_EQ(0U, v1.children().size()); 46 EXPECT_EQ(0U, v1.children().size());
47 } 47 }
48 48
49 TEST_F(ViewTreeNodeTest, Reparent) { 49 TEST_F(NodeTest, Reparent) {
50 TestViewTreeNode v1; 50 TestNode v1;
51 TestViewTreeNode v2; 51 TestNode v2;
52 TestViewTreeNode v11; 52 TestNode v11;
53 v1.AddChild(&v11); 53 v1.AddChild(&v11);
54 EXPECT_EQ(1U, v1.children().size()); 54 EXPECT_EQ(1U, v1.children().size());
55 v2.AddChild(&v11); 55 v2.AddChild(&v11);
56 EXPECT_EQ(1U, v2.children().size()); 56 EXPECT_EQ(1U, v2.children().size());
57 EXPECT_EQ(0U, v1.children().size()); 57 EXPECT_EQ(0U, v1.children().size());
58 } 58 }
59 59
60 TEST_F(ViewTreeNodeTest, Contains) { 60 TEST_F(NodeTest, Contains) {
61 TestViewTreeNode v1; 61 TestNode v1;
62 62
63 // Direct descendant. 63 // Direct descendant.
64 TestViewTreeNode v11; 64 TestNode v11;
65 v1.AddChild(&v11); 65 v1.AddChild(&v11);
66 EXPECT_TRUE(v1.Contains(&v11)); 66 EXPECT_TRUE(v1.Contains(&v11));
67 67
68 // Indirect descendant. 68 // Indirect descendant.
69 TestViewTreeNode v111; 69 TestNode v111;
70 v11.AddChild(&v111); 70 v11.AddChild(&v111);
71 EXPECT_TRUE(v1.Contains(&v111)); 71 EXPECT_TRUE(v1.Contains(&v111));
72 } 72 }
73 73
74 TEST_F(ViewTreeNodeTest, GetChildById) { 74 TEST_F(NodeTest, GetChildById) {
75 TestViewTreeNode v1; 75 TestNode v1;
76 ViewTreeNodePrivate(&v1).set_id(1); 76 NodePrivate(&v1).set_id(1);
77 TestViewTreeNode v11; 77 TestNode v11;
78 ViewTreeNodePrivate(&v11).set_id(11); 78 NodePrivate(&v11).set_id(11);
79 v1.AddChild(&v11); 79 v1.AddChild(&v11);
80 TestViewTreeNode v111; 80 TestNode v111;
81 ViewTreeNodePrivate(&v111).set_id(111); 81 NodePrivate(&v111).set_id(111);
82 v11.AddChild(&v111); 82 v11.AddChild(&v111);
83 83
84 // Find direct & indirect descendents. 84 // Find direct & indirect descendents.
85 EXPECT_EQ(&v11, v1.GetChildById(v11.id())); 85 EXPECT_EQ(&v11, v1.GetChildById(v11.id()));
86 EXPECT_EQ(&v111, v1.GetChildById(v111.id())); 86 EXPECT_EQ(&v111, v1.GetChildById(v111.id()));
87 } 87 }
88 88
89 // ViewTreeNodeObserver -------------------------------------------------------- 89 // NodeObserver --------------------------------------------------------
90 90
91 typedef testing::Test ViewTreeNodeObserverTest; 91 typedef testing::Test NodeObserverTest;
92 92
93 bool TreeChangeParamsMatch(const ViewTreeNodeObserver::TreeChangeParams& lhs, 93 bool TreeChangeParamsMatch(const NodeObserver::TreeChangeParams& lhs,
94 const ViewTreeNodeObserver::TreeChangeParams& rhs) { 94 const NodeObserver::TreeChangeParams& rhs) {
95 return lhs.target == rhs.target && lhs.old_parent == rhs.old_parent && 95 return lhs.target == rhs.target && lhs.old_parent == rhs.old_parent &&
96 lhs.new_parent == rhs.new_parent && lhs.receiver == rhs.receiver && 96 lhs.new_parent == rhs.new_parent && lhs.receiver == rhs.receiver &&
97 lhs.phase == rhs.phase; 97 lhs.phase == rhs.phase;
98 } 98 }
99 99
100 class TreeChangeObserver : public ViewTreeNodeObserver { 100 class TreeChangeObserver : public NodeObserver {
101 public: 101 public:
102 explicit TreeChangeObserver(ViewTreeNode* observee) : observee_(observee) { 102 explicit TreeChangeObserver(Node* observee) : observee_(observee) {
103 observee_->AddObserver(this); 103 observee_->AddObserver(this);
104 } 104 }
105 virtual ~TreeChangeObserver() { 105 virtual ~TreeChangeObserver() {
106 observee_->RemoveObserver(this); 106 observee_->RemoveObserver(this);
107 } 107 }
108 108
109 void Reset() { 109 void Reset() {
110 received_params_.clear(); 110 received_params_.clear();
111 } 111 }
112 112
113 const std::vector<TreeChangeParams>& received_params() { 113 const std::vector<TreeChangeParams>& received_params() {
114 return received_params_; 114 return received_params_;
115 } 115 }
116 116
117 private: 117 private:
118 // Overridden from ViewTreeNodeObserver: 118 // Overridden from NodeObserver:
119 virtual void OnTreeChange(const TreeChangeParams& params) OVERRIDE { 119 virtual void OnTreeChange(const TreeChangeParams& params) OVERRIDE {
120 received_params_.push_back(params); 120 received_params_.push_back(params);
121 } 121 }
122 122
123 ViewTreeNode* observee_; 123 Node* observee_;
124 std::vector<TreeChangeParams> received_params_; 124 std::vector<TreeChangeParams> received_params_;
125 125
126 DISALLOW_COPY_AND_ASSIGN(TreeChangeObserver); 126 DISALLOW_COPY_AND_ASSIGN(TreeChangeObserver);
127 }; 127 };
128 128
129 // Adds/Removes v11 to v1. 129 // Adds/Removes v11 to v1.
130 TEST_F(ViewTreeNodeObserverTest, TreeChange_SimpleAddRemove) { 130 TEST_F(NodeObserverTest, TreeChange_SimpleAddRemove) {
131 TestViewTreeNode v1; 131 TestNode v1;
132 TreeChangeObserver o1(&v1); 132 TreeChangeObserver o1(&v1);
133 EXPECT_TRUE(o1.received_params().empty()); 133 EXPECT_TRUE(o1.received_params().empty());
134 134
135 TestViewTreeNode v11; 135 TestNode v11;
136 TreeChangeObserver o11(&v11); 136 TreeChangeObserver o11(&v11);
137 EXPECT_TRUE(o11.received_params().empty()); 137 EXPECT_TRUE(o11.received_params().empty());
138 138
139 // Add. 139 // Add.
140 140
141 v1.AddChild(&v11); 141 v1.AddChild(&v11);
142 142
143 EXPECT_EQ(2U, o1.received_params().size()); 143 EXPECT_EQ(2U, o1.received_params().size());
144 ViewTreeNodeObserver::TreeChangeParams p1; 144 NodeObserver::TreeChangeParams p1;
145 p1.target = &v11; 145 p1.target = &v11;
146 p1.receiver = &v1; 146 p1.receiver = &v1;
147 p1.old_parent = NULL; 147 p1.old_parent = NULL;
148 p1.new_parent = &v1; 148 p1.new_parent = &v1;
149 p1.phase = ViewTreeNodeObserver::DISPOSITION_CHANGED; 149 p1.phase = NodeObserver::DISPOSITION_CHANGED;
150 EXPECT_TRUE(TreeChangeParamsMatch(p1, o1.received_params().back())); 150 EXPECT_TRUE(TreeChangeParamsMatch(p1, o1.received_params().back()));
151 151
152 EXPECT_EQ(2U, o11.received_params().size()); 152 EXPECT_EQ(2U, o11.received_params().size());
153 ViewTreeNodeObserver::TreeChangeParams p11 = p1; 153 NodeObserver::TreeChangeParams p11 = p1;
154 p11.receiver = &v11; 154 p11.receiver = &v11;
155 p11.phase = ViewTreeNodeObserver::DISPOSITION_CHANGING; 155 p11.phase = NodeObserver::DISPOSITION_CHANGING;
156 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().front())); 156 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().front()));
157 p11.phase = ViewTreeNodeObserver::DISPOSITION_CHANGED; 157 p11.phase = NodeObserver::DISPOSITION_CHANGED;
158 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().back())); 158 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().back()));
159 159
160 o1.Reset(); 160 o1.Reset();
161 o11.Reset(); 161 o11.Reset();
162 EXPECT_TRUE(o1.received_params().empty()); 162 EXPECT_TRUE(o1.received_params().empty());
163 EXPECT_TRUE(o11.received_params().empty()); 163 EXPECT_TRUE(o11.received_params().empty());
164 164
165 // Remove. 165 // Remove.
166 166
167 v1.RemoveChild(&v11); 167 v1.RemoveChild(&v11);
168 168
169 EXPECT_EQ(2U, o1.received_params().size()); 169 EXPECT_EQ(2U, o1.received_params().size());
170 p1.target = &v11; 170 p1.target = &v11;
171 p1.receiver = &v1; 171 p1.receiver = &v1;
172 p1.old_parent = &v1; 172 p1.old_parent = &v1;
173 p1.new_parent = NULL; 173 p1.new_parent = NULL;
174 p1.phase = ViewTreeNodeObserver::DISPOSITION_CHANGING; 174 p1.phase = NodeObserver::DISPOSITION_CHANGING;
175 EXPECT_TRUE(TreeChangeParamsMatch(p1, o1.received_params().front())); 175 EXPECT_TRUE(TreeChangeParamsMatch(p1, o1.received_params().front()));
176 176
177 EXPECT_EQ(2U, o11.received_params().size()); 177 EXPECT_EQ(2U, o11.received_params().size());
178 p11 = p1; 178 p11 = p1;
179 p11.receiver = &v11; 179 p11.receiver = &v11;
180 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().front())); 180 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().front()));
181 p11.phase = ViewTreeNodeObserver::DISPOSITION_CHANGED; 181 p11.phase = NodeObserver::DISPOSITION_CHANGED;
182 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().back())); 182 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().back()));
183 } 183 }
184 184
185 // Creates these two trees: 185 // Creates these two trees:
186 // v1 186 // v1
187 // +- v11 187 // +- v11
188 // v111 188 // v111
189 // +- v1111 189 // +- v1111
190 // +- v1112 190 // +- v1112
191 // Then adds/removes v111 from v11. 191 // Then adds/removes v111 from v11.
192 TEST_F(ViewTreeNodeObserverTest, TreeChange_NestedAddRemove) { 192 TEST_F(NodeObserverTest, TreeChange_NestedAddRemove) {
193 TestViewTreeNode v1, v11, v111, v1111, v1112; 193 TestNode v1, v11, v111, v1111, v1112;
194 194
195 // Root tree. 195 // Root tree.
196 v1.AddChild(&v11); 196 v1.AddChild(&v11);
197 197
198 // Tree to be attached. 198 // Tree to be attached.
199 v111.AddChild(&v1111); 199 v111.AddChild(&v1111);
200 v111.AddChild(&v1112); 200 v111.AddChild(&v1112);
201 201
202 TreeChangeObserver o1(&v1), o11(&v11), o111(&v111), o1111(&v1111), 202 TreeChangeObserver o1(&v1), o11(&v11), o111(&v111), o1111(&v1111),
203 o1112(&v1112); 203 o1112(&v1112);
204 ViewTreeNodeObserver::TreeChangeParams p1, p11, p111, p1111, p1112; 204 NodeObserver::TreeChangeParams p1, p11, p111, p1111, p1112;
205 205
206 // Add. 206 // Add.
207 207
208 v11.AddChild(&v111); 208 v11.AddChild(&v111);
209 209
210 EXPECT_EQ(2U, o1.received_params().size()); 210 EXPECT_EQ(2U, o1.received_params().size());
211 p1.target = &v111; 211 p1.target = &v111;
212 p1.receiver = &v1; 212 p1.receiver = &v1;
213 p1.old_parent = NULL; 213 p1.old_parent = NULL;
214 p1.new_parent = &v11; 214 p1.new_parent = &v11;
215 p1.phase = ViewTreeNodeObserver::DISPOSITION_CHANGED; 215 p1.phase = NodeObserver::DISPOSITION_CHANGED;
216 EXPECT_TRUE(TreeChangeParamsMatch(p1, o1.received_params().back())); 216 EXPECT_TRUE(TreeChangeParamsMatch(p1, o1.received_params().back()));
217 217
218 EXPECT_EQ(2U, o11.received_params().size()); 218 EXPECT_EQ(2U, o11.received_params().size());
219 p11 = p1; 219 p11 = p1;
220 p11.receiver = &v11; 220 p11.receiver = &v11;
221 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().back())); 221 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().back()));
222 222
223 EXPECT_EQ(2U, o111.received_params().size()); 223 EXPECT_EQ(2U, o111.received_params().size());
224 p111 = p11; 224 p111 = p11;
225 p111.receiver = &v111; 225 p111.receiver = &v111;
226 p111.phase = ViewTreeNodeObserver::DISPOSITION_CHANGING; 226 p111.phase = NodeObserver::DISPOSITION_CHANGING;
227 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().front())); 227 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().front()));
228 p111.phase = ViewTreeNodeObserver::DISPOSITION_CHANGED; 228 p111.phase = NodeObserver::DISPOSITION_CHANGED;
229 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().back())); 229 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().back()));
230 230
231 EXPECT_EQ(2U, o1111.received_params().size()); 231 EXPECT_EQ(2U, o1111.received_params().size());
232 p1111 = p111; 232 p1111 = p111;
233 p1111.receiver = &v1111; 233 p1111.receiver = &v1111;
234 p1111.phase = ViewTreeNodeObserver::DISPOSITION_CHANGING; 234 p1111.phase = NodeObserver::DISPOSITION_CHANGING;
235 EXPECT_TRUE(TreeChangeParamsMatch(p1111, o1111.received_params().front())); 235 EXPECT_TRUE(TreeChangeParamsMatch(p1111, o1111.received_params().front()));
236 p1111.phase = ViewTreeNodeObserver::DISPOSITION_CHANGED; 236 p1111.phase = NodeObserver::DISPOSITION_CHANGED;
237 EXPECT_TRUE(TreeChangeParamsMatch(p1111, o1111.received_params().back())); 237 EXPECT_TRUE(TreeChangeParamsMatch(p1111, o1111.received_params().back()));
238 238
239 EXPECT_EQ(2U, o1112.received_params().size()); 239 EXPECT_EQ(2U, o1112.received_params().size());
240 p1112 = p111; 240 p1112 = p111;
241 p1112.receiver = &v1112; 241 p1112.receiver = &v1112;
242 p1112.phase = ViewTreeNodeObserver::DISPOSITION_CHANGING; 242 p1112.phase = NodeObserver::DISPOSITION_CHANGING;
243 EXPECT_TRUE(TreeChangeParamsMatch(p1112, o1112.received_params().front())); 243 EXPECT_TRUE(TreeChangeParamsMatch(p1112, o1112.received_params().front()));
244 p1112.phase = ViewTreeNodeObserver::DISPOSITION_CHANGED; 244 p1112.phase = NodeObserver::DISPOSITION_CHANGED;
245 EXPECT_TRUE(TreeChangeParamsMatch(p1112, o1112.received_params().back())); 245 EXPECT_TRUE(TreeChangeParamsMatch(p1112, o1112.received_params().back()));
246 246
247 // Remove. 247 // Remove.
248 o1.Reset(); 248 o1.Reset();
249 o11.Reset(); 249 o11.Reset();
250 o111.Reset(); 250 o111.Reset();
251 o1111.Reset(); 251 o1111.Reset();
252 o1112.Reset(); 252 o1112.Reset();
253 EXPECT_TRUE(o1.received_params().empty()); 253 EXPECT_TRUE(o1.received_params().empty());
254 EXPECT_TRUE(o11.received_params().empty()); 254 EXPECT_TRUE(o11.received_params().empty());
255 EXPECT_TRUE(o111.received_params().empty()); 255 EXPECT_TRUE(o111.received_params().empty());
256 EXPECT_TRUE(o1111.received_params().empty()); 256 EXPECT_TRUE(o1111.received_params().empty());
257 EXPECT_TRUE(o1112.received_params().empty()); 257 EXPECT_TRUE(o1112.received_params().empty());
258 258
259 v11.RemoveChild(&v111); 259 v11.RemoveChild(&v111);
260 260
261 EXPECT_EQ(2U, o1.received_params().size()); 261 EXPECT_EQ(2U, o1.received_params().size());
262 p1.target = &v111; 262 p1.target = &v111;
263 p1.receiver = &v1; 263 p1.receiver = &v1;
264 p1.old_parent = &v11; 264 p1.old_parent = &v11;
265 p1.new_parent = NULL; 265 p1.new_parent = NULL;
266 p1.phase = ViewTreeNodeObserver::DISPOSITION_CHANGING; 266 p1.phase = NodeObserver::DISPOSITION_CHANGING;
267 EXPECT_TRUE(TreeChangeParamsMatch(p1, o1.received_params().front())); 267 EXPECT_TRUE(TreeChangeParamsMatch(p1, o1.received_params().front()));
268 268
269 EXPECT_EQ(2U, o11.received_params().size()); 269 EXPECT_EQ(2U, o11.received_params().size());
270 p11 = p1; 270 p11 = p1;
271 p11.receiver = &v11; 271 p11.receiver = &v11;
272 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().front())); 272 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().front()));
273 273
274 EXPECT_EQ(2U, o111.received_params().size()); 274 EXPECT_EQ(2U, o111.received_params().size());
275 p111 = p11; 275 p111 = p11;
276 p111.receiver = &v111; 276 p111.receiver = &v111;
277 p111.phase = ViewTreeNodeObserver::DISPOSITION_CHANGING; 277 p111.phase = NodeObserver::DISPOSITION_CHANGING;
278 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().front())); 278 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().front()));
279 p111.phase = ViewTreeNodeObserver::DISPOSITION_CHANGED; 279 p111.phase = NodeObserver::DISPOSITION_CHANGED;
280 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().back())); 280 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().back()));
281 281
282 EXPECT_EQ(2U, o1111.received_params().size()); 282 EXPECT_EQ(2U, o1111.received_params().size());
283 p1111 = p111; 283 p1111 = p111;
284 p1111.receiver = &v1111; 284 p1111.receiver = &v1111;
285 p1111.phase = ViewTreeNodeObserver::DISPOSITION_CHANGING; 285 p1111.phase = NodeObserver::DISPOSITION_CHANGING;
286 EXPECT_TRUE(TreeChangeParamsMatch(p1111, o1111.received_params().front())); 286 EXPECT_TRUE(TreeChangeParamsMatch(p1111, o1111.received_params().front()));
287 p1111.phase = ViewTreeNodeObserver::DISPOSITION_CHANGED; 287 p1111.phase = NodeObserver::DISPOSITION_CHANGED;
288 EXPECT_TRUE(TreeChangeParamsMatch(p1111, o1111.received_params().back())); 288 EXPECT_TRUE(TreeChangeParamsMatch(p1111, o1111.received_params().back()));
289 289
290 EXPECT_EQ(2U, o1112.received_params().size()); 290 EXPECT_EQ(2U, o1112.received_params().size());
291 p1112 = p111; 291 p1112 = p111;
292 p1112.receiver = &v1112; 292 p1112.receiver = &v1112;
293 p1112.phase = ViewTreeNodeObserver::DISPOSITION_CHANGING; 293 p1112.phase = NodeObserver::DISPOSITION_CHANGING;
294 EXPECT_TRUE(TreeChangeParamsMatch(p1112, o1112.received_params().front())); 294 EXPECT_TRUE(TreeChangeParamsMatch(p1112, o1112.received_params().front()));
295 p1112.phase = ViewTreeNodeObserver::DISPOSITION_CHANGED; 295 p1112.phase = NodeObserver::DISPOSITION_CHANGED;
296 EXPECT_TRUE(TreeChangeParamsMatch(p1112, o1112.received_params().back())); 296 EXPECT_TRUE(TreeChangeParamsMatch(p1112, o1112.received_params().back()));
297 } 297 }
298 298
299 TEST_F(ViewTreeNodeObserverTest, TreeChange_Reparent) { 299 TEST_F(NodeObserverTest, TreeChange_Reparent) {
300 TestViewTreeNode v1, v11, v12, v111; 300 TestNode v1, v11, v12, v111;
301 v1.AddChild(&v11); 301 v1.AddChild(&v11);
302 v1.AddChild(&v12); 302 v1.AddChild(&v12);
303 v11.AddChild(&v111); 303 v11.AddChild(&v111);
304 304
305 TreeChangeObserver o1(&v1), o11(&v11), o12(&v12), o111(&v111); 305 TreeChangeObserver o1(&v1), o11(&v11), o12(&v12), o111(&v111);
306 306
307 // Reparent. 307 // Reparent.
308 v12.AddChild(&v111); 308 v12.AddChild(&v111);
309 309
310 // v1 (root) should see both changing and changed notifications. 310 // v1 (root) should see both changing and changed notifications.
311 EXPECT_EQ(4U, o1.received_params().size()); 311 EXPECT_EQ(4U, o1.received_params().size());
312 ViewTreeNodeObserver::TreeChangeParams p1; 312 NodeObserver::TreeChangeParams p1;
313 p1.target = &v111; 313 p1.target = &v111;
314 p1.receiver = &v1; 314 p1.receiver = &v1;
315 p1.old_parent = &v11; 315 p1.old_parent = &v11;
316 p1.new_parent = &v12; 316 p1.new_parent = &v12;
317 p1.phase = ViewTreeNodeObserver::DISPOSITION_CHANGING; 317 p1.phase = NodeObserver::DISPOSITION_CHANGING;
318 EXPECT_TRUE(TreeChangeParamsMatch(p1, o1.received_params().front())); 318 EXPECT_TRUE(TreeChangeParamsMatch(p1, o1.received_params().front()));
319 p1.phase = ViewTreeNodeObserver::DISPOSITION_CHANGED; 319 p1.phase = NodeObserver::DISPOSITION_CHANGED;
320 EXPECT_TRUE(TreeChangeParamsMatch(p1, o1.received_params().back())); 320 EXPECT_TRUE(TreeChangeParamsMatch(p1, o1.received_params().back()));
321 321
322 // v11 should see changing notifications. 322 // v11 should see changing notifications.
323 EXPECT_EQ(2U, o11.received_params().size()); 323 EXPECT_EQ(2U, o11.received_params().size());
324 ViewTreeNodeObserver::TreeChangeParams p11; 324 NodeObserver::TreeChangeParams p11;
325 p11 = p1; 325 p11 = p1;
326 p11.receiver = &v11; 326 p11.receiver = &v11;
327 p11.phase = ViewTreeNodeObserver::DISPOSITION_CHANGING; 327 p11.phase = NodeObserver::DISPOSITION_CHANGING;
328 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().front())); 328 EXPECT_TRUE(TreeChangeParamsMatch(p11, o11.received_params().front()));
329 329
330 // v12 should see changed notifications. 330 // v12 should see changed notifications.
331 EXPECT_EQ(2U, o12.received_params().size()); 331 EXPECT_EQ(2U, o12.received_params().size());
332 ViewTreeNodeObserver::TreeChangeParams p12; 332 NodeObserver::TreeChangeParams p12;
333 p12 = p1; 333 p12 = p1;
334 p12.receiver = &v12; 334 p12.receiver = &v12;
335 p12.phase = ViewTreeNodeObserver::DISPOSITION_CHANGED; 335 p12.phase = NodeObserver::DISPOSITION_CHANGED;
336 EXPECT_TRUE(TreeChangeParamsMatch(p12, o12.received_params().back())); 336 EXPECT_TRUE(TreeChangeParamsMatch(p12, o12.received_params().back()));
337 337
338 // v111 should see both changing and changed notifications. 338 // v111 should see both changing and changed notifications.
339 EXPECT_EQ(2U, o111.received_params().size()); 339 EXPECT_EQ(2U, o111.received_params().size());
340 ViewTreeNodeObserver::TreeChangeParams p111; 340 NodeObserver::TreeChangeParams p111;
341 p111 = p1; 341 p111 = p1;
342 p111.receiver = &v111; 342 p111.receiver = &v111;
343 p111.phase = ViewTreeNodeObserver::DISPOSITION_CHANGING; 343 p111.phase = NodeObserver::DISPOSITION_CHANGING;
344 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().front())); 344 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().front()));
345 p111.phase = ViewTreeNodeObserver::DISPOSITION_CHANGED; 345 p111.phase = NodeObserver::DISPOSITION_CHANGED;
346 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().back())); 346 EXPECT_TRUE(TreeChangeParamsMatch(p111, o111.received_params().back()));
347 } 347 }
348 348
349 namespace { 349 namespace {
350 350
351 class OrderChangeObserver : public ViewTreeNodeObserver { 351 class OrderChangeObserver : public NodeObserver {
352 public: 352 public:
353 struct Change { 353 struct Change {
354 ViewTreeNode* node; 354 Node* node;
355 ViewTreeNode* relative_node; 355 Node* relative_node;
356 OrderDirection direction; 356 OrderDirection direction;
357 DispositionChangePhase phase; 357 DispositionChangePhase phase;
358 }; 358 };
359 typedef std::vector<Change> Changes; 359 typedef std::vector<Change> Changes;
360 360
361 explicit OrderChangeObserver(ViewTreeNode* observee) : observee_(observee) { 361 explicit OrderChangeObserver(Node* observee) : observee_(observee) {
362 observee_->AddObserver(this); 362 observee_->AddObserver(this);
363 } 363 }
364 virtual ~OrderChangeObserver() { 364 virtual ~OrderChangeObserver() {
365 observee_->RemoveObserver(this); 365 observee_->RemoveObserver(this);
366 } 366 }
367 367
368 Changes GetAndClearChanges() { 368 Changes GetAndClearChanges() {
369 Changes changes; 369 Changes changes;
370 changes_.swap(changes); 370 changes_.swap(changes);
371 return changes; 371 return changes;
372 } 372 }
373 373
374 private: 374 private:
375 // Overridden from ViewTreeNodeObserver: 375 // Overridden from NodeObserver:
376 virtual void OnNodeReordered(ViewTreeNode* node, 376 virtual void OnNodeReordered(Node* node,
377 ViewTreeNode* relative_node, 377 Node* relative_node,
378 OrderDirection direction, 378 OrderDirection direction,
379 DispositionChangePhase phase) OVERRIDE { 379 DispositionChangePhase phase) OVERRIDE {
380 Change change; 380 Change change;
381 change.node = node; 381 change.node = node;
382 change.relative_node = relative_node; 382 change.relative_node = relative_node;
383 change.direction = direction; 383 change.direction = direction;
384 change.phase = phase; 384 change.phase = phase;
385 changes_.push_back(change); 385 changes_.push_back(change);
386 } 386 }
387 387
388 ViewTreeNode* observee_; 388 Node* observee_;
389 Changes changes_; 389 Changes changes_;
390 390
391 DISALLOW_COPY_AND_ASSIGN(OrderChangeObserver); 391 DISALLOW_COPY_AND_ASSIGN(OrderChangeObserver);
392 }; 392 };
393 393
394 } // namespace 394 } // namespace
395 395
396 TEST_F(ViewTreeNodeObserverTest, Order) { 396 TEST_F(NodeObserverTest, Order) {
397 TestViewTreeNode v1, v11, v12, v13; 397 TestNode v1, v11, v12, v13;
398 v1.AddChild(&v11); 398 v1.AddChild(&v11);
399 v1.AddChild(&v12); 399 v1.AddChild(&v12);
400 v1.AddChild(&v13); 400 v1.AddChild(&v13);
401 401
402 // Order: v11, v12, v13 402 // Order: v11, v12, v13
403 EXPECT_EQ(3U, v1.children().size()); 403 EXPECT_EQ(3U, v1.children().size());
404 EXPECT_EQ(&v11, v1.children().front()); 404 EXPECT_EQ(&v11, v1.children().front());
405 EXPECT_EQ(&v13, v1.children().back()); 405 EXPECT_EQ(&v13, v1.children().back());
406 406
407 { 407 {
408 OrderChangeObserver observer(&v11); 408 OrderChangeObserver observer(&v11);
409 409
410 // Move v11 to front. 410 // Move v11 to front.
411 // Resulting order: v12, v13, v11 411 // Resulting order: v12, v13, v11
412 v11.MoveToFront(); 412 v11.MoveToFront();
413 EXPECT_EQ(&v12, v1.children().front()); 413 EXPECT_EQ(&v12, v1.children().front());
414 EXPECT_EQ(&v11, v1.children().back()); 414 EXPECT_EQ(&v11, v1.children().back());
415 415
416 OrderChangeObserver::Changes changes = observer.GetAndClearChanges(); 416 OrderChangeObserver::Changes changes = observer.GetAndClearChanges();
417 EXPECT_EQ(2U, changes.size()); 417 EXPECT_EQ(2U, changes.size());
418 EXPECT_EQ(&v11, changes[0].node); 418 EXPECT_EQ(&v11, changes[0].node);
419 EXPECT_EQ(&v13, changes[0].relative_node); 419 EXPECT_EQ(&v13, changes[0].relative_node);
420 EXPECT_EQ(ORDER_ABOVE, changes[0].direction); 420 EXPECT_EQ(ORDER_ABOVE, changes[0].direction);
421 EXPECT_EQ(ViewTreeNodeObserver::DISPOSITION_CHANGING, changes[0].phase); 421 EXPECT_EQ(NodeObserver::DISPOSITION_CHANGING, changes[0].phase);
422 422
423 EXPECT_EQ(&v11, changes[1].node); 423 EXPECT_EQ(&v11, changes[1].node);
424 EXPECT_EQ(&v13, changes[1].relative_node); 424 EXPECT_EQ(&v13, changes[1].relative_node);
425 EXPECT_EQ(ORDER_ABOVE, changes[1].direction); 425 EXPECT_EQ(ORDER_ABOVE, changes[1].direction);
426 EXPECT_EQ(ViewTreeNodeObserver::DISPOSITION_CHANGED, changes[1].phase); 426 EXPECT_EQ(NodeObserver::DISPOSITION_CHANGED, changes[1].phase);
427 } 427 }
428 428
429 { 429 {
430 OrderChangeObserver observer(&v11); 430 OrderChangeObserver observer(&v11);
431 431
432 // Move v11 to back. 432 // Move v11 to back.
433 // Resulting order: v11, v12, v13 433 // Resulting order: v11, v12, v13
434 v11.MoveToBack(); 434 v11.MoveToBack();
435 EXPECT_EQ(&v11, v1.children().front()); 435 EXPECT_EQ(&v11, v1.children().front());
436 EXPECT_EQ(&v13, v1.children().back()); 436 EXPECT_EQ(&v13, v1.children().back());
437 437
438 OrderChangeObserver::Changes changes = observer.GetAndClearChanges(); 438 OrderChangeObserver::Changes changes = observer.GetAndClearChanges();
439 EXPECT_EQ(2U, changes.size()); 439 EXPECT_EQ(2U, changes.size());
440 EXPECT_EQ(&v11, changes[0].node); 440 EXPECT_EQ(&v11, changes[0].node);
441 EXPECT_EQ(&v12, changes[0].relative_node); 441 EXPECT_EQ(&v12, changes[0].relative_node);
442 EXPECT_EQ(ORDER_BELOW, changes[0].direction); 442 EXPECT_EQ(ORDER_BELOW, changes[0].direction);
443 EXPECT_EQ(ViewTreeNodeObserver::DISPOSITION_CHANGING, changes[0].phase); 443 EXPECT_EQ(NodeObserver::DISPOSITION_CHANGING, changes[0].phase);
444 444
445 EXPECT_EQ(&v11, changes[1].node); 445 EXPECT_EQ(&v11, changes[1].node);
446 EXPECT_EQ(&v12, changes[1].relative_node); 446 EXPECT_EQ(&v12, changes[1].relative_node);
447 EXPECT_EQ(ORDER_BELOW, changes[1].direction); 447 EXPECT_EQ(ORDER_BELOW, changes[1].direction);
448 EXPECT_EQ(ViewTreeNodeObserver::DISPOSITION_CHANGED, changes[1].phase); 448 EXPECT_EQ(NodeObserver::DISPOSITION_CHANGED, changes[1].phase);
449 } 449 }
450 450
451 { 451 {
452 OrderChangeObserver observer(&v11); 452 OrderChangeObserver observer(&v11);
453 453
454 // Move v11 above v12. 454 // Move v11 above v12.
455 // Resulting order: v12. v11, v13 455 // Resulting order: v12. v11, v13
456 v11.Reorder(&v12, ORDER_ABOVE); 456 v11.Reorder(&v12, ORDER_ABOVE);
457 EXPECT_EQ(&v12, v1.children().front()); 457 EXPECT_EQ(&v12, v1.children().front());
458 EXPECT_EQ(&v13, v1.children().back()); 458 EXPECT_EQ(&v13, v1.children().back());
459 459
460 OrderChangeObserver::Changes changes = observer.GetAndClearChanges(); 460 OrderChangeObserver::Changes changes = observer.GetAndClearChanges();
461 EXPECT_EQ(2U, changes.size()); 461 EXPECT_EQ(2U, changes.size());
462 EXPECT_EQ(&v11, changes[0].node); 462 EXPECT_EQ(&v11, changes[0].node);
463 EXPECT_EQ(&v12, changes[0].relative_node); 463 EXPECT_EQ(&v12, changes[0].relative_node);
464 EXPECT_EQ(ORDER_ABOVE, changes[0].direction); 464 EXPECT_EQ(ORDER_ABOVE, changes[0].direction);
465 EXPECT_EQ(ViewTreeNodeObserver::DISPOSITION_CHANGING, changes[0].phase); 465 EXPECT_EQ(NodeObserver::DISPOSITION_CHANGING, changes[0].phase);
466 466
467 EXPECT_EQ(&v11, changes[1].node); 467 EXPECT_EQ(&v11, changes[1].node);
468 EXPECT_EQ(&v12, changes[1].relative_node); 468 EXPECT_EQ(&v12, changes[1].relative_node);
469 EXPECT_EQ(ORDER_ABOVE, changes[1].direction); 469 EXPECT_EQ(ORDER_ABOVE, changes[1].direction);
470 EXPECT_EQ(ViewTreeNodeObserver::DISPOSITION_CHANGED, changes[1].phase); 470 EXPECT_EQ(NodeObserver::DISPOSITION_CHANGED, changes[1].phase);
471 } 471 }
472 472
473 { 473 {
474 OrderChangeObserver observer(&v11); 474 OrderChangeObserver observer(&v11);
475 475
476 // Move v11 below v12. 476 // Move v11 below v12.
477 // Resulting order: v11, v12, v13 477 // Resulting order: v11, v12, v13
478 v11.Reorder(&v12, ORDER_BELOW); 478 v11.Reorder(&v12, ORDER_BELOW);
479 EXPECT_EQ(&v11, v1.children().front()); 479 EXPECT_EQ(&v11, v1.children().front());
480 EXPECT_EQ(&v13, v1.children().back()); 480 EXPECT_EQ(&v13, v1.children().back());
481 481
482 OrderChangeObserver::Changes changes = observer.GetAndClearChanges(); 482 OrderChangeObserver::Changes changes = observer.GetAndClearChanges();
483 EXPECT_EQ(2U, changes.size()); 483 EXPECT_EQ(2U, changes.size());
484 EXPECT_EQ(&v11, changes[0].node); 484 EXPECT_EQ(&v11, changes[0].node);
485 EXPECT_EQ(&v12, changes[0].relative_node); 485 EXPECT_EQ(&v12, changes[0].relative_node);
486 EXPECT_EQ(ORDER_BELOW, changes[0].direction); 486 EXPECT_EQ(ORDER_BELOW, changes[0].direction);
487 EXPECT_EQ(ViewTreeNodeObserver::DISPOSITION_CHANGING, changes[0].phase); 487 EXPECT_EQ(NodeObserver::DISPOSITION_CHANGING, changes[0].phase);
488 488
489 EXPECT_EQ(&v11, changes[1].node); 489 EXPECT_EQ(&v11, changes[1].node);
490 EXPECT_EQ(&v12, changes[1].relative_node); 490 EXPECT_EQ(&v12, changes[1].relative_node);
491 EXPECT_EQ(ORDER_BELOW, changes[1].direction); 491 EXPECT_EQ(ORDER_BELOW, changes[1].direction);
492 EXPECT_EQ(ViewTreeNodeObserver::DISPOSITION_CHANGED, changes[1].phase); 492 EXPECT_EQ(NodeObserver::DISPOSITION_CHANGED, changes[1].phase);
493 } 493 }
494 } 494 }
495 495
496 namespace { 496 namespace {
497 497
498 typedef std::vector<std::string> Changes; 498 typedef std::vector<std::string> Changes;
499 499
500 std::string NodeIdToString(Id id) { 500 std::string NodeIdToString(Id id) {
501 return (id == 0) ? "null" : 501 return (id == 0) ? "null" :
502 base::StringPrintf("%d,%d", HiWord(id), LoWord(id)); 502 base::StringPrintf("%d,%d", HiWord(id), LoWord(id));
503 } 503 }
504 504
505 std::string RectToString(const gfx::Rect& rect) { 505 std::string RectToString(const gfx::Rect& rect) {
506 return base::StringPrintf("%d,%d %dx%d", 506 return base::StringPrintf("%d,%d %dx%d",
507 rect.x(), rect.y(), rect.width(), rect.height()); 507 rect.x(), rect.y(), rect.width(), rect.height());
508 } 508 }
509 509
510 std::string PhaseToString(ViewTreeNodeObserver::DispositionChangePhase phase) { 510 std::string PhaseToString(NodeObserver::DispositionChangePhase phase) {
511 return phase == ViewTreeNodeObserver::DISPOSITION_CHANGING ? 511 return phase == NodeObserver::DISPOSITION_CHANGING ?
512 "changing" : "changed"; 512 "changing" : "changed";
513 } 513 }
514 514
515 class BoundsChangeObserver : public ViewTreeNodeObserver { 515 class BoundsChangeObserver : public NodeObserver {
516 public: 516 public:
517 explicit BoundsChangeObserver(ViewTreeNode* node) : node_(node) { 517 explicit BoundsChangeObserver(Node* node) : node_(node) {
518 node_->AddObserver(this); 518 node_->AddObserver(this);
519 } 519 }
520 virtual ~BoundsChangeObserver() { 520 virtual ~BoundsChangeObserver() {
521 node_->RemoveObserver(this); 521 node_->RemoveObserver(this);
522 } 522 }
523 523
524 Changes GetAndClearChanges() { 524 Changes GetAndClearChanges() {
525 Changes changes; 525 Changes changes;
526 changes.swap(changes_); 526 changes.swap(changes_);
527 return changes; 527 return changes;
528 } 528 }
529 529
530 private: 530 private:
531 // Overridden from ViewTreeNodeObserver: 531 // Overridden from NodeObserver:
532 virtual void OnNodeBoundsChange(ViewTreeNode* node, 532 virtual void OnNodeBoundsChange(Node* node,
533 const gfx::Rect& old_bounds, 533 const gfx::Rect& old_bounds,
534 const gfx::Rect& new_bounds, 534 const gfx::Rect& new_bounds,
535 DispositionChangePhase phase) OVERRIDE { 535 DispositionChangePhase phase) OVERRIDE {
536 changes_.push_back( 536 changes_.push_back(
537 base::StringPrintf( 537 base::StringPrintf(
538 "node=%s old_bounds=%s new_bounds=%s phase=%s", 538 "node=%s old_bounds=%s new_bounds=%s phase=%s",
539 NodeIdToString(node->id()).c_str(), 539 NodeIdToString(node->id()).c_str(),
540 RectToString(old_bounds).c_str(), 540 RectToString(old_bounds).c_str(),
541 RectToString(new_bounds).c_str(), 541 RectToString(new_bounds).c_str(),
542 PhaseToString(phase).c_str())); 542 PhaseToString(phase).c_str()));
543 } 543 }
544 544
545 ViewTreeNode* node_; 545 Node* node_;
546 Changes changes_; 546 Changes changes_;
547 547
548 DISALLOW_COPY_AND_ASSIGN(BoundsChangeObserver); 548 DISALLOW_COPY_AND_ASSIGN(BoundsChangeObserver);
549 }; 549 };
550 550
551 } // namespace 551 } // namespace
552 552
553 TEST_F(ViewTreeNodeObserverTest, SetBounds) { 553 TEST_F(NodeObserverTest, SetBounds) {
554 TestViewTreeNode v1; 554 TestNode v1;
555 { 555 {
556 BoundsChangeObserver observer(&v1); 556 BoundsChangeObserver observer(&v1);
557 v1.SetBounds(gfx::Rect(0, 0, 100, 100)); 557 v1.SetBounds(gfx::Rect(0, 0, 100, 100));
558 558
559 Changes changes = observer.GetAndClearChanges(); 559 Changes changes = observer.GetAndClearChanges();
560 EXPECT_EQ(2U, changes.size()); 560 EXPECT_EQ(2U, changes.size());
561 EXPECT_EQ( 561 EXPECT_EQ(
562 "node=0,1 old_bounds=0,0 0x0 new_bounds=0,0 100x100 phase=changing", 562 "node=0,1 old_bounds=0,0 0x0 new_bounds=0,0 100x100 phase=changing",
563 changes[0]); 563 changes[0]);
564 EXPECT_EQ( 564 EXPECT_EQ(
565 "node=0,1 old_bounds=0,0 0x0 new_bounds=0,0 100x100 phase=changed", 565 "node=0,1 old_bounds=0,0 0x0 new_bounds=0,0 100x100 phase=changed",
566 changes[1]); 566 changes[1]);
567 } 567 }
568 } 568 }
569 569
570 } // namespace view_manager 570 } // namespace view_manager
571 } // namespace mojo 571 } // namespace mojo
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698