From 1c03e830f2ab2d83e2bdc96cb399d2a43c77f576 Mon Sep 17 00:00:00 2001 From: xhwang Date: Thu, 23 Oct 2014 17:03:26 -0700 Subject: [PATCH] Move KeySystemInfo to media/. This is a preparation to move KeySystems to media, which is needed to support Encrypted Media Extensions (EME) without relying on content. BUG=422730 Review URL: https://codereview.chromium.org/665343002 Cr-Commit-Position: refs/heads/master@{#300992} --- android_webview/renderer/DEPS | 2 + .../renderer/aw_content_renderer_client.cc | 2 +- .../renderer/aw_content_renderer_client.h | 2 +- android_webview/renderer/aw_key_systems.cc | 2 +- android_webview/renderer/aw_key_systems.h | 6 +- .../chrome_content_renderer_client.cc | 2 +- .../renderer/chrome_content_renderer_client.h | 2 +- chrome/renderer/media/chrome_key_systems.cc | 26 ++++----- chrome/renderer/media/chrome_key_systems.h | 4 +- chromecast/renderer/DEPS | 1 + chromecast/renderer/key_systems_cast.cc | 12 ++-- chromecast/renderer/key_systems_cast.h | 8 +-- components/cdm.gypi | 5 +- components/cdm/DEPS | 1 + .../cdm/browser/cdm_message_filter_android.cc | 16 ++--- components/cdm/common/cdm_messages_android.h | 12 ++-- components/cdm/renderer/BUILD.gn | 2 +- components/cdm/renderer/DEPS | 1 - .../cdm/renderer/android_key_systems.cc | 26 ++++----- components/cdm/renderer/android_key_systems.h | 6 +- .../cdm/renderer/widevine_key_systems.cc | 14 ++--- .../cdm/renderer/widevine_key_systems.h | 7 ++- content/content_common.gypi | 1 - content/content_renderer.gypi | 2 - .../renderer/content_renderer_client.cc | 2 +- .../public/renderer/content_renderer_client.h | 7 ++- content/renderer/media/crypto/key_systems.cc | 58 ++++++++++--------- .../media/crypto/key_systems_unittest.cc | 22 +++---- media/base/BUILD.gn | 3 + .../common => media/base}/eme_constants.h | 10 ++-- .../base}/key_system_info.cc | 6 +- .../renderer => media/base}/key_system_info.h | 19 +++--- media/media.gyp | 3 + 33 files changed, 154 insertions(+), 138 deletions(-) rename {content/public/common => media/base}/eme_constants.h (90%) rename {content/public/renderer => media/base}/key_system_info.cc (81%) rename {content/public/renderer => media/base}/key_system_info.h (81%) diff --git a/android_webview/renderer/DEPS b/android_webview/renderer/DEPS index b5cbb484f64364..055b5e0b0a17e2 100644 --- a/android_webview/renderer/DEPS +++ b/android_webview/renderer/DEPS @@ -9,6 +9,8 @@ include_rules = [ "+content/public/renderer", + "+media/base", + "+printing", "+third_party/WebKit/public/platform", diff --git a/android_webview/renderer/aw_content_renderer_client.cc b/android_webview/renderer/aw_content_renderer_client.cc index 7ba28d9044d9c7..5114d0f72ee2b3 100644 --- a/android_webview/renderer/aw_content_renderer_client.cc +++ b/android_webview/renderer/aw_content_renderer_client.cc @@ -193,7 +193,7 @@ bool AwContentRendererClient::IsLinkVisited(unsigned long long link_hash) { } void AwContentRendererClient::AddKeySystems( - std::vector* key_systems) { + std::vector* key_systems) { AwAddKeySystems(key_systems); } diff --git a/android_webview/renderer/aw_content_renderer_client.h b/android_webview/renderer/aw_content_renderer_client.h index ac6e67bece702c..f6ffcbffc920f7 100644 --- a/android_webview/renderer/aw_content_renderer_client.h +++ b/android_webview/renderer/aw_content_renderer_client.h @@ -38,7 +38,7 @@ class AwContentRendererClient : public content::ContentRendererClient { size_t length) override; virtual bool IsLinkVisited(unsigned long long link_hash) override; virtual void AddKeySystems( - std::vector* key_systems) override; + std::vector* key_systems) override; virtual bool HandleNavigation(content::RenderFrame* render_frame, content::DocumentState* document_state, diff --git a/android_webview/renderer/aw_key_systems.cc b/android_webview/renderer/aw_key_systems.cc index 2076c92d5e6e28..cc3059e4a8b176 100644 --- a/android_webview/renderer/aw_key_systems.cc +++ b/android_webview/renderer/aw_key_systems.cc @@ -8,7 +8,7 @@ namespace android_webview { void AwAddKeySystems( - std::vector* key_systems_info) { + std::vector* key_systems_info) { cdm::AddAndroidWidevine(key_systems_info); cdm::AddAndroidPlatformKeySystems(key_systems_info); } diff --git a/android_webview/renderer/aw_key_systems.h b/android_webview/renderer/aw_key_systems.h index 96823b5b62ebf1..4bed8b61a3e4ac 100644 --- a/android_webview/renderer/aw_key_systems.h +++ b/android_webview/renderer/aw_key_systems.h @@ -5,11 +5,13 @@ #ifndef ANDROID_WEBVIEW_RENDERER_AW_KEY_SYSTEMS_H_ #define ANDROID_WEBVIEW_RENDERER_AW_KEY_SYSTEMS_H_ -#include "content/public/renderer/key_system_info.h" +#include + +#include "media/base/key_system_info.h" namespace android_webview { -void AwAddKeySystems(std::vector* key_systems_info); +void AwAddKeySystems(std::vector* key_systems_info); } // namespace android_webview diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc index 671c197e1b122e..9f99262d1107d5 100644 --- a/chrome/renderer/chrome_content_renderer_client.cc +++ b/chrome/renderer/chrome_content_renderer_client.cc @@ -1497,7 +1497,7 @@ bool ChromeContentRendererClient::AllowPepperMediaStreamAPI( } void ChromeContentRendererClient::AddKeySystems( - std::vector* key_systems) { + std::vector* key_systems) { AddChromeKeySystems(key_systems); } diff --git a/chrome/renderer/chrome_content_renderer_client.h b/chrome/renderer/chrome_content_renderer_client.h index 9c3ac3adfc3111..e28b9ebf7ab48f 100644 --- a/chrome/renderer/chrome_content_renderer_client.h +++ b/chrome/renderer/chrome_content_renderer_client.h @@ -134,7 +134,7 @@ class ChromeContentRendererClient : public content::ContentRendererClient { content::RenderFrame* render_frame, blink::WebFrame* frame) override; bool AllowPepperMediaStreamAPI(const GURL& url) override; - void AddKeySystems(std::vector* key_systems) override; + void AddKeySystems(std::vector* key_systems) override; bool IsPluginAllowedToUseDevChannelAPIs() override; bool IsPluginAllowedToUseCompositorAPI(const GURL& url) override; bool IsPluginAllowedToUseVideoDecodeAPI(const GURL& url) override; diff --git a/chrome/renderer/media/chrome_key_systems.cc b/chrome/renderer/media/chrome_key_systems.cc index e23e360e99ea2f..7ebb4fe31f1204 100644 --- a/chrome/renderer/media/chrome_key_systems.cc +++ b/chrome/renderer/media/chrome_key_systems.cc @@ -13,8 +13,8 @@ #include "base/strings/utf_string_conversions.h" #include "chrome/common/render_messages.h" #include "components/cdm/renderer/widevine_key_systems.h" -#include "content/public/common/eme_constants.h" #include "content/public/renderer/render_thread.h" +#include "media/base/eme_constants.h" #if defined(OS_ANDROID) #include "components/cdm/renderer/android_key_systems.h" @@ -29,8 +29,8 @@ #include "base/version.h" #endif -using content::KeySystemInfo; -using content::SupportedCodecs; +using media::KeySystemInfo; +using media::SupportedCodecs; #if defined(ENABLE_PEPPER_CDMS) static bool IsPepperCdmAvailable( @@ -74,11 +74,11 @@ static void AddExternalClearKey( KeySystemInfo info(kExternalClearKeyKeySystem); - info.supported_codecs = content::EME_CODEC_WEBM_ALL; - info.supported_init_data_types = content::EME_INIT_DATA_TYPE_WEBM; + info.supported_codecs = media::EME_CODEC_WEBM_ALL; + info.supported_init_data_types = media::EME_INIT_DATA_TYPE_WEBM; #if defined(USE_PROPRIETARY_CODECS) - info.supported_codecs |= content::EME_CODEC_MP4_ALL; - info.supported_init_data_types |= content::EME_INIT_DATA_TYPE_CENC; + info.supported_codecs |= media::EME_CODEC_MP4_ALL; + info.supported_init_data_types |= media::EME_INIT_DATA_TYPE_CENC; #endif // defined(USE_PROPRIETARY_CODECS) info.pepper_type = kExternalClearKeyPepperType; @@ -156,19 +156,19 @@ static void AddPepperBasedWidevine( additional_param_values, &codecs); - SupportedCodecs supported_codecs = content::EME_CODEC_NONE; + SupportedCodecs supported_codecs = media::EME_CODEC_NONE; for (size_t i = 0; i < codecs.size(); ++i) { if (codecs[i] == kCdmSupportedCodecVorbis) - supported_codecs |= content::EME_CODEC_WEBM_VORBIS; + supported_codecs |= media::EME_CODEC_WEBM_VORBIS; if (codecs[i] == kCdmSupportedCodecVp8) - supported_codecs |= content::EME_CODEC_WEBM_VP8; + supported_codecs |= media::EME_CODEC_WEBM_VP8; if (codecs[i] == kCdmSupportedCodecVp9) - supported_codecs |= content::EME_CODEC_WEBM_VP9; + supported_codecs |= media::EME_CODEC_WEBM_VP9; #if defined(USE_PROPRIETARY_CODECS) if (codecs[i] == kCdmSupportedCodecAac) - supported_codecs |= content::EME_CODEC_MP4_AAC; + supported_codecs |= media::EME_CODEC_MP4_AAC; if (codecs[i] == kCdmSupportedCodecAvc1) - supported_codecs |= content::EME_CODEC_MP4_AVC1; + supported_codecs |= media::EME_CODEC_MP4_AVC1; #endif // defined(USE_PROPRIETARY_CODECS) } diff --git a/chrome/renderer/media/chrome_key_systems.h b/chrome/renderer/media/chrome_key_systems.h index 13acd39a20dddf..dfec84f3b39b2e 100644 --- a/chrome/renderer/media/chrome_key_systems.h +++ b/chrome/renderer/media/chrome_key_systems.h @@ -7,8 +7,8 @@ #include -#include "content/public/renderer/key_system_info.h" +#include "media/base/key_system_info.h" -void AddChromeKeySystems(std::vector* key_systems_info); +void AddChromeKeySystems(std::vector* key_systems_info); #endif // CHROME_RENDERER_MEDIA_CHROME_KEY_SYSTEMS_H_ diff --git a/chromecast/renderer/DEPS b/chromecast/renderer/DEPS index 8632b540024bb8..790b870ae3ce6f 100644 --- a/chromecast/renderer/DEPS +++ b/chromecast/renderer/DEPS @@ -2,6 +2,7 @@ include_rules = [ "+chromecast/media", "+components/cdm/renderer", "+content/public/renderer", + "+media/base", "+third_party/WebKit/public/platform", "+third_party/WebKit/public/web", ] diff --git a/chromecast/renderer/key_systems_cast.cc b/chromecast/renderer/key_systems_cast.cc index be25c64491392a..a07e6baabbe69d 100644 --- a/chromecast/renderer/key_systems_cast.cc +++ b/chromecast/renderer/key_systems_cast.cc @@ -10,7 +10,7 @@ #include "base/logging.h" #include "chromecast/media/base/key_systems_common.h" #include "components/cdm/renderer/widevine_key_systems.h" -#include "content/public/common/eme_constants.h" +#include "media/base/eme_constants.h" #include "widevine_cdm_version.h" // In SHARED_INTERMEDIATE_DIR. @@ -19,17 +19,17 @@ namespace shell { void AddKeySystemWithCodecs( const std::string& key_system_name, - std::vector* concrete_key_systems) { - content::KeySystemInfo info(key_system_name); - info.supported_codecs = content::EME_CODEC_MP4_ALL; + std::vector* concrete_key_systems) { + media::KeySystemInfo info(key_system_name); + info.supported_codecs = media::EME_CODEC_MP4_ALL; concrete_key_systems->push_back(info); } void AddChromecastKeySystems( - std::vector* key_systems_info) { + std::vector* key_systems_info) { #if defined(WIDEVINE_CDM_AVAILABLE) AddWidevineWithCodecs(cdm::WIDEVINE, - content::EME_CODEC_MP4_ALL, + media::EME_CODEC_MP4_ALL, key_systems_info); #endif diff --git a/chromecast/renderer/key_systems_cast.h b/chromecast/renderer/key_systems_cast.h index 5853c688d46232..544876b85f65f1 100644 --- a/chromecast/renderer/key_systems_cast.h +++ b/chromecast/renderer/key_systems_cast.h @@ -7,7 +7,7 @@ #include -#include "content/public/renderer/key_system_info.h" +#include "media/base/key_system_info.h" namespace chromecast { namespace shell { @@ -15,14 +15,14 @@ namespace shell { // Adds a single key system by name. void AddKeySystemWithCodecs( const std::string& key_system_name, - std::vector* concrete_key_systems); + std::vector* concrete_key_systems); void AddChromecastKeySystems( - std::vector* key_systems_info); + std::vector* key_systems_info); // TODO(gunsch): Remove when prefixed EME is removed. void AddChromecastPlatformKeySystems( - std::vector* key_systems_info); + std::vector* key_systems_info); } // namespace shell } // namespace chromecast diff --git a/components/cdm.gypi b/components/cdm.gypi index 618342cc070002..d6f640ae67ec2c 100644 --- a/components/cdm.gypi +++ b/components/cdm.gypi @@ -26,7 +26,6 @@ 'dependencies': [ 'cdm_common', '../base/base.gyp:base', - '../content/content.gyp:content_common', '../content/content.gyp:content_renderer', '../third_party/widevine/cdm/widevine_cdm.gyp:widevine_cdm_version_h', ], @@ -43,8 +42,8 @@ 'sources': [ 'cdm/renderer/android_key_systems.cc', 'cdm/renderer/android_key_systems.h', - ], - }], + ], + }], ], }, ], diff --git a/components/cdm/DEPS b/components/cdm/DEPS index 1c40d981eb6160..5ca4943d9e23ab 100644 --- a/components/cdm/DEPS +++ b/components/cdm/DEPS @@ -1,3 +1,4 @@ include_rules = [ "+ipc", + "+media/base", ] diff --git a/components/cdm/browser/cdm_message_filter_android.cc b/components/cdm/browser/cdm_message_filter_android.cc index ccea5fe872664e..a19a03747e8fca 100644 --- a/components/cdm/browser/cdm_message_filter_android.cc +++ b/components/cdm/browser/cdm_message_filter_android.cc @@ -13,9 +13,9 @@ #include "media/base/android/media_drm_bridge.h" using content::BrowserThread; -using content::SupportedCodecs; using media::MediaCodecBridge; using media::MediaDrmBridge; +using media::SupportedCodecs; namespace cdm { @@ -34,12 +34,12 @@ struct CodecInfo { }; const CodecInfo kCodecsToQuery[] = { - {content::EME_CODEC_WEBM_VORBIS, CODEC_AUDIO, "vorbis", "video/webm"}, - {content::EME_CODEC_WEBM_VP8, CODEC_VIDEO, "vp8", "video/webm"}, - {content::EME_CODEC_WEBM_VP9, CODEC_VIDEO, "vp9", "video/webm"}, + {media::EME_CODEC_WEBM_VORBIS, CODEC_AUDIO, "vorbis", "video/webm"}, + {media::EME_CODEC_WEBM_VP8, CODEC_VIDEO, "vp8", "video/webm"}, + {media::EME_CODEC_WEBM_VP9, CODEC_VIDEO, "vp9", "video/webm"}, #if defined(USE_PROPRIETARY_CODECS) - {content::EME_CODEC_MP4_AAC, CODEC_AUDIO, "mp4a", "video/mp4"}, - {content::EME_CODEC_MP4_AVC1, CODEC_VIDEO, "avc1", "video/mp4"} + {media::EME_CODEC_MP4_AAC, CODEC_AUDIO, "mp4a", "video/mp4"}, + {media::EME_CODEC_MP4_AVC1, CODEC_VIDEO, "avc1", "video/mp4"} #endif // defined(USE_PROPRIETARY_CODECS) }; @@ -47,7 +47,7 @@ static SupportedCodecs GetSupportedCodecs( const SupportedKeySystemRequest& request, bool video_must_be_compositable) { const std::string& key_system = request.key_system; - SupportedCodecs supported_codecs = content::EME_CODEC_NONE; + SupportedCodecs supported_codecs = media::EME_CODEC_NONE; for (size_t i = 0; i < arraysize(kCodecsToQuery); ++i) { const CodecInfo& info = kCodecsToQuery[i]; @@ -106,7 +106,7 @@ void CdmMessageFilterAndroid::OnQueryKeySystemSupport( if (!MediaDrmBridge::IsKeySystemSupported(request.key_system)) return; - DCHECK(request.codecs & content::EME_CODEC_ALL) << "unrecognized codec"; + DCHECK(request.codecs & media::EME_CODEC_ALL) << "unrecognized codec"; response->key_system = request.key_system; // TODO(qinmin): check composition is supported or not. response->compositing_codecs = GetSupportedCodecs(request, true); diff --git a/components/cdm/common/cdm_messages_android.h b/components/cdm/common/cdm_messages_android.h index 8e0ad1cb4c3b08..028306ac35ba60 100644 --- a/components/cdm/common/cdm_messages_android.h +++ b/components/cdm/common/cdm_messages_android.h @@ -7,24 +7,24 @@ #include -#include "content/public/common/eme_constants.h" #include "ipc/ipc_message_macros.h" +#include "media/base/eme_constants.h" #define IPC_MESSAGE_START EncryptedMediaMsgStart IPC_STRUCT_BEGIN(SupportedKeySystemRequest) IPC_STRUCT_MEMBER(std::string, key_system) - IPC_STRUCT_MEMBER(content::SupportedCodecs, codecs, content::EME_CODEC_NONE) + IPC_STRUCT_MEMBER(media::SupportedCodecs, codecs, media::EME_CODEC_NONE) IPC_STRUCT_END() IPC_STRUCT_BEGIN(SupportedKeySystemResponse) IPC_STRUCT_MEMBER(std::string, key_system) - IPC_STRUCT_MEMBER(content::SupportedCodecs, + IPC_STRUCT_MEMBER(media::SupportedCodecs, compositing_codecs, - content::EME_CODEC_NONE) - IPC_STRUCT_MEMBER(content::SupportedCodecs, + media::EME_CODEC_NONE) + IPC_STRUCT_MEMBER(media::SupportedCodecs, non_compositing_codecs, - content::EME_CODEC_NONE) + media::EME_CODEC_NONE) IPC_STRUCT_END() // Messages sent from the renderer to the browser. diff --git a/components/cdm/renderer/BUILD.gn b/components/cdm/renderer/BUILD.gn index bc470b056c6778..9652a6c793bfeb 100644 --- a/components/cdm/renderer/BUILD.gn +++ b/components/cdm/renderer/BUILD.gn @@ -18,8 +18,8 @@ static_library("renderer") { deps = [ "//base", "//components/cdm/common", - "//content/public/common", "//content/public/renderer", + "//media/base", "//third_party/widevine/cdm:version_h", ] } diff --git a/components/cdm/renderer/DEPS b/components/cdm/renderer/DEPS index dbd28cf1ed03c0..725e151a7a5159 100644 --- a/components/cdm/renderer/DEPS +++ b/components/cdm/renderer/DEPS @@ -1,4 +1,3 @@ include_rules = [ - "+content/public/common", "+content/public/renderer", ] diff --git a/components/cdm/renderer/android_key_systems.cc b/components/cdm/renderer/android_key_systems.cc index c6adc80f5ce1c9..83a0d0481df831 100644 --- a/components/cdm/renderer/android_key_systems.cc +++ b/components/cdm/renderer/android_key_systems.cc @@ -10,13 +10,13 @@ #include "base/logging.h" #include "components/cdm/common/cdm_messages_android.h" #include "components/cdm/renderer/widevine_key_systems.h" -#include "content/public/common/eme_constants.h" #include "content/public/renderer/render_thread.h" +#include "media/base/eme_constants.h" #include "widevine_cdm_version.h" // In SHARED_INTERMEDIATE_DIR. -using content::KeySystemInfo; -using content::SupportedCodecs; +using media::KeySystemInfo; +using media::SupportedCodecs; namespace cdm { @@ -26,12 +26,12 @@ static SupportedKeySystemResponse QueryKeySystemSupport( SupportedKeySystemResponse response; request.key_system = key_system; - request.codecs = content::EME_CODEC_ALL; + request.codecs = media::EME_CODEC_ALL; content::RenderThread::Get()->Send( new ChromeViewHostMsg_QueryKeySystemSupport(request, &response)); - DCHECK(!(response.compositing_codecs & ~content::EME_CODEC_ALL)) + DCHECK(!(response.compositing_codecs & ~media::EME_CODEC_ALL)) << "unrecognized codec"; - DCHECK(!(response.non_compositing_codecs & ~content::EME_CODEC_ALL)) + DCHECK(!(response.non_compositing_codecs & ~media::EME_CODEC_ALL)) << "unrecognized codec"; return response; } @@ -39,14 +39,14 @@ static SupportedKeySystemResponse QueryKeySystemSupport( void AddAndroidWidevine(std::vector* concrete_key_systems) { SupportedKeySystemResponse response = QueryKeySystemSupport( kWidevineKeySystem); - if (response.compositing_codecs != content::EME_CODEC_NONE) { + if (response.compositing_codecs != media::EME_CODEC_NONE) { AddWidevineWithCodecs( WIDEVINE, static_cast(response.compositing_codecs), concrete_key_systems); } - if (response.non_compositing_codecs != content::EME_CODEC_NONE) { + if (response.non_compositing_codecs != media::EME_CODEC_NONE) { AddWidevineWithCodecs( WIDEVINE_HR_NON_COMPOSITING, static_cast(response.non_compositing_codecs), @@ -63,17 +63,17 @@ void AddAndroidPlatformKeySystems( for (std::vector::const_iterator it = key_system_names.begin(); it != key_system_names.end(); ++it) { SupportedKeySystemResponse response = QueryKeySystemSupport(*it); - if (response.compositing_codecs != content::EME_CODEC_NONE) { + if (response.compositing_codecs != media::EME_CODEC_NONE) { KeySystemInfo info(*it); info.supported_codecs = response.compositing_codecs; // Here we assume that support for a container implies support for the // associated initialization data type. KeySystems handles validating // |init_data_type| x |container| pairings. - if (response.compositing_codecs & content::EME_CODEC_WEBM_ALL) - info.supported_init_data_types |= content::EME_INIT_DATA_TYPE_WEBM; + if (response.compositing_codecs & media::EME_CODEC_WEBM_ALL) + info.supported_init_data_types |= media::EME_INIT_DATA_TYPE_WEBM; #if defined(USE_PROPRIETARY_CODECS) - if (response.compositing_codecs & content::EME_CODEC_MP4_ALL) - info.supported_init_data_types |= content::EME_INIT_DATA_TYPE_CENC; + if (response.compositing_codecs & media::EME_CODEC_MP4_ALL) + info.supported_init_data_types |= media::EME_INIT_DATA_TYPE_CENC; #endif // defined(USE_PROPRIETARY_CODECS) concrete_key_systems->push_back(info); } diff --git a/components/cdm/renderer/android_key_systems.h b/components/cdm/renderer/android_key_systems.h index 36be6c9f5e69b3..fb962b15624c6d 100644 --- a/components/cdm/renderer/android_key_systems.h +++ b/components/cdm/renderer/android_key_systems.h @@ -7,17 +7,17 @@ #include -#include "content/public/renderer/key_system_info.h" +#include "media/base/key_system_info.h" namespace cdm { void AddAndroidWidevine( - std::vector* concrete_key_systems); + std::vector* concrete_key_systems); // Add platform-supported key systems which are not explicitly handled // by Chrome. void AddAndroidPlatformKeySystems( - std::vector* concrete_key_systems); + std::vector* concrete_key_systems); } // namespace cdm diff --git a/components/cdm/renderer/widevine_key_systems.cc b/components/cdm/renderer/widevine_key_systems.cc index d08b6ad9239e6d..f803e8e3fefffa 100644 --- a/components/cdm/renderer/widevine_key_systems.cc +++ b/components/cdm/renderer/widevine_key_systems.cc @@ -8,14 +8,14 @@ #include #include "base/logging.h" -#include "content/public/common/eme_constants.h" +#include "media/base/eme_constants.h" #include "widevine_cdm_version.h" // In SHARED_INTERMEDIATE_DIR. #if defined(WIDEVINE_CDM_AVAILABLE) -using content::KeySystemInfo; -using content::SupportedCodecs; +using media::KeySystemInfo; +using media::SupportedCodecs; namespace cdm { @@ -53,11 +53,11 @@ void AddWidevineWithCodecs(WidevineCdmType widevine_cdm_type, // Here we assume that support for a container imples support for the // associated initialization data type. KeySystems handles validating // |init_data_type| x |container| pairings. - if (supported_codecs & content::EME_CODEC_WEBM_ALL) - info.supported_init_data_types |= content::EME_INIT_DATA_TYPE_WEBM; + if (supported_codecs & media::EME_CODEC_WEBM_ALL) + info.supported_init_data_types |= media::EME_INIT_DATA_TYPE_WEBM; #if defined(USE_PROPRIETARY_CODECS) - if (supported_codecs & content::EME_CODEC_MP4_ALL) - info.supported_init_data_types |= content::EME_INIT_DATA_TYPE_CENC; + if (supported_codecs & media::EME_CODEC_MP4_ALL) + info.supported_init_data_types |= media::EME_INIT_DATA_TYPE_CENC; #endif // defined(USE_PROPRIETARY_CODECS) #if defined(ENABLE_PEPPER_CDMS) diff --git a/components/cdm/renderer/widevine_key_systems.h b/components/cdm/renderer/widevine_key_systems.h index ab1966f03a8621..1d42b3b2d3c2b8 100644 --- a/components/cdm/renderer/widevine_key_systems.h +++ b/components/cdm/renderer/widevine_key_systems.h @@ -7,7 +7,8 @@ #include -#include "content/public/renderer/key_system_info.h" +#include "build/build_config.h" +#include "media/base/key_system_info.h" namespace cdm { @@ -20,8 +21,8 @@ enum WidevineCdmType { void AddWidevineWithCodecs( WidevineCdmType widevine_cdm_type, - content::SupportedCodecs supported_codecs, - std::vector* concrete_key_systems); + media::SupportedCodecs supported_codecs, + std::vector* concrete_key_systems); } // namespace cdm diff --git a/content/content_common.gypi b/content/content_common.gypi index 47538d6aa7290d..8d95e6aaf9a323 100644 --- a/content/content_common.gypi +++ b/content/content_common.gypi @@ -57,7 +57,6 @@ 'public/common/context_menu_params.h', 'public/common/drop_data.cc', 'public/common/drop_data.h', - 'public/common/eme_constants.h', 'public/common/favicon_url.cc', 'public/common/favicon_url.h', 'public/common/file_chooser_file_info.cc', diff --git a/content/content_renderer.gypi b/content/content_renderer.gypi index b2a0b4c5e14f3d..f3f445d76e0d9c 100644 --- a/content/content_renderer.gypi +++ b/content/content_renderer.gypi @@ -49,8 +49,6 @@ 'public/renderer/context_menu_client.h', 'public/renderer/document_state.cc', 'public/renderer/document_state.h', - 'public/renderer/key_system_info.cc', - 'public/renderer/key_system_info.h', 'public/renderer/navigation_state.cc', 'public/renderer/navigation_state.h', 'public/renderer/pepper_plugin_instance.h', diff --git a/content/public/renderer/content_renderer_client.cc b/content/public/renderer/content_renderer_client.cc index 88ca2586f19fa5..76f27ee59e0131 100644 --- a/content/public/renderer/content_renderer_client.cc +++ b/content/public/renderer/content_renderer_client.cc @@ -155,7 +155,7 @@ bool ContentRendererClient::AllowPepperMediaStreamAPI(const GURL& url) { } void ContentRendererClient::AddKeySystems( - std::vector* key_systems) { + std::vector* key_systems) { } bool ContentRendererClient::ShouldReportDetailedMessageForSource( diff --git a/content/public/renderer/content_renderer_client.h b/content/public/renderer/content_renderer_client.h index 9de7a084bd50c5..daf8d4a650d721 100644 --- a/content/public/renderer/content_renderer_client.h +++ b/content/public/renderer/content_renderer_client.h @@ -49,13 +49,16 @@ struct WebPluginParams; struct WebURLError; } +namespace media { +struct KeySystemInfo; +} + namespace content { class BrowserPluginDelegate; class DocumentState; class RenderFrame; class RenderView; class SynchronousCompositor; -struct KeySystemInfo; struct WebPluginInfo; // Embedder API for participating in renderer logic. @@ -243,7 +246,7 @@ class CONTENT_EXPORT ContentRendererClient { // Gives the embedder a chance to register the key system(s) it supports by // populating |key_systems|. - virtual void AddKeySystems(std::vector* key_systems); + virtual void AddKeySystems(std::vector* key_systems); // Returns true if we should report a detailed message (including a stack // trace) for console [logs|errors|exceptions]. |source| is the WebKit- diff --git a/content/renderer/media/crypto/key_systems.cc b/content/renderer/media/crypto/key_systems.cc index 7435d692f4ceef..9c3ce046ab64fa 100644 --- a/content/renderer/media/crypto/key_systems.cc +++ b/content/renderer/media/crypto/key_systems.cc @@ -13,10 +13,10 @@ #include "base/threading/thread_checker.h" #include "base/time/time.h" #include "content/public/common/content_client.h" -#include "content/public/common/eme_constants.h" #include "content/public/renderer/content_renderer_client.h" -#include "content/public/renderer/key_system_info.h" #include "content/renderer/media/crypto/key_systems_support_uma.h" +#include "media/base/eme_constants.h" +#include "media/base/key_system_info.h" #if defined(OS_ANDROID) #include "media/base/android/media_codec_bridge.h" @@ -26,6 +26,12 @@ namespace content { +using media::EmeCodec; +using media::EmeInitDataType; +using media::KeySystemInfo; +using media::SupportedInitDataTypes; +using media::SupportedCodecs; + const char kClearKeyKeySystem[] = "org.w3.clearkey"; const char kPrefixedClearKeyKeySystem[] = "webkit-org.w3.clearkey"; const char kUnsupportedClearKeyKeySystem[] = "unsupported-org.w3.clearkey"; @@ -38,9 +44,9 @@ struct NamedInitDataType { // Mapping between initialization data types names and enum values. When adding // entries, make sure to update IsSaneInitDataTypeWithContainer(). static NamedInitDataType kInitDataTypeNames[] = { - {"webm", EME_INIT_DATA_TYPE_WEBM}, + {"webm", media::EME_INIT_DATA_TYPE_WEBM}, #if defined(USE_PROPRIETARY_CODECS) - {"cenc", EME_INIT_DATA_TYPE_CENC} + {"cenc", media::EME_INIT_DATA_TYPE_CENC} #endif // defined(USE_PROPRIETARY_CODECS) }; @@ -53,25 +59,25 @@ struct NamedCodec { // Only audio codec can belong to a "audio/*" container. Both audio and video // codecs can belong to a "video/*" container. static NamedCodec kContainerToCodecMasks[] = { - {"audio/webm", EME_CODEC_WEBM_AUDIO_ALL}, - {"video/webm", EME_CODEC_WEBM_ALL}, + {"audio/webm", media::EME_CODEC_WEBM_AUDIO_ALL}, + {"video/webm", media::EME_CODEC_WEBM_ALL}, #if defined(USE_PROPRIETARY_CODECS) - {"audio/mp4", EME_CODEC_MP4_AUDIO_ALL}, - {"video/mp4", EME_CODEC_MP4_ALL} + {"audio/mp4", media::EME_CODEC_MP4_AUDIO_ALL}, + {"video/mp4", media::EME_CODEC_MP4_ALL} #endif // defined(USE_PROPRIETARY_CODECS) }; // Mapping between codec names and enum values. static NamedCodec kCodecStrings[] = { - {"vorbis", EME_CODEC_WEBM_VORBIS}, - {"vp8", EME_CODEC_WEBM_VP8}, - {"vp8.0", EME_CODEC_WEBM_VP8}, - {"vp9", EME_CODEC_WEBM_VP9}, - {"vp9.0", EME_CODEC_WEBM_VP9}, + {"vorbis", media::EME_CODEC_WEBM_VORBIS}, + {"vp8", media::EME_CODEC_WEBM_VP8}, + {"vp8.0", media::EME_CODEC_WEBM_VP8}, + {"vp9", media::EME_CODEC_WEBM_VP9}, + {"vp9.0", media::EME_CODEC_WEBM_VP9}, #if defined(USE_PROPRIETARY_CODECS) - {"mp4a", EME_CODEC_MP4_AAC}, - {"avc1", EME_CODEC_MP4_AVC1}, - {"avc3", EME_CODEC_MP4_AVC1} + {"mp4a", media::EME_CODEC_MP4_AAC}, + {"avc1", media::EME_CODEC_MP4_AVC1}, + {"avc3", media::EME_CODEC_MP4_AVC1} #endif // defined(USE_PROPRIETARY_CODECS) }; @@ -82,18 +88,18 @@ static void AddClearKey(std::vector* concrete_key_systems) { // http://developer.android.com/guide/appendix/media-formats.html // VP9 support is device dependent. - info.supported_init_data_types = EME_INIT_DATA_TYPE_WEBM; - info.supported_codecs = EME_CODEC_WEBM_ALL; + info.supported_init_data_types = media::EME_INIT_DATA_TYPE_WEBM; + info.supported_codecs = media::EME_CODEC_WEBM_ALL; #if defined(OS_ANDROID) // Temporarily disable VP9 support for Android. // TODO(xhwang): Use mime_util.h to query VP9 support on Android. - info.supported_codecs &= ~EME_CODEC_WEBM_VP9; + info.supported_codecs &= ~media::EME_CODEC_WEBM_VP9; #endif // defined(OS_ANDROID) #if defined(USE_PROPRIETARY_CODECS) - info.supported_init_data_types |= EME_INIT_DATA_TYPE_CENC; - info.supported_codecs |= EME_CODEC_MP4_ALL; + info.supported_init_data_types |= media::EME_INIT_DATA_TYPE_CENC; + info.supported_codecs |= media::EME_CODEC_MP4_ALL; #endif // defined(USE_PROPRIETARY_CODECS) info.use_aes_decryptor = true; @@ -149,7 +155,7 @@ class KeySystems { struct KeySystemProperties { KeySystemProperties() - : use_aes_decryptor(false), supported_codecs(EME_CODEC_NONE) {} + : use_aes_decryptor(false), supported_codecs(media::EME_CODEC_NONE) {} bool use_aes_decryptor; #if defined(ENABLE_PEPPER_CDMS) @@ -164,7 +170,7 @@ class KeySystems { typedef base::hash_map ParentKeySystemMap; typedef base::hash_map ContainerCodecsMap; typedef base::hash_map CodecsMap; - typedef base::hash_map InitDataTypesMap; + typedef base::hash_map InitDataTypesMap; KeySystems(); ~KeySystems() {} @@ -255,7 +261,7 @@ EmeInitDataType KeySystems::GetInitDataTypeForName( init_data_type_name_map_.find(init_data_type); if (iter != init_data_type_name_map_.end()) return iter->second; - return EME_INIT_DATA_TYPE_NONE; + return media::EME_INIT_DATA_TYPE_NONE; } SupportedCodecs KeySystems::GetCodecMaskForContainer( @@ -264,14 +270,14 @@ SupportedCodecs KeySystems::GetCodecMaskForContainer( container_to_codec_mask_map_.find(container); if (iter != container_to_codec_mask_map_.end()) return iter->second; - return EME_CODEC_NONE; + return media::EME_CODEC_NONE; } EmeCodec KeySystems::GetCodecForString(const std::string& codec) const { CodecsMap::const_iterator iter = codec_string_map_.find(codec); if (iter != codec_string_map_.end()) return iter->second; - return EME_CODEC_NONE; + return media::EME_CODEC_NONE; } const std::string& KeySystems::GetConcreteKeySystemName( diff --git a/content/renderer/media/crypto/key_systems_unittest.cc b/content/renderer/media/crypto/key_systems_unittest.cc index 7b877ee25f53b9..742dc00035936f 100644 --- a/content/renderer/media/crypto/key_systems_unittest.cc +++ b/content/renderer/media/crypto/key_systems_unittest.cc @@ -6,11 +6,11 @@ #include #include "content/public/common/content_client.h" -#include "content/public/common/eme_constants.h" #include "content/public/renderer/content_renderer_client.h" -#include "content/public/renderer/key_system_info.h" #include "content/renderer/media/crypto/key_systems.h" #include "content/test/test_content_client.h" +#include "media/base/eme_constants.h" +#include "media/base/key_system_info.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/WebKit/public/platform/WebString.h" @@ -37,6 +37,7 @@ namespace content { using blink::WebString; +using media::KeySystemInfo; // These are the (fake) key systems that are registered for these tests. // kUsesAes uses the AesDecryptor like Clear Key. @@ -65,8 +66,9 @@ enum TestCodec { TEST_CODEC_FOO_ALL = TEST_CODEC_FOO_AUDIO_ALL | TEST_CODEC_FOO_VIDEO_ALL }; -COMPILE_ASSERT((TEST_CODEC_FOO_ALL & EME_CODEC_ALL) == EME_CODEC_NONE, - test_codec_masks_should_only_use_invalid_codec_masks); +COMPILE_ASSERT((TEST_CODEC_FOO_ALL & media::EME_CODEC_ALL) == + media::EME_CODEC_NONE, + test_codec_masks_should_only_use_invalid_codec_masks); // Adds test container and codec masks. // This function must be called after SetContentClient() is called. @@ -92,22 +94,22 @@ static void AddContainerAndCodecMasksForTest() { } class TestContentRendererClient : public ContentRendererClient { - void AddKeySystems(std::vector* key_systems) override; + void AddKeySystems(std::vector* key_systems) override; }; void TestContentRendererClient::AddKeySystems( - std::vector* key_systems) { + std::vector* key_systems) { KeySystemInfo aes(kUsesAes); - aes.supported_codecs = EME_CODEC_WEBM_ALL; + aes.supported_codecs = media::EME_CODEC_WEBM_ALL; aes.supported_codecs |= TEST_CODEC_FOO_ALL; - aes.supported_init_data_types = EME_INIT_DATA_TYPE_WEBM; + aes.supported_init_data_types = media::EME_INIT_DATA_TYPE_WEBM; aes.use_aes_decryptor = true; key_systems->push_back(aes); KeySystemInfo ext(kExternal); - ext.supported_codecs = EME_CODEC_WEBM_ALL; + ext.supported_codecs = media::EME_CODEC_WEBM_ALL; ext.supported_codecs |= TEST_CODEC_FOO_ALL; - ext.supported_init_data_types = EME_INIT_DATA_TYPE_WEBM; + ext.supported_init_data_types = media::EME_INIT_DATA_TYPE_WEBM; ext.parent_key_system = kExternalParent; #if defined(ENABLE_PEPPER_CDMS) ext.pepper_type = "application/x-ppapi-external-cdm"; diff --git a/media/base/BUILD.gn b/media/base/BUILD.gn index 51d56dfee83954..61fc29157c6a7c 100644 --- a/media/base/BUILD.gn +++ b/media/base/BUILD.gn @@ -87,6 +87,9 @@ source_set("base") { "demuxer_stream_provider.h", "djb2.cc", "djb2.h", + "eme_constants.h", + "key_system_info.cc", + "key_system_info.h", "media.cc", "media.h", "media_keys.cc", diff --git a/content/public/common/eme_constants.h b/media/base/eme_constants.h similarity index 90% rename from content/public/common/eme_constants.h rename to media/base/eme_constants.h index aaf183eb3342d5..27ebfffa4c20e7 100644 --- a/content/public/common/eme_constants.h +++ b/media/base/eme_constants.h @@ -2,12 +2,12 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_PUBLIC_COMMON_EME_CONSTANTS_H_ -#define CONTENT_PUBLIC_COMMON_EME_CONSTANTS_H_ +#ifndef MEDIA_BASE_EME_CONSTANTS_H_ +#define MEDIA_BASE_EME_CONSTANTS_H_ #include -namespace content { +namespace media { // Defines bitmask values that specify registered initialization data types used // in Encrypted Media Extensions (EME). @@ -48,6 +48,6 @@ enum EmeCodec { typedef uint32_t SupportedInitDataTypes; typedef uint32_t SupportedCodecs; -} // namespace content +} // namespace media -#endif // CONTENT_PUBLIC_COMMON_EME_CONSTANTS_H_ +#endif // MEDIA_BASE_EME_CONSTANTS_H_ diff --git a/content/public/renderer/key_system_info.cc b/media/base/key_system_info.cc similarity index 81% rename from content/public/renderer/key_system_info.cc rename to media/base/key_system_info.cc index 9578ebfcfefcf1..f4369124cf157c 100644 --- a/content/public/renderer/key_system_info.cc +++ b/media/base/key_system_info.cc @@ -2,9 +2,9 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "content/public/renderer/key_system_info.h" +#include "media/base/key_system_info.h" -namespace content { +namespace media { KeySystemInfo::KeySystemInfo(const std::string& key_system) : key_system(key_system), @@ -16,4 +16,4 @@ KeySystemInfo::KeySystemInfo(const std::string& key_system) KeySystemInfo::~KeySystemInfo() { } -} // namespace content +} // namespace media diff --git a/content/public/renderer/key_system_info.h b/media/base/key_system_info.h similarity index 81% rename from content/public/renderer/key_system_info.h rename to media/base/key_system_info.h index 9ec317d4bdc998..e259c00d855c75 100644 --- a/content/public/renderer/key_system_info.h +++ b/media/base/key_system_info.h @@ -2,16 +2,13 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CONTENT_PUBLIC_RENDERER_KEY_SYSTEM_INFO_H_ -#define CONTENT_PUBLIC_RENDERER_KEY_SYSTEM_INFO_H_ +#ifndef MEDIA_BASE_KEY_SYSTEM_INFO_H_ +#define MEDIA_BASE_KEY_SYSTEM_INFO_H_ -#include #include -#include "base/basictypes.h" -#include "base/containers/hash_tables.h" -#include "content/common/content_export.h" -#include "content/public/common/eme_constants.h" +#include "media/base/eme_constants.h" +#include "media/base/media_export.h" // Definitions: // * Key system @@ -28,11 +25,11 @@ // be an abstract key system. // As an example, "com.example" is the parent of "com.example.foo". -namespace content { +namespace media { // Contains information about an EME key system as well as how to instantiate // the corresponding CDM. -struct CONTENT_EXPORT KeySystemInfo { +struct MEDIA_EXPORT KeySystemInfo { explicit KeySystemInfo(const std::string& key_system); ~KeySystemInfo(); @@ -56,6 +53,6 @@ struct CONTENT_EXPORT KeySystemInfo { #endif }; -} // namespace content +} // namespace media -#endif // CONTENT_PUBLIC_RENDERER_KEY_SYSTEM_INFO_H_ +#endif // MEDIA_BASE_KEY_SYSTEM_INFO_H_ diff --git a/media/media.gyp b/media/media.gyp index 7f0884cfbcd76a..f3b281768a3dd6 100644 --- a/media/media.gyp +++ b/media/media.gyp @@ -287,6 +287,9 @@ 'base/demuxer_stream_provider.h', 'base/djb2.cc', 'base/djb2.h', + 'base/eme_constants.h', + 'base/key_system_info.cc', + 'base/key_system_info.h', 'base/keyboard_event_counter.cc', 'base/keyboard_event_counter.h', 'base/mac/avfoundation_glue.h',