summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/ui/webui/options/content_settings_handler.cc8
-rw-r--r--components/content_settings/core/common/content_settings_pattern_unittest.cc3
2 files changed, 9 insertions, 2 deletions
diff --git a/chrome/browser/ui/webui/options/content_settings_handler.cc b/chrome/browser/ui/webui/options/content_settings_handler.cc
index 9f1df4e..864c2a2 100644
--- a/chrome/browser/ui/webui/options/content_settings_handler.cc
+++ b/chrome/browser/ui/webui/options/content_settings_handler.cc
@@ -1177,8 +1177,12 @@ void ContentSettingsHandler::GetExceptionsFromHostContentSettingsMap(
std::vector<std::vector<base::Value*> > all_provider_exceptions;
all_provider_exceptions.resize(HostContentSettingsMap::NUM_PROVIDER_TYPES);
- for (AllPatternsSettings::iterator i = all_patterns_settings.begin();
- i != all_patterns_settings.end();
+ // The all_patterns_settings is sorted from the lowest precedence pattern to
+ // the highest (see operator< in ContentSettingsPattern), so traverse it in
+ // reverse to show the patterns with the highest precedence (the more specific
+ // ones) on the top.
+ for (AllPatternsSettings::reverse_iterator i = all_patterns_settings.rbegin();
+ i != all_patterns_settings.rend();
++i) {
const ContentSettingsPattern& primary_pattern = i->first.first;
const OnePatternSettings& one_settings = i->second;
diff --git a/components/content_settings/core/common/content_settings_pattern_unittest.cc b/components/content_settings/core/common/content_settings_pattern_unittest.cc
index 3688d84..3fb0448 100644
--- a/components/content_settings/core/common/content_settings_pattern_unittest.cc
+++ b/components/content_settings/core/common/content_settings_pattern_unittest.cc
@@ -555,6 +555,7 @@ TEST(ContentSettingsPatternTest, Compare) {
EXPECT_EQ(ContentSettingsPattern::SUCCESSOR,
Pattern("[*.]google.com").Compare(
Pattern("mail.google.com")));
+ EXPECT_TRUE(Pattern("mail.google.com") > Pattern("[*.]google.com"));
EXPECT_EQ(ContentSettingsPattern::PREDECESSOR,
Pattern("[*.]mail.google.com").Compare(
@@ -562,6 +563,7 @@ TEST(ContentSettingsPatternTest, Compare) {
EXPECT_EQ(ContentSettingsPattern::SUCCESSOR,
Pattern("[*.]google.com").Compare(
Pattern("[*.]mail.google.com")));
+ EXPECT_TRUE(Pattern("[*.]mail.google.com") > Pattern("[*.]google.com"));
EXPECT_EQ(ContentSettingsPattern::PREDECESSOR,
Pattern("mail.google.com:80").Compare(
@@ -569,6 +571,7 @@ TEST(ContentSettingsPatternTest, Compare) {
EXPECT_EQ(ContentSettingsPattern::SUCCESSOR,
Pattern("mail.google.com:*").Compare(
Pattern("mail.google.com:80")));
+ EXPECT_TRUE(Pattern("mail.google.com:80") > Pattern("mail.google.com:*"));
EXPECT_EQ(ContentSettingsPattern::PREDECESSOR,
Pattern("https://mail.google.com:*").Compare(