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

Unified Diff: webkit/tools/test_shell/simple_dom_storage_system.cc

Issue 10201010: Switch chrome and chromiumDRT over to using the new WebKit API for dispatching events. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 8 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 | « webkit/tools/test_shell/simple_dom_storage_system.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: webkit/tools/test_shell/simple_dom_storage_system.cc
===================================================================
--- webkit/tools/test_shell/simple_dom_storage_system.cc (revision 133749)
+++ webkit/tools/test_shell/simple_dom_storage_system.cc (working copy)
@@ -4,21 +4,23 @@
#include "webkit/tools/test_shell/simple_dom_storage_system.h"
+#include "base/auto_reset.h"
#include "googleurl/src/gurl.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURL.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageArea.h"
+#include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageEventDispatcher.h"
#include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageNamespace.h"
#include "webkit/database/database_util.h"
-#include "webkit/dom_storage/dom_storage_context.h"
+#include "webkit/dom_storage/dom_storage_area.h"
#include "webkit/dom_storage/dom_storage_host.h"
-#include "webkit/dom_storage/dom_storage_session.h"
using dom_storage::DomStorageContext;
using dom_storage::DomStorageHost;
using dom_storage::DomStorageSession;
using webkit_database::DatabaseUtil;
+using WebKit::WebStorageArea;
using WebKit::WebStorageNamespace;
-using WebKit::WebStorageArea;
+using WebKit::WebStorageEventDispatcher;
using WebKit::WebString;
using WebKit::WebURL;
@@ -34,7 +36,7 @@
virtual ~NamespaceImpl();
virtual WebStorageArea* createStorageArea(const WebString& origin) OVERRIDE;
virtual WebStorageNamespace* copy() OVERRIDE;
- virtual void close() OVERRIDE;
+ virtual bool isSameNamespace(const WebStorageNamespace&) const OVERRIDE;
private:
DomStorageContext* Context() {
@@ -110,8 +112,10 @@
return new NamespaceImpl(parent_, new_id);
}
-void SimpleDomStorageSystem::NamespaceImpl::close() {
- // TODO(michaeln): remove this deprecated method.
+bool SimpleDomStorageSystem::NamespaceImpl::isSameNamespace(
+ const WebStorageNamespace& other) const {
+ const NamespaceImpl* other_impl = static_cast<const NamespaceImpl*>(&other);
+ return namespace_id_ == other_impl->namespace_id_;
}
// AreaImpl -----------------------------
@@ -158,6 +162,7 @@
if (!Host())
return;
+ AutoReset<AreaImpl*> auto_reset(&parent_->area_being_processed_, this);
NullableString16 old_value;
if (!Host()->SetAreaItem(connection_id_, key, newValue, pageUrl,
&old_value))
@@ -173,6 +178,7 @@
if (!Host())
return;
+ AutoReset<AreaImpl*> auto_reset(&parent_->area_being_processed_, this);
string16 old_value;
if (!Host()->RemoveAreaItem(connection_id_, key, pageUrl, &old_value))
return;
@@ -182,10 +188,12 @@
void SimpleDomStorageSystem::AreaImpl::clear(
const WebURL& pageUrl, bool& somethingCleared) {
- if (Host())
+ if (Host()) {
+ AutoReset<AreaImpl*> auto_reset(&parent_->area_being_processed_, this);
somethingCleared = Host()->ClearArea(connection_id_, pageUrl);
- else
- somethingCleared = false;
+ return;
+ }
+ somethingCleared = false;
}
// SimpleDomStorageSystem -----------------------------
@@ -196,14 +204,17 @@
: weak_factory_(this),
context_(new DomStorageContext(FilePath(), FilePath(), NULL, NULL)),
host_(new DomStorageHost(context_)),
+ area_being_processed_(NULL),
next_connection_id_(1) {
DCHECK(!g_instance_);
g_instance_ = this;
+ context_->AddEventObserver(this);
}
SimpleDomStorageSystem::~SimpleDomStorageSystem() {
g_instance_ = NULL;
host_.reset();
+ context_->RemoveEventObserver(this);
}
WebStorageNamespace* SimpleDomStorageSystem::CreateLocalStorageNamespace() {
@@ -215,3 +226,66 @@
context_->CreateSessionNamespace(id);
return new NamespaceImpl(weak_factory_.GetWeakPtr(), id);
}
+
+void SimpleDomStorageSystem::OnDomStorageItemSet(
+ const dom_storage::DomStorageArea* area,
+ const string16& key,
+ const string16& new_value,
+ const NullableString16& old_value,
+ const GURL& page_url) {
+ DispatchDomStorageEvent(area, page_url,
+ NullableString16(key, false),
+ NullableString16(new_value, false),
+ old_value);
+}
+
+void SimpleDomStorageSystem::OnDomStorageItemRemoved(
+ const dom_storage::DomStorageArea* area,
+ const string16& key,
+ const string16& old_value,
+ const GURL& page_url) {
+ DispatchDomStorageEvent(area, page_url,
+ NullableString16(key, false),
+ NullableString16(true),
+ NullableString16(old_value, false));
+}
+
+void SimpleDomStorageSystem::OnDomStorageAreaCleared(
+ const dom_storage::DomStorageArea* area,
+ const GURL& page_url) {
+ DispatchDomStorageEvent(area, page_url,
+ NullableString16(true),
+ NullableString16(true),
+ NullableString16(true));
+}
+
+void SimpleDomStorageSystem::DispatchDomStorageEvent(
+ const dom_storage::DomStorageArea* area,
+ const GURL& page_url,
+ const NullableString16& key,
+ const NullableString16& new_value,
+ const NullableString16& old_value) {
+ DCHECK(area_being_processed_);
+ if (area->namespace_id() == dom_storage::kLocalStorageNamespaceId) {
+ WebStorageEventDispatcher::dispatchLocalStorageEvent(
+ key,
+ old_value,
+ new_value,
+ area->origin(),
+ page_url,
+ area_being_processed_,
+ true /* originatedInProcess */);
+ } else {
+ NamespaceImpl session_namespace_for_event_dispatch(
+ base::WeakPtr<SimpleDomStorageSystem>(), area->namespace_id());
+ WebStorageEventDispatcher::dispatchSessionStorageEvent(
+ key,
+ old_value,
+ new_value,
+ area->origin(),
+ page_url,
+ session_namespace_for_event_dispatch,
+ area_being_processed_,
+ true /* originatedInProcess */);
+ }
+}
« no previous file with comments | « webkit/tools/test_shell/simple_dom_storage_system.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698