Index: content/browser/child_process_security_policy_impl.cc |
diff --git a/content/browser/child_process_security_policy_impl.cc b/content/browser/child_process_security_policy_impl.cc |
index b0ac66d478f51cd7acc5ed9066cf0d42f2de3bf8..85ec83a4e31d6599e4b5b13eae8153d1c5fc8f3b 100644 |
--- a/content/browser/child_process_security_policy_impl.cc |
+++ b/content/browser/child_process_security_policy_impl.cc |
@@ -135,6 +135,22 @@ class ChildProcessSecurityPolicyImpl::SecurityState { |
return (it->second & permissions) == permissions; |
} |
+#if defined(OS_ANDROID) |
+ // Determine if the certain permissions have been granted to a content URI. |
+ bool HasPermissionsForContentUri(const base::FilePath& file, |
+ int permissions) { |
+ DCHECK(!file.empty()); |
+ DCHECK(file.IsContentUri()); |
+ if (!permissions) |
+ return false; |
+ base::FilePath file_path = file.StripTrailingSeparators(); |
+ FileMap::const_iterator it = file_permissions_.find(file_path); |
+ if (it != file_permissions_.end()) |
+ return (it->second & permissions) == permissions; |
+ return false; |
+ } |
+#endif |
+ |
void GrantBindings(int bindings) { |
enabled_bindings_ |= bindings; |
} |
@@ -171,6 +187,10 @@ class ChildProcessSecurityPolicyImpl::SecurityState { |
// Determine if the certain permissions have been granted to a file. |
bool HasPermissionsForFile(const base::FilePath& file, int permissions) { |
+#if defined(OS_ANDROID) |
+ if (file.IsContentUri()) |
+ return HasPermissionsForContentUri(file, permissions); |
+#endif |
if (!permissions || file.empty() || !file.IsAbsolute()) |
return false; |
base::FilePath current_path = file.StripTrailingSeparators(); |