1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef CONTENT_BROWSER_MEDIA_SESSION_PEPPER_PLAYER_DELEGATE_H_
6 #define CONTENT_BROWSER_MEDIA_SESSION_PEPPER_PLAYER_DELEGATE_H_
7 
8 #include <stdint.h>
9 
10 #include "base/macros.h"
11 #include "content/browser/media/session/media_session_player_observer.h"
12 
13 namespace content {
14 
15 class RenderFrameHost;
16 
17 class PepperPlayerDelegate : public MediaSessionPlayerObserver {
18  public:
19   // The Id can only be 0 for PepperPlayerDelegate. Declare the constant here so
20   // it can be used elsewhere.
21   static const int kPlayerId;
22 
23   PepperPlayerDelegate(RenderFrameHost* render_frame_host, int32_t pp_instance);
24   ~PepperPlayerDelegate() override;
25 
26   // MediaSessionPlayerObserver implementation.
27   void OnSuspend(int player_id) override;
28   void OnResume(int player_id) override;
29   void OnSeekForward(int player_id, base::TimeDelta seek_time) override;
30   void OnSeekBackward(int player_id, base::TimeDelta seek_time) override;
31   void OnSetVolumeMultiplier(int player_id, double volume_multiplier) override;
32   void OnEnterPictureInPicture(int player_id) override;
33   void OnExitPictureInPicture(int player_id) override;
34   void OnSetAudioSinkId(int player_id,
35                         const std::string& raw_device_id) override;
36   base::Optional<media_session::MediaPosition> GetPosition(
37       int player_id) const override;
38   bool IsPictureInPictureAvailable(int player_id) const override;
39   RenderFrameHost* render_frame_host() const override;
40   bool HasVideo(int player_id) const override;
41   std::string GetAudioOutputSinkId(int player_id) const override;
42   bool SupportsAudioOutputDeviceSwitching(int player_id) const override;
43 
44  private:
45   void SetVolume(int player_id, double volume);
46 
47   RenderFrameHost* render_frame_host_;
48   int32_t pp_instance_;
49 
50   DISALLOW_COPY_AND_ASSIGN(PepperPlayerDelegate);
51 };
52 
53 }  // namespace content
54 
55 #endif  // CONTENT_BROWSER_MEDIA_SESSION_PEPPER_PLAYER_DELEGATE_H_
56