| // Copyright 2019 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 "ash/public/cpp/manifest.h" |
| |
| #include "ash/public/interfaces/accelerator_controller.mojom.h" |
| #include "ash/public/interfaces/accessibility_controller.mojom.h" |
| #include "ash/public/interfaces/accessibility_focus_ring_controller.mojom.h" |
| #include "ash/public/interfaces/app_list.mojom.h" |
| #include "ash/public/interfaces/arc_custom_tab.mojom.h" |
| #include "ash/public/interfaces/ash_display_controller.mojom.h" |
| #include "ash/public/interfaces/ash_message_center_controller.mojom.h" |
| #include "ash/public/interfaces/assistant_controller.mojom.h" |
| #include "ash/public/interfaces/assistant_volume_control.mojom.h" |
| #include "ash/public/interfaces/cast_config.mojom.h" |
| #include "ash/public/interfaces/constants.mojom.h" |
| #include "ash/public/interfaces/cros_display_config.mojom.h" |
| #include "ash/public/interfaces/display_output_protection.mojom.h" |
| #include "ash/public/interfaces/docked_magnifier_controller.mojom.h" |
| #include "ash/public/interfaces/event_rewriter_controller.mojom.h" |
| #include "ash/public/interfaces/first_run_helper.mojom.h" |
| #include "ash/public/interfaces/highlighter_controller.mojom.h" |
| #include "ash/public/interfaces/ime_controller.mojom.h" |
| #include "ash/public/interfaces/keyboard_controller.mojom.h" |
| #include "ash/public/interfaces/kiosk_next_shell.mojom.h" |
| #include "ash/public/interfaces/locale.mojom.h" |
| #include "ash/public/interfaces/login_screen.mojom.h" |
| #include "ash/public/interfaces/media.mojom.h" |
| #include "ash/public/interfaces/new_window.mojom.h" |
| #include "ash/public/interfaces/night_light_controller.mojom.h" |
| #include "ash/public/interfaces/note_taking_controller.mojom.h" |
| #include "ash/public/interfaces/pref_connector.mojom.h" |
| #include "ash/public/interfaces/process_creation_time_recorder.mojom.h" |
| #include "ash/public/interfaces/session_controller.mojom.h" |
| #include "ash/public/interfaces/shelf.mojom.h" |
| #include "ash/public/interfaces/shutdown.mojom.h" |
| #include "ash/public/interfaces/split_view.mojom.h" |
| #include "ash/public/interfaces/system_tray.mojom.h" |
| #include "ash/public/interfaces/tablet_mode.mojom.h" |
| #include "ash/public/interfaces/tray_action.mojom.h" |
| #include "ash/public/interfaces/voice_interaction_controller.mojom.h" |
| #include "ash/public/interfaces/vpn_list.mojom.h" |
| #include "ash/public/interfaces/wallpaper.mojom.h" |
| #include "base/no_destructor.h" |
| #include "chromeos/services/multidevice_setup/public/mojom/constants.mojom.h" |
| #include "chromeos/services/power/public/mojom/power_manager.mojom.h" |
| #include "services/content/public/mojom/constants.mojom.h" |
| #include "services/data_decoder/public/mojom/constants.mojom.h" |
| #include "services/device/public/mojom/constants.mojom.h" |
| #include "services/preferences/public/mojom/preferences.mojom.h" |
| #include "services/service_manager/public/cpp/manifest_builder.h" |
| #include "services/viz/public/interfaces/constants.mojom.h" |
| #include "services/ws/public/cpp/manifest.h" |
| #include "services/ws/public/mojom/constants.mojom.h" |
| #include "ui/base/ime/mojo/ime_engine_factory_registry.mojom.h" |
| |
| namespace ash { |
| |
| service_manager::Manifest& GetAmendmentForTesting() { |
| static base::NoDestructor<service_manager::Manifest> amendment; |
| return *amendment; |
| } |
| |
| const service_manager::Manifest& GetManifest() { |
| static base::NoDestructor<service_manager::Manifest> manifest{ |
| service_manager::ManifestBuilder() |
| .WithServiceName(mojom::kServiceName) |
| .WithDisplayName("Ash Window Manager and Shell") |
| .WithOptions(service_manager::ManifestOptionsBuilder() |
| .WithSandboxType("none") |
| .WithInstanceSharingPolicy( |
| service_manager::Manifest:: |
| InstanceSharingPolicy::kSingleton) |
| .Build()) |
| .ExposeCapability( |
| "system_ui", |
| service_manager::Manifest::InterfaceList< |
| chromeos::power::mojom::PowerManagerController, |
| mojom::AcceleratorController, mojom::AccessibilityController, |
| mojom::AccessibilityFocusRingController, |
| mojom::AppListController, mojom::ArcCustomTabController, |
| mojom::AshMessageCenterController, |
| mojom::AssistantAlarmTimerController, |
| mojom::AssistantController, |
| mojom::AssistantNotificationController, |
| mojom::AssistantScreenContextController, |
| mojom::AssistantSetupController, |
| mojom::AssistantVolumeControl, mojom::CastConfig, |
| mojom::KioskNextShellController, |
| mojom::CrosDisplayConfigController, |
| mojom::DockedMagnifierController, |
| mojom::EventRewriterController, mojom::FirstRunHelper, |
| mojom::HighlighterController, mojom::ImeController, |
| ime::mojom::ImeEngineFactoryRegistry, |
| mojom::KeyboardController, mojom::LocaleUpdateController, |
| mojom::LoginScreen, mojom::MediaController, |
| mojom::NewWindowController, mojom::NightLightController, |
| mojom::NoteTakingController, |
| mojom::ProcessCreationTimeRecorder, mojom::SessionController, |
| mojom::ShelfController, mojom::ShutdownController, |
| mojom::SplitViewController, mojom::SystemTray, |
| mojom::TabletModeController, mojom::TrayAction, |
| mojom::VoiceInteractionController, mojom::VpnList, |
| mojom::WallpaperController>()) |
| .ExposeCapability("display", service_manager::Manifest::InterfaceList< |
| mojom::AshDisplayController, |
| mojom::DisplayOutputProtection>()) |
| .RequireCapability("*", "accessibility") |
| .RequireCapability("*", "app") |
| .RequireCapability(prefs::mojom::kLocalStateServiceName, |
| "pref_client") |
| .RequireCapability(content::mojom::kServiceName, "navigation") |
| .RequireCapability(data_decoder::mojom::kServiceName, "image_decoder") |
| .RequireCapability(mojom::kPrefConnectorServiceName, "pref_connector") |
| .RequireCapability(viz::mojom::kVizServiceName, "ozone") |
| .RequireCapability(viz::mojom::kVizServiceName, "viz_host") |
| .RequireCapability(ws::mojom::kServiceName, "ozone") |
| .RequireCapability(ws::mojom::kServiceName, "window_manager") |
| .RequireCapability(device::mojom::kServiceName, |
| "device:bluetooth_system") |
| .RequireCapability(device::mojom::kServiceName, "device:fingerprint") |
| .RequireCapability(chromeos::multidevice_setup::mojom::kServiceName, |
| "multidevice_setup") |
| .PackageService(ws::GetManifest()) |
| .Build() |
| .Amend(GetAmendmentForTesting())}; |
| return *manifest; |
| } |
| |
| void AmendManifestForTesting(const service_manager::Manifest& amendment) { |
| GetAmendmentForTesting() = amendment; |
| } |
| |
| } // namespace ash |