| Index: content/renderer/media/crypto/proxy_decryptor.cc
|
| diff --git a/content/renderer/media/crypto/proxy_decryptor.cc b/content/renderer/media/crypto/proxy_decryptor.cc
|
| index 2e1b81a3df39e32ecea75909c9b411035f1feba6..4dd64aae7e6faa455e81df283ab88b893f89a77c 100644
|
| --- a/content/renderer/media/crypto/proxy_decryptor.cc
|
| +++ b/content/renderer/media/crypto/proxy_decryptor.cc
|
| @@ -83,17 +83,32 @@ bool ProxyDecryptor::InitializeCDM(const std::string& key_system,
|
| return true;
|
| }
|
|
|
| -bool ProxyDecryptor::GenerateKeyRequest(const std::string& type,
|
| +bool ProxyDecryptor::GenerateKeyRequest(const std::string& content_type,
|
| const uint8* init_data,
|
| int init_data_length) {
|
| // Use a unique reference id for this request.
|
| uint32 session_id = next_session_id_++;
|
| - if (!media_keys_->CreateSession(
|
| - session_id, type, init_data, init_data_length)) {
|
| - return false;
|
| +
|
| + const uint8 kPrefixedApiLoadSessionHeader[] = "LOAD_SESSION|";
|
| + const int kPrefixedApiLoadSessionHeaderLength =
|
| + sizeof(kPrefixedApiLoadSessionHeader) - 1;
|
| +
|
| + if (init_data_length > kPrefixedApiLoadSessionHeaderLength &&
|
| + std::equal(init_data,
|
| + init_data + kPrefixedApiLoadSessionHeaderLength,
|
| + kPrefixedApiLoadSessionHeader)) {
|
| + // TODO(xhwang): Track loadable session to handle OnSessionClosed().
|
| + // See: http://crbug.com/340859.
|
| + media_keys_->LoadSession(
|
| + session_id,
|
| + std::string(reinterpret_cast<const char*>(
|
| + init_data + kPrefixedApiLoadSessionHeaderLength),
|
| + init_data_length - kPrefixedApiLoadSessionHeaderLength));
|
| + return true;
|
| }
|
|
|
| - return true;
|
| + return media_keys_->CreateSession(
|
| + session_id, content_type, init_data, init_data_length);
|
| }
|
|
|
| void ProxyDecryptor::AddKey(const uint8* key,
|
|
|