OLD | NEW |
| (Empty) |
1 // Copyright (c) 2010 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 #include "chrome/renderer/renderer_webstoragearea_impl.h" | |
6 | |
7 #include "chrome/renderer/render_thread.h" | |
8 #include "chrome/renderer/render_view.h" | |
9 #include "content/common/dom_storage_messages.h" | |
10 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" | |
11 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURL.h" | |
12 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" | |
13 | |
14 using WebKit::WebFrame; | |
15 using WebKit::WebString; | |
16 using WebKit::WebURL; | |
17 using WebKit::WebView; | |
18 | |
19 RendererWebStorageAreaImpl::RendererWebStorageAreaImpl( | |
20 int64 namespace_id, const WebString& origin) { | |
21 RenderThread::current()->Send( | |
22 new DOMStorageHostMsg_StorageAreaId(namespace_id, origin, | |
23 &storage_area_id_)); | |
24 } | |
25 | |
26 RendererWebStorageAreaImpl::~RendererWebStorageAreaImpl() { | |
27 } | |
28 | |
29 unsigned RendererWebStorageAreaImpl::length() { | |
30 unsigned length; | |
31 RenderThread::current()->Send( | |
32 new DOMStorageHostMsg_Length(storage_area_id_, &length)); | |
33 return length; | |
34 } | |
35 | |
36 WebString RendererWebStorageAreaImpl::key(unsigned index) { | |
37 NullableString16 key; | |
38 RenderThread::current()->Send( | |
39 new DOMStorageHostMsg_Key(storage_area_id_, index, &key)); | |
40 return key; | |
41 } | |
42 | |
43 WebString RendererWebStorageAreaImpl::getItem(const WebString& key) { | |
44 NullableString16 value; | |
45 RenderThread::current()->Send( | |
46 new DOMStorageHostMsg_GetItem(storage_area_id_, key, &value)); | |
47 return value; | |
48 } | |
49 | |
50 void RendererWebStorageAreaImpl::setItem( | |
51 const WebString& key, const WebString& value, const WebURL& url, | |
52 WebStorageArea::Result& result, WebString& old_value_webkit, | |
53 WebFrame* web_frame) { | |
54 int32 render_view_id = MSG_ROUTING_CONTROL; | |
55 if (web_frame) { | |
56 RenderView* render_view = RenderView::FromWebView(web_frame->view()); | |
57 if (render_view) | |
58 render_view_id = render_view->routing_id(); | |
59 } | |
60 DCHECK(render_view_id != MSG_ROUTING_CONTROL); | |
61 | |
62 NullableString16 old_value; | |
63 IPC::SyncMessage* message = | |
64 new DOMStorageHostMsg_SetItem(render_view_id, storage_area_id_, key, | |
65 value, url, &result, &old_value); | |
66 // NOTE: This may pump events (see RenderThread::Send). | |
67 RenderThread::current()->Send(message); | |
68 old_value_webkit = old_value; | |
69 } | |
70 | |
71 void RendererWebStorageAreaImpl::removeItem( | |
72 const WebString& key, const WebURL& url, WebString& old_value_webkit) { | |
73 NullableString16 old_value; | |
74 RenderThread::current()->Send( | |
75 new DOMStorageHostMsg_RemoveItem(storage_area_id_, key, url, &old_value)); | |
76 old_value_webkit = old_value; | |
77 } | |
78 | |
79 void RendererWebStorageAreaImpl::clear( | |
80 const WebURL& url, bool& cleared_something) { | |
81 RenderThread::current()->Send( | |
82 new DOMStorageHostMsg_Clear(storage_area_id_, url, &cleared_something)); | |
83 } | |
OLD | NEW |