OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "content/renderer/renderer_webstoragearea_impl.h" | 5 #include "content/renderer/renderer_webstoragearea_impl.h" |
6 | 6 |
| 7 // TODO(jam): temporary include until webkit merge |
| 8 #include "chrome/renderer/content_settings_observer.h" |
| 9 |
7 #include "content/common/dom_storage_messages.h" | 10 #include "content/common/dom_storage_messages.h" |
8 #include "content/renderer/render_thread.h" | 11 #include "content/renderer/render_thread.h" |
9 #include "content/renderer/render_view.h" | 12 #include "content/renderer/render_view.h" |
10 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" | 13 #include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" |
11 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURL.h" | 14 #include "third_party/WebKit/Source/WebKit/chromium/public/WebURL.h" |
12 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" | 15 #include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h" |
13 | 16 |
14 using WebKit::WebFrame; | 17 using WebKit::WebFrame; |
15 using WebKit::WebString; | 18 using WebKit::WebString; |
16 using WebKit::WebURL; | 19 using WebKit::WebURL; |
17 using WebKit::WebView; | 20 using WebKit::WebView; |
18 | 21 |
19 RendererWebStorageAreaImpl::RendererWebStorageAreaImpl( | 22 RendererWebStorageAreaImpl::RendererWebStorageAreaImpl( |
20 int64 namespace_id, const WebString& origin) { | 23 int64 namespace_id, const WebString& origin, DOMStorageType storage_type) |
| 24 : storage_type_(storage_type) { |
21 RenderThread::current()->Send( | 25 RenderThread::current()->Send( |
22 new DOMStorageHostMsg_StorageAreaId(namespace_id, origin, | 26 new DOMStorageHostMsg_StorageAreaId(namespace_id, origin, |
23 &storage_area_id_)); | 27 &storage_area_id_)); |
24 } | 28 } |
25 | 29 |
26 RendererWebStorageAreaImpl::~RendererWebStorageAreaImpl() { | 30 RendererWebStorageAreaImpl::~RendererWebStorageAreaImpl() { |
27 } | 31 } |
28 | 32 |
29 unsigned RendererWebStorageAreaImpl::length() { | 33 unsigned RendererWebStorageAreaImpl::length() { |
30 unsigned length; | 34 unsigned length; |
(...skipping 16 matching lines...) Expand all Loading... |
47 return value; | 51 return value; |
48 } | 52 } |
49 | 53 |
50 void RendererWebStorageAreaImpl::setItem( | 54 void RendererWebStorageAreaImpl::setItem( |
51 const WebString& key, const WebString& value, const WebURL& url, | 55 const WebString& key, const WebString& value, const WebURL& url, |
52 WebStorageArea::Result& result, WebString& old_value_webkit, | 56 WebStorageArea::Result& result, WebString& old_value_webkit, |
53 WebFrame* web_frame) { | 57 WebFrame* web_frame) { |
54 int32 render_view_id = MSG_ROUTING_CONTROL; | 58 int32 render_view_id = MSG_ROUTING_CONTROL; |
55 if (web_frame) { | 59 if (web_frame) { |
56 RenderView* render_view = RenderView::FromWebView(web_frame->view()); | 60 RenderView* render_view = RenderView::FromWebView(web_frame->view()); |
57 if (render_view) | 61 if (render_view) { |
58 render_view_id = render_view->routing_id(); | 62 render_view_id = render_view->routing_id(); |
| 63 |
| 64 // TODO(jam): remove after merge |
| 65 ContentSettingsObserver* content_setting = |
| 66 ContentSettingsObserver::Get(render_view); |
| 67 if (!content_setting->AllowStorage( |
| 68 web_frame, storage_type_ == DOM_STORAGE_LOCAL)) { |
| 69 result = WebStorageArea::ResultBlockedByQuota; |
| 70 old_value_webkit = NullableString16(); |
| 71 return; |
| 72 } |
| 73 } |
59 } | 74 } |
60 DCHECK(render_view_id != MSG_ROUTING_CONTROL); | 75 DCHECK(render_view_id != MSG_ROUTING_CONTROL); |
61 | 76 |
62 NullableString16 old_value; | 77 NullableString16 old_value; |
63 IPC::SyncMessage* message = | 78 RenderThread::current()->Send(new DOMStorageHostMsg_SetItem( |
64 new DOMStorageHostMsg_SetItem(render_view_id, storage_area_id_, key, | 79 render_view_id, storage_area_id_, key, value, url, &result, &old_value)); |
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; | 80 old_value_webkit = old_value; |
69 } | 81 } |
70 | 82 |
71 void RendererWebStorageAreaImpl::removeItem( | 83 void RendererWebStorageAreaImpl::removeItem( |
72 const WebString& key, const WebURL& url, WebString& old_value_webkit) { | 84 const WebString& key, const WebURL& url, WebString& old_value_webkit) { |
73 NullableString16 old_value; | 85 NullableString16 old_value; |
74 RenderThread::current()->Send( | 86 RenderThread::current()->Send( |
75 new DOMStorageHostMsg_RemoveItem(storage_area_id_, key, url, &old_value)); | 87 new DOMStorageHostMsg_RemoveItem(storage_area_id_, key, url, &old_value)); |
76 old_value_webkit = old_value; | 88 old_value_webkit = old_value; |
77 } | 89 } |
78 | 90 |
79 void RendererWebStorageAreaImpl::clear( | 91 void RendererWebStorageAreaImpl::clear( |
80 const WebURL& url, bool& cleared_something) { | 92 const WebURL& url, bool& cleared_something) { |
81 RenderThread::current()->Send( | 93 RenderThread::current()->Send( |
82 new DOMStorageHostMsg_Clear(storage_area_id_, url, &cleared_something)); | 94 new DOMStorageHostMsg_Clear(storage_area_id_, url, &cleared_something)); |
83 } | 95 } |
OLD | NEW |