| 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 <algorithm> | 7 #include <algorithm> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 275 base::AutoLock auto_lock(runtime_lock_); | 275 base::AutoLock auto_lock(runtime_lock_); |
| 276 URLPatternSet effective_hosts = active_permissions_unsafe_->effective_hosts(); | 276 URLPatternSet effective_hosts = active_permissions_unsafe_->effective_hosts(); |
| 277 for (const auto& val : tab_specific_permissions_) | 277 for (const auto& val : tab_specific_permissions_) |
| 278 effective_hosts.AddPatterns(val.second->effective_hosts()); | 278 effective_hosts.AddPatterns(val.second->effective_hosts()); |
| 279 return effective_hosts; | 279 return effective_hosts; |
| 280 } | 280 } |
| 281 | 281 |
| 282 bool PermissionsData::HasHostPermission(const GURL& url) const { | 282 bool PermissionsData::HasHostPermission(const GURL& url) const { |
| 283 base::AutoLock auto_lock(runtime_lock_); | 283 base::AutoLock auto_lock(runtime_lock_); |
| 284 return active_permissions_unsafe_->HasExplicitAccessToOrigin(url) && | 284 return active_permissions_unsafe_->HasExplicitAccessToOrigin(url) && |
| 285 !IsRuntimeBlockedHost(url); | 285 !IsRuntimeBlockedHostUnsafe(url); |
| 286 } | 286 } |
| 287 | 287 |
| 288 bool PermissionsData::HasEffectiveAccessToAllHosts() const { | 288 bool PermissionsData::HasEffectiveAccessToAllHosts() const { |
| 289 base::AutoLock auto_lock(runtime_lock_); | 289 base::AutoLock auto_lock(runtime_lock_); |
| 290 return active_permissions_unsafe_->HasEffectiveAccessToAllHosts(); | 290 return active_permissions_unsafe_->HasEffectiveAccessToAllHosts(); |
| 291 } | 291 } |
| 292 | 292 |
| 293 PermissionMessages PermissionsData::GetPermissionMessages() const { | 293 PermissionMessages PermissionsData::GetPermissionMessages() const { |
| 294 base::AutoLock auto_lock(runtime_lock_); | 294 base::AutoLock auto_lock(runtime_lock_); |
| 295 return PermissionMessageProvider::Get()->GetPermissionMessages( | 295 return PermissionMessageProvider::Get()->GetPermissionMessages( |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 407 if (tab_id >= 0) { | 407 if (tab_id >= 0) { |
| 408 const PermissionSet* tab_permissions = GetTabSpecificPermissions(tab_id); | 408 const PermissionSet* tab_permissions = GetTabSpecificPermissions(tab_id); |
| 409 if (tab_permissions && | 409 if (tab_permissions && |
| 410 tab_permissions->explicit_hosts().MatchesSecurityOrigin(url)) { | 410 tab_permissions->explicit_hosts().MatchesSecurityOrigin(url)) { |
| 411 return true; | 411 return true; |
| 412 } | 412 } |
| 413 } | 413 } |
| 414 return false; | 414 return false; |
| 415 } | 415 } |
| 416 | 416 |
| 417 bool PermissionsData::IsRuntimeBlockedHost(const GURL& url) const { | 417 bool PermissionsData::IsRuntimeBlockedHostUnsafe(const GURL& url) const { |
| 418 runtime_lock_.AssertAcquired(); | 418 runtime_lock_.AssertAcquired(); |
| 419 return PolicyBlockedHostsUnsafe().MatchesURL(url) && | 419 return PolicyBlockedHostsUnsafe().MatchesURL(url) && |
| 420 !PolicyAllowedHostsUnsafe().MatchesURL(url); | 420 !PolicyAllowedHostsUnsafe().MatchesURL(url); |
| 421 } | 421 } |
| 422 | 422 |
| 423 PermissionsData::AccessType PermissionsData::CanRunOnPage( | 423 PermissionsData::AccessType PermissionsData::CanRunOnPage( |
| 424 const Extension* extension, | 424 const Extension* extension, |
| 425 const GURL& document_url, | 425 const GURL& document_url, |
| 426 int tab_id, | 426 int tab_id, |
| 427 const URLPatternSet& permitted_url_patterns, | 427 const URLPatternSet& permitted_url_patterns, |
| 428 const URLPatternSet& withheld_url_patterns, | 428 const URLPatternSet& withheld_url_patterns, |
| 429 std::string* error) const { | 429 std::string* error) const { |
| 430 runtime_lock_.AssertAcquired(); | 430 runtime_lock_.AssertAcquired(); |
| 431 if (g_policy_delegate && !g_policy_delegate->CanExecuteScriptOnPage( | 431 if (g_policy_delegate && !g_policy_delegate->CanExecuteScriptOnPage( |
| 432 extension, document_url, tab_id, error)) | 432 extension, document_url, tab_id, error)) |
| 433 return ACCESS_DENIED; | 433 return ACCESS_DENIED; |
| 434 | 434 |
| 435 if (extension->location() != Manifest::COMPONENT && | 435 if (extension->location() != Manifest::COMPONENT && |
| 436 extension->permissions_data()->IsRuntimeBlockedHost(document_url)) { | 436 extension->permissions_data()->IsRuntimeBlockedHostUnsafe(document_url)) { |
| 437 if (error) | 437 if (error) |
| 438 *error = extension_misc::kPolicyBlockedScripting; | 438 *error = extension_misc::kPolicyBlockedScripting; |
| 439 return ACCESS_DENIED; | 439 return ACCESS_DENIED; |
| 440 } | 440 } |
| 441 | 441 |
| 442 if (IsRestrictedUrl(document_url, extension, error)) | 442 if (IsRestrictedUrl(document_url, extension, error)) |
| 443 return ACCESS_DENIED; | 443 return ACCESS_DENIED; |
| 444 | 444 |
| 445 if (HasTabSpecificPermissionToExecuteScript(tab_id, document_url)) | 445 if (HasTabSpecificPermissionToExecuteScript(tab_id, document_url)) |
| 446 return ACCESS_ALLOWED; | 446 return ACCESS_ALLOWED; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 458 manifest_errors::kCannotAccessPageWithUrl, document_url.spec()); | 458 manifest_errors::kCannotAccessPageWithUrl, document_url.spec()); |
| 459 } else { | 459 } else { |
| 460 *error = manifest_errors::kCannotAccessPage; | 460 *error = manifest_errors::kCannotAccessPage; |
| 461 } | 461 } |
| 462 } | 462 } |
| 463 | 463 |
| 464 return ACCESS_DENIED; | 464 return ACCESS_DENIED; |
| 465 } | 465 } |
| 466 | 466 |
| 467 } // namespace extensions | 467 } // namespace extensions |
| OLD | NEW |