Index: chrome/renderer/renderer_webstoragenamespace_impl.cc |
=================================================================== |
--- chrome/renderer/renderer_webstoragenamespace_impl.cc (revision 0) |
+++ chrome/renderer/renderer_webstoragenamespace_impl.cc (revision 0) |
@@ -0,0 +1,65 @@ |
+// Copyright (c) 2009 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. |
+ |
+#include "chrome/renderer/renderer_webstoragenamespace_impl.h" |
+ |
+#include "chrome/common/render_messages.h" |
+#include "chrome/renderer/render_thread.h" |
+#include "chrome/renderer/renderer_webstoragearea_impl.h" |
+ |
+RendererWebStorageNamespaceImpl::RendererWebStorageNamespaceImpl( |
+ bool is_local_storage) |
+ : is_local_storage_(is_local_storage), |
+ namespace_id_(kUninitializedNamespaceId) { |
+} |
+ |
+RendererWebStorageNamespaceImpl::RendererWebStorageNamespaceImpl( |
+ bool is_local_storage, int64 namespace_id) |
+ : is_local_storage_(is_local_storage), |
+ namespace_id_(namespace_id) { |
+ DCHECK(namespace_id_ != kUninitializedNamespaceId); |
+} |
+ |
+RendererWebStorageNamespaceImpl::~RendererWebStorageNamespaceImpl() { |
+ if (namespace_id_ != kUninitializedNamespaceId) |
+ RenderThread::current()->Send( |
+ new ViewHostMsg_DOMStorageDerefNamespaceId(namespace_id_)); |
+} |
+ |
+WebKit::WebStorageArea* RendererWebStorageNamespaceImpl::createStorageArea( |
+ const WebKit::WebString& origin) { |
+ // This could be done async in the background (started when this class is |
+ // first instantiated) rather than lazily on first use, but it's unclear |
+ // whether it's worth the complexity. |
+ if (namespace_id_ == kUninitializedNamespaceId) { |
+ RenderThread::current()->Send( |
+ new ViewHostMsg_DOMStorageNamespaceId(is_local_storage_, |
+ &namespace_id_)); |
+ DCHECK(namespace_id_ != kUninitializedNamespaceId); |
+ } |
+ // Ideally, we'd keep a hash map of origin to these objects. Unfortunately |
+ // this doesn't seem practical because there's no good way to ref-count these |
+ // objects, and it'd be unclear who owned them. So, instead, we'll pay a |
+ // price for an allocaiton and IPC for each. |
+ return new RendererWebStorageAreaImpl(namespace_id_, origin); |
+} |
+ |
+WebKit::WebStorageNamespace* RendererWebStorageNamespaceImpl::copy() { |
+ // If we haven't been used yet, we might as well start out fresh (and lazy). |
+ if (namespace_id_ == kUninitializedNamespaceId) |
+ return new RendererWebStorageNamespaceImpl(is_local_storage_); |
+ |
+ // This cannot easily be differed because we need a snapshot in time. |
+ int64 new_namespace_id; |
+ RenderThread::current()->Send( |
+ new ViewHostMsg_DOMStorageCloneNamespaceId(namespace_id_, |
+ &new_namespace_id)); |
+ return new RendererWebStorageNamespaceImpl(is_local_storage_, |
+ new_namespace_id); |
+} |
+ |
+void RendererWebStorageNamespaceImpl::close() { |
+ // This is called only on LocalStorage namespaces when WebKit thinks its |
+ // shutting down. This has no impact on Chromium. |
+} |
Property changes on: chrome\renderer\renderer_webstoragenamespace_impl.cc |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |