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