| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "extensions/common/permissions/permissions_data.h" | 5 #include "extensions/common/permissions/permissions_data.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "content/public/common/url_constants.h" | 8 #include "content/public/common/url_constants.h" |
| 9 #include "extensions/common/constants.h" | 9 #include "extensions/common/constants.h" |
| 10 #include "extensions/common/error_utils.h" | 10 #include "extensions/common/error_utils.h" |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 123 | 123 |
| 124 void PermissionsData::UpdateTabSpecificPermissions( | 124 void PermissionsData::UpdateTabSpecificPermissions( |
| 125 int tab_id, | 125 int tab_id, |
| 126 scoped_refptr<const PermissionSet> permissions) const { | 126 scoped_refptr<const PermissionSet> permissions) const { |
| 127 base::AutoLock auto_lock(runtime_lock_); | 127 base::AutoLock auto_lock(runtime_lock_); |
| 128 CHECK_GE(tab_id, 0); | 128 CHECK_GE(tab_id, 0); |
| 129 TabPermissionsMap::iterator iter = tab_specific_permissions_.find(tab_id); | 129 TabPermissionsMap::iterator iter = tab_specific_permissions_.find(tab_id); |
| 130 if (iter == tab_specific_permissions_.end()) | 130 if (iter == tab_specific_permissions_.end()) |
| 131 tab_specific_permissions_[tab_id] = permissions; | 131 tab_specific_permissions_[tab_id] = permissions; |
| 132 else | 132 else |
| 133 iter->second = PermissionSet::CreateUnion(iter->second, permissions); | 133 iter->second = |
| 134 PermissionSet::CreateUnion(iter->second.get(), permissions.get()); |
| 134 } | 135 } |
| 135 | 136 |
| 136 void PermissionsData::ClearTabSpecificPermissions(int tab_id) const { | 137 void PermissionsData::ClearTabSpecificPermissions(int tab_id) const { |
| 137 base::AutoLock auto_lock(runtime_lock_); | 138 base::AutoLock auto_lock(runtime_lock_); |
| 138 CHECK_GE(tab_id, 0); | 139 CHECK_GE(tab_id, 0); |
| 139 tab_specific_permissions_.erase(tab_id); | 140 tab_specific_permissions_.erase(tab_id); |
| 140 } | 141 } |
| 141 | 142 |
| 142 bool PermissionsData::HasAPIPermission(APIPermission::ID permission) const { | 143 bool PermissionsData::HasAPIPermission(APIPermission::ID permission) const { |
| 143 return active_permissions()->HasAPIPermission(permission); | 144 return active_permissions()->HasAPIPermission(permission); |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 287 std::string* error) const { | 288 std::string* error) const { |
| 288 const URLPattern all_urls(URLPattern::SCHEME_ALL, | 289 const URLPattern all_urls(URLPattern::SCHEME_ALL, |
| 289 URLPattern::kAllUrlsPattern); | 290 URLPattern::kAllUrlsPattern); |
| 290 | 291 |
| 291 if (active_permissions()->explicit_hosts().ContainsPattern(all_urls)) | 292 if (active_permissions()->explicit_hosts().ContainsPattern(all_urls)) |
| 292 return true; | 293 return true; |
| 293 | 294 |
| 294 if (tab_id >= 0) { | 295 if (tab_id >= 0) { |
| 295 scoped_refptr<const PermissionSet> tab_permissions = | 296 scoped_refptr<const PermissionSet> tab_permissions = |
| 296 GetTabSpecificPermissions(tab_id); | 297 GetTabSpecificPermissions(tab_id); |
| 297 if (tab_permissions && | 298 if (tab_permissions.get() && |
| 298 tab_permissions->HasAPIPermission(APIPermission::kTab)) { | 299 tab_permissions->HasAPIPermission(APIPermission::kTab)) { |
| 299 return true; | 300 return true; |
| 300 } | 301 } |
| 301 if (error) | 302 if (error) |
| 302 *error = manifest_errors::kActiveTabPermissionNotGranted; | 303 *error = manifest_errors::kActiveTabPermissionNotGranted; |
| 303 return false; | 304 return false; |
| 304 } | 305 } |
| 305 | 306 |
| 306 if (error) | 307 if (error) |
| 307 *error = manifest_errors::kAllURLOrActiveTabNeeded; | 308 *error = manifest_errors::kAllURLOrActiveTabNeeded; |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 359 return ACCESS_WITHHELD; | 360 return ACCESS_WITHHELD; |
| 360 | 361 |
| 361 if (error) { | 362 if (error) { |
| 362 *error = ErrorUtils::FormatErrorMessage(manifest_errors::kCannotAccessPage, | 363 *error = ErrorUtils::FormatErrorMessage(manifest_errors::kCannotAccessPage, |
| 363 document_url.spec()); | 364 document_url.spec()); |
| 364 } | 365 } |
| 365 return ACCESS_DENIED; | 366 return ACCESS_DENIED; |
| 366 } | 367 } |
| 367 | 368 |
| 368 } // namespace extensions | 369 } // namespace extensions |
| OLD | NEW |