| 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 |