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

Side by Side Diff: third_party/WebKit/LayoutTests/storage/indexeddb/resources/generic-idb-operations.js

Issue 2125213002: [IndexedDB] Propogating changes to observers : Renderer (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@lifetime
Patch Set: Test added 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
(Empty)
1 if (this.importScripts) {
2 importScripts('../../../resources/testharness.js');
3 }
4
5 function compareChanges(actual, expected) {
6 assert_equals(actual.database.name, expected.dbName, 'The change record databa se should be the same as the database being acted on');
7 assert_equals(actual.records.size, expected.records.size, 'Incorrect number of objectStores recorded by observer');
8 expected.records.forEach(function(obsv, key) {
9 assert_true(actual.records.has(key));
10 var actual_obsv = actual.records.get(key);
11 assert_equals(actual_obsv.length, obsv.length, 'Number of observations recor ded for objectStore '+key+ 'should match observed operations');
12 for (i in obsv)
13 compareObservations(actual_obsv[i], obsv[i]);
14 });
15 }
16
17 function compareObservations(actual, expected) {
18 assert_equals(actual.type, expected.type);
19 if (actual.type == 'clear') {
20 assert_equals(actual.key, undefined, 'clear operation has no key');
21 assert_equals(actual.value, null, 'clear operation has no value');
22 return;
23 }
24 // TODO(palakj): Type should return 'delete' instead of 'kDelete', once fixed.
25 if (actual.type == 'kDelete') {
26 assert_equals(actual.key.lower, expected.key.lower, 'Observed operation key lower bound should match operation performed');
27 assert_equals(actual.key.upper, expected.key.upper, 'Observed operation key upper bound should match operation performed');
28 assert_equals(actual.key.lower_open, expected.key.lower_open, 'Observed oper ation key lower open should match operation performed');
29 assert_equals(actual.key.upper_open, expected.key.upper_open, 'Observed oper ation key upper open should match operation performed');
30 // TODO(palakj): Value needs to be updated, once returned correctly.
31 assert_equals(actual.value, null, 'Delete operation has no value');
32 return;
33 }
34 assert_equals(actual.key.lower, expected.key, 'Observed operation key lower bo und should match operation performed');
35 assert_equals(actual.key.upper, expected.key, 'Observed operation key upper bo und should match operation performed');
36 // TODO(palakj): Value needs to be updated, once returned correctly.
37 assert_equals(actual.value, null, 'Put/Add operation value does not match');
38 }
39
40 function countCallbacks(actual, expected){
41 for(var i in actual){
42 assert_equals(actual[i], expected[i], 'Number of callbacks fired for observe r '+(i+1) + ' should match transactions it observed')
43 }
44 }
45
46 function createDatabase(db, stores) {
47 for (i in stores)
48 db.createObjectStore(stores[i]);
49 }
50
51 function operateOnDbName(dbName, stores, operations) {
52 var openRequest = indexedDB.open(dbname);
53 openRequest.onsuccess = function() {
54 var db = openRequest.result;
55 operateOnDb(db, stores, operations);
56 }
57 }
58
59 function operateOnDb(db, stores, operations) {
60 var tx = db.transaction(stores, 'readwrite');
61 for(var i in stores){
62 var store = tx.objectStore(stores[i]);
63 operateOnStore(store, operations);
64 }
65 }
66
67 function operateOnStore(store, operations) {
68 for (i in operations ) {
69 var op = operations[i];
70 assert_in_array(op.type, ['put', 'add', 'delete', 'clear', 'get'], 'Operatio n type not defined');
71 if (op.type == 'put')
72 store.put(op.value, op.key);
73 else if (op.type == 'add')
74 store.add(op.value, op.key);
75 else if (op.type == 'delete')
76 store.delete(IDBKeyRange.bound(op.key.lower, op.key.upper));
77 else if (op.type == 'clear')
78 store.clear();
79 else
80 store.get(op.key)
81 }
82 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698