| Index: chrome/browser/component_updater/widevine_cdm_component_installer.cc
|
| diff --git a/chrome/browser/component_updater/widevine_cdm_component_installer.cc b/chrome/browser/component_updater/widevine_cdm_component_installer.cc
|
| index 83723d2080cdfa916fdcceaac9e89b111d33f497..57ce33d55e105fb2a01a0b75c2ecf253e1e27754 100644
|
| --- a/chrome/browser/component_updater/widevine_cdm_component_installer.cc
|
| +++ b/chrome/browser/component_updater/widevine_cdm_component_installer.cc
|
| @@ -104,6 +104,10 @@ const char kCdmHostVersionsName[] = "x-cdm-host-versions";
|
| // The list is passed to other parts of Chrome.
|
| const char kCdmCodecsListName[] = "x-cdm-codecs";
|
|
|
| +// TODO(xhwang): Move this to a common place if needed.
|
| +const base::FilePath::CharType kSignatureFileExtension[] =
|
| + FILE_PATH_LITERAL(".sig");
|
| +
|
| // Widevine CDM is packaged as a multi-CRX. Widevine CDM binaries are located in
|
| // _platform_specific/<platform_arch> folder in the package. This function
|
| // returns the platform-specific subdirectory that is part of that multi-CRX.
|
| @@ -380,22 +384,31 @@ void WidevineCdmComponentInstallerTraits::UpdateCdmAdapter(
|
| DCHECK(!chrome_version.empty());
|
|
|
| // If we are not using bundled CDM and we don't have a valid adapter, create
|
| - // the version file and copy the CDM adapter from |adapter_source_path| to
|
| - // |adapter_install_path|.
|
| + // the version file, copy the CDM adapter signature file, and copy the CDM
|
| + // adapter.
|
| if (adapter_install_path != adapter_source_path &&
|
| !HasValidAdapter(adapter_version_path, adapter_install_path,
|
| chrome_version)) {
|
| + if (!base::CopyFile(adapter_source_path, adapter_install_path)) {
|
| + PLOG(WARNING) << "Failed to copy Widevine CDM adapter.";
|
| + return;
|
| + }
|
| +
|
| + // Generate the version file.
|
| int bytes_written = base::WriteFile(
|
| adapter_version_path, chrome_version.data(), chrome_version.size());
|
| if (bytes_written < 0 ||
|
| static_cast<size_t>(bytes_written) != chrome_version.size()) {
|
| PLOG(WARNING) << "Failed to write Widevine CDM adapter version file.";
|
| - // Ignore version file writing failure and try to copy the CDM adapter.
|
| + // Ignore version file writing failure.
|
| }
|
|
|
| - if (!base::CopyFile(adapter_source_path, adapter_install_path)) {
|
| - PLOG(WARNING) << "Failed to copy Widevine CDM adapter.";
|
| - return;
|
| + // Copy Widevine CDM adapter signature file.
|
| + if (!base::CopyFile(
|
| + adapter_source_path.AddExtension(kSignatureFileExtension),
|
| + adapter_install_path.AddExtension(kSignatureFileExtension))) {
|
| + PLOG(WARNING) << "Failed to copy Widevine CDM adapter signature file.";
|
| + // The sig file may be missing or the copy failed. Ignore the failure.
|
| }
|
| }
|
|
|
|
|