blob: 560d03013b6272727c0a5ec47be7dd28a640b53a [file] [log] [blame]
// Copyright 2017 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/utility/mash_service_factory.h"
#include "base/memory/ptr_util.h"
#include "build/build_config.h"
#include "mash/quick_launch/public/interfaces/constants.mojom.h"
#include "mash/quick_launch/quick_launch.h"
#include "services/ui/public/interfaces/constants.mojom.h"
#include "services/ui/service.h"
#if defined(OS_CHROMEOS)
#include "ash/autoclick/mus/autoclick_application.h" // nogncheck
#include "ash/mus/window_manager_application.h" // nogncheck
#include "ash/public/interfaces/constants.mojom.h" // nogncheck
#include "ash/touch_hud/mus/touch_hud_application.h" // nogncheck
#endif // defined(OS_CHROMEOS)
#if defined(OS_LINUX) && !defined(OS_ANDROID)
#include "components/font_service/font_service_app.h"
#include "components/font_service/public/interfaces/constants.mojom.h"
#endif // defined(OS_LINUX) && !defined(OS_ANDROID)
namespace {
using ServiceFactoryFunction = std::unique_ptr<service_manager::Service>();
void RegisterMashService(
content::ContentUtilityClient::StaticServiceMap* services,
const std::string& name,
ServiceFactoryFunction factory_function) {
service_manager::EmbeddedServiceInfo service_info;
service_info.factory = base::Bind(factory_function);
services->emplace(name, service_info);
}
std::unique_ptr<service_manager::Service> CreateUiService() {
return base::MakeUnique<ui::Service>();
}
#if defined(OS_CHROMEOS)
std::unique_ptr<service_manager::Service> CreateAshService() {
const bool show_primary_host_on_connect = true;
return base::MakeUnique<ash::mus::WindowManagerApplication>(
show_primary_host_on_connect);
}
std::unique_ptr<service_manager::Service> CreateAccessibilityAutoclick() {
return base::MakeUnique<ash::autoclick::AutoclickApplication>();
}
std::unique_ptr<service_manager::Service> CreateQuickLaunch() {
return base::MakeUnique<mash::quick_launch::QuickLaunch>();
}
std::unique_ptr<service_manager::Service> CreateTouchHud() {
return base::MakeUnique<ash::touch_hud::TouchHudApplication>();
}
#endif
#if defined(OS_LINUX) && !defined(OS_ANDROID)
std::unique_ptr<service_manager::Service> CreateFontService() {
return base::MakeUnique<font_service::FontServiceApp>();
}
#endif // defined(OS_LINUX) && !defined(OS_ANDROID)
} // namespace
void RegisterMashServices(
content::ContentUtilityClient::StaticServiceMap* services) {
RegisterMashService(services, ui::mojom::kServiceName, &CreateUiService);
#if defined(OS_CHROMEOS)
RegisterMashService(services, mash::quick_launch::mojom::kServiceName,
&CreateQuickLaunch);
RegisterMashService(services, ash::mojom::kServiceName, &CreateAshService);
RegisterMashService(services, "accessibility_autoclick",
&CreateAccessibilityAutoclick);
RegisterMashService(services, "touch_hud", &CreateTouchHud);
#endif
#if defined(OS_LINUX) && !defined(OS_ANDROID)
RegisterMashService(services, font_service::mojom::kServiceName,
&CreateFontService);
#endif // defined(OS_LINUX) && !defined(OS_ANDROID)
}