1 // Copyright 2013 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_BROWSER_DOM_STORAGE_DOM_STORAGE_CONTEXT_WRAPPER_H_ 6 #define CONTENT_BROWSER_DOM_STORAGE_DOM_STORAGE_CONTEXT_WRAPPER_H_ 7 8 #include "base/memory/ref_counted.h" 9 #include "content/common/content_export.h" 10 #include "content/public/browser/dom_storage_context.h" 11 12 namespace base { 13 class FilePath; 14 } 15 16 namespace quota { 17 class SpecialStoragePolicy; 18 } 19 20 namespace content { 21 22 class DOMStorageContextImpl; 23 24 // This is owned by BrowserContext (aka Profile) and encapsulates all 25 // per-profile dom storage state. 26 class CONTENT_EXPORT DOMStorageContextWrapper : 27 NON_EXPORTED_BASE(public DOMStorageContext), 28 public base::RefCountedThreadSafe<DOMStorageContextWrapper> { 29 public: 30 // If |data_path| is empty, nothing will be saved to disk. 31 DOMStorageContextWrapper(const base::FilePath& data_path, 32 quota::SpecialStoragePolicy* special_storage_policy); 33 34 // DOMStorageContext implementation. 35 virtual void GetLocalStorageUsage( 36 const GetLocalStorageUsageCallback& callback) OVERRIDE; 37 virtual void GetSessionStorageUsage( 38 const GetSessionStorageUsageCallback& callback) OVERRIDE; 39 virtual void DeleteLocalStorage(const GURL& origin) OVERRIDE; 40 virtual void DeleteSessionStorage( 41 const SessionStorageUsageInfo& usage_info) OVERRIDE; 42 virtual void SetSaveSessionStorageOnDisk() OVERRIDE; 43 virtual scoped_refptr<SessionStorageNamespace> 44 RecreateSessionStorage(const std::string& persistent_id) OVERRIDE; 45 virtual void StartScavengingUnusedSessionStorage() OVERRIDE; 46 47 // Used by content settings to alter the behavior around 48 // what data to keep and what data to discard at shutdown. 49 // The policy is not so straight forward to describe, see 50 // the implementation for details. 51 void SetForceKeepSessionState(); 52 53 // Called when the BrowserContext/Profile is going away. 54 void Shutdown(); 55 56 private: 57 friend class DOMStorageMessageFilter; // for access to context() 58 friend class SessionStorageNamespaceImpl; // ditto 59 friend class base::RefCountedThreadSafe<DOMStorageContextWrapper>; 60 61 virtual ~DOMStorageContextWrapper(); 62 DOMStorageContextImpl* context() const { return context_.get(); } 63 64 scoped_refptr<DOMStorageContextImpl> context_; 65 66 DISALLOW_IMPLICIT_CONSTRUCTORS(DOMStorageContextWrapper); 67 }; 68 69 } // namespace content 70 71 #endif // CONTENT_BROWSER_DOM_STORAGE_DOM_STORAGE_CONTEXT_WRAPPER_H_ 72