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