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

Side by Side Diff: third_party/WebKit/LayoutTests/storage/indexeddb/resources/observer.js

Issue 2125213002: [IndexedDB] Propogating changes to observers : Renderer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@lifetime
Patch Set: Renderer changes Created 4 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 unified diff | Download patch
OLDNEW
1 if (this.importScripts) { 1 if (this.importScripts) {
2 importScripts('../../../resources/testharness.js'); 2 importScripts('../../../resources/testharness.js');
3 importScripts('generic-idb-operations.js');
3 } 4 }
4 5
5 function callback(){}; 6 async_test(function(t) {
7 var dbname = location.pathname + ' - ' + 'empty transaction';
8 var openRequest = indexedDB.open(dbname);
9 var callback_count = 0;
10 var obs = new IDBObserver(t.step_func(function() { callback_count++; }), {oper ationTypes: ['put']});
11
12 openRequest.onupgradeneeded = t.step_func(function() {
13 createDatabase(openRequest.result, ['store']);
14 });
15 openRequest.onsuccess = t.step_func(function() {
16 var db = openRequest.result;
17 var tx1 = db.transaction('store', 'readwrite');
18 var tx2 = db.transaction('store', 'readwrite');
cmumford 2016/07/20 00:25:12 Should probably also have: tx1.onerror = t.unre
palakj1 2016/07/20 01:33:36 thanks for pointing this out.
19 obs.observe(db, tx1);
20 tx2.objectStore('store').put(1,1);
cmumford 2016/07/20 00:25:12 Nit: space before second param.
palakj1 2016/07/20 01:33:36 done
21 tx1.oncomplete = t.step_func(function() {
22 countCallbacks(callback_count, 0);
23 });
24 tx2.oncomplete = t.step_func(function() {
25 countCallbacks(callback_count, 1);
26 t.done();
27 });
28 });
29 }, 'Registering observe call with empty transaction');
6 30
7 async_test(function(t) { 31 async_test(function(t) {
8 var description = 'observer addition and removal test'; 32 var dbname = location.pathname + ' - ' + 'observer in version change';
9 var dbname = location.pathname + ' - ' + description;
10 var openRequest = indexedDB.open(dbname); 33 var openRequest = indexedDB.open(dbname);
11 var obs1 = new IDBObserver(callback, {transaction: true, values: true}); 34 var callback_count = 0;
12 var obs2 = new IDBObserver(callback, {transaction: true, values: true}); 35 var obs;
36 openRequest.onupgradeneeded = t.step_func(function() {
37 createDatabase(openRequest.result, ['store']);
38 obs = new IDBObserver(t.step_func(function() { callback_count++; }), { ope rationTypes: ['put'] });
39 });
40 openRequest.onsuccess = t.step_func(function() {
41 var db = openRequest.result;
42 var tx1 = db.transaction('store', 'readwrite');
43 var tx2 = db.transaction('store', 'readwrite');
44 tx1.objectStore('store').get(1);
45 tx2.objectStore('store').put(1,1);
cmumford 2016/07/20 00:25:12 space.
palakj1 2016/07/20 01:33:36 done
46 obs.observe(db, tx1);
47 tx1.oncomplete = t.step_func(function() {
48 countCallbacks(callback_count, 0);
49 });
50 tx2.oncomplete = t.step_func(function() {
51 countCallbacks(callback_count, 1);
52 t.done();
53 });
54 });
55 }, 'Create IDBObserver during version change');
13 56
57 async_test(function(t) {
58 var dbname = location.pathname + ' - ' + 'ignore observe call';
59 var openRequest = indexedDB.open(dbname);
60 var callback_count = 0;
61 var obs = new IDBObserver(t.step_func(function() { callback_count++; }), { ope rationTypes: ['put'] });
14 openRequest.onupgradeneeded = t.step_func(function() { 62 openRequest.onupgradeneeded = t.step_func(function() {
15 var db = openRequest.result; 63 var db = openRequest.result;
16 db.createObjectStore('store'); 64 db.createObjectStore('store');
65 obs.observe(db, openRequest.transaction);
17 }); 66 });
18 openRequest.onsuccess = t.step_func(function() { 67 openRequest.onsuccess = t.step_func(function() {
19 var db = openRequest.result; 68 var db = openRequest.result;
20 var tx = db.transaction('store', 'readwrite'); 69 var tx = db.transaction('store', 'readwrite');
21 var store = tx.objectStore('store'); 70 tx.objectStore('store').put(1,1);
22 var put_request = store.put(1,1); 71 tx.oncomplete = t.step_func(function() {
23 obs1.observe(db, tx); 72 countCallbacks(callback_count, 0);
24 obs1.unobserve(db); 73 t.done();
25 obs1.observe(db, tx); 74 });
26 obs2.observe(db, tx); 75 });
27 tx.oncomplete = t.step_func(function(){ 76 }, 'Observe call during version change ignored');
28 obs1.unobserve(db);
29 t.done();
30 });
31 });
32 }, 'observer addition and removal test');
33 77
34 done(); 78 async_test(function(t) {
79 var dbname = location.pathname + ' - ' + 'abort associated transaction';
80 var openRequest = indexedDB.open(dbname);
81 var callback_count = 0;
82 var obs = new IDBObserver(t.step_func(function() { callback_count++; }), { ope rationTypes: ['put'] });
83 openRequest.onupgradeneeded = t.step_func(function() {
84 createDatabase(openRequest.result, ['store']);
85 });
86 openRequest.onsuccess = t.step_func(function() {
87 var db = openRequest.result;
88 var tx1 = db.transaction('store', 'readwrite');
89 var tx2 = db.transaction('store', 'readwrite');
90 tx1.objectStore('store').get(1);
91 tx2.objectStore('store').put(1,1);
92 obs.observe(db, tx1);
93 tx1.abort();
94 tx1.oncomplete = t.step_func(function() {
95 countCallbacks(callback_count, 0);
96 });
97 tx2.oncomplete = t.step_func(function() {
98 countCallbacks(callback_count, 0);
99 t.done();
100 });
101 });
102 }, 'Abort transaction associated with observer');
35 103
104 async_test(function(t) {
105 var dbname = location.pathname + ' - ' + 'abort transaction';
106 var openRequest = indexedDB.open(dbname);
107 var callback_count = 0;
108 var obs = new IDBObserver(t.step_func(function() { callback_count++; }), { ope rationTypes: ['put'] });
109 openRequest.onupgradeneeded = t.step_func(function() {
110 createDatabase(openRequest.result, ['store']);
111 });
112 openRequest.onsuccess = t.step_func(function() {
113 var db = openRequest.result;
114 var tx1 = db.transaction('store', 'readwrite');
115 var tx2 = db.transaction('store', 'readwrite');
116 var tx3 = db.transaction('store', 'readwrite');
117 tx1.objectStore('store').get(1);
118 tx2.objectStore('store').put(1,1);
119 tx3.objectStore('store').put(1,1);
120 obs.observe(db, tx1);
121 tx2.abort();
122 tx1.oncomplete = t.step_func(function() {
123 countCallbacks(callback_count, 0);
124 });
125 tx2.oncomplete = t.unreached_func('transaction should not complete');
126 tx2.onabort = t.step_func(function() {
127 countCallbacks(callback_count, 0);
128 });
129 tx3.oncomplete = t.step_func(function() {
130 countCallbacks(callback_count, 1);
131 t.done();
132 });
133 });
134 }, 'Abort transaction observer is recording');
cmumford 2016/07/20 00:25:12 Nit: slightly odd title.
palakj1 2016/07/20 01:33:36 changed
135
136 done();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698