blob: fe16e05173ee609bebe71427a75bfc9d8a6561f9 [file] [log] [blame]
James Cookb0bf8e82017-04-09 17:01:441// Copyright 2016 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "ash/mojo_interface_factory.h"
6
7#include <utility>
8
9#include "ash/accelerators/accelerator_controller.h"
10#include "ash/cast_config_controller.h"
Scott Violetd64dac12017-06-02 21:50:0811#include "ash/display/ash_display_controller.h"
Vladislav Kaznacheev1fa1eff2017-10-12 16:39:0112#include "ash/highlighter/highlighter_controller.h"
James Cookfdee0242017-06-20 14:14:0013#include "ash/ime/ime_controller.h"
xiaoyinh2bbdd102017-05-18 23:29:4214#include "ash/login/lock_screen_controller.h"
James Cookb0bf8e82017-04-09 17:01:4415#include "ash/media_controller.h"
Evan Stade04c18d02017-10-20 20:53:2216#include "ash/message_center/message_center_controller.h"
James Cookb0bf8e82017-04-09 17:01:4417#include "ash/new_window_controller.h"
Vladislav Kaznacheev92edf62e2017-10-13 22:08:0118#include "ash/note_taking_controller.h"
Evan Stade48768f42017-10-10 05:23:3019#include "ash/public/cpp/ash_switches.h"
James Cookb0bf8e82017-04-09 17:01:4420#include "ash/session/session_controller.h"
21#include "ash/shelf/shelf_controller.h"
22#include "ash/shell.h"
23#include "ash/shell_delegate.h"
24#include "ash/shutdown_controller.h"
25#include "ash/system/locale/locale_notification_controller.h"
26#include "ash/system/network/vpn_list.h"
afakhryee3e2fa2017-06-15 17:45:4127#include "ash/system/night_light/night_light_controller.h"
James Cookb0bf8e82017-04-09 17:01:4428#include "ash/system/tray/system_tray_controller.h"
tbarzicc78da1ff92017-05-08 20:46:1529#include "ash/tray_action/tray_action.h"
Yue Lia33960a2017-11-01 22:06:0730#include "ash/voice_interaction/voice_interaction_controller.h"
James Cookb0bf8e82017-04-09 17:01:4431#include "ash/wallpaper/wallpaper_controller.h"
Mitsuru Oshima0e9b7a62017-07-19 18:23:0332#include "ash/wm/tablet_mode/tablet_mode_controller.h"
James Cookb0bf8e82017-04-09 17:01:4433#include "base/bind.h"
James Cook625eff02017-10-11 20:44:3134#include "base/lazy_instance.h"
Gabriel Charette5ff87ce2017-05-16 18:03:4535#include "base/single_thread_task_runner.h"
James Cookb0bf8e82017-04-09 17:01:4436#include "ui/app_list/presenter/app_list.h"
37
38namespace ash {
James Cook625eff02017-10-11 20:44:3139namespace mojo_interface_factory {
James Cookb0bf8e82017-04-09 17:01:4440namespace {
41
James Cook625eff02017-10-11 20:44:3142base::LazyInstance<RegisterInterfacesCallback>::Leaky
43 g_register_interfaces_callback = LAZY_INSTANCE_INITIALIZER;
44
James Cookb0bf8e82017-04-09 17:01:4445void BindAcceleratorControllerRequestOnMainThread(
46 mojom::AcceleratorControllerRequest request) {
47 Shell::Get()->accelerator_controller()->BindRequest(std::move(request));
48}
49
bena5c972c2017-05-04 01:38:4350void BindAppListRequestOnMainThread(
bena5c972c2017-05-04 01:38:4351 app_list::mojom::AppListRequest request) {
James Cookb0bf8e82017-04-09 17:01:4452 Shell::Get()->app_list()->BindRequest(std::move(request));
53}
54
Scott Violetd64dac12017-06-02 21:50:0855void BindAshDisplayControllerRequestOnMainThread(
Scott Violetd64dac12017-06-02 21:50:0856 mojom::AshDisplayControllerRequest request) {
57 Shell::Get()->ash_display_controller()->BindRequest(std::move(request));
58}
59
Evan Stade04c18d02017-10-20 20:53:2260void BindAshMessageCenterControllerRequestOnMainThread(
61 mojom::AshMessageCenterControllerRequest request) {
62 Shell::Get()->message_center_controller()->BindRequest(std::move(request));
63}
64
Ben Goodger21ada1e2017-07-19 14:53:0165void BindCastConfigOnMainThread(mojom::CastConfigRequest request) {
James Cookb0bf8e82017-04-09 17:01:4466 Shell::Get()->cast_config()->BindRequest(std::move(request));
67}
68
Vladislav Kaznacheev1fa1eff2017-10-12 16:39:0169void BindHighlighterControllerRequestOnMainThread(
70 mojom::HighlighterControllerRequest request) {
71 Shell::Get()->highlighter_controller()->BindRequest(std::move(request));
72}
73
Ben Goodger21ada1e2017-07-19 14:53:0174void BindImeControllerRequestOnMainThread(mojom::ImeControllerRequest request) {
James Cookfdee0242017-06-20 14:14:0075 Shell::Get()->ime_controller()->BindRequest(std::move(request));
76}
77
James Cookb0bf8e82017-04-09 17:01:4478void BindLocaleNotificationControllerOnMainThread(
79 mojom::LocaleNotificationControllerRequest request) {
80 Shell::Get()->locale_notification_controller()->BindRequest(
81 std::move(request));
82}
83
Ben Goodger21ada1e2017-07-19 14:53:0184void BindLockScreenRequestOnMainThread(mojom::LockScreenRequest request) {
xiaoyinh2bbdd102017-05-18 23:29:4285 Shell::Get()->lock_screen_controller()->BindRequest(std::move(request));
86}
87
James Cookb0bf8e82017-04-09 17:01:4488void BindMediaControllerRequestOnMainThread(
89 mojom::MediaControllerRequest request) {
90 Shell::Get()->media_controller()->BindRequest(std::move(request));
91}
92
93void BindNewWindowControllerRequestOnMainThread(
94 mojom::NewWindowControllerRequest request) {
95 Shell::Get()->new_window_controller()->BindRequest(std::move(request));
96}
97
afakhryee3e2fa2017-06-15 17:45:4198void BindNightLightControllerRequestOnMainThread(
afakhryee3e2fa2017-06-15 17:45:4199 mojom::NightLightControllerRequest request) {
100 Shell::Get()->night_light_controller()->BindRequest(std::move(request));
101}
102
Vladislav Kaznacheev92edf62e2017-10-13 22:08:01103void BindNoteTakingControllerRequestOnMainThread(
104 mojom::NoteTakingControllerRequest request) {
105 Shell::Get()->note_taking_controller()->BindRequest(std::move(request));
106}
107
James Cookb0bf8e82017-04-09 17:01:44108void BindSessionControllerRequestOnMainThread(
109 mojom::SessionControllerRequest request) {
110 Shell::Get()->session_controller()->BindRequest(std::move(request));
111}
112
Ben Goodger21ada1e2017-07-19 14:53:01113void BindShelfRequestOnMainThread(mojom::ShelfControllerRequest request) {
James Cookb0bf8e82017-04-09 17:01:44114 Shell::Get()->shelf_controller()->BindRequest(std::move(request));
115}
116
117void BindShutdownControllerRequestOnMainThread(
118 mojom::ShutdownControllerRequest request) {
119 Shell::Get()->shutdown_controller()->BindRequest(std::move(request));
120}
121
Ben Goodger21ada1e2017-07-19 14:53:01122void BindSystemTrayRequestOnMainThread(mojom::SystemTrayRequest request) {
James Cookb0bf8e82017-04-09 17:01:44123 Shell::Get()->system_tray_controller()->BindRequest(std::move(request));
124}
125
Mitsuru Oshima63d3f2a2017-08-23 00:12:11126void BindTabletModeRequestOnMainThread(
James Cookbf962f32017-09-21 19:48:44127 mojom::TabletModeControllerRequest request) {
Mitsuru Oshima0e9b7a62017-07-19 18:23:03128 Shell::Get()->tablet_mode_controller()->BindRequest(std::move(request));
James Cookb0bf8e82017-04-09 17:01:44129}
130
Ben Goodger21ada1e2017-07-19 14:53:01131void BindTrayActionRequestOnMainThread(mojom::TrayActionRequest request) {
tbarzicc78da1ff92017-05-08 20:46:15132 Shell::Get()->tray_action()->BindRequest(std::move(request));
133}
134
Yue Lia33960a2017-11-01 22:06:07135void BindVoiceInteractionControllerRequestOnMainThread(
136 mojom::VoiceInteractionControllerRequest request) {
137 Shell::Get()->voice_interaction_controller()->BindRequest(std::move(request));
138}
139
Ben Goodger21ada1e2017-07-19 14:53:01140void BindVpnListRequestOnMainThread(mojom::VpnListRequest request) {
James Cookb0bf8e82017-04-09 17:01:44141 Shell::Get()->vpn_list()->BindRequest(std::move(request));
142}
143
144void BindWallpaperRequestOnMainThread(
James Cookb0bf8e82017-04-09 17:01:44145 mojom::WallpaperControllerRequest request) {
146 Shell::Get()->wallpaper_controller()->BindRequest(std::move(request));
147}
148
149} // namespace
150
James Cookb0bf8e82017-04-09 17:01:44151void RegisterInterfaces(
152 service_manager::BinderRegistry* registry,
153 scoped_refptr<base::SingleThreadTaskRunner> main_thread_task_runner) {
154 registry->AddInterface(
155 base::Bind(&BindAcceleratorControllerRequestOnMainThread),
156 main_thread_task_runner);
157 registry->AddInterface(base::Bind(&BindAppListRequestOnMainThread),
158 main_thread_task_runner);
Scott Violetd64dac12017-06-02 21:50:08159 registry->AddInterface(
160 base::Bind(&BindAshDisplayControllerRequestOnMainThread),
161 main_thread_task_runner);
Evan Stade04c18d02017-10-20 20:53:22162 registry->AddInterface(
163 base::Bind(&BindAshMessageCenterControllerRequestOnMainThread),
164 main_thread_task_runner);
James Cookb0bf8e82017-04-09 17:01:44165 registry->AddInterface(base::Bind(&BindCastConfigOnMainThread),
166 main_thread_task_runner);
167 registry->AddInterface(
Vladislav Kaznacheev1fa1eff2017-10-12 16:39:01168 base::Bind(&BindHighlighterControllerRequestOnMainThread),
169 main_thread_task_runner);
170 registry->AddInterface(base::Bind(&BindImeControllerRequestOnMainThread),
171 main_thread_task_runner);
172 registry->AddInterface(
James Cookb0bf8e82017-04-09 17:01:44173 base::Bind(&BindLocaleNotificationControllerOnMainThread),
174 main_thread_task_runner);
xiaoyinh2bbdd102017-05-18 23:29:42175 registry->AddInterface(base::Bind(&BindLockScreenRequestOnMainThread),
176 main_thread_task_runner);
James Cookb0bf8e82017-04-09 17:01:44177 registry->AddInterface(base::Bind(&BindMediaControllerRequestOnMainThread),
178 main_thread_task_runner);
179 registry->AddInterface(
180 base::Bind(&BindNewWindowControllerRequestOnMainThread),
181 main_thread_task_runner);
Evan Stade48768f42017-10-10 05:23:30182 if (switches::IsNightLightEnabled()) {
afakhryee3e2fa2017-06-15 17:45:41183 registry->AddInterface(
184 base::Bind(&BindNightLightControllerRequestOnMainThread),
185 main_thread_task_runner);
186 }
Vladislav Kaznacheev92edf62e2017-10-13 22:08:01187 registry->AddInterface(
188 base::Bind(&BindNoteTakingControllerRequestOnMainThread),
189 main_thread_task_runner);
James Cookb0bf8e82017-04-09 17:01:44190 registry->AddInterface(base::Bind(&BindSessionControllerRequestOnMainThread),
191 main_thread_task_runner);
192 registry->AddInterface(base::Bind(&BindShelfRequestOnMainThread),
193 main_thread_task_runner);
194 registry->AddInterface(base::Bind(&BindShutdownControllerRequestOnMainThread),
195 main_thread_task_runner);
196 registry->AddInterface(base::Bind(&BindSystemTrayRequestOnMainThread),
197 main_thread_task_runner);
Mitsuru Oshima63d3f2a2017-08-23 00:12:11198 registry->AddInterface(base::Bind(&BindTabletModeRequestOnMainThread),
James Cookb0bf8e82017-04-09 17:01:44199 main_thread_task_runner);
tbarzicc78da1ff92017-05-08 20:46:15200 registry->AddInterface(base::Bind(&BindTrayActionRequestOnMainThread),
201 main_thread_task_runner);
Yue Lia33960a2017-11-01 22:06:07202 registry->AddInterface(
203 base::Bind(&BindVoiceInteractionControllerRequestOnMainThread),
204 main_thread_task_runner);
James Cookb0bf8e82017-04-09 17:01:44205 registry->AddInterface(base::Bind(&BindVpnListRequestOnMainThread),
206 main_thread_task_runner);
207 registry->AddInterface(base::Bind(&BindWallpaperRequestOnMainThread),
208 main_thread_task_runner);
James Cook625eff02017-10-11 20:44:31209
210 // Inject additional optional interfaces.
211 if (g_register_interfaces_callback.Get()) {
212 std::move(g_register_interfaces_callback.Get())
213 .Run(registry, main_thread_task_runner);
214 }
215}
216
217void SetRegisterInterfacesCallback(RegisterInterfacesCallback callback) {
218 g_register_interfaces_callback.Get() = std::move(callback);
James Cookb0bf8e82017-04-09 17:01:44219}
220
221} // namespace mojo_interface_factory
222
223} // namespace ash