Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(139)

Side by Side Diff: chrome/common/extensions/extension_permission_set.cc

Issue 7582017: Do not display warnings for file:/// extension permissions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "chrome/common/extensions/extension_permission_set.h" 5 #include "chrome/common/extensions/extension_permission_set.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 9
10 #include "base/memory/singleton.h" 10 #include "base/memory/singleton.h"
(...skipping 499 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 i != apis_.end(); ++i) { 510 i != apis_.end(); ++i) {
511 ExtensionAPIPermission* permission = info->GetByID(*i); 511 ExtensionAPIPermission* permission = info->GetByID(*i);
512 if (permission) 512 if (permission)
513 apis_str.insert(permission->name()); 513 apis_str.insert(permission->name());
514 } 514 }
515 return apis_str; 515 return apis_str;
516 } 516 }
517 517
518 std::set<std::string> 518 std::set<std::string>
519 ExtensionPermissionSet::GetDistinctHostsForDisplay() const { 519 ExtensionPermissionSet::GetDistinctHostsForDisplay() const {
520 return GetDistinctHosts(effective_hosts_, true); 520 return GetDistinctHosts(effective_hosts_, true, true);
521 } 521 }
522 522
523 ExtensionPermissionMessages 523 ExtensionPermissionMessages
524 ExtensionPermissionSet::GetPermissionMessages() const { 524 ExtensionPermissionSet::GetPermissionMessages() const {
525 ExtensionPermissionMessages messages; 525 ExtensionPermissionMessages messages;
526 526
527 if (HasEffectiveFullAccess()) { 527 if (HasEffectiveFullAccess()) {
528 messages.push_back(ExtensionPermissionMessage( 528 messages.push_back(ExtensionPermissionMessage(
529 ExtensionPermissionMessage::kFullAccess, 529 ExtensionPermissionMessage::kFullAccess,
530 l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS))); 530 l10n_util::GetStringUTF16(IDS_EXTENSION_PROMPT_WARNING_FULL_ACCESS)));
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
680 return true; 680 return true;
681 681
682 if (HasLessAPIPrivilegesThan(permissions)) 682 if (HasLessAPIPrivilegesThan(permissions))
683 return true; 683 return true;
684 684
685 return false; 685 return false;
686 } 686 }
687 687
688 // static 688 // static
689 std::set<std::string> ExtensionPermissionSet::GetDistinctHosts( 689 std::set<std::string> ExtensionPermissionSet::GetDistinctHosts(
690 const URLPatternSet& host_patterns, bool include_rcd) { 690 const URLPatternSet& host_patterns,
691 bool include_rcd,
692 bool exclude_file_scheme) {
691 // Use a vector to preserve order (also faster than a map on small sets). 693 // Use a vector to preserve order (also faster than a map on small sets).
692 // Each item is a host split into two parts: host without RCDs and 694 // Each item is a host split into two parts: host without RCDs and
693 // current best RCD. 695 // current best RCD.
694 typedef std::vector<std::pair<std::string, std::string> > HostVector; 696 typedef std::vector<std::pair<std::string, std::string> > HostVector;
695 HostVector hosts_best_rcd; 697 HostVector hosts_best_rcd;
696 for (URLPatternSet::const_iterator i = host_patterns.begin(); 698 for (URLPatternSet::const_iterator i = host_patterns.begin();
697 i != host_patterns.end(); ++i) { 699 i != host_patterns.end(); ++i) {
700 if (exclude_file_scheme && i->scheme() == "file")
asargent_no_longer_on_chrome 2011/08/05 22:56:37 nit: change "file" to chrome::kFileScheme, save a
701 continue;
702
698 std::string host = i->host(); 703 std::string host = i->host();
699 704
700 // Add the subdomain wildcard back to the host, if necessary. 705 // Add the subdomain wildcard back to the host, if necessary.
701 if (i->match_subdomains()) 706 if (i->match_subdomains())
702 host = "*." + host; 707 host = "*." + host;
703 708
704 // If the host has an RCD, split it off so we can detect duplicates. 709 // If the host has an RCD, split it off so we can detect duplicates.
705 std::string rcd; 710 std::string rcd;
706 size_t reg_len = net::RegistryControlledDomainService::GetRegistryLength( 711 size_t reg_len = net::RegistryControlledDomainService::GetRegistryLength(
707 host, false); 712 host, false);
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
817 // a privilege increase. 822 // a privilege increase.
818 if (permissions->HasEffectiveAccessToAllHosts()) 823 if (permissions->HasEffectiveAccessToAllHosts())
819 return true; 824 return true;
820 825
821 const URLPatternSet& old_list = effective_hosts(); 826 const URLPatternSet& old_list = effective_hosts();
822 const URLPatternSet& new_list = permissions->effective_hosts(); 827 const URLPatternSet& new_list = permissions->effective_hosts();
823 828
824 // TODO(jstritar): This is overly conservative with respect to subdomains. 829 // TODO(jstritar): This is overly conservative with respect to subdomains.
825 // For example, going from *.google.com to www.google.com will be 830 // For example, going from *.google.com to www.google.com will be
826 // considered an elevation, even though it is not (http://crbug.com/65337). 831 // considered an elevation, even though it is not (http://crbug.com/65337).
827 std::set<std::string> new_hosts_set = GetDistinctHosts(new_list, false); 832 std::set<std::string> new_hosts_set(GetDistinctHosts(new_list, false, false));
828 std::set<std::string> old_hosts_set = GetDistinctHosts(old_list, false); 833 std::set<std::string> old_hosts_set(GetDistinctHosts(old_list, false, false));
829 std::set<std::string> new_hosts_only; 834 std::set<std::string> new_hosts_only;
830 835
831 std::set_difference(new_hosts_set.begin(), new_hosts_set.end(), 836 std::set_difference(new_hosts_set.begin(), new_hosts_set.end(),
832 old_hosts_set.begin(), old_hosts_set.end(), 837 old_hosts_set.begin(), old_hosts_set.end(),
833 std::inserter(new_hosts_only, new_hosts_only.begin())); 838 std::inserter(new_hosts_only, new_hosts_only.begin()));
834 839
835 return !new_hosts_only.empty(); 840 return !new_hosts_only.empty();
836 } 841 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698