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_BROWSER_DOM_STORAGE_SESSION_STORAGE_NAMESPACE_IMPL_H_ 6 #define CONTENT_BROWSER_DOM_STORAGE_SESSION_STORAGE_NAMESPACE_IMPL_H_ 7 8 #include "base/basictypes.h" 9 #include "base/memory/ref_counted.h" 10 #include "content/common/content_export.h" 11 #include "content/public/browser/session_storage_namespace.h" 12 13 namespace content { 14 15 class DOMStorageContextWrapper; 16 class DOMStorageSession; 17 18 class SessionStorageNamespaceImpl 19 : NON_EXPORTED_BASE(public SessionStorageNamespace) { 20 public: 21 // Constructs a |SessionStorageNamespaceImpl| and allocates new IDs for it. 22 // 23 // The CONTENT_EXPORT allows TestRenderViewHost to instantiate these. 24 CONTENT_EXPORT explicit SessionStorageNamespaceImpl( 25 DOMStorageContextWrapper* context); 26 27 // Constructs a |SessionStorageNamespaceImpl| by cloning 28 // |namespace_to_clone|. Allocates new IDs for it. 29 SessionStorageNamespaceImpl(DOMStorageContextWrapper* context, 30 int64 namepace_id_to_clone); 31 32 // Constructs a |SessionStorageNamespaceImpl| and assigns |persistent_id| 33 // to it. Allocates a new non-persistent ID. 34 SessionStorageNamespaceImpl(DOMStorageContextWrapper* context, 35 const std::string& persistent_id); 36 37 // SessionStorageNamespace implementation. 38 virtual int64 id() const OVERRIDE; 39 virtual const std::string& persistent_id() const OVERRIDE; 40 virtual void SetShouldPersist(bool should_persist) OVERRIDE; 41 virtual bool should_persist() const OVERRIDE; 42 43 SessionStorageNamespaceImpl* Clone(); 44 bool IsFromContext(DOMStorageContextWrapper* context); 45 46 private: 47 explicit SessionStorageNamespaceImpl(DOMStorageSession* clone); 48 virtual ~SessionStorageNamespaceImpl(); 49 50 scoped_refptr<DOMStorageSession> session_; 51 52 DISALLOW_COPY_AND_ASSIGN(SessionStorageNamespaceImpl); 53 }; 54 55 } // namespace content 56 57 #endif // CONTENT_BROWSER_DOM_STORAGE_SESSION_STORAGE_NAMESPACE_IMPL_H_ 58