| // Copyright 2019 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef COMPONENTS_CDM_COMMON_CDM_MANIFEST_H_ |
| #define COMPONENTS_CDM_COMMON_CDM_MANIFEST_H_ |
| |
| #include "base/values.h" |
| |
| namespace base { |
| class FilePath; |
| } // namespace base |
| |
| namespace media { |
| struct CdmCapability; |
| } |
| |
| // Returns whether the CDM's API versions, as specified in the manifest, are |
| // supported in this Chrome binary and not disabled at run time. |
| // Checks the module API, CDM interface API, and Host API. |
| // This should never fail except in rare cases where the component has not been |
| // updated recently or the user downgrades Chrome. |
| bool IsCdmManifestCompatibleWithChrome(const base::Value::Dict& manifest); |
| |
| // Extracts the necessary information from `manifest` and updates `capability`. |
| // Returns true on success, false if there are errors in the manifest. |
| // If this method returns false, `capability` may or may not be updated. |
| bool ParseCdmManifest(const base::Value::Dict& manifest, |
| media::CdmCapability* capability); |
| |
| // Reads the file `manifest_path` which is assumed to be a CDM manifest and |
| // extracts the necessary information from it to update `capability`. All the |
| // fields in `capability` are optional except `version`, which must be |
| // specified. This also verifies that the read CDM manifest is compatible with |
| // Chrome (by calling IsCdmManifestCompatibleWithChrome()). Returns true on |
| // success, false if there are errors in the file or the manifest is not |
| // compatible with this version of Chrome. If this method returns false, |
| // `capability` may or may not be updated. |
| bool ParseCdmManifestFromPath(const base::FilePath& manifest_path, |
| media::CdmCapability* capability); |
| |
| #endif // COMPONENTS_CDM_COMMON_CDM_MANIFEST_H_ |