summaryrefslogtreecommitdiffstats
path: root/content/renderer/renderer_webstoragearea_impl.cc
diff options
context:
space:
mode:
authorjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-04 01:47:49 +0000
committerjam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-05-04 01:47:49 +0000
commitbac33eb460f7c94be8d30613ea8ed8804d63d23d (patch)
tree4f78120f455c86ff734f018a67b542668a17e302 /content/renderer/renderer_webstoragearea_impl.cc
parentec0800709c0aec729385fe4dce1f9ee578b061c8 (diff)
downloadchromium_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.cc26
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;
}