1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
|
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CONTENT_PUBLIC_BROWSER_STORAGE_PARTITION_H_
#define CONTENT_PUBLIC_BROWSER_STORAGE_PARTITION_H_
#include <string>
#include "base/basictypes.h"
#include "base/callback_forward.h"
#include "base/files/file_path.h"
#include "base/time/time.h"
#include "content/common/content_export.h"
class GURL;
namespace base {
class Time;
}
namespace storage {
class FileSystemContext;
}
namespace net {
class URLRequestContextGetter;
}
namespace storage {
class QuotaManager;
class SpecialStoragePolicy;
}
namespace storage {
class DatabaseTracker;
}
namespace content {
class AppCacheService;
class BrowserContext;
class HostZoomLevelContext;
class HostZoomMap;
class DOMStorageContext;
class GeofencingManager;
class IndexedDBContext;
class NavigatorConnectContext;
class ServiceWorkerContext;
class ZoomLevelDelegate;
// Defines what persistent state a child process can access.
//
// The StoragePartition defines the view each child process has of the
// persistent state inside the BrowserContext. This is used to implement
// isolated storage where a renderer with isolated storage cannot see
// the cookies, localStorage, etc., that normal web renderers have access to.
class CONTENT_EXPORT StoragePartition {
public:
virtual base::FilePath GetPath() = 0;
virtual net::URLRequestContextGetter* GetURLRequestContext() = 0;
virtual net::URLRequestContextGetter* GetMediaURLRequestContext() = 0;
virtual storage::QuotaManager* GetQuotaManager() = 0;
virtual AppCacheService* GetAppCacheService() = 0;
virtual storage::FileSystemContext* GetFileSystemContext() = 0;
virtual storage::DatabaseTracker* GetDatabaseTracker() = 0;
virtual DOMStorageContext* GetDOMStorageContext() = 0;
virtual IndexedDBContext* GetIndexedDBContext() = 0;
virtual ServiceWorkerContext* GetServiceWorkerContext() = 0;
virtual GeofencingManager* GetGeofencingManager() = 0;
virtual HostZoomMap* GetHostZoomMap() = 0;
virtual HostZoomLevelContext* GetHostZoomLevelContext() = 0;
virtual ZoomLevelDelegate* GetZoomLevelDelegate() = 0;
virtual NavigatorConnectContext* GetNavigatorConnectContext() = 0;
static const uint32 REMOVE_DATA_MASK_APPCACHE = 1 << 0;
static const uint32 REMOVE_DATA_MASK_COOKIES = 1 << 1;
static const uint32 REMOVE_DATA_MASK_FILE_SYSTEMS = 1 << 2;
static const uint32 REMOVE_DATA_MASK_INDEXEDDB = 1 << 3;
static const uint32 REMOVE_DATA_MASK_LOCAL_STORAGE = 1 << 4;
static const uint32 REMOVE_DATA_MASK_SHADER_CACHE = 1 << 5;
static const uint32 REMOVE_DATA_MASK_WEBSQL = 1 << 6;
static const uint32 REMOVE_DATA_MASK_WEBRTC_IDENTITY = 1 << 7;
static const uint32 REMOVE_DATA_MASK_SERVICE_WORKERS = 1 << 8;
static const uint32 REMOVE_DATA_MASK_ALL = 0xFFFFFFFF;
// Corresponds to storage::kStorageTypeTemporary.
static const uint32 QUOTA_MANAGED_STORAGE_MASK_TEMPORARY = 1 << 0;
// Corresponds to storage::kStorageTypePersistent.
static const uint32 QUOTA_MANAGED_STORAGE_MASK_PERSISTENT = 1 << 1;
// Corresponds to storage::kStorageTypeSyncable.
static const uint32 QUOTA_MANAGED_STORAGE_MASK_SYNCABLE = 1 << 2;
static const uint32 QUOTA_MANAGED_STORAGE_MASK_ALL = 0xFFFFFFFF;
// Starts an asynchronous task that does a best-effort clear the data
// corresponding to the given |remove_mask| and |quota_storage_remove_mask|
// inside this StoragePartition for the given |storage_origin|.
// Note session dom storage is not cleared even if you specify
// REMOVE_DATA_MASK_LOCAL_STORAGE.
// |callback| is called when data deletion is done or at least the deletion is
// scheduled.
//
// TODO(ajwong): Right now, the embedder may have some
// URLRequestContextGetter objects that the StoragePartition does not know
// about. This will no longer be the case when we resolve
// http://crbug.com/159193. Remove |request_context_getter| when that bug
// is fixed.
virtual void ClearDataForOrigin(uint32 remove_mask,
uint32 quota_storage_remove_mask,
const GURL& storage_origin,
net::URLRequestContextGetter* rq_context,
const base::Closure& callback) = 0;
// A callback type to check if a given origin matches a storage policy.
// Can be passed empty/null where used, which means the origin will always
// match.
typedef base::Callback<bool(const GURL&, storage::SpecialStoragePolicy*)>
OriginMatcherFunction;
// Similar to ClearDataForOrigin().
// Deletes all data out fo the StoragePartition if |storage_origin| is NULL.
// |origin_matcher| is present if special storage policy is to be handled,
// otherwise the callback can be null (base::Callback::is_null() == true).
// |callback| is called when data deletion is done or at least the deletion is
// scheduled.
virtual void ClearData(uint32 remove_mask,
uint32 quota_storage_remove_mask,
const GURL& storage_origin,
const OriginMatcherFunction& origin_matcher,
const base::Time begin,
const base::Time end,
const base::Closure& callback) = 0;
protected:
virtual ~StoragePartition() {}
};
} // namespace content
#endif // CONTENT_PUBLIC_BROWSER_STORAGE_PARTITION_H_
|