| Index: mandoline/services/core_services/core_services_application_delegate.cc
|
| diff --git a/mandoline/services/core_services/core_services_application_delegate.cc b/mandoline/services/core_services/core_services_application_delegate.cc
|
| deleted file mode 100644
|
| index f20b7df65589055303c2ae7b66dd551fa9d58f5a..0000000000000000000000000000000000000000
|
| --- a/mandoline/services/core_services/core_services_application_delegate.cc
|
| +++ /dev/null
|
| @@ -1,160 +0,0 @@
|
| -// Copyright 2015 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 "mandoline/services/core_services/core_services_application_delegate.h"
|
| -
|
| -#include <utility>
|
| -
|
| -#include "base/bind.h"
|
| -#include "base/macros.h"
|
| -#include "base/single_thread_task_runner.h"
|
| -#include "base/threading/platform_thread.h"
|
| -#include "base/threading/simple_thread.h"
|
| -#include "components/clipboard/clipboard_application_delegate.h"
|
| -#include "components/filesystem/file_system_app.h"
|
| -#include "components/web_view/web_view_application_delegate.h"
|
| -#include "mandoline/services/core_services/application_delegate_factory.h"
|
| -#include "mojo/logging/init_logging.h"
|
| -#include "mojo/message_pump/message_pump_mojo.h"
|
| -#include "mojo/services/tracing/public/cpp/tracing_impl.h"
|
| -#include "mojo/services/tracing/tracing_app.h"
|
| -#include "mojo/shell/public/cpp/application_runner.h"
|
| -#include "mojo/shell/public/cpp/connection.h"
|
| -#include "url/gurl.h"
|
| -
|
| -namespace core_services {
|
| -
|
| -// A helper class for hosting a mojo::ApplicationImpl on its own thread.
|
| -class ApplicationThread : public base::SimpleThread {
|
| - public:
|
| - ApplicationThread(
|
| - const base::WeakPtr<CoreServicesApplicationDelegate>
|
| - core_services_application,
|
| - const std::string& url,
|
| - scoped_ptr<mojo::ShellClient> delegate,
|
| - mojo::InterfaceRequest<mojo::shell::mojom::Application> request,
|
| - const mojo::Callback<void()>& destruct_callback)
|
| - : base::SimpleThread(url),
|
| - core_services_application_(core_services_application),
|
| - core_services_application_task_runner_(base::MessageLoop::current()
|
| - ->task_runner()),
|
| - url_(url),
|
| - delegate_(std::move(delegate)),
|
| - request_(std::move(request)),
|
| - destruct_callback_(destruct_callback) {}
|
| -
|
| - ~ApplicationThread() override {
|
| - Join();
|
| - destruct_callback_.Run();
|
| - }
|
| -
|
| - // Overridden from base::SimpleThread:
|
| - void Run() override {
|
| - scoped_ptr<mojo::ApplicationRunner> runner(
|
| - new mojo::ApplicationRunner(delegate_.release()));
|
| - if (url_ == "mojo://network_service/") {
|
| - runner->set_message_loop_type(base::MessageLoop::TYPE_IO);
|
| - } else if (url_ == "mojo://mus/") {
|
| - runner->set_message_loop_type(base::MessageLoop::TYPE_UI);
|
| - }
|
| - runner->Run(request_.PassMessagePipe().release().value(), false);
|
| -
|
| - core_services_application_task_runner_->PostTask(
|
| - FROM_HERE,
|
| - base::Bind(&CoreServicesApplicationDelegate::ApplicationThreadDestroyed,
|
| - core_services_application_,
|
| - this));
|
| - }
|
| -
|
| - private:
|
| - base::WeakPtr<CoreServicesApplicationDelegate> core_services_application_;
|
| - scoped_refptr<base::SingleThreadTaskRunner>
|
| - core_services_application_task_runner_;
|
| - std::string url_;
|
| - scoped_ptr<mojo::ShellClient> delegate_;
|
| - mojo::InterfaceRequest<mojo::shell::mojom::Application> request_;
|
| - mojo::Callback<void()> destruct_callback_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(ApplicationThread);
|
| -};
|
| -
|
| -CoreServicesApplicationDelegate::CoreServicesApplicationDelegate()
|
| - : weak_factory_(this) {
|
| -}
|
| -
|
| -CoreServicesApplicationDelegate::~CoreServicesApplicationDelegate() {
|
| - application_threads_.clear();
|
| -}
|
| -
|
| -void CoreServicesApplicationDelegate::ApplicationThreadDestroyed(
|
| - ApplicationThread* thread) {
|
| - ScopedVector<ApplicationThread>::iterator iter =
|
| - std::find(application_threads_.begin(),
|
| - application_threads_.end(),
|
| - thread);
|
| - DCHECK(iter != application_threads_.end());
|
| - application_threads_.erase(iter);
|
| -}
|
| -
|
| -void CoreServicesApplicationDelegate::Initialize(mojo::Shell* shell,
|
| - const std::string& url,
|
| - uint32_t id) {
|
| - mojo::InitLogging();
|
| - tracing_.Initialize(shell, url);
|
| -}
|
| -
|
| -bool CoreServicesApplicationDelegate::AcceptConnection(
|
| - mojo::Connection* connection) {
|
| - connection->AddService(this);
|
| - return true;
|
| -}
|
| -
|
| -void CoreServicesApplicationDelegate::Quit() {
|
| - // This will delete all threads. This also performs a blocking join, waiting
|
| - // for the threads to end.
|
| - application_threads_.clear();
|
| - weak_factory_.InvalidateWeakPtrs();
|
| -}
|
| -
|
| -void CoreServicesApplicationDelegate::Create(
|
| - mojo::Connection* connection,
|
| - mojo::InterfaceRequest<mojo::shell::mojom::ContentHandler> request) {
|
| - handler_bindings_.AddBinding(this, std::move(request));
|
| -}
|
| -
|
| -void CoreServicesApplicationDelegate::StartApplication(
|
| - mojo::InterfaceRequest<mojo::shell::mojom::Application> request,
|
| - mojo::URLResponsePtr response,
|
| - const mojo::Callback<void()>& destruct_callback) {
|
| - const std::string url = response->url;
|
| -
|
| - scoped_ptr<mojo::ShellClient> delegate;
|
| - if (url == "mojo://clipboard/") {
|
| - delegate.reset(new clipboard::ClipboardApplicationDelegate);
|
| - } else if (url == "mojo://filesystem/") {
|
| - delegate.reset(new filesystem::FileSystemApp);
|
| - } else if (url == "mojo://tracing/") {
|
| - delegate.reset(new tracing::TracingApp);
|
| - } else if (url == "mojo://web_view/") {
|
| - delegate.reset(new web_view::WebViewApplicationDelegate);
|
| - } else {
|
| -#if !defined(OS_ANDROID)
|
| - if (!delegate)
|
| - delegate = CreateApplicationDelegateNotAndroid(url);
|
| -#endif
|
| - if (!delegate)
|
| - delegate = CreatePlatformSpecificApplicationDelegate(url);
|
| -
|
| - if (!delegate)
|
| - NOTREACHED() << "This application package does not support " << url;
|
| - }
|
| -
|
| - scoped_ptr<ApplicationThread> thread(new ApplicationThread(
|
| - weak_factory_.GetWeakPtr(), url, std::move(delegate), std::move(request),
|
| - destruct_callback));
|
| - thread->Start();
|
| - application_threads_.push_back(std::move(thread));
|
| -}
|
| -
|
| -} // namespace core_services
|
|
|