diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-04 01:47:49 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-05-04 01:47:49 +0000 |
commit | bac33eb460f7c94be8d30613ea8ed8804d63d23d (patch) | |
tree | 4f78120f455c86ff734f018a67b542668a17e302 /content/renderer/renderer_webstoragearea_impl.cc | |
parent | ec0800709c0aec729385fe4dce1f9ee578b061c8 (diff) | |
download | chromium_src-bac33eb460f7c94be8d30613ea8ed8804d63d23d.zip chromium_src-bac33eb460f7c94be8d30613ea8ed8804d63d23d.tar.gz chromium_src-bac33eb460f7c94be8d30613ea8ed8804d63d23d.tar.bz2 |
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
Diffstat (limited to 'content/renderer/renderer_webstoragearea_impl.cc')
-rw-r--r-- | content/renderer/renderer_webstoragearea_impl.cc | 26 |
1 files changed, 19 insertions, 7 deletions
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; } |