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
3 // found in the LICENSE file.
4
5 #include "chrome/common/extensions/extension.h"
6
7 #include "googleurl/src/gurl.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9
10 static const int kAllSchemes =
11 URLPattern::SCHEME_HTTP |
12 URLPattern::SCHEME_HTTPS |
13 URLPattern::SCHEME_FILE |
14 URLPattern::SCHEME_FTP |
15 URLPattern::SCHEME_CHROMEUI;
16
TEST(ExtensionExtentTest,Empty)17 TEST(ExtensionExtentTest, Empty) {
18 ExtensionExtent extent;
19 EXPECT_FALSE(extent.ContainsURL(GURL("http://www.foo.com/bar")));
20 EXPECT_FALSE(extent.ContainsURL(GURL()));
21 EXPECT_FALSE(extent.ContainsURL(GURL("invalid")));
22 }
23
TEST(ExtensionExtentTest,One)24 TEST(ExtensionExtentTest, One) {
25 ExtensionExtent extent;
26 extent.AddPattern(URLPattern(kAllSchemes, "http://www.google.com/*"));
27
28 EXPECT_TRUE(extent.ContainsURL(GURL("http://www.google.com/")));
29 EXPECT_TRUE(extent.ContainsURL(GURL("http://www.google.com/monkey")));
30 EXPECT_FALSE(extent.ContainsURL(GURL("https://www.google.com/")));
31 EXPECT_FALSE(extent.ContainsURL(GURL("https://www.microsoft.com/")));
32 }
33
TEST(ExtensionExtentTest,Two)34 TEST(ExtensionExtentTest, Two) {
35 ExtensionExtent extent;
36 extent.AddPattern(URLPattern(kAllSchemes, "http://www.google.com/*"));
37 extent.AddPattern(URLPattern(kAllSchemes, "http://www.yahoo.com/*"));
38
39 EXPECT_TRUE(extent.ContainsURL(GURL("http://www.google.com/monkey")));
40 EXPECT_TRUE(extent.ContainsURL(GURL("http://www.yahoo.com/monkey")));
41 EXPECT_FALSE(extent.ContainsURL(GURL("https://www.apple.com/monkey")));
42 }
43
TEST(ExtensionExtentTest,OverlapsWith)44 TEST(ExtensionExtentTest, OverlapsWith) {
45 ExtensionExtent extent1;
46 extent1.AddPattern(URLPattern(kAllSchemes, "http://www.google.com/f*"));
47 extent1.AddPattern(URLPattern(kAllSchemes, "http://www.yahoo.com/b*"));
48
49 ExtensionExtent extent2;
50 extent2.AddPattern(URLPattern(kAllSchemes, "http://www.reddit.com/f*"));
51 extent2.AddPattern(URLPattern(kAllSchemes, "http://www.yahoo.com/z*"));
52
53 ExtensionExtent extent3;
54 extent3.AddPattern(URLPattern(kAllSchemes, "http://www.google.com/q/*"));
55 extent3.AddPattern(URLPattern(kAllSchemes, "http://www.yahoo.com/b/*"));
56
57 EXPECT_FALSE(extent1.OverlapsWith(extent2));
58 EXPECT_FALSE(extent2.OverlapsWith(extent1));
59
60 EXPECT_TRUE(extent1.OverlapsWith(extent3));
61 EXPECT_TRUE(extent3.OverlapsWith(extent1));
62 }
63