// Copyright 2018 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.

#ifndef MEDIA_BASE_MEDIA_CONTROLLER_H_
#define MEDIA_BASE_MEDIA_CONTROLLER_H_

#include "base/time/time.h"

namespace media {

// High level interface that allows a controller to issue simple media commands.
// Modeled after the media_router.mojom.MediaController interface.
// State changes will be signaled via the MediaStatusObserver interface.
// TODO(tguilbert): Add MediaStatusObserver interface.
class MediaController {
 public:
  virtual ~MediaController() = default;

  // Starts playing the media if it is paused. Is a no-op if not supported by
  // the media or the media is already playing.
  virtual void Play() = 0;

  // Pauses the media if it is playing. Is a no-op if not supported by the media
  // or the media is already paused.
  virtual void Pause() = 0;

  // Mutes the media if |mute| is true, and unmutes it if false. Is a no-op if
  // not supported by the media.
  virtual void SetMute(bool mute) = 0;

  // Changes the current volume of the media, with 1 being the highest and 0
  // being the lowest/no sound. Does not change the (un)muted state of the
  // media. Is a no-op if not supported by the media.
  virtual void SetVolume(float volume) = 0;

  // Sets the current playback position. |time| must be less than or equal to
  // the duration of the media. Is a no-op if the media doesn't support seeking.
  virtual void Seek(base::TimeDelta time) = 0;
};

}  // namespace media

#endif  // MEDIA_BASE_MEDIA_CONTROLLER_H_
