Index: mojo/shell/application_package_apptest.cc |
diff --git a/mojo/shell/application_package_apptest.cc b/mojo/shell/application_package_apptest.cc |
deleted file mode 100644 |
index 333ab70a1880b80fc25b89484194fb7b5fde9057..0000000000000000000000000000000000000000 |
--- a/mojo/shell/application_package_apptest.cc |
+++ /dev/null |
@@ -1,210 +0,0 @@ |
-// Copyright 2016 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include <stddef.h> |
-#include <stdint.h> |
- |
-#include <utility> |
- |
-#include "base/bind.h" |
-#include "base/macros.h" |
-#include "base/run_loop.h" |
-#include "base/threading/simple_thread.h" |
-#include "mojo/public/cpp/bindings/weak_binding_set.h" |
-#include "mojo/shell/application_package_apptest.mojom.h" |
-#include "mojo/shell/public/cpp/application_runner.h" |
-#include "mojo/shell/public/cpp/application_test_base.h" |
-#include "mojo/shell/public/cpp/interface_factory.h" |
-#include "mojo/shell/public/interfaces/content_handler.mojom.h" |
- |
-// Tests that multiple applications can be packaged in a single Mojo application |
-// implementing ContentHandler; that these applications can be specified by |
-// the package's manifest and are thus registered with the PackageManager. |
- |
-namespace mojo { |
-namespace shell { |
-namespace { |
- |
-using GetNameCallback = |
- test::mojom::ApplicationPackageApptestService::GetNameCallback; |
- |
-class ProvidedApplicationDelegate |
- : public ShellClient, |
- public InterfaceFactory<test::mojom::ApplicationPackageApptestService>, |
- public test::mojom::ApplicationPackageApptestService, |
- public base::SimpleThread { |
- public: |
- ProvidedApplicationDelegate(const std::string& name, |
- InterfaceRequest<mojom::ShellClient> request, |
- const Callback<void()>& destruct_callback) |
- : base::SimpleThread(name), |
- name_(name), |
- request_(std::move(request)), |
- destruct_callback_(destruct_callback) { |
- Start(); |
- } |
- ~ProvidedApplicationDelegate() override { |
- Join(); |
- destruct_callback_.Run(); |
- } |
- |
- private: |
- // mojo::ShellClient: |
- void Initialize(Shell* shell, const std::string& url, uint32_t id) override {} |
- bool AcceptConnection(Connection* connection) override { |
- connection->AddInterface<test::mojom::ApplicationPackageApptestService>( |
- this); |
- return true; |
- } |
- |
- // InterfaceFactory<test::mojom::ApplicationPackageApptestService>: |
- void Create( |
- Connection* connection, |
- InterfaceRequest<test::mojom::ApplicationPackageApptestService> request) |
- override { |
- bindings_.AddBinding(this, std::move(request)); |
- } |
- |
- // test::mojom::ApplicationPackageApptestService: |
- void GetName(const GetNameCallback& callback) override { |
- callback.Run(name_); |
- } |
- |
- // base::SimpleThread: |
- void Run() override { |
- ApplicationRunner(this).Run(request_.PassMessagePipe().release().value(), |
- false); |
- delete this; |
- } |
- |
- const std::string name_; |
- InterfaceRequest<mojom::ShellClient> request_; |
- const Callback<void()> destruct_callback_; |
- WeakBindingSet<test::mojom::ApplicationPackageApptestService> bindings_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ProvidedApplicationDelegate); |
-}; |
- |
-class ApplicationPackageApptestDelegate |
- : public ShellClient, |
- public InterfaceFactory<mojom::ContentHandler>, |
- public InterfaceFactory<test::mojom::ApplicationPackageApptestService>, |
- public mojom::ContentHandler, |
- public test::mojom::ApplicationPackageApptestService { |
- public: |
- ApplicationPackageApptestDelegate() {} |
- ~ApplicationPackageApptestDelegate() override {} |
- |
- private: |
- // mojo::ShellClient: |
- void Initialize(Shell* shell, const std::string& url, uint32_t id) override {} |
- bool AcceptConnection(Connection* connection) override { |
- connection->AddInterface<ContentHandler>(this); |
- connection->AddInterface<test::mojom::ApplicationPackageApptestService>( |
- this); |
- return true; |
- } |
- |
- // InterfaceFactory<mojom::ContentHandler>: |
- void Create(Connection* connection, |
- InterfaceRequest<mojom::ContentHandler> request) override { |
- content_handler_bindings_.AddBinding(this, std::move(request)); |
- } |
- |
- // InterfaceFactory<test::mojom::ApplicationPackageApptestService>: |
- void Create(Connection* connection, |
- InterfaceRequest<test::mojom::ApplicationPackageApptestService> |
- request) override { |
- bindings_.AddBinding(this, std::move(request)); |
- } |
- |
- // mojom::ContentHandler: |
- void StartApplication(InterfaceRequest<mojom::ShellClient> request, |
- URLResponsePtr response, |
- const Callback<void()>& destruct_callback) override { |
- const std::string url = response->url; |
- if (url == "mojo://package_test_a/") { |
- new ProvidedApplicationDelegate("A", std::move(request), |
- destruct_callback); |
- } else if (url == "mojo://package_test_b/") { |
- new ProvidedApplicationDelegate("B", std::move(request), |
- destruct_callback); |
- } |
- } |
- |
- // test::mojom::ApplicationPackageApptestService: |
- void GetName(const GetNameCallback& callback) override { |
- callback.Run("ROOT"); |
- } |
- |
- std::vector<scoped_ptr<ShellClient>> delegates_; |
- WeakBindingSet<mojom::ContentHandler> content_handler_bindings_; |
- WeakBindingSet<test::mojom::ApplicationPackageApptestService> bindings_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ApplicationPackageApptestDelegate); |
-}; |
- |
-void ReceiveName(std::string* out_name, |
- base::RunLoop* loop, |
- const String& name) { |
- *out_name = name; |
- loop->Quit(); |
-} |
- |
-} // namespace |
- |
-class ApplicationPackageApptest : public mojo::test::ApplicationTestBase { |
- public: |
- ApplicationPackageApptest() : delegate_(nullptr) {} |
- ~ApplicationPackageApptest() override {} |
- |
- private: |
- // test::ApplicationTestBase: |
- ShellClient* GetShellClient() override { |
- delegate_ = new ApplicationPackageApptestDelegate; |
- return delegate_; |
- } |
- |
- ApplicationPackageApptestDelegate* delegate_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ApplicationPackageApptest); |
-}; |
- |
-TEST_F(ApplicationPackageApptest, Basic) { |
- { |
- // We need to do this to force the shell to read the test app's manifest and |
- // register aliases. |
- test::mojom::ApplicationPackageApptestServicePtr root_service; |
- shell()->ConnectToInterface("mojo:mojo_shell_apptests", &root_service); |
- base::RunLoop run_loop; |
- std::string root_name; |
- root_service->GetName(base::Bind(&ReceiveName, &root_name, &run_loop)); |
- run_loop.Run(); |
- } |
- |
- { |
- // Now subsequent connects to applications provided by the root app will be |
- // resolved correctly. |
- test::mojom::ApplicationPackageApptestServicePtr service_a; |
- shell()->ConnectToInterface("mojo:package_test_a", &service_a); |
- base::RunLoop run_loop; |
- std::string a_name; |
- service_a->GetName(base::Bind(&ReceiveName, &a_name, &run_loop)); |
- run_loop.Run(); |
- EXPECT_EQ("A", a_name); |
- } |
- |
- { |
- test::mojom::ApplicationPackageApptestServicePtr service_b; |
- shell()->ConnectToInterface("mojo:package_test_b", &service_b); |
- base::RunLoop run_loop; |
- std::string b_name; |
- service_b->GetName(base::Bind(&ReceiveName, &b_name, &run_loop)); |
- run_loop.Run(); |
- EXPECT_EQ("B", b_name); |
- } |
-} |
- |
-} // namespace shell |
-} // namespace mojo |