mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-06-05 21:39:12 +02:00
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:
@@ -33,7 +33,7 @@
|
||||
// by hand. See the translator.README.txt file in the tools directory for
|
||||
// more information.
|
||||
//
|
||||
// $hash=f74bf4d33914d56d760f1bf5aadcf2651740c711$
|
||||
// $hash=f51ad9ffc67d94b9cbfad154e7f224111c2a96fa$
|
||||
//
|
||||
|
||||
#ifndef CEF_INCLUDE_CAPI_CEF_WEB_PLUGIN_CAPI_H_
|
||||
@@ -129,29 +129,6 @@ typedef struct _cef_web_plugin_unstable_callback_t {
|
||||
int unstable);
|
||||
} cef_web_plugin_unstable_callback_t;
|
||||
|
||||
///
|
||||
// Implement this structure to receive notification when CDM registration is
|
||||
// complete. The functions of this structure will be called on the browser
|
||||
// process UI thread.
|
||||
///
|
||||
typedef struct _cef_register_cdm_callback_t {
|
||||
///
|
||||
// Base structure.
|
||||
///
|
||||
cef_base_ref_counted_t base;
|
||||
|
||||
///
|
||||
// Method that will be called when CDM registration is complete. |result| will
|
||||
// be CEF_CDM_REGISTRATION_ERROR_NONE if registration completed successfully.
|
||||
// Otherwise, |result| and |error_message| will contain additional information
|
||||
// about why registration failed.
|
||||
///
|
||||
void(CEF_CALLBACK* on_cdm_registration_complete)(
|
||||
struct _cef_register_cdm_callback_t* self,
|
||||
cef_cdm_registration_error_t result,
|
||||
const cef_string_t* error_message);
|
||||
} cef_register_cdm_callback_t;
|
||||
|
||||
///
|
||||
// Visit web plugin information. Can be called on any thread in the browser
|
||||
// process.
|
||||
@@ -187,52 +164,6 @@ CEF_EXPORT void cef_is_web_plugin_unstable(
|
||||
const cef_string_t* path,
|
||||
cef_web_plugin_unstable_callback_t* callback);
|
||||
|
||||
///
|
||||
// Register the Widevine CDM plugin.
|
||||
//
|
||||
// The client application is responsible for downloading an appropriate
|
||||
// platform-specific CDM binary distribution from Google, extracting the
|
||||
// contents, and building the required directory structure on the local machine.
|
||||
// The cef_browser_host_t::StartDownload function and CefZipArchive structure
|
||||
// can be used to implement this functionality in CEF. Contact Google via
|
||||
// https://www.widevine.com/contact.html for details on CDM download.
|
||||
//
|
||||
// |path| is a directory that must contain the following files:
|
||||
// 1. manifest.json file from the CDM binary distribution (see below).
|
||||
// 2. widevinecdm file from the CDM binary distribution (e.g.
|
||||
// widevinecdm.dll on on Windows, libwidevinecdm.dylib on OS X,
|
||||
// libwidevinecdm.so on Linux).
|
||||
//
|
||||
// If any of these files are missing or if the manifest file has incorrect
|
||||
// contents the registration will fail and |callback| will receive a |result|
|
||||
// value of CEF_CDM_REGISTRATION_ERROR_INCORRECT_CONTENTS.
|
||||
//
|
||||
// The manifest.json file must contain the following keys:
|
||||
// A. "os": Supported OS (e.g. "mac", "win" or "linux").
|
||||
// B. "arch": Supported architecture (e.g. "ia32" or "x64").
|
||||
// C. "x-cdm-module-versions": Module API version (e.g. "4").
|
||||
// D. "x-cdm-interface-versions": Interface API version (e.g. "8").
|
||||
// E. "x-cdm-host-versions": Host API version (e.g. "8").
|
||||
// F. "version": CDM version (e.g. "1.4.8.903").
|
||||
// G. "x-cdm-codecs": List of supported codecs (e.g. "vp8,vp09,avc1").
|
||||
//
|
||||
// A through E are used to verify compatibility with the current Chromium
|
||||
// version. If the CDM is not compatible the registration will fail and
|
||||
// |callback| will receive a |result| value of
|
||||
// CEF_CDM_REGISTRATION_ERROR_INCOMPATIBLE.
|
||||
//
|
||||
// |callback| will be executed asynchronously once registration is complete.
|
||||
//
|
||||
// On Linux this function must be called before cef_initialize() and the
|
||||
// registration cannot be changed during runtime. If registration is not
|
||||
// supported at the time that cef_register_widevine_cdm() is called then
|
||||
// |callback| will receive a |result| value of
|
||||
// CEF_CDM_REGISTRATION_ERROR_NOT_SUPPORTED.
|
||||
///
|
||||
CEF_EXPORT void cef_register_widevine_cdm(
|
||||
const cef_string_t* path,
|
||||
cef_register_cdm_callback_t* callback);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
@@ -42,13 +42,13 @@
|
||||
// way that may cause binary incompatibility with other builds. The universal
|
||||
// hash value will change if any platform is affected whereas the platform hash
|
||||
// values will change only if that particular platform is affected.
|
||||
#define CEF_API_HASH_UNIVERSAL "6498b029e847331e85f7fa7a8fe82434e016e316"
|
||||
#define CEF_API_HASH_UNIVERSAL "5625e3ce80d2bbf5b5a39f8655d96c215f7685ee"
|
||||
#if defined(OS_WIN)
|
||||
#define CEF_API_HASH_PLATFORM "5beb166d25cb4aa70e15ff565a0268c60cab3e0c"
|
||||
#define CEF_API_HASH_PLATFORM "c20e4ffc24e6267b61774f49237d0f30a581f370"
|
||||
#elif defined(OS_MAC)
|
||||
#define CEF_API_HASH_PLATFORM "5fa684079bfafa70cc920a1ad4e694e38c46d737"
|
||||
#define CEF_API_HASH_PLATFORM "65731bc654ec6e1dbd48d6ff2336c4c8573f7d35"
|
||||
#elif defined(OS_LINUX)
|
||||
#define CEF_API_HASH_PLATFORM "1e0cc77dabf9058f0fc118b4605fbcccda14466f"
|
||||
#define CEF_API_HASH_PLATFORM "4e35b9cc9735c63ac9f16fbbb49a4b8e2307f23a"
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@@ -145,68 +145,4 @@ class CefWebPluginUnstableCallback : public virtual CefBaseRefCounted {
|
||||
void CefIsWebPluginUnstable(const CefString& path,
|
||||
CefRefPtr<CefWebPluginUnstableCallback> callback);
|
||||
|
||||
///
|
||||
// Implement this interface to receive notification when CDM registration is
|
||||
// complete. The methods of this class will be called on the browser process
|
||||
// UI thread.
|
||||
///
|
||||
/*--cef(source=client)--*/
|
||||
class CefRegisterCdmCallback : public virtual CefBaseRefCounted {
|
||||
public:
|
||||
///
|
||||
// Method that will be called when CDM registration is complete. |result|
|
||||
// will be CEF_CDM_REGISTRATION_ERROR_NONE if registration completed
|
||||
// successfully. Otherwise, |result| and |error_message| will contain
|
||||
// additional information about why registration failed.
|
||||
///
|
||||
/*--cef(optional_param=error_message)--*/
|
||||
virtual void OnCdmRegistrationComplete(cef_cdm_registration_error_t result,
|
||||
const CefString& error_message) = 0;
|
||||
};
|
||||
|
||||
///
|
||||
// Register the Widevine CDM plugin.
|
||||
//
|
||||
// The client application is responsible for downloading an appropriate
|
||||
// platform-specific CDM binary distribution from Google, extracting the
|
||||
// contents, and building the required directory structure on the local machine.
|
||||
// The CefBrowserHost::StartDownload method and CefZipArchive class can be used
|
||||
// to implement this functionality in CEF. Contact Google via
|
||||
// https://www.widevine.com/contact.html for details on CDM download.
|
||||
//
|
||||
// |path| is a directory that must contain the following files:
|
||||
// 1. manifest.json file from the CDM binary distribution (see below).
|
||||
// 2. widevinecdm file from the CDM binary distribution (e.g.
|
||||
// widevinecdm.dll on on Windows, libwidevinecdm.dylib on OS X,
|
||||
// libwidevinecdm.so on Linux).
|
||||
//
|
||||
// If any of these files are missing or if the manifest file has incorrect
|
||||
// contents the registration will fail and |callback| will receive a |result|
|
||||
// value of CEF_CDM_REGISTRATION_ERROR_INCORRECT_CONTENTS.
|
||||
//
|
||||
// The manifest.json file must contain the following keys:
|
||||
// A. "os": Supported OS (e.g. "mac", "win" or "linux").
|
||||
// B. "arch": Supported architecture (e.g. "ia32" or "x64").
|
||||
// C. "x-cdm-module-versions": Module API version (e.g. "4").
|
||||
// D. "x-cdm-interface-versions": Interface API version (e.g. "8").
|
||||
// E. "x-cdm-host-versions": Host API version (e.g. "8").
|
||||
// F. "version": CDM version (e.g. "1.4.8.903").
|
||||
// G. "x-cdm-codecs": List of supported codecs (e.g. "vp8,vp09,avc1").
|
||||
//
|
||||
// A through E are used to verify compatibility with the current Chromium
|
||||
// version. If the CDM is not compatible the registration will fail and
|
||||
// |callback| will receive a |result| value of
|
||||
// CEF_CDM_REGISTRATION_ERROR_INCOMPATIBLE.
|
||||
//
|
||||
// |callback| will be executed asynchronously once registration is complete.
|
||||
//
|
||||
// On Linux this function must be called before CefInitialize() and the
|
||||
// registration cannot be changed during runtime. If registration is not
|
||||
// supported at the time that CefRegisterWidevineCdm() is called then |callback|
|
||||
// will receive a |result| value of CEF_CDM_REGISTRATION_ERROR_NOT_SUPPORTED.
|
||||
///
|
||||
/*--cef(optional_param=callback)--*/
|
||||
void CefRegisterWidevineCdm(const CefString& path,
|
||||
CefRefPtr<CefRegisterCdmCallback> callback);
|
||||
|
||||
#endif // CEF_INCLUDE_CEF_WEB_PLUGIN_H_
|
||||
|
@@ -264,10 +264,10 @@ typedef struct _cef_settings_t {
|
||||
// be stored on disk. If this value is empty then the default
|
||||
// platform-specific user data directory will be used ("~/.cef_user_data"
|
||||
// directory on Linux, "~/Library/Application Support/CEF/User Data" directory
|
||||
// on Mac OS X, "Local Settings\Application Data\CEF\User Data" directory
|
||||
// under the user profile directory on Windows). If this value is non-empty
|
||||
// then it must be an absolute path. When using the Chrome runtime this value
|
||||
// will be ignored in favor of the |root_cache_path| value.
|
||||
// on Mac OS X, "AppData\Local\CEF\User Data" directory under the user profile
|
||||
// directory on Windows). If this value is non-empty then it must be an
|
||||
// absolute path. When using the Chrome runtime this value will be ignored in
|
||||
// favor of the |root_cache_path| value.
|
||||
///
|
||||
cef_string_t user_data_path;
|
||||
|
||||
@@ -2948,31 +2948,6 @@ typedef enum {
|
||||
CEF_SCHEME_OPTION_FETCH_ENABLED = 1 << 6,
|
||||
} cef_scheme_options_t;
|
||||
|
||||
///
|
||||
// Error codes for CDM registration. See cef_web_plugin.h for details.
|
||||
///
|
||||
typedef enum {
|
||||
///
|
||||
// No error. Registration completed successfully.
|
||||
///
|
||||
CEF_CDM_REGISTRATION_ERROR_NONE,
|
||||
|
||||
///
|
||||
// Required files or manifest contents are missing.
|
||||
///
|
||||
CEF_CDM_REGISTRATION_ERROR_INCORRECT_CONTENTS,
|
||||
|
||||
///
|
||||
// The CDM is incompatible with the current Chromium version.
|
||||
///
|
||||
CEF_CDM_REGISTRATION_ERROR_INCOMPATIBLE,
|
||||
|
||||
///
|
||||
// CDM registration is not supported at this time.
|
||||
///
|
||||
CEF_CDM_REGISTRATION_ERROR_NOT_SUPPORTED,
|
||||
} cef_cdm_registration_error_t;
|
||||
|
||||
///
|
||||
// Composition underline style.
|
||||
///
|
||||
|
Reference in New Issue
Block a user