• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 read-only transactions in IndexedDB.");
14if (window.layoutTestController)
15    layoutTestController.waitUntilDone();
16
17function test()
18{
19    shouldBeTrue("'webkitIndexedDB' in window");
20    shouldBeFalse("webkitIndexedDB == null");
21
22    request = evalAndLog("webkitIndexedDB.open('transaction-read-only')");
23    request.onsuccess = openSuccess;
24    request.onerror = unexpectedErrorCallback;
25}
26
27function openSuccess()
28{
29    debug("openSuccess():");
30    window.db = evalAndLog("db = event.target.result");
31    request = evalAndLog("result = db.setVersion('version 1')");
32    request.onsuccess = cleanDatabase;
33    request.onerror = unexpectedErrorCallback;
34}
35
36function cleanDatabase()
37{
38    deleteAllObjectStores(db);
39
40    event.target.result.oncomplete = setVersionDone;
41    event.target.result.onabort = unexpectedAbortCallback;
42    store = evalAndLog("store = db.createObjectStore('store')");
43    evalAndLog("store.put('x', 'y')");
44}
45
46function setVersionDone()
47{
48    trans = evalAndLog("trans = db.transaction()");
49    evalAndExpectException("trans.objectStore('store').put('a', 'b')", "webkitIDBDatabaseException.READ_ONLY_ERR");
50
51    trans = evalAndLog("trans = db.transaction()");
52    evalAndExpectException("trans.objectStore('store').delete('x')", "webkitIDBDatabaseException.READ_ONLY_ERR");
53
54    trans = evalAndLog("trans = db.transaction()");
55    cur = evalAndLog("cur = trans.objectStore('store').openCursor()");
56    cur.onsuccess = gotCursor;
57    cur.onerror = unexpectedErrorCallback;
58}
59
60function gotCursor()
61{
62    shouldBeFalse("!event.target.result");
63    evalAndExpectException("event.target.result.delete()", "webkitIDBDatabaseException.READ_ONLY_ERR");
64
65    done();
66}
67
68var successfullyParsed = true;
69
70test();
71
72</script>
73</body>
74</html>
75