storage_partition.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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#ifndef CONTENT_PUBLIC_BROWSER_STORAGE_PARTITION_H_
6#define CONTENT_PUBLIC_BROWSER_STORAGE_PARTITION_H_
7
8#include <string>
9
10#include "base/basictypes.h"
11#include "base/files/file_path.h"
12
13class GURL;
14
15namespace appcache {
16class AppCacheService;
17}
18
19namespace fileapi {
20class FileSystemContext;
21}
22
23namespace net {
24class URLRequestContextGetter;
25}
26
27namespace quota {
28class QuotaManager;
29}
30
31namespace webkit_database {
32class DatabaseTracker;
33}
34
35namespace content {
36
37class BrowserContext;
38class IndexedDBContext;
39class DOMStorageContext;
40
41// Defines what persistent state a child process can access.
42//
43// The StoragePartition defines the view each child process has of the
44// persistent state inside the BrowserContext. This is used to implement
45// isolated storage where a renderer with isolated storage cannot see
46// the cookies, localStorage, etc., that normal web renderers have access to.
47class StoragePartition {
48 public:
49  virtual base::FilePath GetPath() = 0;
50  virtual net::URLRequestContextGetter* GetURLRequestContext() = 0;
51  virtual net::URLRequestContextGetter* GetMediaURLRequestContext() = 0;
52  virtual quota::QuotaManager* GetQuotaManager() = 0;
53  virtual appcache::AppCacheService* GetAppCacheService() = 0;
54  virtual fileapi::FileSystemContext* GetFileSystemContext() = 0;
55  virtual webkit_database::DatabaseTracker* GetDatabaseTracker() = 0;
56  virtual DOMStorageContext* GetDOMStorageContext() = 0;
57  virtual IndexedDBContext* GetIndexedDBContext() = 0;
58
59  enum StorageMask {
60    kCookies = 1 << 0,
61
62    // Corresponds to quota::kStorageTypeTemporary.
63    kQuotaManagedTemporaryStorage = 1 << 1,
64
65    // Corresponds to quota::kStorageTypePersistent.
66    kQuotaManagedPersistentStorage = 1 << 2,
67
68    // Local dom storage.
69    kLocalDomStorage = 1 << 3,
70    kSessionDomStorage = 1 << 4,
71
72    kAllStorage = -1,
73  };
74
75  // Starts an asynchronous task that does a best-effort clear the data
76  // corresonding to the given |storage_mask| inside this StoragePartition for
77  // the given |storage_origin|. Note kSessionDomStorage is not cleared and the
78  // mask is ignored.
79  //
80  // TODO(ajwong): Right now, the embedder may have some
81  // URLRequestContextGetter objects that the StoragePartition does not know
82  // about.  This will no longer be the case when we resolve
83  // http://crbug.com/159193. Remove |request_context_getter| when that bug
84  // is fixed.
85  virtual void AsyncClearDataForOrigin(
86      uint32 storage_mask,
87      const GURL& storage_origin,
88      net::URLRequestContextGetter* request_context_getter) = 0;
89
90  // Similar to AsyncClearDataForOrigin(), but deletes all data out of the
91  // StoragePartition rather than just the data related to this origin.
92  virtual void AsyncClearData(uint32 storage_mask) = 0;
93
94 protected:
95  virtual ~StoragePartition() {}
96};
97
98}  // namespace content
99
100#endif  // CONTENT_PUBLIC_BROWSER_STORAGE_PARTITION_H_
101