15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Defines methods relevant to all code that wants to work with browsing data.
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_HELPER_H_
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_HELPER_H_
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string>
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace storage {
155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)class SpecialStoragePolicy;
165f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}
175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class GURL;
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BrowsingDataHelper {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  enum OriginSetMask {
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    UNPROTECTED_WEB = 1 << 0,  // drive-by web.
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    PROTECTED_WEB = 1 << 1,    // hosted applications.
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    EXTENSION = 1 << 2,        // chrome-extension://*
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // Always add new items to the enum above ALL and add them to ALL.
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ALL = UNPROTECTED_WEB | PROTECTED_WEB | EXTENSION,
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  };
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns true iff the provided scheme is (really) web safe, and suitable
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // for treatment as "browsing data". This relies on the definition of web safe
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // in ChildProcessSecurityPolicy, but excluding schemes like
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // `chrome-extension`.
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static bool IsWebScheme(const std::string& scheme);
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static bool HasWebScheme(const GURL& origin);
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns true iff the provided scheme is an extension.
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static bool IsExtensionScheme(const std::string& scheme);
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static bool HasExtensionScheme(const GURL& origin);
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Returns true if the provided origin matches the provided mask.
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  static bool DoesOriginMatchMask(const GURL& origin,
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  int origin_set_mask,
4403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)                                  storage::SpecialStoragePolicy* policy);
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DISALLOW_IMPLICIT_CONSTRUCTORS(BrowsingDataHelper);
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_BROWSER_BROWSING_DATA_BROWSING_DATA_HELPER_H_
51