1<html> 2<head> 3<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css"> 4<script src="../../fast/js/resources/js-test-pre.js"></script> 5<script src="../../fast/js/resources/js-test-post-function.js"></script> 6<script src="resources/shared.js"></script> 7</head> 8<body> 9<p id="description"></p> 10<div id="console"></div> 11<script> 12 13description("Test IndexedDB's webkitIDBObjectStore.deleteObjectStore()."); 14if (window.layoutTestController) 15 layoutTestController.waitUntilDone(); 16 17function test() 18{ 19 request = evalAndLog("webkitIndexedDB.open('objectstore-removeobjectstore')"); 20 request.onsuccess = startSetVersion; 21 request.onerror = unexpectedErrorCallback; 22} 23 24function startSetVersion() 25{ 26 db = evalAndLog("db = event.target.result"); 27 28 request = evalAndLog("db.setVersion('new version')"); 29 request.onsuccess = deleteExisting; 30 request.onerror = unexpectedErrorCallback; 31} 32 33function deleteExisting() 34{ 35 window.trans = evalAndLog("trans = event.target.result"); 36 shouldBeTrue("trans !== null"); 37 38 deleteAllObjectStores(db); 39 40 store = evalAndLog("store = db.createObjectStore('storeName', null)"); 41 42 window.index = evalAndLog("store.createIndex('indexName', '')"); 43 shouldBeTrue("store.indexNames.contains('indexName')"); 44 45 request = evalAndLog("store.add('value', 'key')"); 46 request.onsuccess = getValue; 47 request.onerror = unexpectedErrorCallback; 48} 49 50function getValue() 51{ 52 transaction = evalAndLog("db.transaction({mode: webkitIDBTransaction.READ_WRITE})"); 53 transaction.onabort = unexpectedErrorCallback; 54 var store = evalAndLog("store = transaction.objectStore('storeName')"); 55 56 request = evalAndLog("store.get('key')"); 57 request.onsuccess = addIndex; 58 request.onerror = unexpectedErrorCallback; 59} 60 61function addIndex() 62{ 63 shouldBeEqualToString("event.target.result", "value"); 64 65 request = evalAndLog("db.setVersion('new version')"); 66 request.onsuccess = deleteObjectStore; 67 request.onerror = unexpectedErrorCallback; 68} 69 70function deleteObjectStore() 71{ 72 window.trans = evalAndLog("trans = event.target.result"); 73 shouldBeTrue("trans !== null"); 74 trans.onabort = unexpectedAbortCallback; 75 76 evalAndLog("db.deleteObjectStore('storeName')"); 77 createObjectStoreAgain(); 78} 79 80function createObjectStoreAgain() 81{ 82 evalAndLog("db.createObjectStore('storeName', null)"); 83 getValueAgain(); 84} 85 86function getValueAgain() 87{ 88 transaction = evalAndLog("db.transaction({mode: webkitIDBTransaction.READ_WRITE})"); 89 transaction.onabort = unexpectedErrorCallback; 90 var store = evalAndLog("store = transaction.objectStore('storeName')"); 91 92 request = evalAndLog("store.get('key')"); 93 request.onsuccess = verifyNotFound; 94 request.onerror = unexpectedErrorCallback; 95} 96 97function verifyNotFound() 98{ 99 shouldBe("event.target.result", "undefined"); 100 shouldBeFalse("event.target.source.indexNames.contains('indexName')"); 101 102 done(); 103} 104 105test(); 106 107var successfullyParsed = true; 108</script> 109</body> 110</html> 111