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

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

Issue 10383123: Switch to using the async DomStorage IPC messages and add a caching layer … (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 7 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
« no previous file with comments | « content/browser/dom_storage/dom_storage_message_filter.h ('k') | content/common/dom_storage_messages.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/dom_storage/dom_storage_message_filter.cc
===================================================================
--- content/browser/dom_storage/dom_storage_message_filter.cc (revision 139572)
+++ content/browser/dom_storage/dom_storage_message_filter.cc (working copy)
@@ -82,15 +82,10 @@
IPC_MESSAGE_HANDLER(DOMStorageHostMsg_OpenStorageArea, OnOpenStorageArea)
IPC_MESSAGE_HANDLER(DOMStorageHostMsg_CloseStorageArea, OnCloseStorageArea)
IPC_MESSAGE_HANDLER(DOMStorageHostMsg_LoadStorageArea, OnLoadStorageArea)
- IPC_MESSAGE_HANDLER(DOMStorageHostMsg_Length, OnLength)
- IPC_MESSAGE_HANDLER(DOMStorageHostMsg_Key, OnKey)
- IPC_MESSAGE_HANDLER(DOMStorageHostMsg_GetItem, OnGetItem)
IPC_MESSAGE_HANDLER(DOMStorageHostMsg_SetItem, OnSetItem)
- IPC_MESSAGE_HANDLER(DOMStorageHostMsg_SetItemAsync, OnSetItemAsync)
IPC_MESSAGE_HANDLER(DOMStorageHostMsg_RemoveItem, OnRemoveItem)
- IPC_MESSAGE_HANDLER(DOMStorageHostMsg_RemoveItemAsync, OnRemoveItemAsync)
IPC_MESSAGE_HANDLER(DOMStorageHostMsg_Clear, OnClear)
- IPC_MESSAGE_HANDLER(DOMStorageHostMsg_ClearAsync, OnClearAsync)
+ IPC_MESSAGE_HANDLER(DOMStorageHostMsg_FlushMessages, OnFlushMessages)
IPC_MESSAGE_UNHANDLED(handled = false)
IPC_END_MESSAGE_MAP()
return handled;
@@ -118,44 +113,11 @@
content::RecordAction(UserMetricsAction("BadMessageTerminate_DSMF_2"));
BadMessageReceived();
}
+ Send(new DOMStorageMsg_AsyncOperationComplete(true));
}
-void DOMStorageMessageFilter::OnLength(int connection_id,
- unsigned* length) {
- DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::IO));
- *length = host_->GetAreaLength(connection_id);
-}
-
-void DOMStorageMessageFilter::OnKey(int connection_id, unsigned index,
- NullableString16* key) {
- DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::IO));
- *key = host_->GetAreaKey(connection_id, index);
-}
-
-void DOMStorageMessageFilter::OnGetItem(int connection_id,
- const string16& key,
- NullableString16* value) {
- DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::IO));
- *value = host_->GetAreaItem(connection_id, key);
-}
-
void DOMStorageMessageFilter::OnSetItem(
int connection_id, const string16& key,
- const string16& value, const GURL& page_url,
- WebKit::WebStorageArea::Result* result, NullableString16* old_value) {
- DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::IO));
- DCHECK_EQ(0, connection_dispatching_message_for_);
- AutoReset<int> auto_reset(&connection_dispatching_message_for_,
- connection_id);
- *old_value = NullableString16(true);
- if (host_->SetAreaItem(connection_id, key, value, page_url, old_value))
- *result = WebKit::WebStorageArea::ResultOK;
- else
- *result = WebKit::WebStorageArea::ResultBlockedByQuota;
-}
-
-void DOMStorageMessageFilter::OnSetItemAsync(
- int connection_id, int operation_id, const string16& key,
const string16& value, const GURL& page_url) {
DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::IO));
DCHECK_EQ(0, connection_dispatching_message_for_);
@@ -164,25 +126,11 @@
NullableString16 not_used;
bool success = host_->SetAreaItem(connection_id, key, value,
page_url, &not_used);
- Send(new DOMStorageMsg_AsyncOperationComplete(operation_id, success));
+ Send(new DOMStorageMsg_AsyncOperationComplete(success));
}
void DOMStorageMessageFilter::OnRemoveItem(
- int connection_id, const string16& key, const GURL& page_url,
- NullableString16* old_value) {
- DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::IO));
- DCHECK_EQ(0, connection_dispatching_message_for_);
- AutoReset<int> auto_reset(&connection_dispatching_message_for_,
- connection_id);
- string16 old_string_value;
- if (host_->RemoveAreaItem(connection_id, key, page_url, &old_string_value))
- *old_value = NullableString16(old_string_value, false);
- else
- *old_value = NullableString16(true);
-}
-
-void DOMStorageMessageFilter::OnRemoveItemAsync(
- int connection_id, int operation_id, const string16& key,
+ int connection_id, const string16& key,
const GURL& page_url) {
DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::IO));
DCHECK_EQ(0, connection_dispatching_message_for_);
@@ -190,26 +138,21 @@
connection_id);
string16 not_used;
host_->RemoveAreaItem(connection_id, key, page_url, &not_used);
- Send(new DOMStorageMsg_AsyncOperationComplete(operation_id, true));
+ Send(new DOMStorageMsg_AsyncOperationComplete(true));
}
-void DOMStorageMessageFilter::OnClear(int connection_id, const GURL& page_url,
- bool* something_cleared) {
+void DOMStorageMessageFilter::OnClear(
+ int connection_id, const GURL& page_url) {
DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::IO));
DCHECK_EQ(0, connection_dispatching_message_for_);
AutoReset<int> auto_reset(&connection_dispatching_message_for_,
connection_id);
- *something_cleared = host_->ClearArea(connection_id, page_url);
+ host_->ClearArea(connection_id, page_url);
+ Send(new DOMStorageMsg_AsyncOperationComplete(true));
}
-void DOMStorageMessageFilter::OnClearAsync(
- int connection_id, int operation_id, const GURL& page_url) {
- DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::IO));
- DCHECK_EQ(0, connection_dispatching_message_for_);
- AutoReset<int> auto_reset(&connection_dispatching_message_for_,
- connection_id);
- host_->ClearArea(connection_id, page_url);
- Send(new DOMStorageMsg_AsyncOperationComplete(operation_id, true));
+void DOMStorageMessageFilter::OnFlushMessages() {
+ // Intentionally empty method body.
}
void DOMStorageMessageFilter::OnDomStorageItemSet(
@@ -251,17 +194,18 @@
const NullableString16& new_value,
const NullableString16& old_value) {
DCHECK(!BrowserThread::CurrentlyOn(BrowserThread::IO));
- if (area->namespace_id() != dom_storage::kLocalStorageNamespaceId &&
- !connection_dispatching_message_for_) {
- return; // No need to broadcast session storage events across processes.
+ // Only send mutation events to processes which have the area open.
+ bool originated_in_process = connection_dispatching_message_for_ != 0;
+ if (originated_in_process ||
+ host_->HasAreaOpen(area->namespace_id(), area->origin())) {
+ DOMStorageMsg_Event_Params params;
+ params.origin = area->origin();
+ params.page_url = page_url;
+ params.connection_id = connection_dispatching_message_for_;
+ params.key = key;
+ params.new_value = new_value;
+ params.old_value = old_value;
+ params.namespace_id = area->namespace_id();
+ Send(new DOMStorageMsg_Event(params));
}
- DOMStorageMsg_Event_Params params;
- params.origin = area->origin();
- params.page_url = page_url;
- params.connection_id = connection_dispatching_message_for_;
- params.key = key;
- params.new_value = new_value;
- params.old_value = old_value;
- params.namespace_id = area->namespace_id();
- Send(new DOMStorageMsg_Event(params));
}
« no previous file with comments | « content/browser/dom_storage/dom_storage_message_filter.h ('k') | content/common/dom_storage_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698