- add sources.
[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::KeyAddedCB& key_added_cb,
26                  const media::KeyErrorCB& key_error_cb,
27                  const media::KeyMessageCB& key_message_cb);
28   virtual ~ProxyMediaKeys();
29
30   void InitializeCDM(const std::string& key_system, const GURL& frame_url);
31
32   // MediaKeys implementation.
33   virtual bool GenerateKeyRequest(const std::string& type,
34                                   const uint8* init_data,
35                                   int init_data_length) OVERRIDE;
36   virtual void AddKey(const uint8* key, int key_length,
37                       const uint8* init_data, int init_data_length,
38                       const std::string& session_id) OVERRIDE;
39   virtual void CancelKeyRequest(const std::string& session_id) OVERRIDE;
40
41   // Callbacks.
42   void OnKeyAdded(const std::string& session_id);
43   void OnKeyError(const std::string& session_id,
44                   media::MediaKeys::KeyError error_code,
45                   int system_code);
46   void OnKeyMessage(const std::string& session_id,
47                     const std::vector<uint8>& message,
48                     const std::string& destination_url);
49
50  private:
51   RendererMediaPlayerManager* manager_;
52   int media_keys_id_;
53   media::KeyAddedCB key_added_cb_;
54   media::KeyErrorCB key_error_cb_;
55   media::KeyMessageCB key_message_cb_;
56
57   DISALLOW_COPY_AND_ASSIGN(ProxyMediaKeys);
58 };
59
60 }  // namespace content
61
62 #endif  // CONTENT_RENDERER_MEDIA_ANDROID_PROXY_MEDIA_KEYS_H_