Index: content/renderer/renderer_webstoragearea_impl.cc |
=================================================================== |
--- content/renderer/renderer_webstoragearea_impl.cc (revision 83945) |
+++ content/renderer/renderer_webstoragearea_impl.cc (working copy) |
@@ -4,6 +4,9 @@ |
#include "content/renderer/renderer_webstoragearea_impl.h" |
+// TODO(jam): temporary include until webkit merge |
+#include "chrome/renderer/content_settings_observer.h" |
+ |
#include "content/common/dom_storage_messages.h" |
#include "content/renderer/render_thread.h" |
#include "content/renderer/render_view.h" |
@@ -17,7 +20,8 @@ |
using WebKit::WebView; |
RendererWebStorageAreaImpl::RendererWebStorageAreaImpl( |
- int64 namespace_id, const WebString& origin) { |
+ int64 namespace_id, const WebString& origin, DOMStorageType storage_type) |
+ : storage_type_(storage_type) { |
RenderThread::current()->Send( |
new DOMStorageHostMsg_StorageAreaId(namespace_id, origin, |
&storage_area_id_)); |
@@ -54,17 +58,25 @@ |
int32 render_view_id = MSG_ROUTING_CONTROL; |
if (web_frame) { |
RenderView* render_view = RenderView::FromWebView(web_frame->view()); |
- if (render_view) |
+ if (render_view) { |
render_view_id = render_view->routing_id(); |
+ |
+ // TODO(jam): remove after merge |
+ ContentSettingsObserver* content_setting = |
+ ContentSettingsObserver::Get(render_view); |
+ if (!content_setting->AllowStorage( |
+ web_frame, storage_type_ == DOM_STORAGE_LOCAL)) { |
+ result = WebStorageArea::ResultBlockedByQuota; |
+ old_value_webkit = NullableString16(); |
+ return; |
+ } |
+ } |
} |
DCHECK(render_view_id != MSG_ROUTING_CONTROL); |
NullableString16 old_value; |
- IPC::SyncMessage* message = |
- new DOMStorageHostMsg_SetItem(render_view_id, storage_area_id_, key, |
- value, url, &result, &old_value); |
- // NOTE: This may pump events (see RenderThread::Send). |
- RenderThread::current()->Send(message); |
+ RenderThread::current()->Send(new DOMStorageHostMsg_SetItem( |
+ render_view_id, storage_area_id_, key, value, url, &result, &old_value)); |
old_value_webkit = old_value; |
} |