Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(370)

Side by Side Diff: content/renderer/media/crypto/encrypted_media_support_impl.h

Issue 501473003: Move EME code out of WebMediaPlayerImpl. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Make lint happy Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1 // Copyright 2014 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_CRYPTO_ENCRYPTED_MEDIA_SUPPORT_IMPL_H_
6 #define CONTENT_RENDERER_MEDIA_CRYPTO_ENCRYPTED_MEDIA_SUPPORT_IMPL_H_
7
8 #include <string>
9 #include <vector>
10
11 #include "base/memory/weak_ptr.h"
12 #include "content/renderer/media/crypto/encrypted_media_support.h"
13 #include "content/renderer/media/crypto/proxy_decryptor.h"
14
15 namespace content {
16
17 class WebContentDecryptionModuleImpl;
18
19 class EncryptedMediaSupportImpl
20 : public EncryptedMediaSupport,
21 public base::SupportsWeakPtr<EncryptedMediaSupportImpl> {
22 public:
23 explicit EncryptedMediaSupportImpl(blink::WebMediaPlayerClient* client);
24 virtual ~EncryptedMediaSupportImpl();
25
26 // EncryptedMediaSupport implementation.
27 virtual blink::WebMediaPlayer::MediaKeyException generateKeyRequest(
28 blink::WebLocalFrame* frame,
29 const blink::WebString& key_system,
30 const unsigned char* init_data,
31 unsigned init_data_length) OVERRIDE;
32
33 virtual blink::WebMediaPlayer::MediaKeyException addKey(
34 const blink::WebString& key_system,
35 const unsigned char* key,
36 unsigned key_length,
37 const unsigned char* init_data,
38 unsigned init_data_length,
39 const blink::WebString& session_id) OVERRIDE;
40
41 virtual blink::WebMediaPlayer::MediaKeyException cancelKeyRequest(
42 const blink::WebString& key_system,
43 const blink::WebString& session_id) OVERRIDE;
44
45 virtual void setContentDecryptionModule(
46 blink::WebContentDecryptionModule* cdm) OVERRIDE;
47 virtual void setContentDecryptionModule(
48 blink::WebContentDecryptionModule* cdm,
49 blink::WebContentDecryptionModuleResult result) OVERRIDE;
50 virtual void setContentDecryptionModuleSync(
51 blink::WebContentDecryptionModule* cdm) OVERRIDE;
52
53 virtual media::SetDecryptorReadyCB CreateSetDecryptorReadyCB() OVERRIDE;
54 virtual media::Demuxer::NeedKeyCB CreateNeedKeyCB() OVERRIDE;
55
56 virtual void OnDecryptError() OVERRIDE;
57
58 private:
59 // Requests that this object notifies when a decryptor is ready through the
60 // |decryptor_ready_cb| provided.
61 // If |decryptor_ready_cb| is null, the existing callback will be fired with
62 // NULL immediately and reset.
63 void SetDecryptorReadyCB(const media::DecryptorReadyCB& decryptor_ready_cb);
64
65 blink::WebMediaPlayer::MediaKeyException GenerateKeyRequestInternal(
66 blink::WebLocalFrame* frame,
67 const std::string& key_system,
68 const unsigned char* init_data,
69 unsigned init_data_length);
70
71 blink::WebMediaPlayer::MediaKeyException AddKeyInternal(
72 const std::string& key_system,
73 const unsigned char* key,
74 unsigned key_length,
75 const unsigned char* init_data,
76 unsigned init_data_length,
77 const std::string& session_id);
78
79 blink::WebMediaPlayer::MediaKeyException CancelKeyRequestInternal(
80 const std::string& key_system,
81 const std::string& session_id);
82
83 void OnNeedKey(const std::string& type,
84 const std::vector<uint8>& init_data);
85
86 void OnKeyAdded(const std::string& session_id);
87 void OnKeyError(const std::string& session_id,
88 media::MediaKeys::KeyError error_code,
89 uint32 system_code);
90 void OnKeyMessage(const std::string& session_id,
91 const std::vector<uint8>& message,
92 const GURL& destination_url);
93
94 void ContentDecryptionModuleAttached(
95 blink::WebContentDecryptionModuleResult result,
96 bool success);
97
98 blink::WebMediaPlayerClient* client_;
99
100 // The currently selected key system. Empty string means that no key system
101 // has been selected.
102 std::string current_key_system_;
103
104 // Temporary for EME v0.1. In the future the init data type should be passed
105 // through GenerateKeyRequest() directly from WebKit.
106 std::string init_data_type_;
107
108 // Manages decryption keys and decrypts encrypted frames.
109 scoped_ptr<ProxyDecryptor> proxy_decryptor_;
110
111 // Non-owned pointer to the CDM. Updated via calls to
112 // setContentDecryptionModule().
113 WebContentDecryptionModuleImpl* web_cdm_;
114
115 media::DecryptorReadyCB decryptor_ready_cb_;
116
117 DISALLOW_COPY_AND_ASSIGN(EncryptedMediaSupportImpl);
118 };
119 }
120
121 #endif // CONTENT_RENDERER_MEDIA_CRYPTO_ENCRYPTED_MEDIA_SUPPORT_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698