Thu, 22 Jan 2015 13:21:57 +0100
Incorporate requested changes from Mozilla in review:
https://bugzilla.mozilla.org/show_bug.cgi?id=1123480#c6
1 <!DOCTYPE HTML>
2 <html>
3 <head>
4 <title>Test for DOMCursor</title>
5 <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
6 <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
7 </head>
8 <body>
9 <p id="display"></p>
10 <div id="content" style="display: none">
12 </div>
13 <pre id="test">
14 <script class="testbody" type="application/javascript;version=1.7">
15 "use strict";
17 SimpleTest.waitForExplicitFinish();
19 var reqserv = SpecialPowers.getDOMRequestService();
20 ok("createRequest" in reqserv, "appears to be a service");
22 var req;
23 var lastContinue = false;
25 var index = 0;
27 function next() {
28 if (index < tests.length) {
29 ok(true, "Begin test");
30 tests[index++]();
31 } else {
32 ok(true, "All done");
33 SimpleTest.finish();
34 }
35 }
37 var tests = [
38 function() {
39 // create a cursor, test its interface and its initial state
40 req = reqserv.createCursor(window, function() {
41 if (lastContinue) {
42 reqserv.fireDone(req);
43 } else {
44 reqserv.fireSuccess(req, "next result")
45 }
46 });
47 ok("result" in req, "cursor has result");
48 ok("error" in req, "cursor has error");
49 ok("onsuccess" in req, "cursor has onsuccess");
50 ok("onerror" in req, "cursor has onerror");
51 ok("readyState" in req, "cursor has readyState");
52 ok("done" in req, "cursor has finished");
53 ok("continue" in req, "cursor has continue");
55 is(req.readyState, "pending", "readyState is pending");
56 is(req.result, undefined, "result is undefined");
57 is(req.onsuccess, null, "onsuccess is null");
58 is(req.onerror, null, "onerror is null");
59 next();
60 },
61 function() {
62 // fire success
63 req.onsuccess = function(e) {
64 ok(e, "got success event");
65 is(e.type, "success", "correct type during success");
66 is(e.target, req, "correct target during success");
67 is(req.readyState, "done", "correct readyState after success");
68 is(req.error, null, "correct error after success");
69 is(req.result, "my result", "correct result after success");
70 is(req.done, false, "cursor is not done after continue")
71 next();
72 }
73 reqserv.fireSuccess(req, "my result");
74 },
75 function() {
76 // continue
77 req.onsuccess = function(e) {
78 ok(e, "got success event after continue");
79 is(e.type, "success", "correct type during continue");
80 is(e.target, req, "correct target during continue");
81 is(req.readyState, "done", "correct readyState after continue");
82 is(req.error, null, "correct error after continue");
83 is(req.result, "next result", "correct result after continue");
84 is(req.done, false, "cursor is not done after continue")
85 next();
86 }
87 req.continue();
88 try {
89 req.continue();
90 ok(false, "calling continue twice should fail");
91 } catch (e) {
92 ok(true, "calling continue twice should fail");
93 }
94 },
95 function() {
96 // FireDone
97 req.onsuccess = function(e) {
98 ok(e, "got success event after continue");
99 is(e.type, "success", "correct type during continue");
100 is(e.target, req, "correct target during continue");
101 is(req.readyState, "done", "correct readyState after continue");
102 is(req.error, null, "correct error after continue");
103 is(req.result, undefined, "no result after last continue");
104 is(req.done, true, "cursor is done after last continue")
105 try {
106 req.continue();
107 ok(false, "continue when cursor is done should fail");
108 } catch (e) {
109 ok(true, "continue when cursor is done should fail");
110 }
112 next();
113 }
114 lastContinue = true;
115 req.continue();
116 },
117 function() {
118 // fire error
119 req = reqserv.createCursor(window, function(){});
120 req.onerror = function(e) {
121 ok(e, "got success event");
122 is(e.type, "error", "correct type during error");
123 is(e.target, req, "correct target during error");
124 is(req.readyState, "done", "correct readyState after error");
125 is(req.error.name, "error msg", "correct error after error");
126 is(req.result, undefined, "correct result after error");
127 try {
128 req.continue();
129 ok(false, "continue while in an error state should fail");
130 } catch (e) {
131 ok(true, "continue while in an error state should fail");
132 }
134 next();
135 }
136 reqserv.fireError(req, "error msg");
137 }
138 ];
140 next();
142 </script>
143 </pre>
144 </body>
145 </html>