Chromium Code Reviews| Index: third_party/WebKit/LayoutTests/storage/indexeddb/resources/observer-tests.js |
| diff --git a/third_party/WebKit/LayoutTests/storage/indexeddb/resources/observer-tests.js b/third_party/WebKit/LayoutTests/storage/indexeddb/resources/observer-tests.js |
| index 8d3025720610885e3b63461999f1155761fe6ba6..a45f3ba362df93474771c8a01e069f89d663a557 100644 |
| --- a/third_party/WebKit/LayoutTests/storage/indexeddb/resources/observer-tests.js |
| +++ b/third_party/WebKit/LayoutTests/storage/indexeddb/resources/observer-tests.js |
| @@ -33,9 +33,7 @@ indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac |
| t.done(); |
| }; |
| - var obs = new IDBObserver( |
| - t.step_func(observeFunction), |
| - { operationTypes: ['clear', 'put', 'add', 'delete'] }); |
| + var obs = new IDBObserver(t.step_func(observeFunction)); |
| openDB(t, db1_name, t.step_func(function(db) { |
| connection = db; |
| @@ -54,7 +52,7 @@ indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac |
| }); |
| // Start observing! |
| - obs.observe(db, txn); |
| + obs.observe(db, txn, {operationTypes: ['clear', 'put', 'add', 'delete']}); |
| txn.oncomplete = observers_added_callback; |
| txn.onerror = t.unreached_func('transaction should not fail'); |
| @@ -77,14 +75,12 @@ indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac |
| t.done(); |
| }; |
| - var obs = new IDBObserver( |
| - t.step_func(observeFunction), |
| - { operationTypes: ['add'] }); |
| + var obs = new IDBObserver(t.step_func(observeFunction)); |
| openDB(t, db1_name, t.step_func(function(db) { |
| connection = db; |
| var txn = db.transaction(['store2'], 'readonly'); |
| - obs.observe(db, txn); |
| + obs.observe(db, txn, {operationTypes: ['add']}); |
| txn.oncomplete = observers_added_callback; |
| txn.onerror = t.unreached_func('transaction should not fail') |
| })); |
| @@ -106,14 +102,12 @@ indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac |
| t.done(); |
| }; |
| - var obs = new IDBObserver( |
| - t.step_func(observeFunction), |
| - { operationTypes: ['clear', 'put', 'add', 'delete'] }); |
| + var obs = new IDBObserver(t.step_func(observeFunction)); |
| openDB(t, db1_name, t.step_func(function(db) { |
| connection = db; |
| var txn = db.transaction(['store2'], 'readonly'); |
| - obs.observe(db, txn); |
| + obs.observe(db, txn, {operationTypes: ['clear', 'put', 'add', 'delete']}); |
| txn.oncomplete = observers_added_callback; |
| txn.onerror = t.unreached_func('transaction should not fail') |
| })); |
| @@ -160,15 +154,13 @@ indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac |
| } |
| }; |
| - var obs = new IDBObserver( |
| - t.step_func(observeFunction), |
| - { operationTypes: ['clear', 'put', 'add', 'delete'] }); |
| + var obs = new IDBObserver(t.step_func(observeFunction)); |
| var cb1 = observers_added_barrier(t); |
| openDB(t, db1_name, t.step_func(function(db) { |
| connection1 = db; |
| var txn = db.transaction(['store1', 'store2'], 'readonly'); |
| - obs.observe(db, txn); |
| + obs.observe(db, txn, {operationTypes: ['clear', 'put', 'add', 'delete']}); |
| txn.oncomplete = cb1; |
| txn.onerror = t.unreached_func('transaction should not fail') |
| })); |
| @@ -176,7 +168,7 @@ indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac |
| openDB(t, db2_name, t.step_func(function(db) { |
| connection2 = db; |
| var txn = db.transaction(['store3', 'store4'], 'readonly'); |
| - obs.observe(db, txn); |
| + obs.observe(db, txn, {operationTypes: ['clear', 'put', 'add', 'delete']}); |
| txn.oncomplete = cb2; |
| txn.onerror = t.unreached_func('transaction should not fail') |
| })); |
| @@ -206,21 +198,62 @@ indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac |
| } |
| }; |
| - var obs = new IDBObserver( |
| - t.step_func(observeFunction), |
| - { operationTypes: ['clear', 'put', 'add', 'delete'] }); |
| + var obs = new IDBObserver(t.step_func(observeFunction)); |
| openDB(t, db1_name, t.step_func(function(db) { |
| connection = db; |
| var txn = db.transaction(['store1', 'store2'], 'readonly'); |
| - obs.observe(db, txn); |
| - obs.observe(db, txn); |
| + obs.observe(db, txn, {operationTypes: ['clear', 'put', 'add', 'delete']}); |
|
cmumford
2016/11/07 21:55:16
Makes me wonder if we should have an "all" type.
dmurph
2016/11/07 22:31:54
Yeah -- I wanted it to directly reflect the functi
|
| + obs.observe(db, txn, {operationTypes: ['clear', 'put', 'add', 'delete']}); |
| txn.oncomplete = observers_added_callback; |
| txn.onerror = t.unreached_func('transaction should not fail'); |
| })); |
| }, 'IDB Observers: Multiple observer calls'); |
| indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callback) { |
| + var expectedChanges1 = { |
| + dbName: db1_name, |
| + records: { |
| + 'store1': [{type: 'put', key: 'a'}] |
| + } |
| + }; |
| + var expectedChanges2 = { |
| + dbName: db1_name, |
| + records: { |
| + 'store2': [{type: 'add', key: 'z'}] |
| + } |
| + }; |
| + |
| + var connection = null; |
| + var changeNumber = 0; |
| + var observeFunction = function(changes) { |
| + assert_true(connection != null); |
| + if (changeNumber === 0) { |
| + compareChanges(changes, expectedChanges1); |
| + } else if(changeNumber === 1) { |
| + compareChanges(changes, expectedChanges2); |
| + obs.unobserve(connection); |
| + t.done(); |
| + } |
| + ++changeNumber; |
| + if (changeNumber > 1) { |
|
cmumford
2016/11/07 21:55:15
Nit: How about assert_less_than_equal(changeNumber
dmurph
2016/11/07 22:31:54
I was looking for that assert! ;) thanks!
|
| + assert_unreached("incorrect pendingObserves"); |
| + } |
| + }; |
| + |
| + var obs = new IDBObserver(t.step_func(observeFunction)); |
| + |
| + openDB(t, db1_name, t.step_func(function(db) { |
| + connection = db; |
| + var txn = db.transaction(['store1', 'store2'], 'readonly'); |
| + obs.observe(db, txn, {operationTypes: ['put']}); |
| + obs.observe(db, txn, {operationTypes: ['add']}); |
| + txn.oncomplete = observers_added_callback; |
| + txn.onerror = t.unreached_func('transaction should not fail'); |
| + })); |
| +}, 'IDB Observers: Multiple observer calls with filtering'); |
| + |
| +indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callback) { |
| var partOneChanges1 = { |
| dbName: db1_name, |
| records: { |
| @@ -284,15 +317,13 @@ indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac |
| } |
| }; |
| - var obs = new IDBObserver( |
| - t.step_func(observeFunction), |
| - { operationTypes: ['clear', 'put', 'add', 'delete'] }); |
| + var obs = new IDBObserver(t.step_func(observeFunction)); |
| var cb1 = observers_added_barrier(t); |
| openDB(t, db1_name, t.step_func(function(db) { |
| connection1 = db; |
| var txn = db.transaction(['store1'], 'readonly'); |
| - obs.observe(db, txn); |
| + obs.observe(db, txn, {operationTypes: ['clear', 'put', 'add', 'delete']}); |
| txn.oncomplete = cb1; |
| txn.onerror = t.unreached_func('transaction should not fail'); |
| })); |
| @@ -300,7 +331,7 @@ indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac |
| openDB(t, db1_name, t.step_func(function(db) { |
| connection2 = db; |
| var txn = db.transaction(['store2'], 'readonly'); |
| - obs.observe(db, txn); |
| + obs.observe(db, txn, {operationTypes: ['clear', 'put', 'add', 'delete']}); |
| txn.oncomplete = cb2; |
| txn.onerror = t.unreached_func('transaction should not fail'); |
| })); |
| @@ -308,7 +339,7 @@ indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac |
| openDB(t, db2_name, t.step_func(function(db) { |
| connection3 = db; |
| var txn = db.transaction(['store3', 'store4'], 'readonly'); |
| - obs.observe(db, txn); |
| + obs.observe(db, txn, {operationTypes: ['clear', 'put', 'add', 'delete']}); |
| txn.oncomplete = cb3; |
| txn.onerror = t.unreached_func('transaction should not fail') |
| })); |
| @@ -324,20 +355,19 @@ indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac |
| t.done(); |
| }; |
| - var obs = new IDBObserver( |
| - t.step_func(observeFunction), |
| - { operationTypes: ['clear', 'put', 'add', 'delete'] }); |
| + var obs = new IDBObserver(t.step_func(observeFunction)); |
| openDB(t, db1_name, t.step_func(function(db) { |
| connection1 = db; |
| var txn = db.transaction(['store1'], 'readonly'); |
| - obs.observe(db, txn); |
| + obs.observe(db, txn, {operationTypes: ['clear', 'put', 'add', 'delete']}); |
| obs.unobserve(db); |
| txn.oncomplete = t.step_func(function() { |
| openDB(t, db1_name, t.step_func(function(db) { |
| connection2 = db; |
| var txn = db.transaction(['store2'], 'readonly'); |
| - obs.observe(db, txn); |
| + obs.observe( |
| + db, txn, {operationTypes: ['clear', 'put', 'add', 'delete']}); |
| txn.oncomplete = observers_added_callback; |
| txn.onerror = t.unreached_func('transaction should not fail'); |
| })); |
| @@ -356,22 +386,21 @@ indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac |
| t.done(); |
| }; |
| - var obs = new IDBObserver( |
| - t.step_func(observeFunction), |
| - { operationTypes: ['clear', 'put', 'add', 'delete'] }); |
| + var obs = new IDBObserver(t.step_func(observeFunction)); |
| openDB(t, db1_name, t.step_func(function(db) { |
| connection1 = db; |
| var txn = db.transaction(['store1'], 'readonly'); |
| - obs.observe(db, txn); |
| - obs.observe(db, txn); |
| - obs.observe(db, txn); |
| + obs.observe(db, txn, {operationTypes: ['clear', 'put', 'add', 'delete']}); |
| + obs.observe(db, txn, {operationTypes: ['clear', 'put', 'add', 'delete']}); |
| + obs.observe(db, txn, {operationTypes: ['clear', 'put', 'add', 'delete']}); |
| obs.unobserve(db); |
| txn.oncomplete = t.step_func(function() { |
| openDB(t, db1_name, t.step_func(function(db) { |
| connection2 = db; |
| var txn = db.transaction(['store2'], 'readonly'); |
| - obs.observe(db, txn); |
| + obs.observe( |
| + db, txn, {operationTypes: ['clear', 'put', 'add', 'delete']}); |
| txn.oncomplete = observers_added_callback; |
| txn.onerror = t.unreached_func('transaction should not fail'); |
| })); |
| @@ -425,9 +454,7 @@ indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac |
| } |
| }; |
| - var obs = new IDBObserver( |
| - t.step_func(observeFunction), |
| - { operationTypes: ['clear', 'put', 'add', 'delete'] }); |
| + var obs = new IDBObserver(t.step_func(observeFunction)); |
| var cb1 = observers_added_barrier(t); |
| var cb2 = observers_added_barrier(t); |
| @@ -436,8 +463,8 @@ indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac |
| var txn1 = db.transaction(['store1'], 'readonly'); |
| var txn2 = db.transaction(['store2'], 'readonly'); |
| // Start observing! |
| - obs.observe(db, txn1); |
| - obs.observe(db, txn2); |
| + obs.observe(db, txn1, {operationTypes: ['clear', 'put', 'add', 'delete']}); |
| + obs.observe(db, txn2, {operationTypes: ['clear', 'put', 'add', 'delete']}); |
| txn1.oncomplete = cb1; |
| txn2.oncomplete = cb2; |
| @@ -448,7 +475,7 @@ indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac |
| openDB(t, db2_name, t.step_func(function(db) { |
| connection2 = db; |
| var txn = db.transaction(['store3'], 'readonly'); |
| - obs.observe(db, txn); |
| + obs.observe(db, txn, {operationTypes: ['clear', 'put', 'add', 'delete']}); |
| txn.oncomplete = cb3; |
| txn.onerror = t.unreached_func('transaction should not fail'); |
| })); |
| @@ -499,9 +526,7 @@ indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac |
| } |
| }; |
| - var obs = new IDBObserver( |
| - t.step_func(observeFunction), |
| - { operationTypes: ['clear', 'put', 'add', 'delete'] }); |
| + var obs = new IDBObserver(t.step_func(observeFunction)); |
| var cb1 = observers_added_barrier(t); |
| var cb2 = observers_added_barrier(t); |
| @@ -510,8 +535,8 @@ indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac |
| var txn1 = db.transaction(['store1'], 'readonly'); |
| var txn2 = db.transaction(['store2'], 'readonly'); |
| // Start observing! |
| - obs.observe(db, txn1); |
| - obs.observe(db, txn2); |
| + obs.observe(db, txn1, {operationTypes: ['clear', 'put', 'add', 'delete']}); |
| + obs.observe(db, txn2, {operationTypes: ['clear', 'put', 'add', 'delete']}); |
| txn1.oncomplete = cb1; |
| txn2.oncomplete = cb2; |
| @@ -522,7 +547,7 @@ indexeddb_observers_test(function(t, db1_name, db2_name, observers_added_callbac |
| openDB(t, db2_name, t.step_func(function(db) { |
| connection2 = db; |
| var txn = db.transaction(['store3'], 'readonly'); |
| - obs.observe(db, txn); |
| + obs.observe(db, txn, {operationTypes: ['clear', 'put', 'add', 'delete']}); |
| txn.oncomplete = cb3; |
| txn.onerror = t.unreached_func('transaction should not fail'); |
| })); |