storage_partition.h revision c2e0dbddbe15c98d52c4786dac06cb8952a8ae6d
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    // Local shader storage.
73    kShaderStorage = 1 << 5,
74
75    // Corresponds to quota::kStorageTypeSyncable.
76    kQuotaManagedSyncableStorage = 1 << 6,
77
78    kAllStorage = -1,
79  };
80
81  // Starts an asynchronous task that does a best-effort clear the data
82  // corresonding to the given |storage_mask| inside this StoragePartition for
83  // the given |storage_origin|. Note kSessionDomStorage is not cleared and the
84  // mask is ignored.
85  //
86  // TODO(ajwong): Right now, the embedder may have some
87  // URLRequestContextGetter objects that the StoragePartition does not know
88  // about.  This will no longer be the case when we resolve
89  // http://crbug.com/159193. Remove |request_context_getter| when that bug
90  // is fixed.
91  virtual void AsyncClearDataForOrigin(
92      uint32 storage_mask,
93      const GURL& storage_origin,
94      net::URLRequestContextGetter* request_context_getter) = 0;
95
96  // Similar to AsyncClearDataForOrigin(), but deletes all data out of the
97  // StoragePartition rather than just the data related to this origin.
98  virtual void AsyncClearData(uint32 storage_mask) = 0;
99
100  // Similar to AsyncClearDataForOrigin(), but deletes all the data out of the
101  // StoragePartion from between the given |begin| and |end| dates rather
102  // then just the data related to this origin.
103  //
104  // Note: This currently only supports the shader cache.
105  virtual void AsyncClearDataBetween(uint32 storage_mask,
106                                     const base::Time& begin,
107                                     const base::Time& end,
108                                     const base::Closure& callback) = 0;
109 protected:
110  virtual ~StoragePartition() {}
111};
112
113}  // namespace content
114
115#endif  // CONTENT_PUBLIC_BROWSER_STORAGE_PARTITION_H_
116