chromium/content/test/data/indexeddb/corrupted_open_db_recovery.html

<!DOCTYPE html>
<html>
<!--
Copyright 2014 The Chromium Authors
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<head>
<title>IDB test that db's corrupted while open are properly handled Part 2 / 2</title>
<script type="text/javascript" src="common.js"></script>
<script>

function test() {
  dbname = "corrupted_open_db_detection.html";
  request = indexedDB.open(dbname);
  request.onupgradeneeded = upgradeNeeded;
  request.onsuccess = onSuccess;
  request.onerror = unexpectedErrorCallback;
  request.onblocked = unexpectedBlockedCallback;
}

var gotUpgradeNeeded = false;
function upgradeNeeded(evt) {
  event = evt;
  shouldBe("event.dataLoss", "'total'");
  shouldBeTrue('event.dataLossMessage.startsWith("IndexedDB (database was corrupt): ")');
  gotUpgradeNeeded = true;
}

function onSuccess(event) {
  db = event.target.result;
  debug("The pre-existing leveldb has an objectStore in 'database-basics',");
  debug("ensure that it was blown away");
  shouldBe("db.objectStoreNames.length", "0");
  debug("We should have gotten an upgradeneeded event because the new empty");
  debug("database doesn't have a version.");
  shouldBeTrue("gotUpgradeNeeded");
  done();
}

</script>
</head>
<body onLoad="test()">
<div id="status">Starting...</div>
</body>
</html>