blob: 93b8d5e68a22dbeb96599b4f4326aef7e4eee8cd [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"
9#include "chromecast/common/mojom/application_media_capabilities.mojom.h"
10#include "chromecast/common/mojom/feature_manager.mojom.h"
11#include "chromecast/common/mojom/media_caps.mojom.h"
12#include "chromecast/common/mojom/media_playback_options.mojom.h"
13#include "chromecast/common/mojom/memory_pressure.mojom.h"
14#include "media/mojo/services/media_manifest.h"
15#include "services/service_manager/public/cpp/manifest_builder.h"
16
17#if defined(USE_INTERNAL_OVERLAY_MANIFESTS)
18#include "chromecast/internal/shell/browser/cast_content_browser_internal_manifest_overlay.h"
19#include "chromecast/internal/shell/browser/cast_content_packaged_services_internal_manifest_overlay.h"
20#include "chromecast/internal/shell/browser/cast_content_renderer_internal_manifest_overlay.h"
21#endif
22
23namespace chromecast {
24namespace shell {
25
26const service_manager::Manifest& GetCastContentBrowserOverlayManifest() {
27 static base::NoDestructor<service_manager::Manifest> manifest {
28 service_manager::ManifestBuilder()
29 .ExposeCapability("renderer",
30 service_manager::Manifest::InterfaceList<
31 chromecast::media::mojom::MediaCaps,
32 chromecast::mojom::MemoryPressureController>())
33 .ExposeInterfaceFilterCapability_Deprecated(
34 "navigation:frame", "renderer",
35 service_manager::Manifest::InterfaceList<
36 mojom::ApplicationMediaCapabilities>())
37 .Build()
38#if defined(USE_INTERNAL_OVERLAY_MANIFESTS)
39 .Amend(cast_content_browser_internal_manifest_overlay::GetManifest())
40#endif
41 };
42 return *manifest;
43}
44
45const service_manager::Manifest& GetCastContentRendererOverlayManifest() {
46 static base::NoDestructor<service_manager::Manifest> manifest {
47 service_manager::ManifestBuilder()
48 .ExposeInterfaceFilterCapability_Deprecated(
49 "navigation:frame", "browser",
50 service_manager::Manifest::InterfaceList<
51 mojom::FeatureManager, mojom::MediaPlaybackOptions>())
52 .Build()
53#if defined(USE_INTERNAL_OVERLAY_MANIFESTS)
54 .Amend(cast_content_renderer_internal_manifest_overlay::GetManifest())
55#endif
56 };
57 return *manifest;
58}
59
60const service_manager::Manifest&
61GetCastContentPackagedServicesOverlayManifest() {
62 static base::NoDestructor<service_manager::Manifest> manifest {
63 service_manager::ManifestBuilder()
Ken Rockot9d7d74382019-01-25 20:12:5564 .PackageService(::media::GetMediaManifest())
Ken Rockot8655a7fd2019-01-18 08:52:0165 .Build()
66#if defined(USE_INTERNAL_OVERLAY_MANIFESTS)
67 .Amend(cast_content_packaged_services_internal_manifest_overlay::
68 GetManifest())
69#endif
70 };
71 return *manifest;
72}
73
74} // namespace shell
75} // namespace chromecast