15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "extensions/common/url_pattern_set.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include <sstream> 8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/values.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 117dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "url/gurl.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace extensions { 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AddPattern(URLPatternSet* set, const std::string& pattern) { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int schemes = URLPattern::SCHEME_ALL; 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set->AddPattern(URLPattern(schemes, pattern)); 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)URLPatternSet Patterns(const std::string& pattern) { 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet set; 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set, pattern); 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return set; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)URLPatternSet Patterns(const std::string& pattern1, 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& pattern2) { 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet set; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set, pattern1); 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set, pattern2); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return set; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 36c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch} // namespace 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(URLPatternSetTest, Empty) { 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet set; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(set.MatchesURL(GURL("http://www.foo.com/bar"))); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(set.MatchesURL(GURL())); 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(set.MatchesURL(GURL("invalid"))); 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(URLPatternSetTest, One) { 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet set; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set, "http://www.google.com/*"); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(set.MatchesURL(GURL("http://www.google.com/"))); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(set.MatchesURL(GURL("http://www.google.com/monkey"))); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(set.MatchesURL(GURL("https://www.google.com/"))); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(set.MatchesURL(GURL("https://www.microsoft.com/"))); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(URLPatternSetTest, Two) { 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet set; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set, "http://www.google.com/*"); 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set, "http://www.yahoo.com/*"); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(set.MatchesURL(GURL("http://www.google.com/monkey"))); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(set.MatchesURL(GURL("http://www.yahoo.com/monkey"))); 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(set.MatchesURL(GURL("https://www.apple.com/monkey"))); 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 65116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(URLPatternSetTest, StreamOperatorEmpty) { 66116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch URLPatternSet set; 67116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 68116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch std::ostringstream stream; 69116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch stream << set; 70116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ("{ }", stream.str()); 71116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 72116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 73116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(URLPatternSetTest, StreamOperatorOne) { 74116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch URLPatternSet set; 75116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch AddPattern(&set, "http://www.google.com/*"); 76116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 77116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch std::ostringstream stream; 78116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch stream << set; 79116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ("{ \"http://www.google.com/*\" }", stream.str()); 80116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 81116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 82116680a4aac90f2aa7413d9095a592090648e557Ben MurdochTEST(URLPatternSetTest, StreamOperatorTwo) { 83116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch URLPatternSet set; 84116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch AddPattern(&set, "http://www.google.com/*"); 85116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch AddPattern(&set, "http://www.yahoo.com/*"); 86116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 87116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch std::ostringstream stream; 88116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch stream << set; 89116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch EXPECT_EQ("{ \"http://www.google.com/*\", \"http://www.yahoo.com/*\" }", 90116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch stream.str()); 91116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch} 92116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(URLPatternSetTest, OverlapsWith) { 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet set1; 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set1, "http://www.google.com/f*"); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set1, "http://www.yahoo.com/b*"); 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet set2; 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set2, "http://www.reddit.com/f*"); 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set2, "http://www.yahoo.com/z*"); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet set3; 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set3, "http://www.google.com/q/*"); 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set3, "http://www.yahoo.com/b/*"); 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(set1.OverlapsWith(set2)); 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(set2.OverlapsWith(set1)); 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(set1.OverlapsWith(set3)); 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(set3.OverlapsWith(set1)); 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(URLPatternSetTest, CreateDifference) { 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet expected; 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet set1; 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet set2; 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set1, "http://www.google.com/f*"); 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set1, "http://www.yahoo.com/b*"); 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Subtract an empty set. 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet result; 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet::CreateDifference(set1, set2, &result); 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(set1, result); 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Subtract a real set. 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set2, "http://www.reddit.com/f*"); 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set2, "http://www.yahoo.com/z*"); 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set2, "http://www.google.com/f*"); 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, "http://www.yahoo.com/b*"); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result.ClearPatterns(); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet::CreateDifference(set1, set2, &result); 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(expected, result); 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(result.is_empty()); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(set1.Contains(result)); 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(result.Contains(set2)); 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(set2.Contains(result)); 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet intersection; 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet::CreateIntersection(result, set2, &intersection); 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(intersection.is_empty()); 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(URLPatternSetTest, CreateIntersection) { 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet empty_set; 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet expected; 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet set1; 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set1, "http://www.google.com/f*"); 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set1, "http://www.yahoo.com/b*"); 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Intersection with an empty set. 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet result; 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet::CreateIntersection(set1, empty_set, &result); 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(expected, result); 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(result.is_empty()); 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(empty_set.Contains(result)); 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(result.Contains(empty_set)); 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(set1.Contains(result)); 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Intersection with a real set. 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet set2; 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set2, "http://www.reddit.com/f*"); 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set2, "http://www.yahoo.com/z*"); 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set2, "http://www.google.com/f*"); 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, "http://www.google.com/f*"); 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result.ClearPatterns(); 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet::CreateIntersection(set1, set2, &result); 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(expected, result); 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(result.is_empty()); 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(set1.Contains(result)); 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(set2.Contains(result)); 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(URLPatternSetTest, CreateUnion) { 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet empty_set; 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet set1; 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set1, "http://www.google.com/f*"); 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set1, "http://www.yahoo.com/b*"); 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet expected; 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, "http://www.google.com/f*"); 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, "http://www.yahoo.com/b*"); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Union with an empty set. 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet result; 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet::CreateUnion(set1, empty_set, &result); 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(expected, result); 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Union with a real set. 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet set2; 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set2, "http://www.reddit.com/f*"); 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set2, "http://www.yahoo.com/z*"); 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set2, "http://www.google.com/f*"); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, "http://www.reddit.com/f*"); 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, "http://www.yahoo.com/z*"); 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) result.ClearPatterns(); 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet::CreateUnion(set1, set2, &result); 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(expected, result); 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(URLPatternSetTest, Contains) { 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet set1; 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet set2; 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet empty_set; 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set1, "http://www.google.com/*"); 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set1, "http://www.yahoo.com/*"); 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set2, "http://www.reddit.com/*"); 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(set1.Contains(set2)); 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(set1.Contains(empty_set)); 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(empty_set.Contains(set1)); 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set2, "http://www.yahoo.com/*"); 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(set1.Contains(set2)); 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(set2.Contains(set1)); 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set2, "http://www.google.com/*"); 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(set1.Contains(set2)); 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(set2.Contains(set1)); 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Note that this checks if individual patterns contain other patterns, not 2322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // just equality. For example: 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set1, "http://*.reddit.com/*"); 2342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(set1.Contains(set2)); 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_FALSE(set2.Contains(set1)); 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(URLPatternSetTest, Duplicates) { 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet set1; 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet set2; 2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set1, "http://www.google.com/*"); 2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set2, "http://www.google.com/*"); 2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set1, "http://www.google.com/*"); 2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The sets should still be equal after adding a duplicate. 2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(set2, set1); 2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(URLPatternSetTest, ToValueAndPopulate) { 2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet set1; 2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet set2; 2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<std::string> patterns; 2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) patterns.push_back("http://www.google.com/*"); 2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) patterns.push_back("http://www.yahoo.com/*"); 2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) for (size_t i = 0; i < patterns.size(); ++i) 2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&set1, patterns[i]); 2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string error; 2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool allow_file_access = false; 2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<base::ListValue> value(set1.ToValue()); 2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set2.Populate(*value, URLPattern::SCHEME_ALL, allow_file_access, &error); 2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(set1, set2); 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set2.ClearPatterns(); 2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set2.Populate(patterns, URLPattern::SCHEME_ALL, allow_file_access, &error); 2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(set1, set2); 2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST(URLPatternSetTest, NwayUnion) { 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string google_a = "http://www.google.com/a*"; 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string google_b = "http://www.google.com/b*"; 2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string google_c = "http://www.google.com/c*"; 2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string yahoo_a = "http://www.yahoo.com/a*"; 2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string yahoo_b = "http://www.yahoo.com/b*"; 2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string yahoo_c = "http://www.yahoo.com/c*"; 2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string reddit_a = "http://www.reddit.com/a*"; 2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string reddit_b = "http://www.reddit.com/b*"; 2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::string reddit_c = "http://www.reddit.com/c*"; 2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Empty list. 2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<URLPatternSet> empty; 2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet result; 2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet::CreateUnion(empty, &result); 2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet expected; 2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(expected, result); 2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Singleton list. 2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<URLPatternSet> test; 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(google_a)); 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet result; 3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet::CreateUnion(test, &result); 3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet expected = Patterns(google_a); 3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(expected, result); 3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // List with 2 elements. 3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<URLPatternSet> test; 3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(google_a, google_b)); 3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(google_b, google_c)); 3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet result; 3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet::CreateUnion(test, &result); 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet expected; 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, google_a); 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, google_b); 3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, google_c); 3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(expected, result); 3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // List with 3 elements. 3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<URLPatternSet> test; 3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(google_a, google_b)); 3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(google_b, google_c)); 3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(yahoo_a, yahoo_b)); 3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet result; 3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet::CreateUnion(test, &result); 3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet expected; 3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, google_a); 3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, google_b); 3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, google_c); 3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, yahoo_a); 3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, yahoo_b); 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(expected, result); 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // List with 7 elements. 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<URLPatternSet> test; 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(google_a)); 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(google_b)); 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(google_c)); 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(yahoo_a)); 3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(yahoo_b)); 3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(yahoo_c)); 3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(reddit_a)); 3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet result; 3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet::CreateUnion(test, &result); 3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet expected; 3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, google_a); 3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, google_b); 3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, google_c); 3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, yahoo_a); 3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, yahoo_b); 3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, yahoo_c); 3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, reddit_a); 3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(expected, result); 3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // List with 8 elements. 3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<URLPatternSet> test; 3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(google_a)); 3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(google_b)); 3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(google_c)); 3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(yahoo_a)); 3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(yahoo_b)); 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(yahoo_c)); 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(reddit_a)); 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(reddit_b)); 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet result; 3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet::CreateUnion(test, &result); 3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet expected; 3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, google_a); 3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, google_b); 3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, google_c); 3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, yahoo_a); 3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, yahoo_b); 3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, yahoo_c); 3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, reddit_a); 3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, reddit_b); 3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(expected, result); 3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // List with 9 elements. 3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) { 3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<URLPatternSet> test; 3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(google_a)); 3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(google_b)); 3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(google_c)); 4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(yahoo_a)); 4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(yahoo_b)); 4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(yahoo_c)); 4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(reddit_a)); 4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(reddit_b)); 4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test.push_back(Patterns(reddit_c)); 4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet result; 4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet::CreateUnion(test, &result); 4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) URLPatternSet expected; 4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, google_a); 4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, google_b); 4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, google_c); 4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, yahoo_a); 4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, yahoo_b); 4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, yahoo_c); 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, reddit_a); 4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, reddit_b); 4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddPattern(&expected, reddit_c); 4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(expected, result); 4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 4232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 4246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)TEST(URLPatternSetTest, AddOrigin) { 4256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) URLPatternSet set; 4266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_TRUE(set.AddOrigin( 4276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) URLPattern::SCHEME_ALL, GURL("https://www.google.com/"))); 4286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_TRUE(set.MatchesURL(GURL("https://www.google.com/foo/bar"))); 4296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_FALSE(set.MatchesURL(GURL("http://www.google.com/foo/bar"))); 4306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_FALSE(set.MatchesURL(GURL("https://en.google.com/foo/bar"))); 4316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) set.ClearPatterns(); 4326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_TRUE(set.AddOrigin( 4346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) URLPattern::SCHEME_ALL, GURL("https://google.com/"))); 4356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_FALSE(set.MatchesURL(GURL("https://www.google.com/foo/bar"))); 4366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_TRUE(set.MatchesURL(GURL("https://google.com/foo/bar"))); 4376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) EXPECT_FALSE(set.AddOrigin( 4396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) URLPattern::SCHEME_HTTP, GURL("https://google.com/"))); 4406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 4416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 4422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace extensions 443