1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "base/macros.h" 6 #include "chrome/browser/extensions/api/content_settings/content_settings_helpers.h" 7 #include "testing/gtest/include/gtest/gtest.h" 8 9 namespace extensions { 10 namespace helpers = content_settings_helpers; 11 12 TEST(ExtensionContentSettingsHelpersTest, ParseExtensionPattern) { 13 const struct { 14 const char* extension_pattern; 15 const char* content_settings_pattern; 16 } kTestPatterns[] = { 17 { "<all_urls>", "*" }, 18 { "*://*.google.com/*", "[*.]google.com" }, 19 { "http://www.example.com/*", "http://www.example.com" }, 20 { "*://www.example.com/*", "www.example.com" }, 21 { "http://www.example.com:8080/*", "http://www.example.com:8080" }, 22 { "https://*/*", "https://*" }, 23 { "file:///foo/bar/baz", "file:///foo/bar/baz" }, 24 }; 25 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kTestPatterns); ++i) { 26 std::string error; 27 std::string pattern_str = helpers::ParseExtensionPattern( 28 kTestPatterns[i].extension_pattern, &error).ToString(); 29 EXPECT_EQ(kTestPatterns[i].content_settings_pattern, pattern_str) 30 << "Unexpected error parsing " << kTestPatterns[i].extension_pattern 31 << ": " << error; 32 } 33 34 const struct { 35 const char* extension_pattern; 36 const char* expected_error; 37 } kInvalidTestPatterns[] = { 38 { "http://www.example.com/path", "Specific paths are not allowed." }, 39 { "file:///foo/bar/*", 40 "Path wildcards in file URL patterns are not allowed." }, 41 }; 42 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kInvalidTestPatterns); ++i) { 43 std::string error; 44 ContentSettingsPattern pattern = helpers::ParseExtensionPattern( 45 kInvalidTestPatterns[i].extension_pattern, &error); 46 EXPECT_FALSE(pattern.IsValid()); 47 EXPECT_EQ(kInvalidTestPatterns[i].expected_error, error) 48 << "Unexpected error parsing " 49 << kInvalidTestPatterns[i].extension_pattern; 50 } 51 } 52 53 } // namespace extensions 54