blob: 36756e23a080698ec63f93627b099bba23d9750e [file] [log] [blame]
// 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);
};