| Index: chrome/common/content_settings_pattern_unittest.cc | 
| diff --git a/chrome/common/content_settings_pattern_unittest.cc b/chrome/common/content_settings_pattern_unittest.cc | 
| index f0eeca56b1f8b581ed6647f0deb38474a391953a..bd793382e87cc3a6c8019962622f52605084be16 100644 | 
| --- a/chrome/common/content_settings_pattern_unittest.cc | 
| +++ b/chrome/common/content_settings_pattern_unittest.cc | 
| @@ -73,6 +73,7 @@ TEST(ContentSettingsPatternTest, FromURL) { | 
|  | 
| pattern = ContentSettingsPattern::FromURL(GURL("https://www.google.com:443")); | 
| EXPECT_TRUE(pattern.Matches(GURL("https://www.google.com"))); | 
| +  EXPECT_TRUE(pattern.Matches(GURL("https://foo.www.google.com"))); | 
| EXPECT_TRUE(pattern.Matches(GURL("https://www.google.com:443"))); | 
| EXPECT_FALSE(pattern.Matches(GURL("https://www.google.com:444"))); | 
| EXPECT_FALSE(pattern.Matches(GURL("http://www.google.com:443"))); | 
| @@ -89,6 +90,49 @@ TEST(ContentSettingsPatternTest, FromURL) { | 
| EXPECT_EQ("file:///foo/bar.html", pattern.ToString()); | 
| } | 
|  | 
| +TEST(ContentSettingsPatternTest, FilesystemUrls) { | 
| +  ContentSettingsPattern pattern = | 
| +      ContentSettingsPattern::FromURL(GURL("http://www.google.com")); | 
| +  EXPECT_TRUE(pattern.Matches( | 
| +      GURL("filesystem:http://www.google.com/temporary/"))); | 
| +  EXPECT_TRUE(pattern.Matches( | 
| +      GURL("filesystem:http://foo.www.google.com/temporary/"))); | 
| +  EXPECT_TRUE(pattern.Matches( | 
| +      GURL("filesystem:http://www.google.com:80/temporary/"))); | 
| +  EXPECT_TRUE(pattern.Matches( | 
| +      GURL("filesystem:http://www.google.com:81/temporary/"))); | 
| + | 
| +  pattern = ContentSettingsPattern::FromURL(GURL("https://www.google.com")); | 
| +  EXPECT_TRUE(pattern.Matches( | 
| +      GURL("filesystem:https://www.google.com/temporary/"))); | 
| +  EXPECT_TRUE(pattern.Matches( | 
| +      GURL("filesystem:https://www.google.com:443/temporary/"))); | 
| +  EXPECT_TRUE(pattern.Matches( | 
| +      GURL("filesystem:https://foo.www.google.com/temporary/"))); | 
| +  EXPECT_FALSE(pattern.Matches( | 
| +      GURL("filesystem:https://www.google.com:81/temporary/"))); | 
| + | 
| +  // A pattern from a filesystem URLs is equivalent to a pattern from the inner | 
| +  // URL of the filesystem URL. | 
| +  ContentSettingsPattern pattern2 = ContentSettingsPattern::FromURL( | 
| +      GURL("filesystem:https://www.google.com/temporary/")); | 
| +  EXPECT_EQ(ContentSettingsPattern::IDENTITY, pattern.Compare(pattern2)); | 
| + | 
| +  EXPECT_STREQ("https://[*.]www.google.com:443", pattern2.ToString().c_str()); | 
| + | 
| +  pattern = | 
| +      ContentSettingsPattern::FromURL( | 
| +          GURL("filesystem:file:///temporary/foo/bar")); | 
| +  EXPECT_TRUE(pattern.Matches(GURL("filesystem:file:///temporary/"))); | 
| +  EXPECT_TRUE(pattern.Matches(GURL("filesystem:file:///temporary/test.txt"))); | 
| +  EXPECT_TRUE(pattern.Matches(GURL("file:///temporary"))); | 
| +  EXPECT_FALSE(pattern.Matches(GURL("file://foo/bar"))); | 
| +  pattern2 = | 
| +      ContentSettingsPattern::FromURL( | 
| +          GURL("filesystem:file:///persistent/foo2/bar2")); | 
| +  EXPECT_EQ(ContentSettingsPattern::IDENTITY, pattern.Compare(pattern2)); | 
| +} | 
| + | 
| TEST(ContentSettingsPatternTest, FromURLNoWildcard) { | 
| // If no port is specifed GURLs always use the default port for the schemes | 
| // HTTP and HTTPS. Hence a GURL always carries a port specification either | 
| @@ -114,8 +158,21 @@ TEST(ContentSettingsPatternTest, FromURLNoWildcard) { | 
| EXPECT_TRUE(pattern.Matches(GURL("https://www.example.com"))); | 
| EXPECT_FALSE(pattern.Matches(GURL("http://foo.www.example.com"))); | 
|  | 
| -  pattern = ContentSettingsPattern::FromURLNoWildcard( | 
| -      GURL("https://www.example.com")); | 
| +   // Pattern for filesystem URLs | 
| +  pattern = | 
| +      ContentSettingsPattern::FromURLNoWildcard( | 
| +          GURL("filesystem:http://www.google.com/temporary/")); | 
| +  EXPECT_TRUE(pattern.IsValid()); | 
| +  EXPECT_TRUE(pattern.Matches(GURL("http://www.google.com"))); | 
| +  EXPECT_FALSE(pattern.Matches(GURL("http://foo.www.google.com"))); | 
| +  EXPECT_TRUE(pattern.Matches( | 
| +      GURL("filesystem:http://www.google.com/persistent/"))); | 
| +  EXPECT_FALSE(pattern.Matches( | 
| +      GURL("filesystem:https://www.google.com/persistent/"))); | 
| +  EXPECT_FALSE(pattern.Matches( | 
| +      GURL("filesystem:https://www.google.com:81/temporary/"))); | 
| +  EXPECT_FALSE(pattern.Matches( | 
| +      GURL("filesystem:https://foo.www.google.com/temporary/"))); | 
| } | 
|  | 
| TEST(ContentSettingsPatternTest, Wildcard) { | 
|  |