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
10static const int kAllSchemes =
11    URLPattern::SCHEME_HTTP |
12    URLPattern::SCHEME_HTTPS |
13    URLPattern::SCHEME_FILE |
14    URLPattern::SCHEME_FTP |
15    URLPattern::SCHEME_CHROMEUI;
16
17TEST(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
24TEST(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
34TEST(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
44TEST(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