widevine: Use component updater with the Alloy runtime (fixes issue #3149)

Widevine CDM binaries will be downloaded on supported platforms shortly after
application startup. Widevine support will then become available within a few
seconds after successful installation on Windows or after the next application
restart on other platforms. The CDM files will be downloaded to a "WidevineCdm"
directory inside the `CefSettings.user_data_path` directory.

Pass the `--disable-component-update` command-line flag to disable Widevine
download and installation. Pass the `--component-updater=fast-update` command-
line flag to force Widevine download immediately after application startup.

See the related issue for additional usage details.
This commit is contained in:
Marshall Greenblatt
2021-08-09 17:18:43 -04:00
parent eaf581e544
commit 240b869db5
45 changed files with 201 additions and 1459 deletions

View File

@@ -9,7 +9,7 @@
// implementations. See the translator.README.txt file in the tools directory
// for more information.
//
// $hash=b43931d8bb81fbfd7a55c011ac6e5b471b3a30ac$
// $hash=7fef7aaa85b96ed7c7fc82542cd393210e1d89ee$
//
#include "include/capi/cef_app_capi.h"
@@ -44,7 +44,6 @@
#include "libcef_dll/cpptoc/app_cpptoc.h"
#include "libcef_dll/cpptoc/completion_callback_cpptoc.h"
#include "libcef_dll/cpptoc/end_tracing_callback_cpptoc.h"
#include "libcef_dll/cpptoc/register_cdm_callback_cpptoc.h"
#include "libcef_dll/cpptoc/scheme_handler_factory_cpptoc.h"
#include "libcef_dll/cpptoc/task_cpptoc.h"
#include "libcef_dll/cpptoc/v8handler_cpptoc.h"
@@ -167,7 +166,7 @@ NO_SANITIZE("cfi-icall") CEF_GLOBAL bool CefCrashReportingEnabled() {
NO_SANITIZE("cfi-icall")
CEF_GLOBAL
void CefSetCrashKeyValue(const CefString& key, const CefString& value) {
void CefSetCrashKeyValue(const CefString& key, const CefString& value) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
// Verify param: key; type: string_byref_const
@@ -312,10 +311,10 @@ CEF_GLOBAL void CefLoadCRLSetsFile(const CefString& path) {
NO_SANITIZE("cfi-icall")
CEF_GLOBAL
bool CefAddCrossOriginWhitelistEntry(const CefString& source_origin,
const CefString& target_protocol,
const CefString& target_domain,
bool allow_target_subdomains) {
bool CefAddCrossOriginWhitelistEntry(const CefString& source_origin,
const CefString& target_protocol,
const CefString& target_domain,
bool allow_target_subdomains) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
// Verify param: source_origin; type: string_byref_const
@@ -339,10 +338,10 @@ CEF_GLOBAL
NO_SANITIZE("cfi-icall")
CEF_GLOBAL
bool CefRemoveCrossOriginWhitelistEntry(const CefString& source_origin,
const CefString& target_protocol,
const CefString& target_domain,
bool allow_target_subdomains) {
bool CefRemoveCrossOriginWhitelistEntry(const CefString& source_origin,
const CefString& target_protocol,
const CefString& target_domain,
bool allow_target_subdomains) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
// Verify param: source_origin; type: string_byref_const
@@ -403,7 +402,7 @@ CEF_GLOBAL bool CefCreateURL(const CefURLParts& parts, CefString& url) {
NO_SANITIZE("cfi-icall")
CEF_GLOBAL CefString
CefFormatUrlForSecurityDisplay(const CefString& origin_url) {
CefFormatUrlForSecurityDisplay(const CefString& origin_url) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
// Verify param: origin_url; type: string_byref_const
@@ -441,8 +440,8 @@ CEF_GLOBAL CefString CefGetMimeType(const CefString& extension) {
NO_SANITIZE("cfi-icall")
CEF_GLOBAL
void CefGetExtensionsForMimeType(const CefString& mime_type,
std::vector<CefString>& extensions) {
void CefGetExtensionsForMimeType(const CefString& mime_type,
std::vector<CefString>& extensions) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
// Verify param: mime_type; type: string_byref_const
@@ -596,8 +595,8 @@ CEF_GLOBAL CefRefPtr<CefValue> CefParseJSONAndReturnError(
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL CefString
CefWriteJSON(CefRefPtr<CefValue> node, cef_json_writer_options_t options) {
CEF_GLOBAL CefString CefWriteJSON(CefRefPtr<CefValue> node,
cef_json_writer_options_t options) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
// Verify param: node; type: refptr_same
@@ -797,7 +796,7 @@ CEF_GLOBAL bool CefRegisterExtension(const CefString& extension_name,
NO_SANITIZE("cfi-icall")
CEF_GLOBAL
void CefVisitWebPluginInfo(CefRefPtr<CefWebPluginInfoVisitor> visitor) {
void CefVisitWebPluginInfo(CefRefPtr<CefWebPluginInfoVisitor> visitor) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
// Verify param: visitor; type: refptr_diff
@@ -862,23 +861,6 @@ CEF_GLOBAL void CefIsWebPluginUnstable(
path.GetStruct(), CefWebPluginUnstableCallbackCppToC::Wrap(callback));
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL
void CefRegisterWidevineCdm(const CefString& path,
CefRefPtr<CefRegisterCdmCallback> callback) {
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
// Verify param: path; type: string_byref_const
DCHECK(!path.empty());
if (path.empty())
return;
// Unverified params: callback
// Execute
cef_register_widevine_cdm(path.GetStruct(),
CefRegisterCdmCallbackCppToC::Wrap(callback));
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL void CefExecuteJavaScriptWithUserGestureForTests(
CefRefPtr<CefFrame> frame,