summaryrefslogtreecommitdiff
path: root/chromium/media/base/media_controller.h
blob: afd1f063cbf9f4c62e239bd9754df406ec250271 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// 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_