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 === '#part1') {
8    testPart1();
9  } else if (document.location.hash === '#part2') {
10    testPart2();
11  } else {
12    result('fail - unexpected hash');
13  }
14}
15
16function testPart1()
17{
18  var delreq = window.indexedDB.deleteDatabase('bug90635');
19  delreq.onerror = unexpectedErrorCallback;
20  delreq.onsuccess = function() {
21    var openreq = window.indexedDB.open('bug90635', 1);
22    openreq.onerror = unexpectedErrorCallback;
23    openreq.onblocked = unexpectedBlockedCallback;
24    openreq.onupgradeneeded = function(e) {
25      db = openreq.result;
26      var transaction = openreq.transaction;
27      transaction.onabort = unexpectedAbortCallback;
28
29      db.createObjectStore('store1');
30      db.createObjectStore('store2', {keyPath: ''});
31      db.createObjectStore('store3', {keyPath: 'some_path'});
32    };
33    openreq.onsuccess = function() {
34      test_store(db, 'first run');
35    };
36  };
37}
38
39function testPart2()
40{
41  var openreq = window.indexedDB.open('bug90635');
42  openreq.onerror = unexpectedErrorCallback;
43  openreq.onsuccess = function(e) {
44    var db = openreq.result;
45    test_store(db, 'second run');
46  };
47}
48
49function test_store(db, msg) {
50  var transaction = db.transaction(['store1', 'store2', 'store3'], 'readonly');
51  var store1 = transaction.objectStore('store1');
52  var store2 = transaction.objectStore('store2');
53  var store3 = transaction.objectStore('store3');
54
55  if (store1.keyPath !== null ||
56      store2.keyPath !== '' ||
57      store3.keyPath !== 'some_path') {
58    result('fail - ' + msg);
59  } else {
60    result('pass - ' + msg);
61  }
62}
63