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

Side by Side Diff: mojo/services/window_manager/window_manager_api_unittest.cc

Issue 418983002: Nukes view_manager namespace (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: resolve merge Created 6 years, 4 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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/memory/scoped_vector.h" 6 #include "base/memory/scoped_vector.h"
7 #include "mojo/public/cpp/application/application_delegate.h" 7 #include "mojo/public/cpp/application/application_delegate.h"
8 #include "mojo/public/cpp/application/application_impl.h" 8 #include "mojo/public/cpp/application/application_impl.h"
9 #include "mojo/service_manager/service_manager.h" 9 #include "mojo/service_manager/service_manager.h"
10 #include "mojo/services/public/cpp/view_manager/node.h" 10 #include "mojo/services/public/cpp/view_manager/node.h"
(...skipping 15 matching lines...) Expand all
26 26
27 // Callback from Embed(). |result| is the result of the Embed() call and 27 // Callback from Embed(). |result| is the result of the Embed() call and
28 // |run_loop| the nested RunLoop. 28 // |run_loop| the nested RunLoop.
29 void ResultCallback(bool* result_cache, base::RunLoop* run_loop, bool result) { 29 void ResultCallback(bool* result_cache, base::RunLoop* run_loop, bool result) {
30 *result_cache = result; 30 *result_cache = result;
31 run_loop->Quit(); 31 run_loop->Quit();
32 } 32 }
33 33
34 // Responsible for establishing the initial ViewManagerService connection. 34 // Responsible for establishing the initial ViewManagerService connection.
35 // Blocks until result is determined. 35 // Blocks until result is determined.
36 bool InitEmbed(view_manager::ViewManagerInitService* view_manager_init, 36 bool InitEmbed(ViewManagerInitService* view_manager_init,
37 const std::string& url) { 37 const std::string& url) {
38 bool result = false; 38 bool result = false;
39 base::RunLoop run_loop; 39 base::RunLoop run_loop;
40 view_manager_init->Embed(url, 40 view_manager_init->Embed(url,
41 base::Bind(&ResultCallback, &result, &run_loop)); 41 base::Bind(&ResultCallback, &result, &run_loop));
42 run_loop.Run(); 42 run_loop.Run();
43 return result; 43 return result;
44 } 44 }
45 45
46 void OpenWindowCallback(view_manager::Id* id, 46 void OpenWindowCallback(Id* id,
47 base::RunLoop* run_loop, 47 base::RunLoop* run_loop,
48 view_manager::Id window_id) { 48 Id window_id) {
49 *id = window_id; 49 *id = window_id;
50 run_loop->Quit(); 50 run_loop->Quit();
51 } 51 }
52 52
53 view_manager::Id OpenWindow(WindowManagerService* window_manager) { 53 Id OpenWindow(WindowManagerService* window_manager) {
54 base::RunLoop run_loop; 54 base::RunLoop run_loop;
55 view_manager::Id id; 55 Id id;
56 window_manager->OpenWindow( 56 window_manager->OpenWindow(
57 base::Bind(&OpenWindowCallback, &id, &run_loop)); 57 base::Bind(&OpenWindowCallback, &id, &run_loop));
58 run_loop.Run(); 58 run_loop.Run();
59 return id; 59 return id;
60 } 60 }
61 61
62 view_manager::Id OpenWindowWithURL(WindowManagerService* window_manager, 62 Id OpenWindowWithURL(WindowManagerService* window_manager,
63 const std::string& url) { 63 const std::string& url) {
64 base::RunLoop run_loop; 64 base::RunLoop run_loop;
65 view_manager::Id id; 65 Id id;
66 window_manager->OpenWindowWithURL( 66 window_manager->OpenWindowWithURL(
67 url, 67 url,
68 base::Bind(&OpenWindowCallback, &id, &run_loop)); 68 base::Bind(&OpenWindowCallback, &id, &run_loop));
69 run_loop.Run(); 69 run_loop.Run();
70 return id; 70 return id;
71 } 71 }
72 72
73 class TestWindowManagerClient : public WindowManagerClient { 73 class TestWindowManagerClient : public WindowManagerClient {
74 public: 74 public:
75 typedef base::Callback<void(view_manager::Id, view_manager::Id)> 75 typedef base::Callback<void(Id, Id)>
76 TwoNodeCallback; 76 TwoNodeCallback;
77 77
78 explicit TestWindowManagerClient(base::RunLoop* run_loop) 78 explicit TestWindowManagerClient(base::RunLoop* run_loop)
79 : run_loop_(run_loop) {} 79 : run_loop_(run_loop) {}
80 virtual ~TestWindowManagerClient() {} 80 virtual ~TestWindowManagerClient() {}
81 81
82 void set_focus_changed_callback(const TwoNodeCallback& callback) { 82 void set_focus_changed_callback(const TwoNodeCallback& callback) {
83 focus_changed_callback_ = callback; 83 focus_changed_callback_ = callback;
84 } 84 }
85 void set_active_window_changed_callback(const TwoNodeCallback& callback) { 85 void set_active_window_changed_callback(const TwoNodeCallback& callback) {
86 active_window_changed_callback_ = callback; 86 active_window_changed_callback_ = callback;
87 } 87 }
88 88
89 private: 89 private:
90 // Overridden from WindowManagerClient: 90 // Overridden from WindowManagerClient:
91 virtual void OnWindowManagerReady() MOJO_OVERRIDE { 91 virtual void OnWindowManagerReady() MOJO_OVERRIDE {
92 run_loop_->Quit(); 92 run_loop_->Quit();
93 } 93 }
94 virtual void OnCaptureChanged( 94 virtual void OnCaptureChanged(
95 view_manager::Id old_capture_node_id, 95 Id old_capture_node_id,
96 view_manager::Id new_capture_node_id) MOJO_OVERRIDE { 96 Id new_capture_node_id) MOJO_OVERRIDE {
97 } 97 }
98 virtual void OnFocusChanged( 98 virtual void OnFocusChanged(
99 view_manager::Id old_focused_node_id, 99 Id old_focused_node_id,
100 view_manager::Id new_focused_node_id) MOJO_OVERRIDE { 100 Id new_focused_node_id) MOJO_OVERRIDE {
101 if (!focus_changed_callback_.is_null()) 101 if (!focus_changed_callback_.is_null())
102 focus_changed_callback_.Run(old_focused_node_id, new_focused_node_id); 102 focus_changed_callback_.Run(old_focused_node_id, new_focused_node_id);
103 } 103 }
104 virtual void OnActiveWindowChanged( 104 virtual void OnActiveWindowChanged(
105 view_manager::Id old_active_window, 105 Id old_active_window,
106 view_manager::Id new_active_window) MOJO_OVERRIDE { 106 Id new_active_window) MOJO_OVERRIDE {
107 if (!active_window_changed_callback_.is_null()) 107 if (!active_window_changed_callback_.is_null())
108 active_window_changed_callback_.Run(old_active_window, new_active_window); 108 active_window_changed_callback_.Run(old_active_window, new_active_window);
109 } 109 }
110 110
111 base::RunLoop* run_loop_; 111 base::RunLoop* run_loop_;
112 TwoNodeCallback focus_changed_callback_; 112 TwoNodeCallback focus_changed_callback_;
113 TwoNodeCallback active_window_changed_callback_; 113 TwoNodeCallback active_window_changed_callback_;
114 114
115 DISALLOW_COPY_AND_ASSIGN(TestWindowManagerClient); 115 DISALLOW_COPY_AND_ASSIGN(TestWindowManagerClient);
116 }; 116 };
117 117
118 class TestServiceLoader : public ServiceLoader, 118 class TestServiceLoader : public ServiceLoader,
119 public ApplicationDelegate, 119 public ApplicationDelegate,
120 public view_manager::ViewManagerDelegate { 120 public ViewManagerDelegate {
121 public: 121 public:
122 typedef base::Callback<void(view_manager::Node*)> RootAddedCallback; 122 typedef base::Callback<void(Node*)> RootAddedCallback;
123 123
124 explicit TestServiceLoader(const RootAddedCallback& root_added_callback) 124 explicit TestServiceLoader(const RootAddedCallback& root_added_callback)
125 : root_added_callback_(root_added_callback), 125 : root_added_callback_(root_added_callback),
126 view_manager_client_factory_(this) {} 126 view_manager_client_factory_(this) {}
127 virtual ~TestServiceLoader() {} 127 virtual ~TestServiceLoader() {}
128 128
129 private: 129 private:
130 // Overridden from ServiceLoader: 130 // Overridden from ServiceLoader:
131 virtual void LoadService(ServiceManager* service_manager, 131 virtual void LoadService(ServiceManager* service_manager,
132 const GURL& url, 132 const GURL& url,
133 ScopedMessagePipeHandle shell_handle) MOJO_OVERRIDE { 133 ScopedMessagePipeHandle shell_handle) MOJO_OVERRIDE {
134 scoped_ptr<ApplicationImpl> app( 134 scoped_ptr<ApplicationImpl> app(
135 new ApplicationImpl(this, shell_handle.Pass())); 135 new ApplicationImpl(this, shell_handle.Pass()));
136 apps_.push_back(app.release()); 136 apps_.push_back(app.release());
137 } 137 }
138 virtual void OnServiceError(ServiceManager* service_manager, 138 virtual void OnServiceError(ServiceManager* service_manager,
139 const GURL& url) MOJO_OVERRIDE { 139 const GURL& url) MOJO_OVERRIDE {
140 } 140 }
141 141
142 // Overridden from ApplicationDelegate: 142 // Overridden from ApplicationDelegate:
143 virtual bool ConfigureIncomingConnection( 143 virtual bool ConfigureIncomingConnection(
144 ApplicationConnection* connection) MOJO_OVERRIDE { 144 ApplicationConnection* connection) MOJO_OVERRIDE {
145 connection->AddService(&view_manager_client_factory_); 145 connection->AddService(&view_manager_client_factory_);
146 return true; 146 return true;
147 } 147 }
148 148
149 // Overridden from ViewManagerDelegate: 149 // Overridden from ViewManagerDelegate:
150 virtual void OnRootAdded(view_manager::ViewManager* view_manager, 150 virtual void OnRootAdded(ViewManager* view_manager,
151 view_manager::Node* root) MOJO_OVERRIDE { 151 Node* root) MOJO_OVERRIDE {
152 root_added_callback_.Run(root); 152 root_added_callback_.Run(root);
153 } 153 }
154 virtual void OnViewManagerDisconnected( 154 virtual void OnViewManagerDisconnected(
155 view_manager::ViewManager* view_manager) MOJO_OVERRIDE { 155 ViewManager* view_manager) MOJO_OVERRIDE {
156 } 156 }
157 157
158 RootAddedCallback root_added_callback_; 158 RootAddedCallback root_added_callback_;
159 159
160 ScopedVector<ApplicationImpl> apps_; 160 ScopedVector<ApplicationImpl> apps_;
161 view_manager::ViewManagerClientFactory view_manager_client_factory_; 161 ViewManagerClientFactory view_manager_client_factory_;
162 162
163 DISALLOW_COPY_AND_ASSIGN(TestServiceLoader); 163 DISALLOW_COPY_AND_ASSIGN(TestServiceLoader);
164 }; 164 };
165 165
166 } // namespace 166 } // namespace
167 167
168 class WindowManagerApiTest : public testing::Test { 168 class WindowManagerApiTest : public testing::Test {
169 public: 169 public:
170 WindowManagerApiTest() {} 170 WindowManagerApiTest() {}
171 virtual ~WindowManagerApiTest() {} 171 virtual ~WindowManagerApiTest() {}
172 172
173 protected: 173 protected:
174 typedef std::pair<view_manager::Id, view_manager::Id> TwoIds; 174 typedef std::pair<Id, Id> TwoIds;
175 175
176 view_manager::Id WaitForEmbed() { 176 Id WaitForEmbed() {
177 view_manager::Id id; 177 Id id;
178 base::RunLoop run_loop; 178 base::RunLoop run_loop;
179 root_added_callback_ = base::Bind(&WindowManagerApiTest::OnEmbed, 179 root_added_callback_ = base::Bind(&WindowManagerApiTest::OnEmbed,
180 base::Unretained(this), &id, &run_loop); 180 base::Unretained(this), &id, &run_loop);
181 run_loop.Run(); 181 run_loop.Run();
182 return id; 182 return id;
183 } 183 }
184 184
185 TwoIds WaitForFocusChange() { 185 TwoIds WaitForFocusChange() {
186 TwoIds old_and_new; 186 TwoIds old_and_new;
187 base::RunLoop run_loop; 187 base::RunLoop run_loop;
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
229 void ConnectToWindowManager() { 229 void ConnectToWindowManager() {
230 test_helper_.service_manager()->ConnectToService( 230 test_helper_.service_manager()->ConnectToService(
231 GURL("mojo:mojo_core_window_manager"), 231 GURL("mojo:mojo_core_window_manager"),
232 &window_manager_); 232 &window_manager_);
233 base::RunLoop connect_loop; 233 base::RunLoop connect_loop;
234 window_manager_client_.reset(new TestWindowManagerClient(&connect_loop)); 234 window_manager_client_.reset(new TestWindowManagerClient(&connect_loop));
235 window_manager_.set_client(window_manager_client()); 235 window_manager_.set_client(window_manager_client());
236 connect_loop.Run(); 236 connect_loop.Run();
237 } 237 }
238 238
239 void OnRootAdded(view_manager::Node* root) { 239 void OnRootAdded(Node* root) {
240 if (!root_added_callback_.is_null()) 240 if (!root_added_callback_.is_null())
241 root_added_callback_.Run(root); 241 root_added_callback_.Run(root);
242 } 242 }
243 243
244 void OnEmbed(view_manager::Id* root_id, 244 void OnEmbed(Id* root_id,
245 base::RunLoop* loop, 245 base::RunLoop* loop,
246 view_manager::Node* root) { 246 Node* root) {
247 *root_id = root->id(); 247 *root_id = root->id();
248 loop->Quit(); 248 loop->Quit();
249 } 249 }
250 250
251 void OnFocusChanged(TwoIds* old_and_new, 251 void OnFocusChanged(TwoIds* old_and_new,
252 base::RunLoop* run_loop, 252 base::RunLoop* run_loop,
253 view_manager::Id old_focused_node_id, 253 Id old_focused_node_id,
254 view_manager::Id new_focused_node_id) { 254 Id new_focused_node_id) {
255 DCHECK(old_and_new); 255 DCHECK(old_and_new);
256 old_and_new->first = old_focused_node_id; 256 old_and_new->first = old_focused_node_id;
257 old_and_new->second = new_focused_node_id; 257 old_and_new->second = new_focused_node_id;
258 run_loop->Quit(); 258 run_loop->Quit();
259 } 259 }
260 260
261 void OnActiveWindowChanged(TwoIds* old_and_new, 261 void OnActiveWindowChanged(TwoIds* old_and_new,
262 base::RunLoop* run_loop, 262 base::RunLoop* run_loop,
263 view_manager::Id old_focused_node_id, 263 Id old_focused_node_id,
264 view_manager::Id new_focused_node_id) { 264 Id new_focused_node_id) {
265 DCHECK(old_and_new); 265 DCHECK(old_and_new);
266 old_and_new->first = old_focused_node_id; 266 old_and_new->first = old_focused_node_id;
267 old_and_new->second = new_focused_node_id; 267 old_and_new->second = new_focused_node_id;
268 run_loop->Quit(); 268 run_loop->Quit();
269 } 269 }
270 270
271 shell::ShellTestHelper test_helper_; 271 shell::ShellTestHelper test_helper_;
272 base::MessageLoop loop_; 272 base::MessageLoop loop_;
273 view_manager::ViewManagerInitServicePtr view_manager_init_; 273 ViewManagerInitServicePtr view_manager_init_;
274 scoped_ptr<TestWindowManagerClient> window_manager_client_; 274 scoped_ptr<TestWindowManagerClient> window_manager_client_;
275 TestServiceLoader::RootAddedCallback root_added_callback_; 275 TestServiceLoader::RootAddedCallback root_added_callback_;
276 276
277 DISALLOW_COPY_AND_ASSIGN(WindowManagerApiTest); 277 DISALLOW_COPY_AND_ASSIGN(WindowManagerApiTest);
278 }; 278 };
279 279
280 // http://crbug.com/396295 280 // http://crbug.com/396295
281 TEST_F(WindowManagerApiTest, DISABLED_OpenWindow) { 281 TEST_F(WindowManagerApiTest, DISABLED_OpenWindow) {
282 OpenWindow(window_manager_.get()); 282 OpenWindow(window_manager_.get());
283 view_manager::Id created_node = 283 Id created_node =
284 OpenWindowWithURL(window_manager_.get(), kTestServiceURL); 284 OpenWindowWithURL(window_manager_.get(), kTestServiceURL);
285 view_manager::Id embed_node = WaitForEmbed(); 285 Id embed_node = WaitForEmbed();
286 EXPECT_EQ(created_node, embed_node); 286 EXPECT_EQ(created_node, embed_node);
287 } 287 }
288 288
289 // http://crbug.com/396295 289 // http://crbug.com/396295
290 TEST_F(WindowManagerApiTest, DISABLED_FocusAndActivateWindow) { 290 TEST_F(WindowManagerApiTest, DISABLED_FocusAndActivateWindow) {
291 view_manager::Id first_window = OpenWindow(window_manager_.get()); 291 Id first_window = OpenWindow(window_manager_.get());
292 window_manager_->FocusWindow(first_window, 292 window_manager_->FocusWindow(first_window,
293 base::Bind(&EmptyResultCallback)); 293 base::Bind(&EmptyResultCallback));
294 TwoIds ids = WaitForFocusChange(); 294 TwoIds ids = WaitForFocusChange();
295 EXPECT_TRUE(ids.first == 0); 295 EXPECT_TRUE(ids.first == 0);
296 EXPECT_EQ(ids.second, first_window); 296 EXPECT_EQ(ids.second, first_window);
297 297
298 view_manager::Id second_window = OpenWindow(window_manager_.get()); 298 Id second_window = OpenWindow(window_manager_.get());
299 window_manager_->ActivateWindow(second_window, 299 window_manager_->ActivateWindow(second_window,
300 base::Bind(&EmptyResultCallback)); 300 base::Bind(&EmptyResultCallback));
301 ids = WaitForActiveWindowChange(); 301 ids = WaitForActiveWindowChange();
302 EXPECT_EQ(ids.first, first_window); 302 EXPECT_EQ(ids.first, first_window);
303 EXPECT_EQ(ids.second, second_window); 303 EXPECT_EQ(ids.second, second_window);
304 } 304 }
305 305
306 } // namespace mojo 306 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/services/view_manager/window_tree_host_impl.cc ('k') | mojo/services/window_manager/window_manager_app.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698