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.
5 #ifndef CONTENT_RENDERER_MEDIA_ANDROID_PROXY_MEDIA_KEYS_H_
6 #define CONTENT_RENDERER_MEDIA_ANDROID_PROXY_MEDIA_KEYS_H_
8 #include "base/basictypes.h"
9 #include "media/base/media_keys.h"
15 class RendererMediaPlayerManager;
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 {
23 ProxyMediaKeys(RendererMediaPlayerManager* proxy,
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();
32 void InitializeCDM(const std::string& key_system, const GURL& frame_url);
34 // MediaKeys implementation.
35 virtual bool CreateSession(uint32 session_id,
36 const std::string& type,
37 const uint8* init_data,
38 int init_data_length) OVERRIDE;
39 virtual void UpdateSession(uint32 session_id,
40 const uint8* response,
41 int response_length) OVERRIDE;
42 virtual void ReleaseSession(uint32 session_id) OVERRIDE;
45 void OnSessionCreated(uint32 session_id, const std::string& web_session_id);
46 void OnSessionMessage(uint32 session_id,
47 const std::vector<uint8>& message,
48 const std::string& destination_url);
49 void OnSessionReady(uint32 session_id);
50 void OnSessionClosed(uint32 session_id);
51 void OnSessionError(uint32 session_id,
52 media::MediaKeys::KeyError error_code,
56 RendererMediaPlayerManager* manager_;
58 media::SessionCreatedCB session_created_cb_;
59 media::SessionMessageCB session_message_cb_;
60 media::SessionReadyCB session_ready_cb_;
61 media::SessionClosedCB session_closed_cb_;
62 media::SessionErrorCB session_error_cb_;
64 DISALLOW_COPY_AND_ASSIGN(ProxyMediaKeys);
67 } // namespace content
69 #endif // CONTENT_RENDERER_MEDIA_ANDROID_PROXY_MEDIA_KEYS_H_