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#ifndef CHROME_COMMON_EXTENSIONS_EXTENSION_EXTENT_H_
6#define CHROME_COMMON_EXTENSIONS_EXTENSION_EXTENT_H_
7#pragma once
8
9#include <vector>
10
11class GURL;
12class URLPattern;
13
14// Represents the set of URLs an extension uses for web content.
15class ExtensionExtent {
16 public:
17  typedef std::vector<URLPattern> PatternList;
18
19  ExtensionExtent();
20  ExtensionExtent(const ExtensionExtent& rhs);
21  ~ExtensionExtent();
22  ExtensionExtent& operator=(const ExtensionExtent& rhs);
23
24  bool is_empty() const;
25
26  const PatternList& patterns() const { return patterns_; }
27  void AddPattern(const URLPattern& pattern);
28  void ClearPaths();
29
30  // Test if the extent contains a URL.
31  bool ContainsURL(const GURL& url) const;
32
33  // Returns true if there is a single URL that would be in two extents.
34  bool OverlapsWith(const ExtensionExtent& other) const;
35
36 private:
37  // The list of URL patterns that comprise the extent.
38  PatternList patterns_;
39};
40
41#endif  // CHROME_COMMON_EXTENSIONS_EXTENSION_EXTENT_H_
42