Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / content / renderer / media / android / proxy_media_keys.h
1 // Copyright 2013 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_RENDERER_MEDIA_ANDROID_PROXY_MEDIA_KEYS_H_
6 #define CONTENT_RENDERER_MEDIA_ANDROID_PROXY_MEDIA_KEYS_H_
7
8 #include "base/basictypes.h"
9 #include "media/base/media_keys.h"
10
11 class GURL;
12
13 namespace content {
14
15 class RendererMediaPlayerManager;
16
17 // A MediaKeys proxy that wraps the EME part of RendererMediaPlayerManager.
18 // TODO(xhwang): Instead of accessing RendererMediaPlayerManager directly, let
19 // RendererMediaPlayerManager return a MediaKeys object that can be used by
20 // ProxyDecryptor directly. Then we can remove this class!
21 class ProxyMediaKeys : public media::MediaKeys {
22  public:
23   ProxyMediaKeys(RendererMediaPlayerManager* proxy,
24                  int media_keys_id,
25                  const media::SessionCreatedCB& session_created_cb,
26                  const media::SessionMessageCB& session_message_cb,
27                  const media::SessionReadyCB& session_ready_cb,
28                  const media::SessionClosedCB& session_closed_cb,
29                  const media::SessionErrorCB& session_error_cb);
30   virtual ~ProxyMediaKeys();
31
32   void InitializeCDM(const std::string& key_system, const GURL& frame_url);
33
34   // MediaKeys implementation.
35   virtual bool CreateSession(uint32 session_id,
36                              const std::string& content_type,
37                              const uint8* init_data,
38                              int init_data_length) OVERRIDE;
39   virtual void LoadSession(uint32 session_id,
40                            const std::string& web_session_id) OVERRIDE;
41   virtual void UpdateSession(uint32 session_id,
42                              const uint8* response,
43                              int response_length) OVERRIDE;
44   virtual void ReleaseSession(uint32 session_id) OVERRIDE;
45
46   // Callbacks.
47   void OnSessionCreated(uint32 session_id, const std::string& web_session_id);
48   void OnSessionMessage(uint32 session_id,
49                         const std::vector<uint8>& message,
50                         const std::string& destination_url);
51   void OnSessionReady(uint32 session_id);
52   void OnSessionClosed(uint32 session_id);
53   void OnSessionError(uint32 session_id,
54                       media::MediaKeys::KeyError error_code,
55                       int system_code);
56
57  private:
58   RendererMediaPlayerManager* manager_;
59   int media_keys_id_;
60   media::SessionCreatedCB session_created_cb_;
61   media::SessionMessageCB session_message_cb_;
62   media::SessionReadyCB session_ready_cb_;
63   media::SessionClosedCB session_closed_cb_;
64   media::SessionErrorCB session_error_cb_;
65
66   DISALLOW_COPY_AND_ASSIGN(ProxyMediaKeys);
67 };
68
69 }  // namespace content
70
71 #endif  // CONTENT_RENDERER_MEDIA_ANDROID_PROXY_MEDIA_KEYS_H_