1// Copyright (c) 2012 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// Defines methods relevant to all code that wants to work with browsing data.
6
7#ifndef CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_HELPER_H_
8#define CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_HELPER_H_
9
10#include <string>
11
12#include "base/basictypes.h"
13
14class ExtensionSpecialStoragePolicy;
15class GURL;
16
17class BrowsingDataHelper {
18 public:
19  enum OriginSetMask {
20    UNPROTECTED_WEB = 1 << 0,  // drive-by web.
21    PROTECTED_WEB = 1 << 1,    // hosted applications.
22    EXTENSION = 1 << 2,        // chrome-extension://*
23    // Always add new items to the enum above ALL and add them to ALL.
24    ALL = UNPROTECTED_WEB | PROTECTED_WEB | EXTENSION,
25  };
26
27  // Returns true iff the provided scheme is (really) web safe, and suitable
28  // for treatment as "browsing data". This relies on the definition of web safe
29  // in ChildProcessSecurityPolicy, but excluding schemes like
30  // `chrome-extension`.
31  static bool IsWebScheme(const std::string& scheme);
32  static bool HasWebScheme(const GURL& origin);
33
34  // Returns true iff the provided scheme is an extension.
35  static bool IsExtensionScheme(const std::string& scheme);
36  static bool HasExtensionScheme(const GURL& origin);
37
38  // Returns true if the provided origin matches the provided mask.
39  static bool DoesOriginMatchMask(const GURL& origin,
40                                  int origin_set_mask,
41                                  ExtensionSpecialStoragePolicy* policy);
42
43 private:
44  DISALLOW_IMPLICIT_CONSTRUCTORS(BrowsingDataHelper);
45};
46
47#endif  // CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_HELPER_H_
48