Index: third_party/WebKit/LayoutTests/storage/indexeddb/resources/observer-actions.js |
diff --git a/third_party/WebKit/LayoutTests/storage/indexeddb/resources/observer-actions.js b/third_party/WebKit/LayoutTests/storage/indexeddb/resources/observer-actions.js |
index 5f88c1bb5a1692a956a12ac95ee9112cbbe6a54b..db44241f9cfcb6d8e1ea071b5e331d9352d164f8 100644 |
--- a/third_party/WebKit/LayoutTests/storage/indexeddb/resources/observer-actions.js |
+++ b/third_party/WebKit/LayoutTests/storage/indexeddb/resources/observer-actions.js |
@@ -71,6 +71,25 @@ function indexeddb_observers_actions(db1_name, db2_name, error_callback) { |
perform_db2_actions_part1(); |
} |
+function increment_key_actions(db_name, num_iters, key) { |
+ var open_request = indexedDB.open(db_name); |
+ open_request.onsuccess = function() { |
+ var db = open_request.result; |
+ |
+ var increment_number = function(old_value, num_left) { |
+ if (num_left == 0) return; |
+ var txn = db.transaction(['store'], 'readwrite'); |
+ var os = txn.objectStore('store'); |
+ var new_value = old_value + 1; |
+ os.put(new_value, key); |
+ txn.oncomplete = function() { |
+ increment_number(new_value, num_left - 1); |
+ }; |
+ }; |
+ increment_number(0, num_iters); |
+ }; |
+}; |
+ |
if (isWorker && location.hash != "") { |
var hash = location.hash.split("#")[1]; |
var names = JSON.parse(decodeURIComponent(hash)); |
@@ -78,6 +97,9 @@ if (isWorker && location.hash != "") { |
var errorCallback = function(event) { |
console.log('Error in actions: ' + event.target.error.message); |
} |
- |
- indexeddb_observers_actions(names.db1_name, names.db2_name, errorCallback); |
+ if (names.incrementing_actions) { |
+ increment_key_actions(names.db_name, names.num_iters, names.key); |
+ } else { |
+ indexeddb_observers_actions(names.db1_name, names.db2_name, errorCallback); |
+ } |
} |