Index: media/blink/webencryptedmediaclient_impl.cc |
diff --git a/media/blink/webencryptedmediaclient_impl.cc b/media/blink/webencryptedmediaclient_impl.cc |
index 2dd051e59626ee9d47fcfd33c11c63a74c23dd3c..b1bd0d715ab269ab7f5b489b498efa7d624bfca2 100644 |
--- a/media/blink/webencryptedmediaclient_impl.cc |
+++ b/media/blink/webencryptedmediaclient_impl.cc |
@@ -25,12 +25,6 @@ namespace media { |
const char kKeySystemSupportUMAPrefix[] = |
"Media.EME.RequestMediaKeySystemAccess."; |
-// TODO(jrummell): Convert to an enum. http://crbug.com/418239 |
-const char kTemporarySessionType[] = "temporary"; |
-const char kPersistentLicenseSessionType[] = "persistent-license"; |
-const char kPersistentReleaseMessageSessionType[] = |
- "persistent-release-message"; |
- |
enum ConfigurationSupport { |
CONFIGURATION_NOT_SUPPORTED, |
CONFIGURATION_REQUIRES_PERMISSION, |
@@ -151,23 +145,41 @@ static ConfigurationSupport GetSupportedConfiguration( |
// 1. Let accumulated configuration be empty. (Done by caller.) |
// 2. If candidate configuration's initDataTypes attribute is not empty, run |
// the following steps: |
- if (!candidate.initDataTypes.isEmpty()) { |
+ blink::WebVector<blink::WebEncryptedMediaInitDataType> init_data_types = |
+ candidate.getInitDataTypes(); |
+ if (!init_data_types.isEmpty()) { |
// 2.1. Let supported types be empty. |
- std::vector<blink::WebString> supported_types; |
+ std::vector<blink::WebEncryptedMediaInitDataType> supported_types; |
// 2.2. For each value in candidate configuration's initDataTypes attribute: |
- for (size_t i = 0; i < candidate.initDataTypes.size(); i++) { |
+ for (size_t i = 0; i < init_data_types.size(); i++) { |
// 2.2.1. Let initDataType be the value. |
- const blink::WebString& init_data_type = candidate.initDataTypes[i]; |
+ blink::WebEncryptedMediaInitDataType init_data_type = init_data_types[i]; |
// 2.2.2. If initDataType is the empty string, return null. |
- if (init_data_type.isEmpty()) |
- return CONFIGURATION_NOT_SUPPORTED; |
+ if (init_data_type == blink::WebEncryptedMediaInitDataType::Unknown) |
+ continue; |
// 2.2.3. If the implementation supports generating requests based on |
// initDataType, add initDataType to supported types. String |
// comparison is case-sensitive. |
- if (base::IsStringASCII(init_data_type) && |
- IsSupportedKeySystemWithInitDataType( |
- key_system, base::UTF16ToASCII(init_data_type))) { |
+ // TODO(jrummell): |init_data_type| should be an enum all the way through |
+ // Chromium. http://crbug.com/417440 |
+ std::string init_data_type_as_ascii = "unknown"; |
+ switch (init_data_type) { |
+ case blink::WebEncryptedMediaInitDataType::Cenc: |
+ init_data_type_as_ascii = "cenc"; |
+ break; |
+ case blink::WebEncryptedMediaInitDataType::Keyids: |
+ init_data_type_as_ascii = "keyids"; |
+ break; |
+ case blink::WebEncryptedMediaInitDataType::Webm: |
+ init_data_type_as_ascii = "webm"; |
+ break; |
+ case blink::WebEncryptedMediaInitDataType::Unknown: |
+ NOTREACHED(); |
+ break; |
+ } |
+ if (IsSupportedKeySystemWithInitDataType(key_system, |
+ init_data_type_as_ascii)) { |
supported_types.push_back(init_data_type); |
} |
} |
@@ -177,7 +189,7 @@ static ConfigurationSupport GetSupportedConfiguration( |
return CONFIGURATION_NOT_SUPPORTED; |
// 2.4. Add supported types to accumulated configuration. |
- accumulated_configuration->initDataTypes = supported_types; |
+ accumulated_configuration->setInitDataTypes(supported_types); |
} |
// 3. Follow the steps for the value of candidate configuration's |
@@ -329,20 +341,22 @@ static ConfigurationSupport GetSupportedConfiguration( |
// 12. Return accumulated configuration. |
// (As an extra step, we record the available session types so that |
// createSession() can be synchronous.) |
- std::vector<blink::WebString> session_types; |
- session_types.push_back(kTemporarySessionType); |
+ std::vector<blink::WebEncryptedMediaSessionType> session_types; |
+ session_types.push_back(blink::WebEncryptedMediaSessionType::Temporary); |
if (accumulated_configuration->persistentState == |
blink::WebMediaKeySystemConfiguration::Requirement::Required) { |
if (IsPersistentLicenseSessionSupported(key_system, |
is_permission_granted)) { |
- session_types.push_back(kPersistentLicenseSessionType); |
+ session_types.push_back( |
+ blink::WebEncryptedMediaSessionType::PersistentLicense); |
} |
if (IsPersistentReleaseMessageSessionSupported(key_system, |
is_permission_granted)) { |
- session_types.push_back(kPersistentReleaseMessageSessionType); |
+ session_types.push_back( |
+ blink::WebEncryptedMediaSessionType::PersistentReleaseMessage); |
} |
} |
- accumulated_configuration->sessionTypes = session_types; |
+ accumulated_configuration->setSessionTypes(session_types); |
return CONFIGURATION_SUPPORTED; |
} |