| Index: content/browser/media/cdm/browser_cdm_manager.cc
|
| diff --git a/content/browser/media/cdm/browser_cdm_manager.cc b/content/browser/media/cdm/browser_cdm_manager.cc
|
| index 72da3079ddf8ea9003d2f5e5372c223ebc79f0bf..f9fcb811e528793ff5670a8b5ead1745670b245f 100644
|
| --- a/content/browser/media/cdm/browser_cdm_manager.cc
|
| +++ b/content/browser/media/cdm/browser_cdm_manager.cc
|
| @@ -345,18 +345,16 @@ void BrowserCdmManager::OnCreateSessionAndGenerateRequest(
|
| return;
|
| }
|
|
|
| - // Convert the session content type into a MIME type. "audio" and "video"
|
| - // don't matter, so using "video" for the MIME type.
|
| - // Ref:
|
| - // https://dvcs.w3.org/hg/html-media/raw-file/default/encrypted-media/encrypted-media.html#dom-createsession
|
| - std::string mime_type;
|
| + media::EmeInitDataType eme_init_data_type = media::EME_INIT_DATA_TYPE_NONE;
|
| switch (init_data_type) {
|
| - case CREATE_SESSION_TYPE_WEBM:
|
| - mime_type = "video/webm";
|
| + case INIT_DATA_TYPE_WEBM:
|
| + eme_init_data_type = media::EME_INIT_DATA_TYPE_WEBM;
|
| break;
|
| - case CREATE_SESSION_TYPE_MP4:
|
| - mime_type = "video/mp4";
|
| +#if defined(USE_PROPRIETARY_CODECS)
|
| + case INIT_DATA_TYPE_CENC:
|
| + eme_init_data_type = media::EME_INIT_DATA_TYPE_CENC;
|
| break;
|
| +#endif
|
| default:
|
| NOTREACHED();
|
| promise->reject(MediaKeys::INVALID_ACCESS_ERROR, 0,
|
| @@ -367,8 +365,8 @@ void BrowserCdmManager::OnCreateSessionAndGenerateRequest(
|
| #if defined(OS_ANDROID)
|
| if (base::CommandLine::ForCurrentProcess()->HasSwitch(
|
| switches::kDisableInfobarForProtectedMediaIdentifier)) {
|
| - GenerateRequestIfPermitted(render_frame_id, cdm_id, mime_type, init_data,
|
| - promise.Pass(), true);
|
| + GenerateRequestIfPermitted(render_frame_id, cdm_id, eme_init_data_type,
|
| + init_data, promise.Pass(), true);
|
| return;
|
| }
|
| #endif
|
| @@ -389,8 +387,8 @@ void BrowserCdmManager::OnCreateSessionAndGenerateRequest(
|
| }
|
| GURL security_origin = iter->second;
|
|
|
| - RequestSessionPermission(render_frame_id, security_origin, cdm_id, mime_type,
|
| - init_data, promise.Pass());
|
| + RequestSessionPermission(render_frame_id, security_origin, cdm_id,
|
| + eme_init_data_type, init_data, promise.Pass());
|
| }
|
|
|
| void BrowserCdmManager::OnUpdateSession(int render_frame_id,
|
| @@ -501,7 +499,7 @@ void BrowserCdmManager::RequestSessionPermission(
|
| int render_frame_id,
|
| const GURL& security_origin,
|
| int cdm_id,
|
| - const std::string& init_data_type,
|
| + media::EmeInitDataType init_data_type,
|
| const std::vector<uint8>& init_data,
|
| scoped_ptr<media::NewSessionCdmPromise> promise) {
|
| if (!BrowserThread::CurrentlyOn(BrowserThread::UI)) {
|
| @@ -531,7 +529,7 @@ void BrowserCdmManager::RequestSessionPermission(
|
| void BrowserCdmManager::GenerateRequestIfPermitted(
|
| int render_frame_id,
|
| int cdm_id,
|
| - const std::string& init_data_type,
|
| + media::EmeInitDataType init_data_type,
|
| const std::vector<uint8>& init_data,
|
| scoped_ptr<media::NewSessionCdmPromise> promise,
|
| bool permitted) {
|
| @@ -547,10 +545,27 @@ void BrowserCdmManager::GenerateRequestIfPermitted(
|
| return;
|
| }
|
|
|
| + // TODO(ddorwin): Move this conversion to MediaDrmBridge when fixing
|
| + // crbug.com/417440.
|
| + // "audio"/"video" does not matter, so use "video".
|
| + std::string init_data_type_string;
|
| + switch (init_data_type) {
|
| + case media::EME_INIT_DATA_TYPE_WEBM:
|
| + init_data_type_string = "video/webm";
|
| + break;
|
| +#if defined(USE_PROPRIETARY_CODECS)
|
| + case media::EME_INIT_DATA_TYPE_CENC:
|
| + init_data_type_string = "video/mp4";
|
| + break;
|
| +#endif
|
| + default:
|
| + NOTREACHED();
|
| + }
|
| +
|
| // Only the temporary session type is supported in browser CDM path.
|
| // TODO(xhwang): Add SessionType support if needed.
|
| cdm->CreateSessionAndGenerateRequest(media::MediaKeys::TEMPORARY_SESSION,
|
| - init_data_type, &init_data[0],
|
| + init_data_type_string, &init_data[0],
|
| init_data.size(), promise.Pass());
|
| }
|
|
|
|
|