Home | History | Annotate | Download | only in browser
      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 
     13 class GURL;
     14 
     15 namespace appcache {
     16 class AppCacheService;
     17 }
     18 
     19 namespace fileapi {
     20 class FileSystemContext;
     21 }
     22 
     23 namespace net {
     24 class URLRequestContextGetter;
     25 }
     26 
     27 namespace quota {
     28 class QuotaManager;
     29 }
     30 
     31 namespace webkit_database {
     32 class DatabaseTracker;
     33 }
     34 
     35 namespace content {
     36 
     37 class BrowserContext;
     38 class IndexedDBContext;
     39 class 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.
     47 class 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 RemoveDataMask {
     60     REMOVE_DATA_MASK_APPCACHE = 1 << 0,
     61     REMOVE_DATA_MASK_COOKIES = 1 << 1,
     62     REMOVE_DATA_MASK_FILE_SYSTEMS = 1 << 2,
     63     REMOVE_DATA_MASK_INDEXEDDB = 1 << 3,
     64     REMOVE_DATA_MASK_LOCAL_STORAGE = 1 << 4,
     65     REMOVE_DATA_MASK_SHADER_CACHE = 1 << 5,
     66     REMOVE_DATA_MASK_WEBSQL = 1 << 6,
     67     REMOVE_DATA_MASK_WEBRTC_IDENTITY = 1 << 7,
     68     REMOVE_DATA_MASK_ALL = -1
     69   };
     70 
     71   enum QuotaManagedStorageMask {
     72     // Corresponds to quota::kStorageTypeTemporary.
     73     QUOTA_MANAGED_STORAGE_MASK_TEMPORARY = 1 << 0,
     74 
     75     // Corresponds to quota::kStorageTypePersistent.
     76     QUOTA_MANAGED_STORAGE_MASK_PERSISTENT = 1 << 1,
     77 
     78     // Corresponds to quota::kStorageTypeSyncable.
     79     QUOTA_MANAGED_STORAGE_MASK_SYNCABLE = 1 << 2,
     80 
     81     QUOTA_MANAGED_STORAGE_MASK_ALL = -1
     82   };
     83 
     84   // Starts an asynchronous task that does a best-effort clear the data
     85   // corresponding to the given |remove_mask| and |quota_storage_remove_mask|
     86   // inside this StoragePartition for the given |storage_origin|.
     87   // Note session dom storage is not cleared even if you specify
     88   // REMOVE_DATA_MASK_LOCAL_STORAGE.
     89   //
     90   // TODO(ajwong): Right now, the embedder may have some
     91   // URLRequestContextGetter objects that the StoragePartition does not know
     92   // about.  This will no longer be the case when we resolve
     93   // http://crbug.com/159193. Remove |request_context_getter| when that bug
     94   // is fixed.
     95   virtual void ClearDataForOrigin(uint32 remove_mask,
     96                                   uint32 quota_storage_remove_mask,
     97                                   const GURL& storage_origin,
     98                                   net::URLRequestContextGetter* rq_context) = 0;
     99 
    100   // Similar to ClearDataForOrigin(), but deletes all data out of the
    101   // StoragePartition rather than just the data related to this origin.
    102   virtual void ClearDataForUnboundedRange(uint32 remove_mask,
    103                                           uint32 quota_storage_remove_mask) = 0;
    104 
    105   // Similar to ClearDataForOrigin(), but deletes all the data out of the
    106   // StoragePartion from between the given |begin| and |end| dates rather
    107   // then just the data related to this origin.
    108   virtual void ClearDataForRange(uint32 remove_mask,
    109                                  uint32 quota_storage_remove_mask,
    110                                  const base::Time& begin,
    111                                  const base::Time& end,
    112                                  const base::Closure& callback) = 0;
    113 
    114  protected:
    115   virtual ~StoragePartition() {}
    116 };
    117 
    118 }  // namespace content
    119 
    120 #endif  // CONTENT_PUBLIC_BROWSER_STORAGE_PARTITION_H_
    121