dom/indexedDB/test/test_filehandle_serialization.html

changeset 0
6474c204b198
equal deleted inserted replaced
-1:000000000000 0:fd505ae01bbf
1 <!--
2 Any copyright is dedicated to the Public Domain.
3 http://creativecommons.org/publicdomain/zero/1.0/
4 -->
5 <html>
6 <head>
7 <title>Indexed Database Property Test</title>
8
9 <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
10 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
11
12 <script type="text/javascript;version=1.7">
13 function testSteps()
14 {
15 const READ_WRITE = "readwrite";
16
17 const databaseInfo = [
18 { name: window.location.pathname + "1" },
19 { name: window.location.pathname + "2" }
20 ];
21
22 const objectStoreName = "Blobs";
23
24 const testFile = getRandomFile("random.bin", 100000);
25
26 let databases = [];
27 for each (let info in databaseInfo) {
28 let request = indexedDB.open(info.name, 1);
29 request.onerror = errorHandler;
30 request.onupgradeneeded = grabEventAndContinueHandler;
31 request.onsuccess = grabEventAndContinueHandler;
32 let event = yield undefined;
33
34 is(event.type, "upgradeneeded", "Got correct event type");
35
36 let db = event.target.result;
37 db.onerror = errorHandler;
38
39 db.createObjectStore(objectStoreName, { });
40
41 event = yield undefined;
42
43 is(event.type, "success", "Got correct event type");
44
45 databases.push(db);
46 }
47
48 let db1 = databases[0];
49
50 let request = db1.mozCreateFileHandle("random.bin", "binary/random");
51 request.onsuccess = grabEventAndContinueHandler;
52 event = yield undefined;
53
54 let fileHandle = event.target.result;
55 is(getFileId(fileHandle), 1, "Correct file id");
56 is(fileHandle.name, "random.bin", "Correct name");
57 is(fileHandle.type, "binary/random", "Correct type");
58
59 let trans = db1.transaction([objectStoreName], READ_WRITE);
60 let objectStore = trans.objectStore(objectStoreName);
61
62 request = objectStore.add(fileHandle, 42);
63 request.onsuccess = grabEventAndContinueHandler;
64 event = yield undefined;
65
66 request = objectStore.get(42);
67 request.onsuccess = grabEventAndContinueHandler;
68 event = yield undefined;
69
70 let result = event.target.result;
71 is(getFileId(result), 1, "Correct file id");
72 is(result.name, fileHandle.name, "Correct name");
73 is(result.type, fileHandle.type, "Correct type");
74
75 let db2 = databases[1];
76
77 trans = db2.transaction([objectStoreName], READ_WRITE);
78 objectStore = trans.objectStore(objectStoreName);
79
80 try {
81 objectStore.add(fileHandle, 42);
82 ok(false, "Should have thrown!");
83 }
84 catch (e) {
85 ok(e instanceof DOMException, "Got exception.");
86 is(e.name, "DataCloneError", "Good error.");
87 is(e.code, DOMException.DATA_CLONE_ERR, "Good error code.");
88 }
89
90 finishTest();
91 yield undefined;
92 }
93 </script>
94 <script type="text/javascript;version=1.7" src="file.js"></script>
95 <script type="text/javascript;version=1.7" src="helpers.js"></script>
96
97 </head>
98
99 <body onload="runTest();"></body>
100
101 </html>

mercurial