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

Side by Side Diff: mojo/application_manager/application_manager_unittest.cc

Issue 668663006: Standardize usage of virtual/override/final in mojo/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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
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/at_exit.h" 5 #include "base/at_exit.h"
6 #include "base/bind.h" 6 #include "base/bind.h"
7 #include "base/macros.h" 7 #include "base/macros.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "mojo/application_manager/application_loader.h" 9 #include "mojo/application_manager/application_loader.h"
10 #include "mojo/application_manager/application_manager.h" 10 #include "mojo/application_manager/application_manager.h"
(...skipping 16 matching lines...) Expand all
27 struct TestContext { 27 struct TestContext {
28 TestContext() : num_impls(0), num_loader_deletes(0) {} 28 TestContext() : num_impls(0), num_loader_deletes(0) {}
29 std::string last_test_string; 29 std::string last_test_string;
30 int num_impls; 30 int num_impls;
31 int num_loader_deletes; 31 int num_loader_deletes;
32 }; 32 };
33 33
34 class QuitMessageLoopErrorHandler : public ErrorHandler { 34 class QuitMessageLoopErrorHandler : public ErrorHandler {
35 public: 35 public:
36 QuitMessageLoopErrorHandler() {} 36 QuitMessageLoopErrorHandler() {}
37 virtual ~QuitMessageLoopErrorHandler() {} 37 ~QuitMessageLoopErrorHandler() override {}
38 38
39 // |ErrorHandler| implementation: 39 // |ErrorHandler| implementation:
40 virtual void OnConnectionError() override { 40 void OnConnectionError() override {
41 base::MessageLoop::current()->QuitWhenIdle(); 41 base::MessageLoop::current()->QuitWhenIdle();
42 } 42 }
43 43
44 private: 44 private:
45 DISALLOW_COPY_AND_ASSIGN(QuitMessageLoopErrorHandler); 45 DISALLOW_COPY_AND_ASSIGN(QuitMessageLoopErrorHandler);
46 }; 46 };
47 47
48 class TestServiceImpl : public InterfaceImpl<TestService> { 48 class TestServiceImpl : public InterfaceImpl<TestService> {
49 public: 49 public:
50 explicit TestServiceImpl(TestContext* context) : context_(context) { 50 explicit TestServiceImpl(TestContext* context) : context_(context) {
51 ++context_->num_impls; 51 ++context_->num_impls;
52 } 52 }
53 53
54 virtual ~TestServiceImpl() { --context_->num_impls; } 54 ~TestServiceImpl() override { --context_->num_impls; }
55 55
56 virtual void OnConnectionError() override { 56 void OnConnectionError() override {
57 if (!base::MessageLoop::current()->is_running()) 57 if (!base::MessageLoop::current()->is_running())
58 return; 58 return;
59 base::MessageLoop::current()->Quit(); 59 base::MessageLoop::current()->Quit();
60 } 60 }
61 61
62 // TestService implementation: 62 // TestService implementation:
63 virtual void Test(const String& test_string) override { 63 void Test(const String& test_string) override {
64 context_->last_test_string = test_string; 64 context_->last_test_string = test_string;
65 client()->AckTest(); 65 client()->AckTest();
66 } 66 }
67 67
68 private: 68 private:
69 TestContext* context_; 69 TestContext* context_;
70 }; 70 };
71 71
72 class TestClientImpl : public TestClient { 72 class TestClientImpl : public TestClient {
73 public: 73 public:
74 explicit TestClientImpl(TestServicePtr service) 74 explicit TestClientImpl(TestServicePtr service)
75 : service_(service.Pass()), quit_after_ack_(false) { 75 : service_(service.Pass()), quit_after_ack_(false) {
76 service_.set_client(this); 76 service_.set_client(this);
77 } 77 }
78 78
79 virtual ~TestClientImpl() { service_.reset(); } 79 ~TestClientImpl() override { service_.reset(); }
80 80
81 virtual void AckTest() override { 81 void AckTest() override {
82 if (quit_after_ack_) 82 if (quit_after_ack_)
83 base::MessageLoop::current()->Quit(); 83 base::MessageLoop::current()->Quit();
84 } 84 }
85 85
86 void Test(std::string test_string) { 86 void Test(std::string test_string) {
87 quit_after_ack_ = true; 87 quit_after_ack_ = true;
88 service_->Test(test_string); 88 service_->Test(test_string);
89 } 89 }
90 90
91 private: 91 private:
92 TestServicePtr service_; 92 TestServicePtr service_;
93 bool quit_after_ack_; 93 bool quit_after_ack_;
94 DISALLOW_COPY_AND_ASSIGN(TestClientImpl); 94 DISALLOW_COPY_AND_ASSIGN(TestClientImpl);
95 }; 95 };
96 96
97 class TestApplicationLoader : public ApplicationLoader, 97 class TestApplicationLoader : public ApplicationLoader,
98 public ApplicationDelegate, 98 public ApplicationDelegate,
99 public InterfaceFactory<TestService> { 99 public InterfaceFactory<TestService> {
100 public: 100 public:
101 TestApplicationLoader() : context_(NULL), num_loads_(0) {} 101 TestApplicationLoader() : context_(NULL), num_loads_(0) {}
102 102
103 virtual ~TestApplicationLoader() { 103 ~TestApplicationLoader() override {
104 if (context_) 104 if (context_)
105 ++context_->num_loader_deletes; 105 ++context_->num_loader_deletes;
106 test_app_.reset(NULL); 106 test_app_.reset(NULL);
107 } 107 }
108 108
109 void set_context(TestContext* context) { context_ = context; } 109 void set_context(TestContext* context) { context_ = context; }
110 int num_loads() const { return num_loads_; } 110 int num_loads() const { return num_loads_; }
111 const std::vector<std::string>& GetArgs() const { return test_app_->args(); } 111 const std::vector<std::string>& GetArgs() const { return test_app_->args(); }
112 112
113 private: 113 private:
114 // ApplicationLoader implementation. 114 // ApplicationLoader implementation.
115 virtual void Load(ApplicationManager* manager, 115 void Load(ApplicationManager* manager,
116 const GURL& url, 116 const GURL& url,
117 scoped_refptr<LoadCallbacks> callbacks) override { 117 scoped_refptr<LoadCallbacks> callbacks) override {
118 ++num_loads_; 118 ++num_loads_;
119 test_app_.reset( 119 test_app_.reset(
120 new ApplicationImpl(this, callbacks->RegisterApplication().Pass())); 120 new ApplicationImpl(this, callbacks->RegisterApplication().Pass()));
121 } 121 }
122 122
123 virtual void OnApplicationError(ApplicationManager* manager, 123 void OnApplicationError(ApplicationManager* manager,
124 const GURL& url) override {} 124 const GURL& url) override {}
125 125
126 // ApplicationDelegate implementation. 126 // ApplicationDelegate implementation.
127 virtual bool ConfigureIncomingConnection( 127 bool ConfigureIncomingConnection(ApplicationConnection* connection) override {
128 ApplicationConnection* connection) override {
129 connection->AddService(this); 128 connection->AddService(this);
130 return true; 129 return true;
131 } 130 }
132 131
133 // InterfaceFactory implementation. 132 // InterfaceFactory implementation.
134 virtual void Create(ApplicationConnection* connection, 133 void Create(ApplicationConnection* connection,
135 InterfaceRequest<TestService> request) override { 134 InterfaceRequest<TestService> request) override {
136 BindToRequest(new TestServiceImpl(context_), &request); 135 BindToRequest(new TestServiceImpl(context_), &request);
137 } 136 }
138 137
139 scoped_ptr<ApplicationImpl> test_app_; 138 scoped_ptr<ApplicationImpl> test_app_;
140 TestContext* context_; 139 TestContext* context_;
141 int num_loads_; 140 int num_loads_;
142 DISALLOW_COPY_AND_ASSIGN(TestApplicationLoader); 141 DISALLOW_COPY_AND_ASSIGN(TestApplicationLoader);
143 }; 142 };
144 143
145 class TesterContext { 144 class TesterContext {
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
237 base::MessageLoop* loop_; 236 base::MessageLoop* loop_;
238 }; 237 };
239 238
240 // Used to test that the requestor url will be correctly passed. 239 // Used to test that the requestor url will be correctly passed.
241 class TestAImpl : public InterfaceImpl<TestA> { 240 class TestAImpl : public InterfaceImpl<TestA> {
242 public: 241 public:
243 TestAImpl(ApplicationConnection* connection, TesterContext* test_context) 242 TestAImpl(ApplicationConnection* connection, TesterContext* test_context)
244 : test_context_(test_context) { 243 : test_context_(test_context) {
245 connection->ConnectToApplication(kTestBURLString)->ConnectToService(&b_); 244 connection->ConnectToApplication(kTestBURLString)->ConnectToService(&b_);
246 } 245 }
247 virtual ~TestAImpl() { 246 ~TestAImpl() override {
248 test_context_->IncrementNumADeletes(); 247 test_context_->IncrementNumADeletes();
249 if (base::MessageLoop::current()->is_running()) 248 if (base::MessageLoop::current()->is_running())
250 Quit(); 249 Quit();
251 } 250 }
252 251
253 private: 252 private:
254 virtual void CallB() override { 253 void CallB() override {
255 b_->B(base::Bind(&TestAImpl::Quit, base::Unretained(this))); 254 b_->B(base::Bind(&TestAImpl::Quit, base::Unretained(this)));
256 } 255 }
257 256
258 virtual void CallCFromB() override { 257 void CallCFromB() override {
259 b_->CallC(base::Bind(&TestAImpl::Quit, base::Unretained(this))); 258 b_->CallC(base::Bind(&TestAImpl::Quit, base::Unretained(this)));
260 } 259 }
261 260
262 void Quit() { 261 void Quit() {
263 base::MessageLoop::current()->Quit(); 262 base::MessageLoop::current()->Quit();
264 test_context_->set_a_called_quit(); 263 test_context_->set_a_called_quit();
265 test_context_->QuitSoon(); 264 test_context_->QuitSoon();
266 } 265 }
267 266
268 TesterContext* test_context_; 267 TesterContext* test_context_;
269 TestBPtr b_; 268 TestBPtr b_;
270 }; 269 };
271 270
272 class TestBImpl : public InterfaceImpl<TestB> { 271 class TestBImpl : public InterfaceImpl<TestB> {
273 public: 272 public:
274 TestBImpl(ApplicationConnection* connection, TesterContext* test_context) 273 TestBImpl(ApplicationConnection* connection, TesterContext* test_context)
275 : test_context_(test_context) { 274 : test_context_(test_context) {
276 connection->ConnectToService(&c_); 275 connection->ConnectToService(&c_);
277 } 276 }
278 277
279 virtual ~TestBImpl() { 278 ~TestBImpl() override {
280 test_context_->IncrementNumBDeletes(); 279 test_context_->IncrementNumBDeletes();
281 if (base::MessageLoop::current()->is_running()) 280 if (base::MessageLoop::current()->is_running())
282 base::MessageLoop::current()->Quit(); 281 base::MessageLoop::current()->Quit();
283 test_context_->QuitSoon(); 282 test_context_->QuitSoon();
284 } 283 }
285 284
286 private: 285 private:
287 virtual void B(const mojo::Callback<void()>& callback) override { 286 void B(const mojo::Callback<void()>& callback) override {
288 test_context_->IncrementNumBCalls(); 287 test_context_->IncrementNumBCalls();
289 callback.Run(); 288 callback.Run();
290 } 289 }
291 290
292 virtual void CallC(const mojo::Callback<void()>& callback) override { 291 void CallC(const mojo::Callback<void()>& callback) override {
293 test_context_->IncrementNumBCalls(); 292 test_context_->IncrementNumBCalls();
294 c_->C(callback); 293 c_->C(callback);
295 } 294 }
296 295
297 TesterContext* test_context_; 296 TesterContext* test_context_;
298 TestCPtr c_; 297 TestCPtr c_;
299 }; 298 };
300 299
301 class TestCImpl : public InterfaceImpl<TestC> { 300 class TestCImpl : public InterfaceImpl<TestC> {
302 public: 301 public:
303 TestCImpl(ApplicationConnection* connection, TesterContext* test_context) 302 TestCImpl(ApplicationConnection* connection, TesterContext* test_context)
304 : test_context_(test_context) {} 303 : test_context_(test_context) {}
305 304
306 virtual ~TestCImpl() { test_context_->IncrementNumCDeletes(); } 305 ~TestCImpl() override { test_context_->IncrementNumCDeletes(); }
307 306
308 private: 307 private:
309 virtual void C(const mojo::Callback<void()>& callback) override { 308 void C(const mojo::Callback<void()>& callback) override {
310 test_context_->IncrementNumCCalls(); 309 test_context_->IncrementNumCCalls();
311 callback.Run(); 310 callback.Run();
312 } 311 }
313 TesterContext* test_context_; 312 TesterContext* test_context_;
314 }; 313 };
315 314
316 class Tester : public ApplicationDelegate, 315 class Tester : public ApplicationDelegate,
317 public ApplicationLoader, 316 public ApplicationLoader,
318 public InterfaceFactory<TestA>, 317 public InterfaceFactory<TestA>,
319 public InterfaceFactory<TestB>, 318 public InterfaceFactory<TestB>,
320 public InterfaceFactory<TestC> { 319 public InterfaceFactory<TestC> {
321 public: 320 public:
322 Tester(TesterContext* context, const std::string& requestor_url) 321 Tester(TesterContext* context, const std::string& requestor_url)
323 : context_(context), requestor_url_(requestor_url) {} 322 : context_(context), requestor_url_(requestor_url) {}
324 virtual ~Tester() {} 323 ~Tester() override {}
325 324
326 private: 325 private:
327 virtual void Load(ApplicationManager* manager, 326 void Load(ApplicationManager* manager,
328 const GURL& url, 327 const GURL& url,
329 scoped_refptr<LoadCallbacks> callbacks) override { 328 scoped_refptr<LoadCallbacks> callbacks) override {
330 app_.reset( 329 app_.reset(
331 new ApplicationImpl(this, callbacks->RegisterApplication().Pass())); 330 new ApplicationImpl(this, callbacks->RegisterApplication().Pass()));
332 } 331 }
333 332
334 virtual void OnApplicationError(ApplicationManager* manager, 333 void OnApplicationError(ApplicationManager* manager,
335 const GURL& url) override {} 334 const GURL& url) override {}
336 335
337 virtual bool ConfigureIncomingConnection( 336 bool ConfigureIncomingConnection(ApplicationConnection* connection) override {
338 ApplicationConnection* connection) override {
339 if (!requestor_url_.empty() && 337 if (!requestor_url_.empty() &&
340 requestor_url_ != connection->GetRemoteApplicationURL()) { 338 requestor_url_ != connection->GetRemoteApplicationURL()) {
341 context_->set_tester_called_quit(); 339 context_->set_tester_called_quit();
342 context_->QuitSoon(); 340 context_->QuitSoon();
343 base::MessageLoop::current()->Quit(); 341 base::MessageLoop::current()->Quit();
344 return false; 342 return false;
345 } 343 }
346 // If we're coming from A, then add B, otherwise A. 344 // If we're coming from A, then add B, otherwise A.
347 if (connection->GetRemoteApplicationURL() == kTestAURLString) 345 if (connection->GetRemoteApplicationURL() == kTestAURLString)
348 connection->AddService<TestB>(this); 346 connection->AddService<TestB>(this);
349 else 347 else
350 connection->AddService<TestA>(this); 348 connection->AddService<TestA>(this);
351 return true; 349 return true;
352 } 350 }
353 351
354 virtual bool ConfigureOutgoingConnection( 352 bool ConfigureOutgoingConnection(ApplicationConnection* connection) override {
355 ApplicationConnection* connection) override {
356 // If we're connecting to B, then add C. 353 // If we're connecting to B, then add C.
357 if (connection->GetRemoteApplicationURL() == kTestBURLString) 354 if (connection->GetRemoteApplicationURL() == kTestBURLString)
358 connection->AddService<TestC>(this); 355 connection->AddService<TestC>(this);
359 return true; 356 return true;
360 } 357 }
361 358
362 virtual void Create(ApplicationConnection* connection, 359 void Create(ApplicationConnection* connection,
363 InterfaceRequest<TestA> request) override { 360 InterfaceRequest<TestA> request) override {
364 BindToRequest(new TestAImpl(connection, context_), &request); 361 BindToRequest(new TestAImpl(connection, context_), &request);
365 } 362 }
366 363
367 virtual void Create(ApplicationConnection* connection, 364 void Create(ApplicationConnection* connection,
368 InterfaceRequest<TestB> request) override { 365 InterfaceRequest<TestB> request) override {
369 BindToRequest(new TestBImpl(connection, context_), &request); 366 BindToRequest(new TestBImpl(connection, context_), &request);
370 } 367 }
371 368
372 virtual void Create(ApplicationConnection* connection, 369 void Create(ApplicationConnection* connection,
373 InterfaceRequest<TestC> request) override { 370 InterfaceRequest<TestC> request) override {
374 BindToRequest(new TestCImpl(connection, context_), &request); 371 BindToRequest(new TestCImpl(connection, context_), &request);
375 } 372 }
376 373
377 TesterContext* context_; 374 TesterContext* context_;
378 scoped_ptr<ApplicationImpl> app_; 375 scoped_ptr<ApplicationImpl> app_;
379 std::string requestor_url_; 376 std::string requestor_url_;
380 }; 377 };
381 378
382 class TestServiceInterceptor : public ApplicationManager::Interceptor { 379 class TestServiceInterceptor : public ApplicationManager::Interceptor {
383 public: 380 public:
384 TestServiceInterceptor() : call_count_(0) {} 381 TestServiceInterceptor() : call_count_(0) {}
385 382
386 virtual ServiceProviderPtr OnConnectToClient( 383 ServiceProviderPtr OnConnectToClient(
387 const GURL& url, 384 const GURL& url,
388 ServiceProviderPtr service_provider) override { 385 ServiceProviderPtr service_provider) override {
389 ++call_count_; 386 ++call_count_;
390 url_ = url; 387 url_ = url;
391 return service_provider.Pass(); 388 return service_provider.Pass();
392 } 389 }
393 390
394 std::string url_spec() const { 391 std::string url_spec() const {
395 if (!url_.is_valid()) 392 if (!url_.is_valid())
396 return "invalid url"; 393 return "invalid url";
(...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after
674 std::string url("test:test3"); 671 std::string url("test:test3");
675 TestServicePtr test_service; 672 TestServicePtr test_service;
676 application_manager_->ConnectToService(GURL(url), &test_service); 673 application_manager_->ConnectToService(GURL(url), &test_service);
677 674
678 EXPECT_EQ(1, interceptor.call_count()); 675 EXPECT_EQ(1, interceptor.call_count());
679 EXPECT_EQ(url, interceptor.url_spec()); 676 EXPECT_EQ(url, interceptor.url_spec());
680 EXPECT_EQ(1, default_loader->num_loads()); 677 EXPECT_EQ(1, default_loader->num_loads());
681 } 678 }
682 679
683 } // namespace mojo 680 } // namespace mojo
OLDNEW
« no previous file with comments | « mojo/application_manager/application_manager.cc ('k') | mojo/application_manager/background_shell_application_loader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698