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

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

Issue 261513002: Revert 266940 "First step at synchronizing client model changes ..." (Closed) Base URL: svn://svn.chromium.org/chrome/
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 | « trunk/src/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 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 return (connection_id << 16) | node_id; 63 return (connection_id << 16) | node_id;
64 } 64 }
65 65
66 // Creates an id used for transport from the specified parameters. 66 // Creates an id used for transport from the specified parameters.
67 uint32_t CreateViewId(uint16_t connection_id, uint16_t view_id) { 67 uint32_t CreateViewId(uint16_t connection_id, uint16_t view_id) {
68 return (connection_id << 16) | view_id; 68 return (connection_id << 16) | view_id;
69 } 69 }
70 70
71 // Creates a node with the specified id. Returns true on success. Blocks until 71 // Creates a node with the specified id. Returns true on success. Blocks until
72 // we get back result from server. 72 // we get back result from server.
73 bool CreateNode(IViewManager* view_manager, uint16_t id) { 73 bool CreateNode(ViewManager* view_manager, uint16_t id) {
74 bool result = false; 74 bool result = false;
75 view_manager->CreateNode(id, base::Bind(&BooleanCallback, &result)); 75 view_manager->CreateNode(id, base::Bind(&BooleanCallback, &result));
76 DoRunLoop(); 76 DoRunLoop();
77 return result; 77 return result;
78 } 78 }
79 79
80 // TODO(sky): make a macro for these functions, they are all the same. 80 // TODO(sky): make a macro for these functions, they are all the same.
81 81
82 // Deletes a node, blocking until done. 82 // Deletes a node, blocking until done.
83 bool DeleteNode(IViewManager* view_manager, 83 bool DeleteNode(ViewManager* view_manager,
84 uint32_t node_id, 84 uint32_t node_id,
85 ChangeId change_id) { 85 ChangeId change_id) {
86 bool result = false; 86 bool result = false;
87 view_manager->DeleteNode(node_id, change_id, 87 view_manager->DeleteNode(node_id, change_id,
88 base::Bind(&BooleanCallback, &result)); 88 base::Bind(&BooleanCallback, &result));
89 DoRunLoop(); 89 DoRunLoop();
90 return result; 90 return result;
91 } 91 }
92 92
93 // Adds a node, blocking until done. 93 // Adds a node, blocking until done.
94 bool AddNode(IViewManager* view_manager, 94 bool AddNode(ViewManager* view_manager,
95 uint32_t parent, 95 uint32_t parent,
96 uint32_t child, 96 uint32_t child,
97 ChangeId change_id) { 97 ChangeId change_id) {
98 bool result = false; 98 bool result = false;
99 view_manager->AddNode(parent, child, change_id, 99 view_manager->AddNode(parent, child, change_id,
100 base::Bind(&BooleanCallback, &result)); 100 base::Bind(&BooleanCallback, &result));
101 DoRunLoop(); 101 DoRunLoop();
102 return result; 102 return result;
103 } 103 }
104 104
105 // Removes a node, blocking until done. 105 // Removes a node, blocking until done.
106 bool RemoveNodeFromParent(IViewManager* view_manager, 106 bool RemoveNodeFromParent(ViewManager* view_manager,
107 uint32_t node_id, 107 uint32_t node_id,
108 ChangeId change_id) { 108 ChangeId change_id) {
109 bool result = false; 109 bool result = false;
110 view_manager->RemoveNodeFromParent(node_id, change_id, 110 view_manager->RemoveNodeFromParent(node_id, change_id,
111 base::Bind(&BooleanCallback, &result)); 111 base::Bind(&BooleanCallback, &result));
112 DoRunLoop(); 112 DoRunLoop();
113 return result; 113 return result;
114 } 114 }
115 115
116 // Creates a view with the specified id. Returns true on success. Blocks until 116 // Creates a view with the specified id. Returns true on success. Blocks until
117 // we get back result from server. 117 // we get back result from server.
118 bool CreateView(IViewManager* view_manager, uint16_t id) { 118 bool CreateView(ViewManager* view_manager, uint16_t id) {
119 bool result = false; 119 bool result = false;
120 view_manager->CreateView(id, base::Bind(&BooleanCallback, &result)); 120 view_manager->CreateView(id, base::Bind(&BooleanCallback, &result));
121 DoRunLoop(); 121 DoRunLoop();
122 return result; 122 return result;
123 } 123 }
124 124
125 // Sets a view on the specified node. Returns true on success. Blocks until we 125 // Sets a view on the specified node. Returns true on success. Blocks until we
126 // get back result from server. 126 // get back result from server.
127 bool SetView(IViewManager* view_manager, 127 bool SetView(ViewManager* view_manager,
128 uint32_t node_id, 128 uint32_t node_id,
129 uint32_t view_id, 129 uint32_t view_id,
130 ChangeId change_id) { 130 ChangeId change_id) {
131 bool result = false; 131 bool result = false;
132 view_manager->SetView(node_id, view_id, change_id, 132 view_manager->SetView(node_id, view_id, change_id,
133 base::Bind(&BooleanCallback, &result)); 133 base::Bind(&BooleanCallback, &result));
134 DoRunLoop(); 134 DoRunLoop();
135 return result; 135 return result;
136 } 136 }
137 137
138 } // namespace 138 } // namespace
139 139
140 typedef std::vector<std::string> Changes; 140 typedef std::vector<std::string> Changes;
141 141
142 class ViewManagerClientImpl : public IViewManagerClient { 142 class ViewManagerClientImpl : public ViewManagerClient {
143 public: 143 public:
144 ViewManagerClientImpl() : id_(0), quit_count_(0) {} 144 ViewManagerClientImpl() : id_(0), quit_count_(0) {}
145 145
146 uint16_t id() const { return id_; } 146 uint16_t id() const { return id_; }
147 147
148 Changes GetAndClearChanges() { 148 Changes GetAndClearChanges() {
149 Changes changes; 149 Changes changes;
150 changes.swap(changes_); 150 changes.swap(changes_);
151 return changes; 151 return changes;
152 } 152 }
153 153
154 void WaitForId() { 154 void WaitForId() {
155 if (id_ == 0) 155 if (id_ == 0)
156 DoRunLoop(); 156 DoRunLoop();
157 } 157 }
158 158
159 void DoRunLoopUntilChangesCount(size_t count) { 159 void DoRunLoopUntilChangesCount(size_t count) {
160 if (changes_.size() >= count) 160 if (changes_.size() >= count)
161 return; 161 return;
162 quit_count_ = count - changes_.size(); 162 quit_count_ = count - changes_.size();
163 DoRunLoop(); 163 DoRunLoop();
164 } 164 }
165 165
166 private: 166 private:
167 // IViewManagerClient overrides: 167 // ViewManagerClient overrides:
168 virtual void OnConnectionEstablished(uint16_t connection_id) OVERRIDE { 168 virtual void OnConnectionEstablished(uint16_t connection_id) OVERRIDE {
169 id_ = connection_id; 169 id_ = connection_id;
170 if (current_run_loop) 170 if (current_run_loop)
171 current_run_loop->Quit(); 171 current_run_loop->Quit();
172 } 172 }
173 virtual void OnNodeHierarchyChanged(uint32_t node, 173 virtual void OnNodeHierarchyChanged(uint32_t node,
174 uint32_t new_parent, 174 uint32_t new_parent,
175 uint32_t old_parent, 175 uint32_t old_parent,
176 ChangeId change_id) OVERRIDE { 176 ChangeId change_id) OVERRIDE {
177 changes_.push_back( 177 changes_.push_back(
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 212
213 class ViewManagerConnectionTest : public testing::Test { 213 class ViewManagerConnectionTest : public testing::Test {
214 public: 214 public:
215 ViewManagerConnectionTest() {} 215 ViewManagerConnectionTest() {}
216 216
217 virtual void SetUp() OVERRIDE { 217 virtual void SetUp() OVERRIDE {
218 AllocationScope allocation_scope; 218 AllocationScope allocation_scope;
219 219
220 test_helper_.Init(); 220 test_helper_.Init();
221 221
222 InterfacePipe<IViewManager, AnyInterface> pipe; 222 InterfacePipe<ViewManager, AnyInterface> pipe;
223 test_helper_.shell()->Connect("mojo:mojo_view_manager", 223 test_helper_.shell()->Connect("mojo:mojo_view_manager",
224 pipe.handle_to_peer.Pass()); 224 pipe.handle_to_peer.Pass());
225 view_manager_.reset(pipe.handle_to_self.Pass(), &client_); 225 view_manager_.reset(pipe.handle_to_self.Pass(), &client_);
226 226
227 client_.WaitForId(); 227 client_.WaitForId();
228 } 228 }
229 229
230 protected: 230 protected:
231 // Creates a second connection to the viewmanager. 231 // Creates a second connection to the viewmanager.
232 void EstablishSecondConnection() { 232 void EstablishSecondConnection() {
233 AllocationScope allocation_scope; 233 AllocationScope allocation_scope;
234 InterfacePipe<IViewManager, AnyInterface> pipe; 234 InterfacePipe<ViewManager, AnyInterface> pipe;
235 test_helper_.shell()->Connect("mojo:mojo_view_manager", 235 test_helper_.shell()->Connect("mojo:mojo_view_manager",
236 pipe.handle_to_peer.Pass()); 236 pipe.handle_to_peer.Pass());
237 view_manager2_.reset(pipe.handle_to_self.Pass(), &client2_); 237 view_manager2_.reset(pipe.handle_to_self.Pass(), &client2_);
238 238
239 client2_.WaitForId(); 239 client2_.WaitForId();
240 } 240 }
241 241
242 void DestroySecondConnection() { 242 void DestroySecondConnection() {
243 view_manager2_.reset(); 243 view_manager2_.reset();
244 } 244 }
245 245
246 base::MessageLoop loop_; 246 base::MessageLoop loop_;
247 shell::ShellTestHelper test_helper_; 247 shell::ShellTestHelper test_helper_;
248 248
249 ViewManagerClientImpl client_; 249 ViewManagerClientImpl client_;
250 RemotePtr<IViewManager> view_manager_; 250 RemotePtr<ViewManager> view_manager_;
251 251
252 ViewManagerClientImpl client2_; 252 ViewManagerClientImpl client2_;
253 RemotePtr<IViewManager> view_manager2_; 253 RemotePtr<ViewManager> view_manager2_;
254 254
255 DISALLOW_COPY_AND_ASSIGN(ViewManagerConnectionTest); 255 DISALLOW_COPY_AND_ASSIGN(ViewManagerConnectionTest);
256 }; 256 };
257 257
258 // Verifies client gets a valid id. 258 // Verifies client gets a valid id.
259 TEST_F(ViewManagerConnectionTest, ValidId) { 259 TEST_F(ViewManagerConnectionTest, ValidId) {
260 // All these tests assume 1 for the client id. The only real assertion here is 260 // All these tests assume 1 for the client id. The only real assertion here is
261 // the client id is not zero, but adding this as rest of code here assumes 1. 261 // the client id is not zero, but adding this as rest of code here assumes 1.
262 EXPECT_EQ(1, client_.id()); 262 EXPECT_EQ(1, client_.id());
263 } 263 }
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 533
534 Changes changes(client_.GetAndClearChanges()); 534 Changes changes(client_.GetAndClearChanges());
535 ASSERT_EQ(1u, changes.size()); 535 ASSERT_EQ(1u, changes.size());
536 EXPECT_EQ("change_id=0 node=1,1 new_view=null old_view=2,51", changes[0]); 536 EXPECT_EQ("change_id=0 node=1,1 new_view=null old_view=2,51", changes[0]);
537 } 537 }
538 } 538 }
539 539
540 } // namespace view_manager 540 } // namespace view_manager
541 } // namespace services 541 } // namespace services
542 } // namespace mojo 542 } // namespace mojo
OLDNEW
« no previous file with comments | « trunk/src/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