Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(688)

Unified Diff: content/browser/in_process_webkit/dom_storage_message_filter.cc

Issue 7480041: Adding session-only localStorage. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Adding tests. Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/in_process_webkit/dom_storage_message_filter.cc
diff --git a/content/browser/in_process_webkit/dom_storage_message_filter.cc b/content/browser/in_process_webkit/dom_storage_message_filter.cc
index 8a327131b99001bd5d30d8ddb374605de9c8408c..f5771c7aed211b7b8a6b56b47434011666c6a409 100644
--- a/content/browser/in_process_webkit/dom_storage_message_filter.cc
+++ b/content/browser/in_process_webkit/dom_storage_message_filter.cc
@@ -83,7 +83,8 @@ bool DOMStorageMessageFilter::OnMessageReceived(const IPC::Message& message,
bool* message_was_ok) {
bool handled = true;
IPC_BEGIN_MESSAGE_MAP_EX(DOMStorageMessageFilter, message, *message_was_ok)
- IPC_MESSAGE_HANDLER(DOMStorageHostMsg_StorageAreaId, OnStorageAreaId)
+ IPC_MESSAGE_HANDLER_DELAY_REPLY(
+ DOMStorageHostMsg_StorageAreaId, OnStorageAreaId)
IPC_MESSAGE_HANDLER(DOMStorageHostMsg_Length, OnLength)
IPC_MESSAGE_HANDLER(DOMStorageHostMsg_Key, OnKey)
IPC_MESSAGE_HANDLER(DOMStorageHostMsg_GetItem, OnGetItem)
@@ -103,23 +104,58 @@ void DOMStorageMessageFilter::OnDestruct() const {
void DOMStorageMessageFilter::OverrideThreadForMessage(
const IPC::Message& message,
BrowserThread::ID* thread) {
- if (IPC_MESSAGE_CLASS(message) == DOMStorageMsgStart)
+ if (message.type() == DOMStorageHostMsg_StorageAreaId::ID)
+ ;
michaeln 2011/08/02 19:47:41 this looks odd, maybe put an early return here ins
marja 2011/08/03 09:14:15 Done.
+ else if (IPC_MESSAGE_CLASS(message) == DOMStorageMsgStart)
*thread = BrowserThread::WEBKIT;
}
void DOMStorageMessageFilter::OnStorageAreaId(int64 namespace_id,
const string16& origin,
- int64* storage_area_id) {
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::WEBKIT));
+ IPC::Message* reply_msg) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
+ content::ContentBrowserClient* content_browser_client =
+ content::GetContentClient()->browser();
+ bool allow_permanent_storage =
+ content_browser_client->AllowPermanentStorage(
+ GURL(origin),
+ // FIXME(marja): Get the first party URL
michaeln 2011/08/02 19:47:41 nit: TODO(marja) instead of FIXME. One of those st
marja 2011/08/03 09:14:15 Done. Though, my intention was to get this FIXME
+ GURL(origin),
+ Context()->GetResourceContext());
+
+ BrowserThread::PostTask(
+ BrowserThread::WEBKIT,
+ FROM_HERE,
+ NewRunnableMethod(
+ this,
+ &DOMStorageMessageFilter::OnStorageAreaIdOnWebKitThread,
+ namespace_id,
+ origin,
+ allow_permanent_storage,
+ reply_msg));
+}
+
+void DOMStorageMessageFilter::OnStorageAreaIdOnWebKitThread(
+ int64 namespace_id,
+ const string16& origin,
+ bool allow_permanent_storage,
+ IPC::Message* reply_msg) {
DOMStorageNamespace* storage_namespace =
Context()->GetStorageNamespace(namespace_id, true);
if (!storage_namespace) {
- *storage_area_id = DOMStorageContext::kInvalidStorageId;
- return;
+ DOMStorageHostMsg_StorageAreaId::WriteReplyParams(
+ reply_msg,
+ DOMStorageContext::kInvalidStorageId);
+ } else {
+ DOMStorageArea* storage_area =
+ storage_namespace->GetStorageArea(origin,
+ allow_permanent_storage);
+ DCHECK(storage_area != NULL);
+ DOMStorageHostMsg_StorageAreaId::WriteReplyParams(reply_msg,
+ storage_area->id());
}
- DOMStorageArea* storage_area = storage_namespace->GetStorageArea(origin);
- *storage_area_id = storage_area->id();
+ Send(reply_msg);
}
void DOMStorageMessageFilter::OnLength(int64 storage_area_id,

Powered by Google App Engine
This is Rietveld 408576698