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 |