importScripts('../../../resources/js-test.js');
importScripts('shared.js');

removeVendorPrefixes();

debug("opening database connection");
evalAndLog("request = indexedDB.open('dont-commit-on-blocked.html', 2)");
request.onerror = unexpectedErrorCallback;
evalAndLog("state = 'setversion'");
evalAndLog("request.onblocked = onSetVersionBlocked");
evalAndLog("request.onupgradeneeded = onSetVersionSuccess");
request.onsuccess = onTransactionComplete;
debug("spinning for 100ms to let events be queued but prevent dispatch");
var t = Date.now();
while ((Date.now() - t) < 100) {
}
debug("done spinning");

function onSetVersionBlocked(e)
{
  debug("");
  debug("onSetVersionBlocked():");
  shouldBeEqualToString("state", "setversion");
  evalAndLog("state = 'blocked'");
}

function onSetVersionSuccess(e)
{
  preamble(e);
  evalAndLog("db = event.target.result");
  db.onerror = unexpectedErrorCallback;
  shouldBeEqualToString("state", "blocked");
  evalAndLog("state = 'success'");

  debug("creating object store - will fail if transaction commited after blocked event");
  evalAndLog("db.createObjectStore('store2')");
}

function onTransactionComplete(e)
{
  debug("");
  debug("onTransactionComplete");

  shouldBeEqualToString("state", "success");

  shouldBe("Number(db.version)", "2");
  shouldBeTrue("db.objectStoreNames.contains('store1')");
  shouldBeTrue("db.objectStoreNames.contains('store2')");
  finishJSTest();
}
