weblayer: wires up some media types for weblayer
This wires up widevine and the platform key-systems for weblayer.
BUG=1049426
TEST=covered by wpt
Change-Id: I8bda35fbcd14d9fc36805375d1627170c7054018
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2111768
Reviewed-by: Xiaohan Wang <[email protected]>
Reviewed-by: John Abd-El-Malek <[email protected]>
Commit-Queue: Scott Violet <[email protected]>
Cr-Commit-Position: refs/heads/master@{#752153}
diff --git a/weblayer/BUILD.gn b/weblayer/BUILD.gn
index 3cf3884..633a73b 100644
--- a/weblayer/BUILD.gn
+++ b/weblayer/BUILD.gn
@@ -218,6 +218,7 @@
"//components/autofill/core/browser",
"//components/base32",
"//components/captive_portal/core:buildflags",
+ "//components/cdm/renderer",
"//components/content_settings/core/browser",
"//components/crash/content/app",
"//components/crash/content/browser",
@@ -346,6 +347,7 @@
"//android_webview:generate_aw_strings",
"//components/android_system_error_page",
"//components/autofill/android:provider",
+ "//components/cdm/browser",
"//components/crash/android:crash_android",
"//components/crash/android:crashpad_main",
"//components/embedder_support/android:context_menu",
diff --git a/weblayer/browser/DEPS b/weblayer/browser/DEPS
index 016c740..91a938bb 100644
--- a/weblayer/browser/DEPS
+++ b/weblayer/browser/DEPS
@@ -7,6 +7,7 @@
"+components/base32",
"+components/browser_ui",
"+components/captive_portal",
+ "+components/cdm/browser",
"+components/content_settings/core/common",
"+components/crash/content/browser",
"+components/crash/core/common",
diff --git a/weblayer/browser/content_browser_client_impl.cc b/weblayer/browser/content_browser_client_impl.cc
index d6c850ee..d223e8e 100644
--- a/weblayer/browser/content_browser_client_impl.cc
+++ b/weblayer/browser/content_browser_client_impl.cc
@@ -30,6 +30,7 @@
#include "content/public/browser/navigation_handle.h"
#include "content/public/browser/navigation_throttle.h"
#include "content/public/browser/network_service_instance.h"
+#include "content/public/browser/render_process_host.h"
#include "content/public/common/content_switches.h"
#include "content/public/common/service_names.mojom.h"
#include "content/public/common/url_constants.h"
@@ -70,6 +71,7 @@
#include "base/android/path_utils.h"
#include "base/bind.h"
#include "base/task/post_task.h"
+#include "components/cdm/browser/cdm_message_filter_android.h"
#include "components/crash/content/browser/crash_handler_host_linux.h"
#include "components/navigation_interception/intercept_navigation_delegate.h"
#include "components/spellcheck/browser/spell_check_host_impl.h" // nogncheck
@@ -461,6 +463,15 @@
PopulateWebLayerFrameBinders(render_frame_host, map);
}
+void ContentBrowserClientImpl::RenderProcessWillLaunch(
+ content::RenderProcessHost* host) {
+#if defined(OS_ANDROID)
+ host->AddFilter(new cdm::CdmMessageFilterAndroid(
+ /*can_persist_data*/ true,
+ /*force_to_support_secure_codecs*/ false));
+#endif
+}
+
void ContentBrowserClientImpl::CreateFeatureListAndFieldTrials() {
feature_list_creator_->CreateFeatureListAndFieldTrials();
}
diff --git a/weblayer/browser/content_browser_client_impl.h b/weblayer/browser/content_browser_client_impl.h
index 5d8be9cc..254e272 100644
--- a/weblayer/browser/content_browser_client_impl.h
+++ b/weblayer/browser/content_browser_client_impl.h
@@ -86,6 +86,7 @@
content::RenderFrameHost* render_frame_host,
service_manager::BinderMapWithContext<content::RenderFrameHost*>* map)
override;
+ void RenderProcessWillLaunch(content::RenderProcessHost* host) override;
#if defined(OS_LINUX) || defined(OS_ANDROID)
void GetAdditionalMappedFilesForChildProcess(
@@ -97,10 +98,13 @@
void CreateFeatureListAndFieldTrials();
private:
+#if defined(OS_ANDROID)
+ SafeBrowsingService* GetSafeBrowsingService();
+#endif
+
MainParams* params_;
#if defined(OS_ANDROID)
- SafeBrowsingService* GetSafeBrowsingService();
std::unique_ptr<SafeBrowsingService> safe_browsing_service_;
#endif
diff --git a/weblayer/renderer/DEPS b/weblayer/renderer/DEPS
index 8ec7ef2..1af6794 100644
--- a/weblayer/renderer/DEPS
+++ b/weblayer/renderer/DEPS
@@ -1,6 +1,7 @@
include_rules = [
"+components/android_system_error_page",
"+components/autofill/content/renderer",
+ "+components/cdm/renderer",
"+components/safe_browsing/content/common",
"+components/safe_browsing/content/renderer",
"+components/safe_browsing/core/common",
diff --git a/weblayer/renderer/content_renderer_client_impl.cc b/weblayer/renderer/content_renderer_client_impl.cc
index 831e661..d12867d 100644
--- a/weblayer/renderer/content_renderer_client_impl.cc
+++ b/weblayer/renderer/content_renderer_client_impl.cc
@@ -16,6 +16,7 @@
#if defined(OS_ANDROID)
#include "components/android_system_error_page/error_page_populator.h"
+#include "components/cdm/renderer/android_key_systems.h"
#include "components/spellcheck/renderer/spellcheck.h" // nogncheck
#include "components/spellcheck/renderer/spellcheck_provider.h" // nogncheck
#include "content/public/renderer/render_thread.h"
@@ -120,4 +121,12 @@
return nullptr;
}
+void ContentRendererClientImpl::AddSupportedKeySystems(
+ std::vector<std::unique_ptr<::media::KeySystemProperties>>* key_systems) {
+#if defined(OS_ANDROID)
+ cdm::AddAndroidWidevine(key_systems);
+ cdm::AddAndroidPlatformKeySystems(key_systems);
+#endif
+}
+
} // namespace weblayer
diff --git a/weblayer/renderer/content_renderer_client_impl.h b/weblayer/renderer/content_renderer_client_impl.h
index 8f5a650..b666e23 100644
--- a/weblayer/renderer/content_renderer_client_impl.h
+++ b/weblayer/renderer/content_renderer_client_impl.h
@@ -34,6 +34,9 @@
std::unique_ptr<content::URLLoaderThrottleProvider>
CreateURLLoaderThrottleProvider(
content::URLLoaderThrottleProviderType provider_type) override;
+ void AddSupportedKeySystems(
+ std::vector<std::unique_ptr<::media::KeySystemProperties>>* key_systems)
+ override;
private:
#if defined(OS_ANDROID)