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 |