blob: 3ab7d8268e373c93d79b0749bce1681c492917f8 [file] [log] [blame]
Ken Rockot8655a7fd2019-01-18 08:52:011// Copyright 2019 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 "chromecast/browser/cast_overlay_manifests.h"
6
7#include "base/no_destructor.h"
8#include "build/build_config.h"
Ken MacKay14362b22019-03-04 20:58:079#include "chromecast/chromecast_buildflags.h"
Ken Rockot8655a7fd2019-01-18 08:52:0110#include "chromecast/common/mojom/application_media_capabilities.mojom.h"
11#include "chromecast/common/mojom/feature_manager.mojom.h"
12#include "chromecast/common/mojom/media_caps.mojom.h"
13#include "chromecast/common/mojom/media_playback_options.mojom.h"
14#include "chromecast/common/mojom/memory_pressure.mojom.h"
15#include "media/mojo/services/media_manifest.h"
16#include "services/service_manager/public/cpp/manifest_builder.h"
17
Ken MacKay14362b22019-03-04 20:58:0718#if BUILDFLAG(ENABLE_EXTERNAL_MOJO_SERVICES)
19#include "chromecast/external_mojo/broker_service/broker_service.h"
20#endif
21
Ken Rockot8655a7fd2019-01-18 08:52:0122#if defined(USE_INTERNAL_OVERLAY_MANIFESTS)
23#include "chromecast/internal/shell/browser/cast_content_browser_internal_manifest_overlay.h"
24#include "chromecast/internal/shell/browser/cast_content_packaged_services_internal_manifest_overlay.h"
25#include "chromecast/internal/shell/browser/cast_content_renderer_internal_manifest_overlay.h"
26#endif
27
28namespace chromecast {
29namespace shell {
30
31const service_manager::Manifest& GetCastContentBrowserOverlayManifest() {
32 static base::NoDestructor<service_manager::Manifest> manifest {
33 service_manager::ManifestBuilder()
34 .ExposeCapability("renderer",
35 service_manager::Manifest::InterfaceList<
36 chromecast::media::mojom::MediaCaps,
37 chromecast::mojom::MemoryPressureController>())
38 .ExposeInterfaceFilterCapability_Deprecated(
39 "navigation:frame", "renderer",
40 service_manager::Manifest::InterfaceList<
41 mojom::ApplicationMediaCapabilities>())
42 .Build()
43#if defined(USE_INTERNAL_OVERLAY_MANIFESTS)
44 .Amend(cast_content_browser_internal_manifest_overlay::GetManifest())
45#endif
46 };
47 return *manifest;
48}
49
50const service_manager::Manifest& GetCastContentRendererOverlayManifest() {
51 static base::NoDestructor<service_manager::Manifest> manifest {
52 service_manager::ManifestBuilder()
53 .ExposeInterfaceFilterCapability_Deprecated(
54 "navigation:frame", "browser",
55 service_manager::Manifest::InterfaceList<
56 mojom::FeatureManager, mojom::MediaPlaybackOptions>())
57 .Build()
58#if defined(USE_INTERNAL_OVERLAY_MANIFESTS)
59 .Amend(cast_content_renderer_internal_manifest_overlay::GetManifest())
60#endif
61 };
62 return *manifest;
63}
64
65const service_manager::Manifest&
66GetCastContentPackagedServicesOverlayManifest() {
67 static base::NoDestructor<service_manager::Manifest> manifest {
68 service_manager::ManifestBuilder()
Ken Rockot9d7d74382019-01-25 20:12:5569 .PackageService(::media::GetMediaManifest())
Ken MacKay14362b22019-03-04 20:58:0770#if BUILDFLAG(ENABLE_EXTERNAL_MOJO_SERVICES)
71 .PackageService(chromecast::external_mojo::BrokerService::GetManifest())
72#endif
Ken Rockot8655a7fd2019-01-18 08:52:0173 .Build()
74#if defined(USE_INTERNAL_OVERLAY_MANIFESTS)
75 .Amend(cast_content_packaged_services_internal_manifest_overlay::
76 GetManifest())
77#endif
78 };
79 return *manifest;
80}
81
82} // namespace shell
83} // namespace chromecast