diff options
Diffstat (limited to 'content/browser/in_process_webkit/session_storage_namespace.h')
-rw-r--r-- | content/browser/in_process_webkit/session_storage_namespace.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/content/browser/in_process_webkit/session_storage_namespace.h b/content/browser/in_process_webkit/session_storage_namespace.h new file mode 100644 index 0000000..d85baf7 --- /dev/null +++ b/content/browser/in_process_webkit/session_storage_namespace.h @@ -0,0 +1,46 @@ +// Copyright (c) 2010 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_BROWSER_IN_PROCESS_WEBKIT_SESSION_STORAGE_NAMESPACE_H_ +#define CONTENT_BROWSER_IN_PROCESS_WEBKIT_SESSION_STORAGE_NAMESPACE_H_ +#pragma once + +#include "base/basictypes.h" +#include "base/ref_counted.h" + +class Profile; +class WebKitContext; + +// This is a ref-counted class that represents a SessionStorageNamespace. +// On destruction it ensures that the storage namespace is destroyed. +// NOTE: That if we're shutting down, we don't strictly need to do this, but +// it keeps valgrind happy. +class SessionStorageNamespace + : public base::RefCountedThreadSafe<SessionStorageNamespace> { + public: + explicit SessionStorageNamespace(Profile* profile); + + int64 id() const { return id_; } + + // The session storage namespace parameter allows multiple render views and + // tab contentses to share the same session storage (part of the WebStorage + // spec) space. Passing in NULL simply allocates a new one which is often the + // correct thing to do (especially in tests. + SessionStorageNamespace* Clone(); + + private: + SessionStorageNamespace(WebKitContext* webkit_context, int64 id); + + friend class base::RefCountedThreadSafe<SessionStorageNamespace>; + ~SessionStorageNamespace(); + + scoped_refptr<WebKitContext> webkit_context_; + + // The session storage namespace id. + int64 id_; + + DISALLOW_IMPLICIT_CONSTRUCTORS(SessionStorageNamespace); +}; + +#endif // CONTENT_BROWSER_IN_PROCESS_WEBKIT_SESSION_STORAGE_NAMESPACE_H_ |