| // Copyright 2019 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_COMMON_MEDIA_CDM_MANIFEST_H_ |
| #define CHROME_COMMON_MEDIA_CDM_MANIFEST_H_ |
| |
| namespace base { |
| class FilePath; |
| class Value; |
| class Version; |
| } |
| |
| namespace content { |
| 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& 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& manifest, |
| content::CdmCapability* capability); |
| |
| // Reads the file |manifest_path| which is assumed to be a CDM manifest and |
| // extracts the necessary information from it to update |version| and |
| // |capability|. 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, |
| // |version| and |capability| may or may not be updated. |
| bool ParseCdmManifestFromPath(const base::FilePath& manifest_path, |
| base::Version* version, |
| content::CdmCapability* capability); |
| |
| #endif // CHROME_COMMON_MEDIA_CDM_MANIFEST_H_ |