text: if (this.importScripts) {
      importScripts('../../../resources/js-test.js');
      importScripts('shared.js');
  }
  
  description("Test that integer versions are reverted when their version transactions abort.");
  
  function test()
  {
      removeVendorPrefixes();
      setDBNameFromPath();
  
      request = evalAndLog("indexedDB.deleteDatabase(dbname)");
      request.onsuccess = deleteSuccess;
      request.onerror = unexpectedErrorCallback;
  }
  
  function deleteSuccess(evt) {
      evalAndLog("request = indexedDB.open(dbname, 2)");
      request.onsuccess = openSuccess;
      request.onerror = unexpectedErrorCallback;
      request.onblocked = unexpectedBlockedCallback;
      request.onupgradeneeded = firstUpgradeNeededCallback;
  }
  
  function firstUpgradeNeededCallback(evt)
  {
      preamble(evt);
      evalAndLog("db = event.target.result");
      evalAndLog("db.createObjectStore('some os')");
  }
  
  function openSuccess(evt)
  {
      preamble(evt);
      evalAndLog("db = event.target.result");
      shouldBe("db.version", "2");
      evalAndLog("db.close()");
      evalAndLog("request = indexedDB.open(dbname, 3)");
      evalAndLog("request.onupgradeneeded = secondUpgradeNeededCallback");
      evalAndLog("request.onerror = errorAfterAbortCallback");
      request.onsuccess = unexpectedSuccessCallback;
      request.onblocked = unexpectedBlockedCallback;
  }
  
  function secondUpgradeNeededCallback(evt)
  {
      preamble(evt);
      evalAndLog("db = event.target.result");
      evalAndLog("db.createObjectStore('some os 2')");
      evalAndLog("event.target.transaction.abort()");
  }
  
  function errorAfterAbortCallback(evt)
  {
      preamble(evt);
      shouldBe("db.version", "2");
      evalAndLog("request = indexedDB.open(dbname)");
      evalAndLog("request.onsuccess = finalSuccessCallback");
      request.onerror = unexpectedErrorCallback;
      request.onblocked = unexpectedBlockedCallback;
      request.onupgradeneeded = unexpectedUpgradeNeededCallback;
  }
  
  function finalSuccessCallback(evt)
  {
      preamble(evt);
      evalAndLog("db = event.target.result");
      shouldBe("db.version", "2");
      shouldBe("db.objectStoreNames.length", "1");
      shouldBeEqualToString("db.objectStoreNames[0]", "some os");
      finishJSTest();
  }
  
  test();
  