Browse Source

pass encryption_modes_supported to CdmInfo

Jeremy Apthorp 6 years ago
parent
commit
ce2c8e358d
1 changed files with 21 additions and 4 deletions
  1. 21 4
      atom/app/atom_content_client.cc

+ 21 - 4
atom/app/atom_content_client.cc

@@ -41,8 +41,11 @@ namespace atom {
 namespace {
 
 #if defined(WIDEVINE_CDM_AVAILABLE)
-bool IsWidevineAvailable(base::FilePath* cdm_path,
-                         std::vector<media::VideoCodec>* codecs_supported) {
+bool IsWidevineAvailable(
+    base::FilePath* cdm_path,
+    std::vector<media::VideoCodec>* codecs_supported,
+    bool* supports_persistent_license,
+    base::flat_set<media::EncryptionMode>* modes_supported) {
   static enum {
     NOT_CHECKED,
     FOUND,
@@ -68,6 +71,16 @@ bool IsWidevineAvailable(base::FilePath* cdm_path,
     codecs_supported->push_back(media::VideoCodec::kCodecH264);
 #endif  // BUILDFLAG(USE_PROPRIETARY_CODECS)
 
+// TODO(crbug.com/767941): Push persistent-license support info here once
+// we check in a new CDM that supports it on Linux.
+#if defined(OS_CHROMEOS)
+    *supports_persistent_license = true;
+#else
+    *supports_persistent_license = false;
+#endif  // defined(OS_CHROMEOS)
+
+    modes_supported->insert(media::EncryptionMode::kCenc);
+
     return true;
   }
 
@@ -213,7 +226,10 @@ void AtomContentClient::AddContentDecryptionModules(
     base::FilePath cdm_path;
     std::vector<media::VideoCodec> video_codecs_supported;
     bool supports_persistent_license = false;
-    if (IsWidevineAvailable(&cdm_path, &video_codecs_supported)) {
+    base::flat_set<media::EncryptionMode> encryption_modes_supported;
+    if (IsWidevineAvailable(&cdm_path, &video_codecs_supported,
+                            &supports_persistent_license,
+                            &encryption_modes_supported)) {
       base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
       auto cdm_version_string =
           command_line->GetSwitchValueASCII(switches::kWidevineCdmVersion);
@@ -226,7 +242,8 @@ void AtomContentClient::AddContentDecryptionModules(
       cdms->push_back(content::CdmInfo(
           kWidevineCdmDisplayName, kWidevineCdmGuid, version, cdm_path,
           kWidevineCdmFileSystemId, video_codecs_supported,
-          supports_persistent_license, kWidevineKeySystem, false));
+          supports_persistent_license, encryption_modes_supported,
+          kWidevineKeySystem, false));
     }
 #endif  // defined(WIDEVINE_CDM_AVAILABLE)
   }