diff options
Diffstat (limited to 'content/browser/in_process_webkit/dom_storage_namespace.h')
-rw-r--r-- | content/browser/in_process_webkit/dom_storage_namespace.h | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/content/browser/in_process_webkit/dom_storage_namespace.h b/content/browser/in_process_webkit/dom_storage_namespace.h new file mode 100644 index 0000000..b05a317 --- /dev/null +++ b/content/browser/in_process_webkit/dom_storage_namespace.h @@ -0,0 +1,85 @@ +// 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_DOM_STORAGE_NAMESPACE_H_ +#define CONTENT_BROWSER_IN_PROCESS_WEBKIT_DOM_STORAGE_NAMESPACE_H_ +#pragma once + +#include "base/hash_tables.h" +#include "base/scoped_ptr.h" +#include "base/string16.h" +#include "chrome/common/dom_storage_common.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" + +class DOMStorageArea; +class DOMStorageContext; +class FilePath; +class HostContentSettingsMap; + +namespace WebKit { +class WebStorageArea; +class WebStorageNamespace; +} + +// Only to be used on the WebKit thread. +class DOMStorageNamespace { + public: + static DOMStorageNamespace* CreateLocalStorageNamespace( + DOMStorageContext* dom_storage_context, const FilePath& data_dir_path); + static DOMStorageNamespace* CreateSessionStorageNamespace( + DOMStorageContext* dom_storage_context, int64 namespace_id); + + ~DOMStorageNamespace(); + + DOMStorageArea* GetStorageArea(const string16& origin, + HostContentSettingsMap* map); + DOMStorageNamespace* Copy(int64 clone_namespace_id); + + void PurgeMemory(); + + const DOMStorageContext* dom_storage_context() const { + return dom_storage_context_; + } + int64 id() const { return id_; } + const WebKit::WebString& data_dir_path() const { return data_dir_path_; } + DOMStorageType dom_storage_type() const { return dom_storage_type_; } + + // Creates a WebStorageArea for the given origin. This should only be called + // by an owned DOMStorageArea. + WebKit::WebStorageArea* CreateWebStorageArea(const string16& origin); + + private: + // Called by the static factory methods above. + DOMStorageNamespace(DOMStorageContext* dom_storage_context, + int64 id, + const WebKit::WebString& data_dir_path, + DOMStorageType storage_type); + + // Creates the underlying WebStorageNamespace on demand. + void CreateWebStorageNamespaceIfNecessary(); + + // All the storage areas we own. + typedef base::hash_map<string16, DOMStorageArea*> OriginToStorageAreaMap; + OriginToStorageAreaMap origin_to_storage_area_; + + // The DOMStorageContext that owns us. + DOMStorageContext* dom_storage_context_; + + // The WebKit storage namespace we manage. + scoped_ptr<WebKit::WebStorageNamespace> storage_namespace_; + + // Our id. Unique to our parent WebKitContext class. + int64 id_; + + // The path used to create us, so we can recreate our WebStorageNamespace on + // demand. + WebKit::WebString data_dir_path_; + + // SessionStorage vs. LocalStorage. + const DOMStorageType dom_storage_type_; + + DISALLOW_IMPLICIT_CONSTRUCTORS(DOMStorageNamespace); +}; + +#endif // CONTENT_BROWSER_IN_PROCESS_WEBKIT_DOM_STORAGE_NAMESPACE_H_ |