blob: 4ba4b83bc85d6e3b75e4fd3eb50932134f1f9ff1 [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.
module media.mojom;
import "media/mojo/interfaces/interface_factory.mojom";
import "mojo/common/file_path.mojom";
import "sandbox/mac/mojom/seatbelt_extension_token.mojom";
import "services/service_manager/public/interfaces/interface_provider.mojom";
// TODO(xhwang): Merge this file with media_service.mojom once EnabledIf
// attribute is supported in mojom files. See https://crbug.com/676224
// A service to provide media InterfaceFactory, typically to the media pipeline
// running in the renderer process. The service itself runs in the process
// specified by the |mojo_media_host| gn build flag, or in the utility process
// when this service runs as an standalone CDM service (see gn build flag
// |enable_standalone_cdm_service| for details). The service is always connected
// from the browser process.
// TODO(crbug.com/771791): Separate CdmService from MediaService.
interface MediaService {
// Loads the CDM at |cdm_path| into the process.
// Since the client will not know whether LoadCdm() has been called by a
// previous MediaService instance, the client should always call it after
// interface connection. If the CDM is already loaded, this will be a no-op.
// |token_provider| can be used to get a sandbox seatbelt extension token
// synchronously so that the MediaService instance can load the CDM and other
// needed files within the Mac sandbox.
LoadCdm(mojo.common.mojom.FilePath cdm_path,
SeatbeltExtensionTokenProvider? token_provider);
// Requests an InterfaceFactory. |host_interfaces| can optionally be used to
// provide interfaces hosted by the caller to the remote InterfaceFactory
// implementation.
CreateInterfaceFactory(
InterfaceFactory& factory,
service_manager.mojom.InterfaceProvider? host_interfaces);
};
// An interface to provide a sandbox seatbelt extension token synchronously.
interface SeatbeltExtensionTokenProvider {
[Sync]
GetTokens() => (array<sandbox.mac.mojom.SeatbeltExtensionToken> tokens);
};