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

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

Issue 1954343002: Remove ApplicationManagerTest.BCallC. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 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
« no previous file with comments | « no previous file | shell/application_manager/test.mojom » ('j') | 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 "shell/application_manager/application_manager.h" 5 #include "shell/application_manager/application_manager.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/at_exit.h" 9 #include "base/at_exit.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/macros.h" 11 #include "base/macros.h"
12 #include "base/memory/scoped_vector.h" 12 #include "base/memory/scoped_vector.h"
13 #include "base/message_loop/message_loop.h" 13 #include "base/message_loop/message_loop.h"
14 #include "mojo/public/cpp/application/application_connection.h" 14 #include "mojo/public/cpp/application/application_connection.h"
15 #include "mojo/public/cpp/application/application_delegate.h" 15 #include "mojo/public/cpp/application/application_delegate.h"
16 #include "mojo/public/cpp/application/application_impl.h" 16 #include "mojo/public/cpp/application/application_impl.h"
17 #include "mojo/public/cpp/application/connect.h" 17 #include "mojo/public/cpp/application/connect.h"
18 #include "mojo/public/cpp/application/interface_factory.h" 18 #include "mojo/public/cpp/application/interface_factory.h"
19 #include "mojo/public/cpp/application/service_provider_impl.h"
20 #include "mojo/public/cpp/bindings/strong_binding.h" 19 #include "mojo/public/cpp/bindings/strong_binding.h"
21 #include "mojo/public/interfaces/application/service_provider.mojom.h" 20 #include "mojo/public/interfaces/application/service_provider.mojom.h"
22 #include "shell/application_manager/application_loader.h" 21 #include "shell/application_manager/application_loader.h"
23 #include "shell/application_manager/test.mojom.h" 22 #include "shell/application_manager/test.mojom.h"
24 #include "testing/gtest/include/gtest/gtest.h" 23 #include "testing/gtest/include/gtest/gtest.h"
25 24
26 using mojo::Application; 25 using mojo::Application;
27 using mojo::ApplicationConnection; 26 using mojo::ApplicationConnection;
28 using mojo::ApplicationDelegate; 27 using mojo::ApplicationDelegate;
29 using mojo::ApplicationImpl; 28 using mojo::ApplicationImpl;
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 test_context_->IncrementNumADeletes(); 257 test_context_->IncrementNumADeletes();
259 if (base::MessageLoop::current()->is_running()) 258 if (base::MessageLoop::current()->is_running())
260 Quit(); 259 Quit();
261 } 260 }
262 261
263 private: 262 private:
264 void CallB() override { 263 void CallB() override {
265 b_->B(base::Bind(&TestAImpl::Quit, base::Unretained(this))); 264 b_->B(base::Bind(&TestAImpl::Quit, base::Unretained(this)));
266 } 265 }
267 266
268 void CallCFromB() override {
269 b_->CallC(base::Bind(&TestAImpl::Quit, base::Unretained(this)));
270 }
271
272 void Quit() { 267 void Quit() {
273 base::MessageLoop::current()->Quit(); 268 base::MessageLoop::current()->Quit();
274 test_context_->set_a_called_quit(); 269 test_context_->set_a_called_quit();
275 test_context_->QuitSoon(); 270 test_context_->QuitSoon();
276 } 271 }
277 272
278 TesterContext* test_context_; 273 TesterContext* test_context_;
279 TestBPtr b_; 274 TestBPtr b_;
280 StrongBinding<TestA> binding_; 275 StrongBinding<TestA> binding_;
281 }; 276 };
282 277
283 class TestBImpl : public TestB { 278 class TestBImpl : public TestB {
284 public: 279 public:
285 TestBImpl(ApplicationConnection* connection, 280 TestBImpl(ApplicationConnection* connection,
286 TesterContext* test_context, 281 TesterContext* test_context,
287 InterfaceRequest<TestB> request) 282 InterfaceRequest<TestB> request)
288 : test_context_(test_context), binding_(this, request.Pass()) { 283 : test_context_(test_context), binding_(this, request.Pass()) {}
289 connection->ConnectToService(&c_);
290 }
291 284
292 ~TestBImpl() override { 285 ~TestBImpl() override {
293 test_context_->IncrementNumBDeletes(); 286 test_context_->IncrementNumBDeletes();
294 if (base::MessageLoop::current()->is_running()) 287 if (base::MessageLoop::current()->is_running())
295 base::MessageLoop::current()->Quit(); 288 base::MessageLoop::current()->Quit();
296 test_context_->QuitSoon(); 289 test_context_->QuitSoon();
297 } 290 }
298 291
299 private: 292 private:
300 void B(const Callback<void()>& callback) override { 293 void B(const Callback<void()>& callback) override {
301 test_context_->IncrementNumBCalls(); 294 test_context_->IncrementNumBCalls();
302 callback.Run(); 295 callback.Run();
303 } 296 }
304 297
305 void CallC(const Callback<void()>& callback) override {
306 test_context_->IncrementNumBCalls();
307 c_->C(callback);
308 }
309
310 TesterContext* test_context_;
311 TestCPtr c_;
312 StrongBinding<TestB> binding_;
313 };
314
315 class TestCImpl : public TestC {
316 public:
317 TestCImpl(ApplicationConnection* connection,
318 TesterContext* test_context,
319 InterfaceRequest<TestC> request)
320 : test_context_(test_context), binding_(this, request.Pass()) {}
321
322 ~TestCImpl() override { test_context_->IncrementNumCDeletes(); }
323
324 private:
325 void C(const Callback<void()>& callback) override {
326 test_context_->IncrementNumCCalls();
327 callback.Run();
328 }
329
330 TesterContext* test_context_; 298 TesterContext* test_context_;
331 StrongBinding<TestC> binding_; 299 StrongBinding<TestB> binding_;
332 }; 300 };
333 301
334 class Tester : public ApplicationDelegate, 302 class Tester : public ApplicationDelegate,
335 public ApplicationLoader, 303 public ApplicationLoader,
336 public InterfaceFactory<TestA>, 304 public InterfaceFactory<TestA>,
337 public InterfaceFactory<TestB>, 305 public InterfaceFactory<TestB> {
338 public InterfaceFactory<TestC> {
339 public: 306 public:
340 Tester(TesterContext* context, const std::string& requestor_url) 307 Tester(TesterContext* context, const std::string& requestor_url)
341 : context_(context), requestor_url_(requestor_url) {} 308 : context_(context), requestor_url_(requestor_url) {}
342 ~Tester() override {} 309 ~Tester() override {}
343 310
344 private: 311 private:
345 void Load(const GURL& url, 312 void Load(const GURL& url,
346 InterfaceRequest<Application> application_request) override { 313 InterfaceRequest<Application> application_request) override {
347 app_.reset(new ApplicationImpl(this, application_request.Pass())); 314 app_.reset(new ApplicationImpl(this, application_request.Pass()));
348 } 315 }
(...skipping 10 matching lines...) Expand all
359 if (connection->GetRemoteApplicationURL() == kTestAURLString) 326 if (connection->GetRemoteApplicationURL() == kTestAURLString)
360 connection->AddService<TestB>(this); 327 connection->AddService<TestB>(this);
361 else 328 else
362 connection->AddService<TestA>(this); 329 connection->AddService<TestA>(this);
363 return true; 330 return true;
364 } 331 }
365 332
366 void Create(ApplicationConnection* connection, 333 void Create(ApplicationConnection* connection,
367 InterfaceRequest<TestA> request) override { 334 InterfaceRequest<TestA> request) override {
368 mojo::InterfaceHandle<mojo::ServiceProvider> incoming_sp_handle; 335 mojo::InterfaceHandle<mojo::ServiceProvider> incoming_sp_handle;
369 mojo::InterfaceHandle<mojo::ServiceProvider> outgoing_sp_handle;
370 mojo::InterfaceRequest<mojo::ServiceProvider> outgoing_sp_request =
371 GetProxy(&outgoing_sp_handle);
372 app_->shell()->ConnectToApplication(kTestBURLString, 336 app_->shell()->ConnectToApplication(kTestBURLString,
373 GetProxy(&incoming_sp_handle), 337 GetProxy(&incoming_sp_handle), nullptr);
374 outgoing_sp_handle.Pass());
375 std::unique_ptr<mojo::ServiceProviderImpl> outgoing_sp_impl(
376 new mojo::ServiceProviderImpl(outgoing_sp_request.Pass()));
377 outgoing_sp_impl->AddService<TestC>(this);
378 outgoing_sp_impls_for_b_.push_back(std::move(outgoing_sp_impl));
379 a_bindings_.push_back( 338 a_bindings_.push_back(
380 new TestAImpl(incoming_sp_handle.Pass(), context_, request.Pass())); 339 new TestAImpl(incoming_sp_handle.Pass(), context_, request.Pass()));
381 } 340 }
382 341
383 void Create(ApplicationConnection* connection, 342 void Create(ApplicationConnection* connection,
384 InterfaceRequest<TestB> request) override { 343 InterfaceRequest<TestB> request) override {
385 new TestBImpl(connection, context_, request.Pass()); 344 new TestBImpl(connection, context_, request.Pass());
386 } 345 }
387 346
388 void Create(ApplicationConnection* connection,
389 InterfaceRequest<TestC> request) override {
390 new TestCImpl(connection, context_, request.Pass());
391 }
392
393 TesterContext* context_; 347 TesterContext* context_;
394 scoped_ptr<ApplicationImpl> app_; 348 scoped_ptr<ApplicationImpl> app_;
395 std::string requestor_url_; 349 std::string requestor_url_;
396 std::vector<std::unique_ptr<mojo::ServiceProviderImpl>>
397 outgoing_sp_impls_for_b_;
398 ScopedVector<TestAImpl> a_bindings_; 350 ScopedVector<TestAImpl> a_bindings_;
399 }; 351 };
400 352
401 class TestDelegate : public ApplicationManager::Delegate { 353 class TestDelegate : public ApplicationManager::Delegate {
402 public: 354 public:
403 void AddMapping(const GURL& from, const GURL& to) { mappings_[from] = to; } 355 void AddMapping(const GURL& from, const GURL& to) { mappings_[from] = to; }
404 356
405 // ApplicationManager::Delegate 357 // ApplicationManager::Delegate
406 GURL ResolveMappings(const GURL& url) override { 358 GURL ResolveMappings(const GURL& url) override {
407 auto it = mappings_.find(url); 359 auto it = mappings_.find(url);
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
716 AddLoaderForURL(GURL(kTestBURLString), kTestAURLString); 668 AddLoaderForURL(GURL(kTestBURLString), kTestAURLString);
717 669
718 TestAPtr a; 670 TestAPtr a;
719 application_manager_->ConnectToService(GURL(kTestAURLString), &a); 671 application_manager_->ConnectToService(GURL(kTestAURLString), &a);
720 a->CallB(); 672 a->CallB();
721 loop_.Run(); 673 loop_.Run();
722 EXPECT_EQ(1, tester_context_.num_b_calls()); 674 EXPECT_EQ(1, tester_context_.num_b_calls());
723 EXPECT_TRUE(tester_context_.a_called_quit()); 675 EXPECT_TRUE(tester_context_.a_called_quit());
724 } 676 }
725 677
726 // A calls B which calls C.
727 TEST_F(ApplicationManagerTest, BCallC) {
728 // Any url can load a.
729 AddLoaderForURL(GURL(kTestAURLString), std::string());
730
731 // Only a can load b.
732 AddLoaderForURL(GURL(kTestBURLString), kTestAURLString);
733
734 TestAPtr a;
735 application_manager_->ConnectToService(GURL(kTestAURLString), &a);
736 a->CallCFromB();
737 loop_.Run();
738
739 EXPECT_EQ(1, tester_context_.num_b_calls());
740 EXPECT_EQ(1, tester_context_.num_c_calls());
741 EXPECT_TRUE(tester_context_.a_called_quit());
742 }
743
744 // Confirm that a service impl will be deleted if the app that connected to 678 // Confirm that a service impl will be deleted if the app that connected to
745 // it goes away. 679 // it goes away.
746 TEST_F(ApplicationManagerTest, BDeleted) { 680 TEST_F(ApplicationManagerTest, BDeleted) {
747 AddLoaderForURL(GURL(kTestAURLString), std::string()); 681 AddLoaderForURL(GURL(kTestAURLString), std::string());
748 AddLoaderForURL(GURL(kTestBURLString), std::string()); 682 AddLoaderForURL(GURL(kTestBURLString), std::string());
749 683
750 TestAPtr a; 684 TestAPtr a;
751 application_manager_->ConnectToService(GURL(kTestAURLString), &a); 685 application_manager_->ConnectToService(GURL(kTestAURLString), &a);
752 686
753 a->CallB(); 687 a->CallB();
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
856 bool called = false; 790 bool called = false;
857 application_manager_->ConnectToApplication( 791 application_manager_->ConnectToApplication(
858 GURL("test:test"), GURL(), nullptr, nullptr, 792 GURL("test:test"), GURL(), nullptr, nullptr,
859 base::Bind(&QuitClosure, base::Unretained(&called))); 793 base::Bind(&QuitClosure, base::Unretained(&called)));
860 loop_.Run(); 794 loop_.Run();
861 EXPECT_TRUE(called); 795 EXPECT_TRUE(called);
862 } 796 }
863 797
864 } // namespace 798 } // namespace
865 } // namespace shell 799 } // namespace shell
OLDNEW
« no previous file with comments | « no previous file | shell/application_manager/test.mojom » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698