| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| function test() |
| { |
| if (document.location.hash === '#part1') { |
| testPart1(); |
| } else if (document.location.hash === '#part2') { |
| testPart2(); |
| } else { |
| result('fail - unexpected hash'); |
| } |
| } |
| |
| function testPart1() |
| { |
| var delreq = window.indexedDB.deleteDatabase('bug90635'); |
| delreq.onerror = unexpectedErrorCallback; |
| delreq.onsuccess = function() { |
| var openreq = window.indexedDB.open('bug90635', 1); |
| openreq.onerror = unexpectedErrorCallback; |
| openreq.onblocked = unexpectedBlockedCallback; |
| openreq.onupgradeneeded = function(e) { |
| db = openreq.result; |
| var transaction = openreq.transaction; |
| transaction.onabort = unexpectedAbortCallback; |
| |
| db.createObjectStore('store1'); |
| db.createObjectStore('store2', {keyPath: ''}); |
| db.createObjectStore('store3', {keyPath: 'some_path'}); |
| }; |
| openreq.onsuccess = function() { |
| test_store(db, 'first run'); |
| }; |
| }; |
| } |
| |
| function testPart2() |
| { |
| var openreq = window.indexedDB.open('bug90635'); |
| openreq.onerror = unexpectedErrorCallback; |
| openreq.onsuccess = function(e) { |
| var db = openreq.result; |
| test_store(db, 'second run'); |
| }; |
| } |
| |
| function test_store(db, msg) { |
| var transaction = db.transaction(['store1', 'store2', 'store3'], 'readonly'); |
| var store1 = transaction.objectStore('store1'); |
| var store2 = transaction.objectStore('store2'); |
| var store3 = transaction.objectStore('store3'); |
| |
| if (store1.keyPath !== null || |
| store2.keyPath !== '' || |
| store3.keyPath !== 'some_path') { |
| result('fail - ' + msg); |
| } else { |
| result('pass - ' + msg); |
| } |
| } |