// 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_router.mojom; import "mojo/public/mojom/base/time.mojom"; // Represents the current state of a media content. This struct should be kept // free of details specific to Media Router, so that it can be moved to the // media namespace and be reused for other features in the future. struct MediaStatus { enum PlayState { PLAYING, PAUSED, BUFFERING }; // The title of the currently playing media. For example, in a MediaStatus // representing a YouTube Cast route, this is the title of the video. // For a tab mirroring or media remoting route, it's the page title. // For a Presentation API route, it is the presentation page title. string title; // If this is true, the media can be played and paused through its // MediaController. bool can_play_pause; // If this is true, the media can be muted and unmuted through its // MediaController. bool can_mute; // If this is true, the media's volume can be changed through its // MediaController. bool can_set_volume; // If this is true, the media's current playback position can be changed // through its MediaController. bool can_seek; // Whether the media is playing, paused, or buffering. PlayState play_state; bool is_muted; // Current volume of the media, with 1 being the highest and 0 being the // lowest/no sound. When |is_muted| is true, there should be no sound // regardless of |volume|. float volume; // The length of the media. A value of 0 indicates that this is a media with // no set duration (e.g. a live stream). mojo_base.mojom.TimeDelta duration; // Current playback position. Must be less than or equal to |duration|. mojo_base.mojom.TimeDelta current_time; // Only set for Hangouts routes. HangoutsMediaStatusExtraData? hangouts_extra_data; }; struct HangoutsMediaStatusExtraData { // Whether local present mode (aka "smooth motion") is on. bool local_present; }; // Interface for being notified whenever the MediaStatus of a media changes. // This interface should be kept free of details specific to Media Router, so // that it can be moved to the media namespace and be reused for other features // in the future. interface MediaStatusObserver { OnMediaStatusUpdated(MediaStatus status); };