| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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.h" | 5 #include "chrome/common/extensions/extension.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "app/l10n_util.h" | 9 #include "app/l10n_util.h" |
| 10 #include "app/resource_bundle.h" | 10 #include "app/resource_bundle.h" |
| (...skipping 832 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 843 // Otherwise, if the new extension has a plugin, it's a privilege increase. | 843 // Otherwise, if the new extension has a plugin, it's a privilege increase. |
| 844 if (new_extension->plugins().size() > 0) | 844 if (new_extension->plugins().size() > 0) |
| 845 return true; | 845 return true; |
| 846 | 846 |
| 847 // If we are increasing the set of hosts we have access to, it's a privilege | 847 // If we are increasing the set of hosts we have access to, it's a privilege |
| 848 // increase. | 848 // increase. |
| 849 if (!old_extension->HasAccessToAllHosts()) { | 849 if (!old_extension->HasAccessToAllHosts()) { |
| 850 if (new_extension->HasAccessToAllHosts()) | 850 if (new_extension->HasAccessToAllHosts()) |
| 851 return true; | 851 return true; |
| 852 | 852 |
| 853 ExtensionExtent::PatternList old_hosts = | 853 std::set<std::string> old_hosts = |
| 854 old_extension->GetEffectiveHostPermissions().patterns(); | 854 old_extension->GetEffectiveHostPermissions(); |
| 855 ExtensionExtent::PatternList new_hosts = | 855 std::set<std::string> new_hosts = |
| 856 new_extension->GetEffectiveHostPermissions().patterns(); | 856 new_extension->GetEffectiveHostPermissions(); |
| 857 | 857 |
| 858 std::set<URLPattern, URLPattern::EffectiveHostCompareFunctor> diff; | 858 std::set<std::string> difference; |
| 859 std::set_difference(new_hosts.begin(), new_hosts.end(), | 859 std::set_difference(new_hosts.begin(), new_hosts.end(), |
| 860 old_hosts.begin(), old_hosts.end(), | 860 old_hosts.begin(), old_hosts.end(), |
| 861 std::insert_iterator<std::set<URLPattern, | 861 std::insert_iterator<std::set<std::string> >( |
| 862 URLPattern::EffectiveHostCompareFunctor> >(diff, diff.end()), | 862 difference, difference.end())); |
| 863 URLPattern::EffectiveHostCompare); | 863 if (difference.size() > 0) |
| 864 if (diff.size() > 0) | |
| 865 return true; | 864 return true; |
| 866 } | 865 } |
| 867 | 866 |
| 868 if (!old_extension->HasEffectiveBrowsingHistoryPermission() && | 867 if (!old_extension->HasEffectiveBrowsingHistoryPermission() && |
| 869 new_extension->HasEffectiveBrowsingHistoryPermission()) { | 868 new_extension->HasEffectiveBrowsingHistoryPermission()) { |
| 870 return true; | 869 return true; |
| 871 } | 870 } |
| 872 | 871 |
| 873 const SimplePermissions& simple_permissions = GetSimplePermissions(); | 872 const SimplePermissions& simple_permissions = GetSimplePermissions(); |
| 874 for (SimplePermissions::const_iterator iter = simple_permissions.begin(); | 873 for (SimplePermissions::const_iterator iter = simple_permissions.begin(); |
| (...skipping 797 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1672 | 1671 |
| 1673 bool Extension::HasHostPermission(const GURL& url) const { | 1672 bool Extension::HasHostPermission(const GURL& url) const { |
| 1674 for (URLPatternList::const_iterator host = host_permissions_.begin(); | 1673 for (URLPatternList::const_iterator host = host_permissions_.begin(); |
| 1675 host != host_permissions_.end(); ++host) { | 1674 host != host_permissions_.end(); ++host) { |
| 1676 if (host->MatchesUrl(url)) | 1675 if (host->MatchesUrl(url)) |
| 1677 return true; | 1676 return true; |
| 1678 } | 1677 } |
| 1679 return false; | 1678 return false; |
| 1680 } | 1679 } |
| 1681 | 1680 |
| 1682 const ExtensionExtent Extension::GetEffectiveHostPermissions() const { | 1681 const std::set<std::string> Extension::GetEffectiveHostPermissions() const { |
| 1683 ExtensionExtent effective_hosts; | 1682 std::set<std::string> effective_hosts; |
| 1684 | 1683 |
| 1685 for (URLPatternList::const_iterator host = host_permissions_.begin(); | 1684 for (URLPatternList::const_iterator host = host_permissions_.begin(); |
| 1686 host != host_permissions_.end(); ++host) | 1685 host != host_permissions_.end(); ++host) |
| 1687 effective_hosts.AddPattern(*host); | 1686 effective_hosts.insert(host->host()); |
| 1688 | 1687 |
| 1689 for (UserScriptList::const_iterator content_script = content_scripts_.begin(); | 1688 for (UserScriptList::const_iterator content_script = content_scripts_.begin(); |
| 1690 content_script != content_scripts_.end(); ++content_script) { | 1689 content_script != content_scripts_.end(); ++content_script) { |
| 1691 UserScript::PatternList::const_iterator pattern = | 1690 UserScript::PatternList::const_iterator pattern = |
| 1692 content_script->url_patterns().begin(); | 1691 content_script->url_patterns().begin(); |
| 1693 for (; pattern != content_script->url_patterns().end(); ++pattern) | 1692 for (; pattern != content_script->url_patterns().end(); ++pattern) |
| 1694 effective_hosts.AddPattern(*pattern); | 1693 effective_hosts.insert(pattern->host()); |
| 1695 } | 1694 } |
| 1696 | 1695 |
| 1697 return effective_hosts; | 1696 return effective_hosts; |
| 1698 } | 1697 } |
| 1699 | 1698 |
| 1700 bool Extension::HasAccessToAllHosts() const { | 1699 bool Extension::HasAccessToAllHosts() const { |
| 1701 for (URLPatternList::const_iterator host = host_permissions_.begin(); | 1700 for (URLPatternList::const_iterator host = host_permissions_.begin(); |
| 1702 host != host_permissions_.end(); ++host) { | 1701 host != host_permissions_.end(); ++host) { |
| 1703 if (host->match_subdomains() && host->host().empty()) | 1702 if (host->match_subdomains() && host->host().empty()) |
| 1704 return true; | 1703 return true; |
| (...skipping 26 matching lines...) Expand all Loading... |
| 1731 } else { | 1730 } else { |
| 1732 return false; | 1731 return false; |
| 1733 } | 1732 } |
| 1734 } else { | 1733 } else { |
| 1735 return true; | 1734 return true; |
| 1736 } | 1735 } |
| 1737 } | 1736 } |
| 1738 } | 1737 } |
| 1739 return false; | 1738 return false; |
| 1740 } | 1739 } |
| OLD | NEW |