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..8328c2136c8132d7da4e598afd057cb31590176d 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,60 @@ 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']}); |
+ 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; |
+ assert_less_than_equal(changeNumber, 1, "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 +315,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 +329,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 +337,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 +353,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 +384,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 +452,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 +461,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 +473,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 +524,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 +533,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 +545,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'); |
})); |