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

Unified Diff: chrome/browser/chromeos/chrome_interface_factory.cc

Issue 2695803004: Make browser process a singleton service (Closed)
Patch Set: . Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/chrome_interface_factory.cc
diff --git a/chrome/browser/chromeos/chrome_interface_factory.cc b/chrome/browser/chromeos/chrome_interface_factory.cc
deleted file mode 100644
index 865092c079cf317e3f2fca462f58a27fa47d0436..0000000000000000000000000000000000000000
--- a/chrome/browser/chromeos/chrome_interface_factory.cc
+++ /dev/null
@@ -1,154 +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 "chrome/browser/chromeos/chrome_interface_factory.h"
-
-#include <memory>
-#include <utility>
-
-#include "ash/common/mojo_interface_factory.h"
-#include "ash/public/interfaces/shutdown.mojom.h"
-#include "base/lazy_instance.h"
-#include "base/memory/ptr_util.h"
-#include "base/memory/weak_ptr.h"
-#include "base/threading/thread_checker.h"
-#include "base/threading/thread_task_runner_handle.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/profiles/profile_manager.h"
-#include "chrome/browser/ui/ash/ash_util.h"
-#include "chrome/browser/ui/ash/keyboard_ui_service.h"
-#include "chrome/browser/ui/browser_commands.h"
-#include "chrome/browser/ui/browser_finder.h"
-#include "content/public/common/service_manager_connection.h"
-#include "mash/public/interfaces/launchable.mojom.h"
-#include "mojo/public/cpp/bindings/binding_set.h"
-#include "services/service_manager/public/cpp/connection.h"
-#include "services/service_manager/public/cpp/interface_registry.h"
-#include "ui/keyboard/keyboard.mojom.h"
-
-namespace chromeos {
-
-namespace {
-
-class ChromeLaunchable : public mash::mojom::Launchable {
- public:
- ChromeLaunchable() {}
- ~ChromeLaunchable() override {}
-
- void ProcessRequest(mash::mojom::LaunchableRequest request) {
- bindings_.AddBinding(this, std::move(request));
- }
-
- private:
- void CreateNewWindowImpl(bool is_incognito) {
- Profile* profile = ProfileManager::GetActiveUserProfile();
- chrome::NewEmptyWindow(is_incognito ? profile->GetOffTheRecordProfile()
- : profile);
- }
-
- void CreateNewTab() { chrome::NewTab(chrome::FindLastActive()); }
-
- // mash::mojom::Launchable:
- void Launch(uint32_t what, mash::mojom::LaunchMode how) override {
- if (how != mash::mojom::LaunchMode::MAKE_NEW) {
- LOG(ERROR) << "Unable to handle Launch request with how = " << how;
- return;
- }
- switch (what) {
- case mash::mojom::kWindow:
- CreateNewWindowImpl(false /* is_incognito */);
- break;
- case mash::mojom::kIncognitoWindow:
- CreateNewWindowImpl(true /* is_incognito */);
- break;
- default:
- NOTREACHED();
- }
- }
-
- mojo::BindingSet<mash::mojom::Launchable> bindings_;
-
- DISALLOW_COPY_AND_ASSIGN(ChromeLaunchable);
-};
-
-class FactoryImpl {
- public:
- FactoryImpl() {}
- ~FactoryImpl() {}
-
- template <typename Interface>
- static void AddFactory(
- service_manager::InterfaceRegistry* registry,
- scoped_refptr<base::SingleThreadTaskRunner> task_runner) {
- registry->AddInterface<Interface>(
- base::Bind(&FactoryImpl::CallMainThreadFactory<Interface>),
- task_runner);
- }
-
- private:
- static FactoryImpl* Get() {
- if (!factory_.Get())
- factory_.Get() = base::MakeUnique<FactoryImpl>();
- return factory_.Get().get();
- }
-
- template <typename Interface>
- static void CallMainThreadFactory(mojo::InterfaceRequest<Interface> request) {
- Get()->BindRequest(std::move(request));
- }
-
- void BindRequest(keyboard::mojom::KeyboardRequest request) {
- if (!keyboard_ui_service_)
- keyboard_ui_service_ = base::MakeUnique<KeyboardUIService>();
- keyboard_bindings_.AddBinding(keyboard_ui_service_.get(),
- std::move(request));
- }
-
- void BindRequest(mash::mojom::LaunchableRequest request) {
- if (!launchable_)
- launchable_ = base::MakeUnique<ChromeLaunchable>();
- launchable_->ProcessRequest(std::move(request));
- }
-
- static base::LazyInstance<std::unique_ptr<FactoryImpl>>::Leaky factory_;
-
- std::unique_ptr<KeyboardUIService> keyboard_ui_service_;
- mojo::BindingSet<keyboard::mojom::Keyboard> keyboard_bindings_;
- std::unique_ptr<ChromeLaunchable> launchable_;
-
- DISALLOW_COPY_AND_ASSIGN(FactoryImpl);
-};
-
-base::LazyInstance<std::unique_ptr<FactoryImpl>>::Leaky FactoryImpl::factory_ =
- LAZY_INSTANCE_INITIALIZER;
-
-} // namespace
-
-ChromeInterfaceFactory::ChromeInterfaceFactory()
- : main_thread_task_runner_(base::ThreadTaskRunnerHandle::Get()) {}
-
-ChromeInterfaceFactory::~ChromeInterfaceFactory() {}
-
-bool ChromeInterfaceFactory::OnConnect(
- const service_manager::Identity& remote_identity,
- service_manager::InterfaceRegistry* registry,
- service_manager::Connector* connector) {
- // TODO(jamescook): Only register the interfaces needed for a particular
- // |remote_identity|. For example, a connection from service:ash needs these,
- // but a connection from service:content_gpu does not.
- FactoryImpl::AddFactory<keyboard::mojom::Keyboard>(registry,
- main_thread_task_runner_);
- FactoryImpl::AddFactory<mash::mojom::Launchable>(registry,
- main_thread_task_runner_);
-
- // In classic ash, the browser process provides ash services to itself.
- if (!chrome::IsRunningInMash()) {
- ash::mojo_interface_factory::RegisterInterfaces(registry,
- main_thread_task_runner_);
- }
-
- return true;
-}
-
-} // namespace chromeos
« no previous file with comments | « chrome/browser/chromeos/chrome_interface_factory.h ('k') | chrome/browser/prefs/preferences_connection_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698