// Copyright 2020 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/mojom/media_types.mojom";
import "ui/gfx/geometry/mojom/geometry.mojom";

// PlaybackEventsRecorder allows to observe and record events occurring in the
// media pipeline. The interface is called by the renderer process (in
// blink::WebMediaPlayerImpl), while the implementation normally runs in the
// browser.
interface PlaybackEventsRecorder {
  // Called when player has been started or resumed.
  OnPlaying();

  // Called when player has been paused.
  OnPaused();

  // Called when player position is being changed.
  OnSeeking();

  // Called when the player has reached the end of the current file.
  OnEnded();

  // Called when playback has failed due to the specified error.
  OnError(PipelineStatus status);

  // Called when playback has been suspended while buffering the media.
  OnBuffering();

  // Called after media buffering has completed. The player is in buffering
  // state after the following events until this method is called:
  //  1. Player initialized (i.e. after PlaybackEventsRecorder is created).
  //  2. Seek operation, see OnSeeking().
  //  3. Buffering started, see OnBuffering().
  OnBufferingComplete();

  // Called when video playback starts and every time video resolution changes.
  OnNaturalSizeChanged(gfx.mojom.Size size);

  // Called periodically (e.g. every second) while playback is active.
  OnPipelineStatistics(PipelineStatistics stats);
};
