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

Unified Diff: chrome/test/data/indexeddb/perf_shared.js

Issue 10575043: Initial checkin of a perf test suite for Indexed Database. This just has a (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Remove junk from other branch. Created 8 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: chrome/test/data/indexeddb/perf_shared.js
diff --git a/chrome/test/data/indexeddb/perf_shared.js b/chrome/test/data/indexeddb/perf_shared.js
new file mode 100644
index 0000000000000000000000000000000000000000..5f6ca6de645afc18ac59d88ec47ed5ae01d5526c
--- /dev/null
+++ b/chrome/test/data/indexeddb/perf_shared.js
@@ -0,0 +1,121 @@
+window.indexedDB = window.indexedDB || window.webkitIndexedDB ||
+ window.mozIndexedDB || window.msIndexedDB;
+window.IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction ||
jsbell 2012/06/21 00:04:16 Shouldn't need to reference IDBTransaction directl
ericu 2012/07/11 18:04:35 Removed.
+ window.mozIDBTransaction || window.msIDBTransaction;
+
+var automation = {
+ results: {}
+};
+
+automation.setDone = function() {
+ this.setStatus("Test complete.");
+ document.cookie = '__done=1; path=/';
+};
+
+automation.addResult = function(name, result) {
+ result = "" + result;
+ this.results[name] = result;
+ var elt = document.getElementById('results');
+ var div = document.createElement('div');
+ div.innerText = name + ": " + result;
+ elt.appendChild(div);
+};
+
+automation.getResults = function() {
+ return this.results;
+};
+
+automation.setStatus = function(s) {
+ document.getElementById('status').innerText = s;
+};
+
+function assert(t) {
+ if (!t) {
+ var e = new Error("Assertion failed!");
+ console.log(e.stack);
+ throw e;
+ }
+}
+
+function onError(e) {
+ console.log(e);
+ throw new Error(e);
+}
+
+var version = 2; // The version with our object stores.
+var db;
+
+function createDatabase(name, objectStores, handler, errorHandler) {
+ var os = objectStores;
jsbell 2012/06/21 00:04:16 What's this extra object reference for?
ericu 2012/07/11 18:04:35 Removed; I was thinking I'd need it to get the clo
+ var openRequest = indexedDB.open(name, version);
+ openRequest.onblocked = errorHandler;
+ function createObjectStores(db) {
+ for (var store in os) {
+ var name = os[store];
+ assert(!db.objectStoreNames.contains(name));
+ db.createObjectStore(name);
+ }
+ }
+ openRequest.onupgradeneeded = function(ev) {
+ // TODO: This is the spec-compliant path, which doesn't yet work in Chrome,
+ // and isn't yet tested, as this function won't currently be called.
+ assert(openRequest == ev.target);
+ db = openRequest.result;
+ createObjectStores(db);
+ // onsuccess will get called after this exits.
+ };
+ openRequest.onsuccess = function(ev) {
+ assert(openRequest == ev.target);
+ db = openRequest.result;
+ db.onerror = function(ev) {
+ console.log("db error", arguments, openRequest.webkitErrorMessage);
+ errorHandler();
+ }
+ if (db.version != version) {
+ // This is the current Chrome path.
+ var setVersionRequest = db.setVersion(version);
+ setVersionRequest.onfailure = errorHandler;
+ setVersionRequest.onsuccess =
+ function(e) {
+ assert(setVersionRequest == e.target);
+ createObjectStores(db);
+ var versionTransaction = setVersionRequest.result;
+ versionTransaction.oncomplete = function() {handler(db); };
+ versionTransaction.onerror = onError;
+ }
+ } else {
+ handler(db);
+ }
+ }
+}
+
+function getTransaction(db, objectStoreNames, mode, opt_handler) {
+ var transaction = db.transaction(objectStoreNames, mode);
+ transaction.onerror = onError;
jsbell 2012/06/21 00:04:16 FYI, transaction.onerror sees errors bubbled up fr
ericu 2012/07/11 18:04:35 I added a stopPropagation in onError. In generall
+ transaction.onabort = onError;
+ if (opt_handler) {
+ transaction.oncomplete = opt_handler;
+ }
+ return transaction;
+}
+
+function deleteDatabase(name, opt_handler) {
+ var deleteRequest = indexedDB.deleteDatabase(name);
+ deleteRequest.onerror = onError;
+ if (opt_handler) {
+ deleteRequest.onsuccess = opt_handler;
+ }
+}
+
+function cleanUp(opt_handler) {
+ if (db) {
+ deleteDatabase(db, opt_handler);
+ db = null;
+ }
+}
+
+function stringOfLength(n) {
+ assert(n > 0);
+ assert(n == Math.floor(n));
+ return new Array(n + 1).join('0');
+}

Powered by Google App Engine
This is Rietveld 408576698