| // 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 presentation; |
| |
| struct PresentationSessionInfo { |
| string url; |
| string id; |
| }; |
| |
| enum PresentationSessionState { |
| CONNECTED, |
| DISCONNECTED |
| }; |
| |
| enum PresentationErrorType { |
| NO_AVAILABLE_SCREENS, |
| SESSION_REQUEST_CANCELLED, |
| NO_PRESENTATION_FOUND, |
| UNKNOWN, |
| }; |
| |
| struct PresentationError { |
| PresentationErrorType error_type; |
| string message; |
| }; |
| |
| interface PresentationService { |
| // Called when the frame sets or changes the default presentation URL or |
| // presentation ID. |
| SetDefaultPresentationURL( |
| string default_presentation_url, |
| string? default_presentation_id); |
| |
| // Returns the last screen availability state if it’s changed since the last |
| // time the method was called. The client has to call this method again when |
| // handling the result (provided via Mojo callback) to get the next update |
| // about the availability status. |
| // May start discovery of the presentation screens. The implementation might |
| // stop discovery once there are no active calls to |
| // ListenForScreenAvailability. |presentation_url| can be specified to help |
| // the implementation to filter out incompatible screens. |
| ListenForScreenAvailability(string? presentation_url) => |
| (string? presentation_url, bool available); |
| |
| // Called when the frame no longer listens to the |availablechange| event. |
| RemoveScreenAvailabilityListener(string? presentation_url); |
| |
| // Called when the renderer is ready to receive the browser initiated |
| // session. If the default session is started by the embedder before this |
| // call, the embedder may queue it and run the callback when the call is |
| // performed. |
| ListenForDefaultSessionStart() |
| => (PresentationSessionInfo defaultSessionInfo); |
| |
| // Called when startSession() is called by the frame. The result callback |
| // will return a non-null and valid PresentationSessionInfo if starting the |
| // session succeeded, or null with a PresentationError if starting the |
| // session failed. |
| // The presentation id is always returned along with the initialized |
| // session on success. |
| // If the UA identifies a matching session (same presentation url and id), |
| // the user may choose this existing session and the page will join it |
| // rather than get a new one. An empty presentation id means that the |
| // UA will generate the presentation id. |
| StartSession(string presentation_url, string? presentation_id) |
| => (PresentationSessionInfo? sessionInfo, PresentationError? error); |
| |
| // Called when joinSession() is called by the frame. The result callback |
| // works the same as for the method above. JoinSession will join a known |
| // session (i.e. when the page navigates or the user opens another tab) |
| // silently and without user action. |
| JoinSession(string presentation_url, string? presentation_id) |
| => (PresentationSessionInfo? sessionInfo, PresentationError? error); |
| |
| // Called when closeSession() is called by the frame. |
| CloseSession(string presentation_url, string presentation_id); |
| |
| // Called when the frame is ready to process the next state change. Returns |
| // the last session state if it’s changed since the last time the callback |
| // was called. Might cause the event fired with the initial state change. |
| ListenForSessionStateChange() |
| => (PresentationSessionInfo sessionInfo, |
| PresentationSessionState newState); |
| }; |