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

Side by Side Diff: mojo/services/view_manager/view_manager_connection_unittest.cc

Issue 258623005: First step at synchronizing client model changes with service. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 7 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
« no previous file with comments | « mojo/services/view_manager/view_manager_connection.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 <string> 5 #include <string>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/bind.h" 8 #include "base/bind.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 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 return (connection_id << 16) | node_id; 90 return (connection_id << 16) | node_id;
91 } 91 }
92 92
93 // Creates an id used for transport from the specified parameters. 93 // Creates an id used for transport from the specified parameters.
94 uint32_t CreateViewId(uint16_t connection_id, uint16_t view_id) { 94 uint32_t CreateViewId(uint16_t connection_id, uint16_t view_id) {
95 return (connection_id << 16) | view_id; 95 return (connection_id << 16) | view_id;
96 } 96 }
97 97
98 // Creates a node with the specified id. Returns true on success. Blocks until 98 // Creates a node with the specified id. Returns true on success. Blocks until
99 // we get back result from server. 99 // we get back result from server.
100 bool CreateNode(ViewManager* view_manager, uint16_t id) { 100 bool CreateNode(IViewManager* view_manager, uint16_t id) {
101 bool result = false; 101 bool result = false;
102 view_manager->CreateNode(id, base::Bind(&BooleanCallback, &result)); 102 view_manager->CreateNode(id, base::Bind(&BooleanCallback, &result));
103 DoRunLoop(); 103 DoRunLoop();
104 return result; 104 return result;
105 } 105 }
106 106
107 // TODO(sky): make a macro for these functions, they are all the same. 107 // TODO(sky): make a macro for these functions, they are all the same.
108 108
109 // Deletes a node, blocking until done. 109 // Deletes a node, blocking until done.
110 bool DeleteNode(ViewManager* view_manager, 110 bool DeleteNode(IViewManager* view_manager,
111 uint32_t node_id, 111 uint32_t node_id,
112 ChangeId change_id) { 112 ChangeId change_id) {
113 bool result = false; 113 bool result = false;
114 view_manager->DeleteNode(node_id, change_id, 114 view_manager->DeleteNode(node_id, change_id,
115 base::Bind(&BooleanCallback, &result)); 115 base::Bind(&BooleanCallback, &result));
116 DoRunLoop(); 116 DoRunLoop();
117 return result; 117 return result;
118 } 118 }
119 119
120 // Adds a node, blocking until done. 120 // Adds a node, blocking until done.
121 bool AddNode(ViewManager* view_manager, 121 bool AddNode(IViewManager* view_manager,
122 uint32_t parent, 122 uint32_t parent,
123 uint32_t child, 123 uint32_t child,
124 ChangeId change_id) { 124 ChangeId change_id) {
125 bool result = false; 125 bool result = false;
126 view_manager->AddNode(parent, child, change_id, 126 view_manager->AddNode(parent, child, change_id,
127 base::Bind(&BooleanCallback, &result)); 127 base::Bind(&BooleanCallback, &result));
128 DoRunLoop(); 128 DoRunLoop();
129 return result; 129 return result;
130 } 130 }
131 131
132 // Removes a node, blocking until done. 132 // Removes a node, blocking until done.
133 bool RemoveNodeFromParent(ViewManager* view_manager, 133 bool RemoveNodeFromParent(IViewManager* view_manager,
134 uint32_t node_id, 134 uint32_t node_id,
135 ChangeId change_id) { 135 ChangeId change_id) {
136 bool result = false; 136 bool result = false;
137 view_manager->RemoveNodeFromParent(node_id, change_id, 137 view_manager->RemoveNodeFromParent(node_id, change_id,
138 base::Bind(&BooleanCallback, &result)); 138 base::Bind(&BooleanCallback, &result));
139 DoRunLoop(); 139 DoRunLoop();
140 return result; 140 return result;
141 } 141 }
142 142
143 void GetNodeTree(ViewManager* view_manager, 143 void GetNodeTree(IViewManager* view_manager,
144 uint32_t node_id, 144 uint32_t node_id,
145 std::vector<TestNode>* nodes) { 145 std::vector<TestNode>* nodes) {
146 view_manager->GetNodeTree(node_id, base::Bind(&INodesCallback, nodes)); 146 view_manager->GetNodeTree(node_id, base::Bind(&INodesCallback, nodes));
147 DoRunLoop(); 147 DoRunLoop();
148 } 148 }
149 149
150 // Creates a view with the specified id. Returns true on success. Blocks until 150 // Creates a view with the specified id. Returns true on success. Blocks until
151 // we get back result from server. 151 // we get back result from server.
152 bool CreateView(ViewManager* view_manager, uint16_t id) { 152 bool CreateView(IViewManager* view_manager, uint16_t id) {
153 bool result = false; 153 bool result = false;
154 view_manager->CreateView(id, base::Bind(&BooleanCallback, &result)); 154 view_manager->CreateView(id, base::Bind(&BooleanCallback, &result));
155 DoRunLoop(); 155 DoRunLoop();
156 return result; 156 return result;
157 } 157 }
158 158
159 // Sets a view on the specified node. Returns true on success. Blocks until we 159 // Sets a view on the specified node. Returns true on success. Blocks until we
160 // get back result from server. 160 // get back result from server.
161 bool SetView(ViewManager* view_manager, 161 bool SetView(IViewManager* view_manager,
162 uint32_t node_id, 162 uint32_t node_id,
163 uint32_t view_id, 163 uint32_t view_id,
164 ChangeId change_id) { 164 ChangeId change_id) {
165 bool result = false; 165 bool result = false;
166 view_manager->SetView(node_id, view_id, change_id, 166 view_manager->SetView(node_id, view_id, change_id,
167 base::Bind(&BooleanCallback, &result)); 167 base::Bind(&BooleanCallback, &result));
168 DoRunLoop(); 168 DoRunLoop();
169 return result; 169 return result;
170 } 170 }
171 171
172 } // namespace 172 } // namespace
173 173
174 typedef std::vector<std::string> Changes; 174 typedef std::vector<std::string> Changes;
175 175
176 class ViewManagerClientImpl : public ViewManagerClient { 176 class ViewManagerClientImpl : public IViewManagerClient {
177 public: 177 public:
178 ViewManagerClientImpl() : id_(0), quit_count_(0) {} 178 ViewManagerClientImpl() : id_(0), quit_count_(0) {}
179 179
180 uint16_t id() const { return id_; } 180 uint16_t id() const { return id_; }
181 181
182 Changes GetAndClearChanges() { 182 Changes GetAndClearChanges() {
183 Changes changes; 183 Changes changes;
184 changes.swap(changes_); 184 changes.swap(changes_);
185 return changes; 185 return changes;
186 } 186 }
187 187
188 void WaitForId() { 188 void WaitForId() {
189 if (id_ == 0) 189 if (id_ == 0)
190 DoRunLoop(); 190 DoRunLoop();
191 } 191 }
192 192
193 void DoRunLoopUntilChangesCount(size_t count) { 193 void DoRunLoopUntilChangesCount(size_t count) {
194 if (changes_.size() >= count) 194 if (changes_.size() >= count)
195 return; 195 return;
196 quit_count_ = count - changes_.size(); 196 quit_count_ = count - changes_.size();
197 DoRunLoop(); 197 DoRunLoop();
198 } 198 }
199 199
200 private: 200 private:
201 // ViewManagerClient overrides: 201 // IViewManagerClient overrides:
202 virtual void OnConnectionEstablished(uint16_t connection_id) OVERRIDE { 202 virtual void OnConnectionEstablished(uint16_t connection_id) OVERRIDE {
203 id_ = connection_id; 203 id_ = connection_id;
204 if (current_run_loop) 204 if (current_run_loop)
205 current_run_loop->Quit(); 205 current_run_loop->Quit();
206 } 206 }
207 virtual void OnNodeHierarchyChanged(uint32_t node, 207 virtual void OnNodeHierarchyChanged(uint32_t node,
208 uint32_t new_parent, 208 uint32_t new_parent,
209 uint32_t old_parent, 209 uint32_t old_parent,
210 ChangeId change_id) OVERRIDE { 210 ChangeId change_id) OVERRIDE {
211 changes_.push_back( 211 changes_.push_back(
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 246
247 class ViewManagerConnectionTest : public testing::Test { 247 class ViewManagerConnectionTest : public testing::Test {
248 public: 248 public:
249 ViewManagerConnectionTest() {} 249 ViewManagerConnectionTest() {}
250 250
251 virtual void SetUp() OVERRIDE { 251 virtual void SetUp() OVERRIDE {
252 AllocationScope allocation_scope; 252 AllocationScope allocation_scope;
253 253
254 test_helper_.Init(); 254 test_helper_.Init();
255 255
256 InterfacePipe<ViewManager, AnyInterface> pipe; 256 InterfacePipe<IViewManager, AnyInterface> pipe;
257 test_helper_.shell()->Connect("mojo:mojo_view_manager", 257 test_helper_.shell()->Connect("mojo:mojo_view_manager",
258 pipe.handle_to_peer.Pass()); 258 pipe.handle_to_peer.Pass());
259 view_manager_.reset(pipe.handle_to_self.Pass(), &client_); 259 view_manager_.reset(pipe.handle_to_self.Pass(), &client_);
260 260
261 client_.WaitForId(); 261 client_.WaitForId();
262 } 262 }
263 263
264 protected: 264 protected:
265 // Creates a second connection to the viewmanager. 265 // Creates a second connection to the viewmanager.
266 void EstablishSecondConnection() { 266 void EstablishSecondConnection() {
267 AllocationScope allocation_scope; 267 AllocationScope allocation_scope;
268 InterfacePipe<ViewManager, AnyInterface> pipe; 268 InterfacePipe<IViewManager, AnyInterface> pipe;
269 test_helper_.shell()->Connect("mojo:mojo_view_manager", 269 test_helper_.shell()->Connect("mojo:mojo_view_manager",
270 pipe.handle_to_peer.Pass()); 270 pipe.handle_to_peer.Pass());
271 view_manager2_.reset(pipe.handle_to_self.Pass(), &client2_); 271 view_manager2_.reset(pipe.handle_to_self.Pass(), &client2_);
272 272
273 client2_.WaitForId(); 273 client2_.WaitForId();
274 } 274 }
275 275
276 void DestroySecondConnection() { 276 void DestroySecondConnection() {
277 view_manager2_.reset(); 277 view_manager2_.reset();
278 } 278 }
279 279
280 base::MessageLoop loop_; 280 base::MessageLoop loop_;
281 shell::ShellTestHelper test_helper_; 281 shell::ShellTestHelper test_helper_;
282 282
283 ViewManagerClientImpl client_; 283 ViewManagerClientImpl client_;
284 RemotePtr<ViewManager> view_manager_; 284 RemotePtr<IViewManager> view_manager_;
285 285
286 ViewManagerClientImpl client2_; 286 ViewManagerClientImpl client2_;
287 RemotePtr<ViewManager> view_manager2_; 287 RemotePtr<IViewManager> view_manager2_;
288 288
289 DISALLOW_COPY_AND_ASSIGN(ViewManagerConnectionTest); 289 DISALLOW_COPY_AND_ASSIGN(ViewManagerConnectionTest);
290 }; 290 };
291 291
292 // Verifies client gets a valid id. 292 // Verifies client gets a valid id.
293 TEST_F(ViewManagerConnectionTest, ValidId) { 293 TEST_F(ViewManagerConnectionTest, ValidId) {
294 // All these tests assume 1 for the client id. The only real assertion here is 294 // All these tests assume 1 for the client id. The only real assertion here is
295 // the client id is not zero, but adding this as rest of code here assumes 1. 295 // the client id is not zero, but adding this as rest of code here assumes 1.
296 EXPECT_EQ(1, client_.id()); 296 EXPECT_EQ(1, client_.id());
297 } 297 }
(...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after
626 GetNodeTree(view_manager2_.get(), CreateNodeId(1, 1), &nodes); 626 GetNodeTree(view_manager2_.get(), CreateNodeId(1, 1), &nodes);
627 ASSERT_EQ(2u, nodes.size()); 627 ASSERT_EQ(2u, nodes.size());
628 EXPECT_EQ("node=1,1 parent=0,1 view=null", nodes[0].ToString()); 628 EXPECT_EQ("node=1,1 parent=0,1 view=null", nodes[0].ToString());
629 EXPECT_EQ("node=1,11 parent=1,1 view=1,51", nodes[1].ToString()); 629 EXPECT_EQ("node=1,11 parent=1,1 view=1,51", nodes[1].ToString());
630 } 630 }
631 } 631 }
632 632
633 } // namespace view_manager 633 } // namespace view_manager
634 } // namespace services 634 } // namespace services
635 } // namespace mojo 635 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/services/view_manager/view_manager_connection.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698