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

Unified Diff: third_party/WebKit/LayoutTests/external/wpt/webstorage/event_no_duplicates.html

Issue 2697953002: Remove incorrect optimization in LevelDBWrapperImpl::DeleteAll(). (Closed)
Patch Set: fix web platform test Created 3 years, 10 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 | « third_party/WebKit/LayoutTests/external/wpt/MANIFEST.json ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/LayoutTests/external/wpt/webstorage/event_no_duplicates.html
diff --git a/third_party/WebKit/LayoutTests/external/wpt/webstorage/event_no_duplicates.html b/third_party/WebKit/LayoutTests/external/wpt/webstorage/event_no_duplicates.html
new file mode 100644
index 0000000000000000000000000000000000000000..149e201c7dd7ae548fd4a74177781e793c9b9af0
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/external/wpt/webstorage/event_no_duplicates.html
@@ -0,0 +1,111 @@
+<!DOCTYPE HTML>
+<html>
+<title>WebStorage Test: StorageEvent - only if something changes</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<body>
+<script>
+const iframe = document.createElement('iframe');
+
+function tests(storageName) {
+ test(t => assert_true(storageName in window), storageName + ' exists');
+
+ const storage = window[storageName];
+ const iframeStorage = iframe.contentWindow[storageName];
+
+ add_completion_callback(() => {
+ storage.clear();
+ });
+
+ promise_test(t => {
+ const w = new EventWatcher(t, iframe.contentWindow, 'storage');
+
+ // Random key to make sure we don't conflict with any cruft leftover from
+ // earlier runs. Any synchronization would be really hard with localStorage
+ // limited guarantees.
+ const testKey = Math.random().toString(36).slice(2);
+
+ storage.setItem(testKey, 'foo');
+ storage.setItem(testKey, 'foo');
+ storage.setItem(testKey, 'bar');
+ return w.wait_for('storage')
+ .then(e => {
+ assert_equals(e.storageArea, iframeStorage);
+ assert_equals(e.key, testKey);
+ assert_equals(e.newValue, 'foo');
+ return w.wait_for('storage');
+ })
+ .then(e => {
+ assert_equals(e.storageArea, iframeStorage);
+ assert_equals(e.key, testKey);
+ assert_equals(e.oldValue, 'foo');
+ assert_equals(e.newValue, 'bar');
+ });
+ }, 'Setting to same value does not trigger event for ' + storageName);
+
+ promise_test(t => {
+ const w = new EventWatcher(t, iframe.contentWindow, 'storage');
+
+ // Random key to make sure we don't conflict with any cruft leftover from
+ // earlier runs. Any synchronization would be really hard with localStorage
+ // limited guarantees.
+ const testKey1 = Math.random().toString(36).slice(2);
+ const testKey2 = Math.random().toString(36).slice(2);
+
+ storage.removeItem(testKey1);
+ storage.setItem(testKey2, 'foo');
+ return w.wait_for('storage')
+ .then(e => {
+ assert_equals(e.storageArea, iframeStorage);
+ assert_equals(e.key, testKey2);
+ assert_equals(e.newValue, 'foo');
+ });
+ }, 'Deleting non-existent key does not trigger event for ' + storageName);
+
+
+ promise_test(t => {
+ const w = new EventWatcher(t, iframe.contentWindow, 'storage');
+
+ // Random key to make sure we don't conflict with any cruft leftover from
+ // earlier runs. Any synchronization would be really hard with localStorage
+ // limited guarantees.
+ const testKey = Math.random().toString(36).slice(2);
+
+ storage.setItem(testKey, 'foo');
+ storage.clear();
+ storage.clear();
+ storage.setItem(testKey, 'bar');
+ return w.wait_for('storage')
+ .then(e => {
+ assert_equals(e.storageArea, iframeStorage);
+ assert_equals(e.key, testKey);
+ assert_equals(e.newValue, 'foo');
+ return w.wait_for('storage');
+ })
+ .then(e => {
+ assert_equals(e.storageArea, iframeStorage);
+ assert_equals(e.key, null);
+ assert_equals(e.oldValue, null);
+ assert_equals(e.newValue, null);
+ return w.wait_for('storage');
+ })
+ .then(e => {
+ assert_equals(e.storageArea, iframeStorage);
+ assert_equals(e.key, testKey);
+ assert_equals(e.oldValue, null);
+ assert_equals(e.newValue, 'bar');
+ });
+ }, 'Clearing empty storage does not trigger event for ' + storageName);
+
+}
+
+iframe.onload = () => {
+ tests('sessionStorage');
+ tests('localStorage');
+};
+iframe.src = 'about:blank';
+document.body.appendChild(iframe);
+</script>
+</body>
+</html>
+
« no previous file with comments | « third_party/WebKit/LayoutTests/external/wpt/MANIFEST.json ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698