Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1323)

Unified Diff: media/blink/key_system_config_selector.cc

Issue 1124863005: Restrict use of hardware-secure codecs based on the RendererPreference. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@setsecurity
Patch Set: Rename secure_codec -> secure_surface in some cases. Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/blink/key_system_config_selector.cc
diff --git a/media/blink/key_system_config_selector.cc b/media/blink/key_system_config_selector.cc
index 324a28f6cec6f9c5612ba26d68b6a321e28cac03..07dcfa724442d9f9a8703ea1eea2f89bfda26b01 100644
--- a/media/blink/key_system_config_selector.cc
+++ b/media/blink/key_system_config_selector.cc
@@ -136,6 +136,9 @@ struct KeySystemConfigSelector::SelectionRequest {
base::Callback<void(const blink::WebString&)> not_supported_cb;
bool was_permission_requested = false;
bool is_permission_granted = false;
+#if defined(OS_ANDROID)
+ bool allow_secure_surfaces = false;
+#endif // defined(OS_ANDROID)
};
// Accumulates configuration rules to determine if a feature (additional
@@ -157,6 +160,8 @@ class KeySystemConfigSelector::ConfigState {
bool IsIdentifierRecommended() const { return is_identifier_recommended_; }
+ bool AreSecureCodecsRequired() const { return are_secure_codecs_required_; }
+
// Checks whether a rule is compatible with all previously added rules.
bool IsRuleSupported(EmeConfigRule rule) const {
switch (rule) {
@@ -392,7 +397,6 @@ KeySystemConfigSelector::GetSupportedConfiguration(
const blink::WebMediaKeySystemConfiguration& candidate,
ConfigState* config_state,
blink::WebMediaKeySystemConfiguration* accumulated_configuration) {
- // TODO(sandersd): Set state of SECURE_CODECS from renderer pref.
// From https://w3c.github.io/encrypted-media/#get-supported-configuration
// 1. Let accumulated configuration be empty. (Done by caller.)
// 2. If the initDataTypes member is present in candidate configuration, run
@@ -670,6 +674,9 @@ KeySystemConfigSelector::GetSupportedConfiguration(
void KeySystemConfigSelector::SelectConfig(
const blink::WebString& key_system,
+#if defined(OS_ANDROID)
+ const bool allow_secure_surfaces,
+#endif // defined(OS_ANDROID)
const blink::WebVector<blink::WebMediaKeySystemConfiguration>&
candidate_configurations,
const blink::WebSecurityOrigin& security_origin,
@@ -697,6 +704,9 @@ void KeySystemConfigSelector::SelectConfig(
// TODO(sandersd): This should be async, ideally not on the main thread.
scoped_ptr<SelectionRequest> request(new SelectionRequest());
request->key_system = key_system_ascii;
+#if defined(OS_ANDROID)
+ request->allow_secure_surfaces = allow_secure_surfaces;
+#endif // defined(OS_ANDROID)
request->candidate_configurations = candidate_configurations;
request->security_origin = security_origin;
request->succeeded_cb = succeeded_cb;
@@ -721,6 +731,14 @@ void KeySystemConfigSelector::SelectConfigInternal(
// new MediaKeySystemAccess object.]
ConfigState config_state(request->was_permission_requested,
request->is_permission_granted);
+#if defined(OS_ANDROID)
+ // On Android, hardware-secure codecs are not allowed when the renderer
+ // preference is not enabled.
ddorwin 2015/05/06 02:17:11 This comment is specific to code outside the funct
sandersd (OOO until July 31) 2015/05/08 00:37:42 Done.
+ DCHECK(config_state.IsRuleSupported(
+ EmeConfigRule::SECURE_CODECS_NOT_ALLOWED);
+ if (!request->allow_secure_surfaces)
+ config_state.AddRule(EmeConfigRule::SECURE_CODECS_NOT_ALLOWED);
+#endif // defined(OS_ANDROID)
blink::WebMediaKeySystemConfiguration accumulated_configuration;
ConfigurationSupport support = GetSupportedConfiguration(
request->key_system, request->candidate_configurations[i],
@@ -741,7 +759,12 @@ void KeySystemConfigSelector::SelectConfigInternal(
weak_factory_.GetWeakPtr(), base::Passed(&request)));
return;
case CONFIGURATION_SUPPORTED:
+#if defined(OS_ANDROID)
+ request->succeeded_cb.Run(accumulated_configuration,
+ config_state.AreSecureCodecsRequired());
+#else
request->succeeded_cb.Run(accumulated_configuration);
+#endif // defined(OS_ANDROID)
return;
}
}

Powered by Google App Engine
This is Rietveld 408576698