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 storage { 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( 32 const base::FilePath& data_path, 33 storage::SpecialStoragePolicy* special_storage_policy); 34 35 // DOMStorageContext implementation. 36 virtual void GetLocalStorageUsage( 37 const GetLocalStorageUsageCallback& callback) OVERRIDE; 38 virtual void GetSessionStorageUsage( 39 const GetSessionStorageUsageCallback& callback) OVERRIDE; 40 virtual void DeleteLocalStorage(const GURL& origin) OVERRIDE; 41 virtual void DeleteSessionStorage( 42 const SessionStorageUsageInfo& usage_info) OVERRIDE; 43 virtual void SetSaveSessionStorageOnDisk() OVERRIDE; 44 virtual scoped_refptr<SessionStorageNamespace> 45 RecreateSessionStorage(const std::string& persistent_id) OVERRIDE; 46 virtual void StartScavengingUnusedSessionStorage() OVERRIDE; 47 48 // Used by content settings to alter the behavior around 49 // what data to keep and what data to discard at shutdown. 50 // The policy is not so straight forward to describe, see 51 // the implementation for details. 52 void SetForceKeepSessionState(); 53 54 // Called when the BrowserContext/Profile is going away. 55 void Shutdown(); 56 57 private: 58 friend class DOMStorageMessageFilter; // for access to context() 59 friend class SessionStorageNamespaceImpl; // ditto 60 friend class base::RefCountedThreadSafe<DOMStorageContextWrapper>; 61 62 virtual ~DOMStorageContextWrapper(); 63 DOMStorageContextImpl* context() const { return context_.get(); } 64 65 scoped_refptr<DOMStorageContextImpl> context_; 66 67 DISALLOW_IMPLICIT_CONSTRUCTORS(DOMStorageContextWrapper); 68 }; 69 70 } // namespace content 71 72 #endif // CONTENT_BROWSER_DOM_STORAGE_DOM_STORAGE_CONTEXT_WRAPPER_H_ 73