1// Copyright (c) 2012 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5function test() 6{ 7 if (document.location.hash === '#tab1') { 8 prepareDatabase(function () { doSetVersion(2); }); 9 } else if (document.location.hash === '#tab2') { 10 doSetVersion(3); 11 } else { 12 result('fail - unexpected hash'); 13 } 14} 15 16function prepareDatabase(callback) 17{ 18 // Prepare the database, then exit normally 19 var delreq = window.indexedDB.deleteDatabase('version-change-blocked'); 20 delreq.onerror = unexpectedErrorCallback; 21 delreq.onsuccess = function() { 22 reOpen(callback); 23 }; 24} 25 26function reOpen(callback) 27{ 28 request = indexedDB.open('version-change-blocked'); 29 request.onerror = unexpectedErrorCallback; 30 request.onblocked = unexpectedBlockedCallback; 31 request.onupgradeneeded = function() { 32 db = event.target.result; 33 db.createObjectStore("someobjectstore"); 34 }; 35 request.onsuccess = function() { 36 db.close(); 37 callback(); 38 }; 39} 40 41function doSetVersion(version) 42{ 43 // Open the database and try a setVersion 44 var openreq = window.indexedDB.open('version-change-blocked', version); 45 openreq.onerror = unexpectedErrorCallback; 46 var upgradeneededComplete = false; 47 openreq.onblocked = function(e) { 48 result('setVersion(' + version + ') blocked'); 49 }; 50 openreq.onupgradeneeded = function(e) { 51 openreq.transaction.oncomplete = function(e2) { 52 result('setVersion(' + version + ') complete'); 53 }; 54 }; 55} 56