Index: chrome/browser/media/router/mojo/media_router.mojom |
diff --git a/chrome/browser/media/router/mojo/media_router.mojom b/chrome/browser/media/router/mojo/media_router.mojom |
deleted file mode 100644 |
index e993afde62988db3808714fb52f6dfcdff11ffab..0000000000000000000000000000000000000000 |
--- a/chrome/browser/media/router/mojo/media_router.mojom |
+++ /dev/null |
@@ -1,464 +0,0 @@ |
-// Copyright 2015 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_router.mojom; |
- |
-import "chrome/browser/media/router/mojo/media_controller.mojom"; |
-import "chrome/browser/media/router/mojo/media_status.mojom"; |
-import "mojo/common/time.mojom"; |
-import "net/interfaces/ip_address.mojom"; |
-import "url/mojo/origin.mojom"; |
-import "url/mojo/url.mojom"; |
- |
-// Represents an output sink to which media can be routed. |
-struct MediaSink { |
- enum IconType { |
- CAST, |
- CAST_AUDIO, |
- CAST_AUDIO_GROUP, |
- MEETING, |
- HANGOUT, |
- GENERIC |
- }; |
- |
- // The sink identifier, e.g. "rs71w7mFzYLFlabir_qO4NHl6SUc." |
- string sink_id; |
- // The human-readable name, e.g. "Janet's Chromecast". |
- string name; |
- // Optional description of the sink. |
- string? description; |
- // Optional domain of the sink if this sink is associated with an identity. |
- string? domain; |
- // The type of icon to show in the UI for this media sink. |
- IconType icon_type; |
- // This is currently only set by MediaRouter in OnSinksDiscovered(). |
- MediaSinkExtraData? extra_data; |
-}; |
- |
-union MediaSinkExtraData { |
- DialMediaSink dial_media_sink; |
- CastMediaSink cast_media_sink; |
-}; |
- |
-struct DialMediaSink { |
- net.interfaces.IPAddress ip_address; |
- |
- // Model name of the sink, if it represents a physical device. |
- string model_name; |
- |
- // Used for DIAL launch |
- url.mojom.Url app_url; |
-}; |
- |
-struct CastMediaSink { |
- net.interfaces.IPAddress ip_address; |
- |
- // Model name of the sink, if it represents a physical device. |
- string model_name; |
- |
- // A bit vector representing capabilities of the sink. Meaning of capacity |
- // value for each bit: |
- // NONE: 0, |
- // VIDEO_OUT: 1 << 0, |
- // VIDEO_IN: 1 << 1, |
- // AUDIO_OUT: 1 << 2, |
- // AUDIO_IN: 1 << 3, |
- // DEV_MODE: 1 << 4, |
- // MULTIZONE_GROUP: 1 << 5 |
- uint8 capabilities; |
- |
- // ID of Cast channel opened by Media Router. The ID is defined by the |
- // chrome.cast.channel API. |
- int32 cast_channel_id; |
-}; |
- |
-// Should be kept in sync with media_route.h. |
-struct MediaRoute { |
- // The ID of this media route, e.g. "r_PR1O_blkC9dsKp-tb1ti8qurOo". |
- string media_route_id; |
- // The ID of the media source being sent through this media route. |
- // May be missing if route is not local. |
- string? media_source; |
- // The ID of sink that is rendering the media content. |
- string media_sink_id; |
- // Human readable description of this route, e.g. "Tab casting". |
- string description; |
- // Specifies that the route is requested locally. |
- bool is_local; |
- // An optional path to an HTML page bundled bundled with the media router |
- // component extension. When set, the route can have custom route detail as |
- // well as its own route controls in the media router dialog. |
- string? custom_controller_path; |
- // Set to true if this route should be displayed for |media_sink_id| in UI. |
- bool for_display; |
- // Set to true if this route was created by an incognito profile. |
- bool is_incognito; |
- // Set to true if this route corresponds to an offscreen presentation. |
- bool is_offscreen_presentation; |
-}; |
- |
-// Notifications or an actionable events to be shown to the user. |
-// When is_blocking is true, media router UI shows issue only: |
-// |
-// Title |
-// Message |
-// default_action_button secondary_action_button |
-// |
-// When is_blocking is false, media router UI uses banner: |
-// |
-// Title default_action_link secondary_action_link |
-// |
-// above receiver list if route_id is not provided; otherwise it is |
-// above route detail and controls. |
-struct Issue { |
- enum Severity { |
- FATAL, |
- WARNING, |
- NOTIFICATION |
- }; |
- |
- enum ActionType { |
- DISMISS, |
- LEARN_MORE |
- }; |
- |
- // If set, the ID of the route to which this issue pertains. |
- // If not set (default), then this is a global issue. |
- string? route_id; |
- |
- Severity severity; |
- |
- // When true, the issue must be presented to the user and resolved |
- // before other actions are allowed. |
- bool is_blocking; |
- |
- // Short description about the issue. |
- string title; |
- |
- // Message about issue detail or how to handle issue. |
- // Messages should be suitable for end users to decide which actions to take. |
- string? message; |
- |
- ActionType default_action; |
- |
- array<ActionType>? secondary_actions; |
- |
- // The ID of the help page to be opened if users select learn_more. |
- int32 help_page_id; |
-}; |
- |
-struct RouteMessage { |
- enum Type { |
- TEXT, |
- BINARY |
- }; |
- // The type of this message. |
- Type type; |
- // Used when the |type| is TEXT. |
- string? message; |
- // Used when the |type| is BINARY. |
- array<uint8>? data; |
-}; |
- |
-struct SinkSearchCriteria { |
- // Input to the search method which each Media Route Provider may interpret |
- // differently. |
- string input; |
- // The user's current hosted domain. |
- string domain; |
-}; |
- |
-// Keep in sync with: |
-// - RouteRequestResult::ResultCode in route_request_result.h |
-// - MediaRouteProviderResult enum in tools/metrics/histograms.xml. |
-// - mr.RouteRequestResultCode in route_request_error.js |
-// - RouteRequestResultCodeFromMojo in media_router_type_converters.cc |
-enum RouteRequestResultCode { |
- UNKNOWN_ERROR, |
- OK, |
- TIMED_OUT, |
- ROUTE_NOT_FOUND, |
- SINK_NOT_FOUND, |
- INVALID_ORIGIN, |
- INCOGNITO_MISMATCH, |
- NO_SUPPORTED_PROVIDER, |
- CANCELLED |
-// New values must be added here. |
-}; |
- |
-// Modeled after the MediaRouter interface defined in |
-// chrome/browser/media/router/media_router.h |
-interface MediaRouteProvider { |
- // Creates a media route from |media_source| to the sink given by |sink_id|. |
- // |
- // The presentation ID of the route created will be |presentation_id|, but it |
- // may be overridden by a provider implementation. The presentation ID will |
- // be used by the presentation API to refer to the created route. |
- // |
- // |origin| and |tab_id| may be passed in for enforcing same-origin and/or |
- // same-tab scopes. Use -1 as |tab_id| in cases where the request is not |
- // made on behalf of a tab. |
- // |
- // If |timeout| is positive, it will be used in place of the default timeout |
- // defined by Media Route Provider Manager. |
- // |
- // If |incognito| is true, the request was made by an incognito profile. |
- // |
- // If the operation was successful, |route| will be defined and |
- // |error_text| will be null. |
- // If the operation failed, |route| will be null and |error_text| |
- // will be set. |
- // |result| will be set to OK if successful, or an error code if an error |
- // occurred. |
- CreateRoute(string media_source, |
- string sink_id, |
- string original_presentation_id, |
- url.mojom.Origin origin, |
- int32 tab_id, |
- mojo.common.mojom.TimeDelta timeout, |
- bool incognito) => |
- (MediaRoute? route, |
- string? error_text, |
- RouteRequestResultCode result_code); |
- |
- // Requests a connection to an established route for |media_source| given |
- // by |presentation_id|. |
- // |
- // |origin| and |tab_id| are used for validating same-origin/tab scopes; |
- // see CreateRoute for additional documentation. |
- // |
- // If |timeout| is positive, it will be used in place of the default timeout |
- // defined by Media Route Provider Manager. |
- // |
- // If the route request was created by an incognito profile, |
- // |incognito| must be true. |
- // |
- // If the operation was successful, |route| will be defined and |
- // |error_text| will be null. |
- // If the operation failed, |route| will be null and |error_text| |
- // will be set. |
- // |result| will be set to OK if successful, or an error code if an error |
- // occurred. |
- JoinRoute(string media_source, |
- string presentation_id, |
- url.mojom.Origin origin, |
- int32 tab_id, |
- mojo.common.mojom.TimeDelta timeout, |
- bool incognito) => |
- (MediaRoute? route, |
- string? error_text, |
- RouteRequestResultCode result_code); |
- |
- // Creates a new route for |media_source| that connects to the established |
- // route given by |route_id|. |
- // |
- // The presentation ID of the new route will be |presentation_id|, but it may |
- // be overridden by a provider implementation. The presentation ID will be |
- // used by the presentation API to refer to the created route. |
- // |
- // |origin| and |tab_id| are used for validating same-origin/tab scopes; see |
- // CreateRoute for additional documentation. |
- // |
- // If |timeout| is positive, it will be used in place of the default timeout |
- // defined by Media Route Provider Manager; see CreateRoute for additional |
- // documentation. |
- // |
- // If the route request was created by an incognito profile, |
- // |incognito| must be true. |
- // |
- // If the operation was successful, |route| will be defined and |
- // |error_text| will be null. If the operation failed, |route| will be null |
- // and |error_text| will be set. |
- // |
- // |result| will be set to OK if successful, or an error code if an error |
- // occurred. |
- ConnectRouteByRouteId(string media_source, |
- string route_id, |
- string presentation_id, |
- url.mojom.Origin origin, |
- int32 tab_id, |
- mojo.common.mojom.TimeDelta timeout, |
- bool incognito) => |
- (MediaRoute? route, |
- string? error_text, |
- RouteRequestResultCode result_code); |
- |
- // Terminates the route specified by |route_id|. If the route was terminated |
- // successfully, |result_code| is set to OK and |error_text| is null. |
- // Otherwise, |result_code| is an error code and |error_text| describes the |
- // error. |
- TerminateRoute(string route_id) => |
- (string? error_text, RouteRequestResultCode result_code); |
- |
- // Sends |message| via the media route |media_route_id|. |
- // If the operation was successful, |sent| is true; otherwise it is false. |
- SendRouteMessage(string media_route_id, string message) => (bool sent); |
- |
- // Sends |data| via the media route |media_route_id|. |
- // If the operation was successful, |sent| is true; otherwise it is false. |
- SendRouteBinaryMessage(string media_route_id, array<uint8> data) |
- => (bool sent); |
- |
- // Starts querying for sinks capable of displaying |media_source|. |
- StartObservingMediaSinks(string media_source); |
- |
- // Stops querying sinks for |media_source|. |
- StopObservingMediaSinks(string media_source); |
- |
- // Starts reporting the state of active media routes via |
- // OnRoutesUpdated() in the context of the |media_source|. The |
- // |media_source| represents the application interested in the media |
- // routes (usually the web page from which the content originates). |
- // If no |media_source| is given, this should be considered an |
- // observer that is not associated with a media source, and thus |
- // cannot connect to a remote route without showing a source. The |
- // |media_source| should be considered when returning joinable routes in the |
- // OnRoutesUpdated() call. If an empty |media_source| is given, there is no |
- // context in which a joinable route makes sense and therefore, there should |
- // not be any joinable routes returned in OnRoutesUpdated(). |
- // Querying will continue until StopObservingMediaRoutes() is called with |
- // the same |media_source| (even if it's an empty string). |
- StartObservingMediaRoutes(string media_source); |
- |
- // Stops querying the state of all media routes in the context of |
- // the |media_source|. StartObservingMediaRoutes() has |
- // to be called with the same |media_source| for this to have any effect even |
- // if it's empty. Thus, StartObservingMediaRoutes(media_source) must be |
- // matched with StopObservingMediaRoutes(media_source). |
- // Calling StopObservingMediaRoutes() without a media_source will stop |
- // any media routes queries associated with emtpy strings (queries |
- // that being with StartObservingMediaRoutes()). |
- StopObservingMediaRoutes(string media_source); |
- |
- // Starts listening for messages from the media sink for the route given by |
- // |route_id|. |
- // |MediaRouter::OnRouteMessagesReceived| will be invoked when a batch of |
- // messages arrives, or when there is an error. |
- // |StopListeningForRouteMessages| will stop the Media Router from receiving |
- // further messages for |route_id|. |
- StartListeningForRouteMessages(string route_id); |
- |
- // Called when there are no more listeners for messages for |route_id|. |
- StopListeningForRouteMessages(string route_id); |
- |
- // Indicates that a PresentationConnection that was connected to route |
- // |route_id| has been closed (via .close(), garbage collection or |
- // navigation). |
- DetachRoute(string route_id); |
- |
- // Enables mDNS discovery. No-op if mDNS discovery is already enabled. |
- // Calling this will trigger a firewall prompt on Windows if there is not |
- // already a firewall rule for mDNS. |
- EnableMdnsDiscovery(); |
- |
- // Updates media sinks capable of displaying |media_source|. |
- UpdateMediaSinks(string media_source); |
- |
- // Indicates that the Media Router is interested in finding a sink that |
- // matches |search_criteria| and is compatible with the source urn |
- // |media_source|. |search_criteria| should contain an exact copy of the user |
- // input. The user's current domain is also used to search. The domain is the |
- // hosted domain of the user's signed-in identity, or empty if the user has no |
- // domain or is not signed in. |
- SearchSinks(string sink_id, |
- string media_source, |
- SinkSearchCriteria search_criteria) => |
- (string sink_id); |
- |
- // Called when the list of MediaSinks discovered by Media Router has been |
- // updated. The sinks are supplied to the MediaRouteProvider so that they can |
- // be used for other operations, such as route creation. |
- ProvideSinks(string provider_name, array<MediaSink> sinks); |
- |
- // Creates a controller for the media route with given |route_id| and binds it |
- // to |media_controller| for receiving media commands. This method returns |
- // false if such a media route doesn't exist, a controller already exists |
- // for it, or there was an error while creating a controller. This method must |
- // close |media_controller| in case of such a failure. |media_controller| |
- // becomes invalid when the media route is terminated. The created controller |
- // is destroyed when |media_controller| becomes invalid, after which this |
- // method can be called again with the same |route_id|. This method also sets |
- // |observer| to be notified whenever there is a change in the status of the |
- // media route. |
- // TODO(takumif): Consider returning an enum instead of a bool to distinguish |
- // between error conditions for metrics/debugging. |
- CreateMediaRouteController(string route_id, |
- MediaController& media_controller, |
- MediaStatusObserver observer) => |
- (bool success); |
-}; |
- |
-// Interface for a service which observes state changes across media |
-// sources, sinks, and issues. |
-interface MediaRouter { |
- |
- // Represents overall media sink availability states. |
- // UNAVAILABLE - No sinks are available. |
- // PER_SOURCE - Sinks are available, but are only compatible with specific |
- // media sources. |
- // AVAILABLE - A sink is available regardless of source. |
- enum SinkAvailability { |
- UNAVAILABLE, |
- PER_SOURCE, |
- AVAILABLE |
- }; |
- |
- // Keep in sync with content/public/common/presentation_info.h. |
- enum PresentationConnectionState { |
- CONNECTING, |
- CONNECTED, |
- CLOSED, |
- TERMINATED |
- }; |
- |
- // Keep in sync with content/public/common/presentation_info.h. |
- enum PresentationConnectionCloseReason { |
- CONNECTION_ERROR, |
- CLOSED, |
- WENT_AWAY |
- }; |
- |
- // Registers a MediaRouteProvider with the MediaRouter. |
- // Returns a string that uniquely identifies the Media Router browser |
- // process. |
- RegisterMediaRouteProvider(MediaRouteProvider media_router_provider) => |
- (string instance_id); |
- |
- // Called when the Media Route Manager receives a new list of |sinks| |
- // compatible with |media_source|. The result is only valid for |origins|. If |
- // |origins| is empty, the result is valid for any origin. |
- OnSinksReceived(string media_source, array<MediaSink> sinks, |
- array<url.mojom.Origin> origins); |
- |
- // Called when issues are reported for media routes. |
- OnIssue(Issue issue); |
- |
- // Called when list of routes has been updated in the context of the |
- // calling |media_source|. The array |joinable_route_ids| should |
- // contain route IDs of joinable routes found in the |routes| array. |
- OnRoutesUpdated(array<MediaRoute> routes, string media_source, |
- array<string> joinable_route_ids); |
- |
- // Called when the overall availability of media sinks has been updated. |
- OnSinkAvailabilityUpdated(SinkAvailability availability); |
- |
- // Called when the state of presentation connected to route |route_id| has |
- // changed to |state|. |
- OnPresentationConnectionStateChanged( |
- string route_id, PresentationConnectionState state); |
- |
- // Called when the presentation connected to route |route_id| has closed. |
- OnPresentationConnectionClosed( |
- string route_id, PresentationConnectionCloseReason reason, |
- string message); |
- |
- // Called when the a batch of messages arrives from the media sink for the |
- // route given by |route_id|. |
- // |StartListeningForRouteMessages| must be called first in order to receive |
- // messages. |
- // |route_id|: ID of route of the messages. |
- // |messages|: A non-empty list of messages received. |
- OnRouteMessagesReceived(string route_id, |
- array<RouteMessage> messages); |
-}; |