// Copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "chrome/common/extensions/extension.h" #include "googleurl/src/gurl.h" #include "testing/gtest/include/gtest/gtest.h" static const int kAllSchemes = URLPattern::SCHEME_HTTP | URLPattern::SCHEME_HTTPS | URLPattern::SCHEME_FILE | URLPattern::SCHEME_FTP | URLPattern::SCHEME_CHROMEUI; TEST(ExtensionExtentTest, Empty) { ExtensionExtent extent; EXPECT_FALSE(extent.ContainsURL(GURL("http://www.foo.com/bar"))); EXPECT_FALSE(extent.ContainsURL(GURL())); EXPECT_FALSE(extent.ContainsURL(GURL("invalid"))); } TEST(ExtensionExtentTest, One) { ExtensionExtent extent; extent.AddPattern(URLPattern(kAllSchemes, "http://www.google.com/*")); EXPECT_TRUE(extent.ContainsURL(GURL("http://www.google.com/"))); EXPECT_TRUE(extent.ContainsURL(GURL("http://www.google.com/monkey"))); EXPECT_FALSE(extent.ContainsURL(GURL("https://www.google.com/"))); EXPECT_FALSE(extent.ContainsURL(GURL("https://www.microsoft.com/"))); } TEST(ExtensionExtentTest, Two) { ExtensionExtent extent; extent.AddPattern(URLPattern(kAllSchemes, "http://www.google.com/*")); extent.AddPattern(URLPattern(kAllSchemes, "http://www.yahoo.com/*")); EXPECT_TRUE(extent.ContainsURL(GURL("http://www.google.com/monkey"))); EXPECT_TRUE(extent.ContainsURL(GURL("http://www.yahoo.com/monkey"))); EXPECT_FALSE(extent.ContainsURL(GURL("https://www.apple.com/monkey"))); } TEST(ExtensionExtentTest, OverlapsWith) { ExtensionExtent extent1; extent1.AddPattern(URLPattern(kAllSchemes, "http://www.google.com/f*")); extent1.AddPattern(URLPattern(kAllSchemes, "http://www.yahoo.com/b*")); ExtensionExtent extent2; extent2.AddPattern(URLPattern(kAllSchemes, "http://www.reddit.com/f*")); extent2.AddPattern(URLPattern(kAllSchemes, "http://www.yahoo.com/z*")); ExtensionExtent extent3; extent3.AddPattern(URLPattern(kAllSchemes, "http://www.google.com/q/*")); extent3.AddPattern(URLPattern(kAllSchemes, "http://www.yahoo.com/b/*")); EXPECT_FALSE(extent1.OverlapsWith(extent2)); EXPECT_FALSE(extent2.OverlapsWith(extent1)); EXPECT_TRUE(extent1.OverlapsWith(extent3)); EXPECT_TRUE(extent3.OverlapsWith(extent1)); }