From bac33eb460f7c94be8d30613ea8ed8804d63d23d Mon Sep 17 00:00:00 2001 From: "jam@chromium.org" Date: Wed, 4 May 2011 01:47:49 +0000 Subject: Chrome side to allow WebKit layer to use WebPermissionClient to check if access to local storage is allowed. Review URL: http://codereview.chromium.org/6915017 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@84023 0039d316-1c4b-4281-b951-d872f2087c98 --- content/renderer/renderer_webstoragearea_impl.cc | 26 +++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) (limited to 'content/renderer/renderer_webstoragearea_impl.cc') diff --git a/content/renderer/renderer_webstoragearea_impl.cc b/content/renderer/renderer_webstoragearea_impl.cc index 6ff0a70..4f9a5c6 100644 --- a/content/renderer/renderer_webstoragearea_impl.cc +++ b/content/renderer/renderer_webstoragearea_impl.cc @@ -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::WebURL; 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 @@ void RendererWebStorageAreaImpl::setItem( 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; } -- cgit v1.1