| 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
|
| index 9e8b3201801bacafe11219e34fe779034289288f..0d42f9287859f785f5514cbea8dfd51da96f6986 100644
|
| --- a/chrome/test/data/indexeddb/perf_shared.js
|
| +++ b/chrome/test/data/indexeddb/perf_shared.js
|
| @@ -40,51 +40,65 @@ function assert(t) {
|
| }
|
|
|
| function onError(e) {
|
| - console.log(e);
|
| + var s = "Caught error.";
|
| + if (e.target && e.target.webkitErrorMessage)
|
| + s += "\n" + e.target.webkitErrorMessage;
|
| + console.log(s);
|
| + automation.setStatus(s);
|
| e.stopPropagation();
|
| throw new Error(e);
|
| }
|
|
|
| var version = 2; // The version with our object stores.
|
| -var db;
|
|
|
| -function createDatabase(name, objectStores, handler, errorHandler) {
|
| +// Valid options fields:
|
| +// indexName: the name of an index to create on each object store
|
| +// indexKeyPath: likewise
|
| +// indexIsUnique: the "unique" option for IDBIndexParameters
|
| +// indexIsMultiEntry: the "multiEntry" option for IDBIndexParameters
|
| +//
|
| +function createDatabase(
|
| + name, objectStoreNames, handler, errorHandler, options) {
|
| var openRequest = indexedDB.open(name, version);
|
| openRequest.onblocked = errorHandler;
|
| function createObjectStores(db) {
|
| - for (var store in objectStores) {
|
| - var name = objectStores[store];
|
| + for (var store in objectStoreNames) {
|
| + var name = objectStoreNames[store];
|
| assert(!db.objectStoreNames.contains(name));
|
| - db.createObjectStore(name);
|
| + var os = db.createObjectStore(name);
|
| + if (options && options.indexName) {
|
| + assert('indexKeyPath' in options);
|
| + os.createIndex(options.indexName, options.indexKeyPath,
|
| + { unique: options.indexIsUnique,
|
| + multiEntry: options.indexIsMultiEntry });
|
| + }
|
| }
|
| }
|
| 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);
|
| + createObjectStores(openRequest.result);
|
| // onsuccess will get called after this exits.
|
| };
|
| openRequest.onsuccess = function(ev) {
|
| assert(openRequest == ev.target);
|
| - db = openRequest.result;
|
| + var 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;
|
| - }
|
| + 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);
|
| }
|
| @@ -109,10 +123,19 @@ function deleteDatabase(name, opt_handler) {
|
| }
|
| }
|
|
|
| -function cleanUp(opt_handler) {
|
| - if (db) {
|
| - deleteDatabase(db, opt_handler);
|
| - db = null;
|
| +function getCompletionFunc(testName, startTime, onTestComplete) {
|
| + function onDeleted() {
|
| + automation.setStatus("Deleted database.");
|
| + onTestComplete();
|
| + }
|
| + return function() {
|
| + var duration = Date.now() - startTime;
|
| + // Ignore the cleanup time for this test.
|
| + automation.addResult(testName, duration);
|
| + automation.setStatus("Deleting database.");
|
| + // TODO: Turn on actual deletion; for now it's way too slow.
|
| + // deleteDatabase(testName, onDeleted);
|
| + onTestComplete();
|
| }
|
| }
|
|
|
|
|