OLD | NEW |
---|---|
1 <script> | 1 <script> |
2 var expectedEventData; | 2 var expectedEventData; |
3 var capturedEventData; | 3 var capturedEventData; |
4 var nextFrameId; | 4 var nextFrameId; |
5 var frameIds; | 5 var frameIds; |
6 var nextTabId; | |
7 var tabIds; | |
6 | 8 |
7 function expect(data) { | 9 function expect(data) { |
8 expectedEventData = data; | 10 expectedEventData = data; |
9 capturedEventData = []; | 11 capturedEventData = []; |
10 nextFrameId = 1; | 12 nextFrameId = 1; |
11 frameIds = {}; | 13 frameIds = {}; |
14 nextTabId = 0; | |
15 tabIds = {}; | |
12 } | 16 } |
13 | 17 |
14 function checkExpectations() { | 18 function checkExpectations() { |
15 if (capturedEventData.length < expectedEventData.length) { | 19 if (capturedEventData.length < expectedEventData.length) { |
16 return; | 20 return; |
17 } | 21 } |
18 chrome.test.assertEq(JSON.stringify(expectedEventData), | 22 chrome.test.assertEq(JSON.stringify(expectedEventData), |
19 JSON.stringify(capturedEventData)); | 23 JSON.stringify(capturedEventData)); |
20 chrome.test.succeed(); | 24 chrome.test.succeed(); |
21 } | 25 } |
22 | 26 |
23 function captureEvent(name, details) { | 27 function captureEvent(name, details) { |
24 // normalize details. | 28 // normalize details. |
25 details.timeStamp = 0; | 29 if ('timeStamp' in details) { |
26 if (details.frameId != 0) { | 30 details.timeStamp = 0; |
31 } | |
32 if (('frameId' in details) && (details.frameId != 0)) { | |
27 if (frameIds[details.frameId] === undefined) { | 33 if (frameIds[details.frameId] === undefined) { |
28 frameIds[details.frameId] = nextFrameId++; | 34 frameIds[details.frameId] = nextFrameId++; |
29 } | 35 } |
30 details.frameId = frameIds[details.frameId]; | 36 details.frameId = frameIds[details.frameId]; |
31 } | 37 } |
38 if ('tabId' in details) { | |
39 if (tabIds[details.tabId] === undefined) { | |
40 tabIds[details.tabId] = nextTabId++; | |
41 } | |
42 details.tabId = tabIds[details.tabId]; | |
43 } | |
44 if ('sourceTabId' in details) { | |
45 if (tabIds[details.sourceTabId] === undefined) { | |
46 tabIds[details.sourceTabId] = nextTabId++; | |
47 } | |
48 details.sourceTabId = tabIds[details.sourceTabId]; | |
49 } | |
32 capturedEventData.push([name, details]); | 50 capturedEventData.push([name, details]); |
33 checkExpectations(); | 51 checkExpectations(); |
34 } | 52 } |
35 | 53 |
36 chrome.experimental.webNavigation.onBeforeNavigate.addListener( | 54 chrome.experimental.webNavigation.onBeforeNavigate.addListener( |
37 function(details) { | 55 function(details) { |
38 captureEvent("onBeforeNavigate", details); | 56 captureEvent("onBeforeNavigate", details); |
39 }); | 57 }); |
40 | 58 |
41 chrome.experimental.webNavigation.onCommitted.addListener(function(details) { | 59 chrome.experimental.webNavigation.onCommitted.addListener(function(details) { |
42 captureEvent("onCommitted", details); | 60 captureEvent("onCommitted", details); |
43 }); | 61 }); |
44 | 62 |
45 chrome.experimental.webNavigation.onDOMContentLoaded.addListener( | 63 chrome.experimental.webNavigation.onDOMContentLoaded.addListener( |
46 function(details) { | 64 function(details) { |
47 captureEvent("onDOMContentLoaded", details); | 65 captureEvent("onDOMContentLoaded", details); |
48 }); | 66 }); |
49 | 67 |
50 chrome.experimental.webNavigation.onCompleted.addListener( | 68 chrome.experimental.webNavigation.onCompleted.addListener( |
51 function(details) { | 69 function(details) { |
52 captureEvent("onCompleted", details); | 70 captureEvent("onCompleted", details); |
53 }); | 71 }); |
54 | 72 |
73 chrome.experimental.webNavigation.onBeforeRetarget.addListener( | |
74 function(details) { | |
75 captureEvent("onBeforeRetarget", details); | |
76 }); | |
77 | |
55 chrome.experimental.webNavigation.onErrorOccurred.addListener( | 78 chrome.experimental.webNavigation.onErrorOccurred.addListener( |
56 function(details) { | 79 function(details) { |
57 captureEvent("onErrorOccurred", details); | 80 captureEvent("onErrorOccurred", details); |
58 }); | 81 }); |
59 | 82 |
60 var getURL = chrome.extension.getURL; | 83 var getURL = chrome.extension.getURL; |
61 chrome.tabs.getSelected(null, function(tab) { | 84 chrome.tabs.getSelected(null, function(tab) { |
62 var tabId = tab.id; | 85 var tabId = tab.id; |
63 | 86 |
64 chrome.test.runTests([ | 87 chrome.test.runTests([ |
65 /* Navigates to an URL */ | 88 /* Navigates to an URL */ |
66 function simpleLoad() { | 89 function simpleLoad() { |
67 expect([ | 90 expect([ |
68 [ "onBeforeNavigate", | 91 [ "onBeforeNavigate", |
69 { frameId: 0, | 92 { frameId: 0, |
70 requestId: 0, | 93 requestId: 0, |
71 tabId: tabId, | 94 tabId: 0, |
72 timeStamp: 0, | 95 timeStamp: 0, |
73 url: getURL('simpleLoad/a.html') }], | 96 url: getURL('simpleLoad/a.html') }], |
74 [ "onCommitted", | 97 [ "onCommitted", |
75 { frameId: 0, | 98 { frameId: 0, |
76 tabId: tabId, | 99 tabId: 0, |
77 timeStamp: 0, | 100 timeStamp: 0, |
78 transitionQualifiers: "", | 101 transitionQualifiers: "", |
79 transitionType: "link", | 102 transitionType: "link", |
80 url: getURL('simpleLoad/a.html') }], | 103 url: getURL('simpleLoad/a.html') }], |
81 [ "onDOMContentLoaded", | 104 [ "onDOMContentLoaded", |
82 { frameId: 0, | 105 { frameId: 0, |
83 tabId: tabId, | 106 tabId: 0, |
84 timeStamp: 0, | 107 timeStamp: 0, |
85 url: getURL('simpleLoad/a.html') }], | 108 url: getURL('simpleLoad/a.html') }], |
86 [ "onCompleted", | 109 [ "onCompleted", |
87 { frameId: 0, | 110 { frameId: 0, |
88 tabId: tabId, | 111 tabId: 0, |
89 timeStamp: 0, | 112 timeStamp: 0, |
90 url: getURL('simpleLoad/a.html') }]]); | 113 url: getURL('simpleLoad/a.html') }]]); |
91 chrome.tabs.update(tabId, { url: getURL('simpleLoad/a.html') }); | 114 chrome.tabs.update(tabId, { url: getURL('simpleLoad/a.html') }); |
92 }, | 115 }, |
93 | 116 |
94 /* Navigates to a.html that redirects to b.html (using javascript) | 117 /* Navigates to a.html that redirects to b.html (using javascript) |
95 after a delay of 500ms, so the initial navigation is completed and | 118 after a delay of 500ms, so the initial navigation is completed and |
96 the redirection is marked as client_redirect */ | 119 the redirection is marked as client_redirect */ |
97 function clientRedirect() { | 120 function clientRedirect() { |
98 expect([ | 121 expect([ |
99 [ "onBeforeNavigate", | 122 [ "onBeforeNavigate", |
100 { frameId: 0, | 123 { frameId: 0, |
101 requestId: 0, | 124 requestId: 0, |
102 tabId: tabId, | 125 tabId: 0, |
103 timeStamp: 0, | 126 timeStamp: 0, |
104 url: getURL('clientRedirect/a.html') }], | 127 url: getURL('clientRedirect/a.html') }], |
105 [ "onCommitted", | 128 [ "onCommitted", |
106 { frameId: 0, | 129 { frameId: 0, |
107 tabId: tabId, | 130 tabId: 0, |
108 timeStamp: 0, | 131 timeStamp: 0, |
109 transitionQualifiers: "", | 132 transitionQualifiers: "", |
110 transitionType: "link", | 133 transitionType: "link", |
111 url: getURL('clientRedirect/a.html') }], | 134 url: getURL('clientRedirect/a.html') }], |
112 [ "onDOMContentLoaded", | 135 [ "onDOMContentLoaded", |
113 { frameId: 0, | 136 { frameId: 0, |
114 tabId: tabId, | 137 tabId: 0, |
115 timeStamp: 0, | 138 timeStamp: 0, |
116 url: getURL('clientRedirect/a.html') }], | 139 url: getURL('clientRedirect/a.html') }], |
117 [ "onCompleted", | 140 [ "onCompleted", |
118 { frameId: 0, | 141 { frameId: 0, |
119 tabId: tabId, | 142 tabId: 0, |
120 timeStamp: 0, | 143 timeStamp: 0, |
121 url: getURL('clientRedirect/a.html') }], | 144 url: getURL('clientRedirect/a.html') }], |
122 [ "onBeforeNavigate", | 145 [ "onBeforeNavigate", |
123 { frameId: 0, | 146 { frameId: 0, |
124 requestId: 0, | 147 requestId: 0, |
125 tabId: tabId, | 148 tabId: 0, |
126 timeStamp: 0, | 149 timeStamp: 0, |
127 url: getURL('clientRedirect/b.html') }], | 150 url: getURL('clientRedirect/b.html') }], |
128 [ "onCommitted", | 151 [ "onCommitted", |
129 { frameId: 0, | 152 { frameId: 0, |
130 tabId: tabId, | 153 tabId: 0, |
131 timeStamp: 0, | 154 timeStamp: 0, |
132 transitionQualifiers: "client_redirect", | 155 transitionQualifiers: "client_redirect", |
133 transitionType: "link", | 156 transitionType: "link", |
134 url: getURL('clientRedirect/b.html') }], | 157 url: getURL('clientRedirect/b.html') }], |
135 [ "onDOMContentLoaded", | 158 [ "onDOMContentLoaded", |
136 { frameId: 0, | 159 { frameId: 0, |
137 tabId: tabId, | 160 tabId: 0, |
138 timeStamp: 0, | 161 timeStamp: 0, |
139 url: getURL('clientRedirect/b.html') }], | 162 url: getURL('clientRedirect/b.html') }], |
140 [ "onCompleted", | 163 [ "onCompleted", |
141 { frameId: 0, | 164 { frameId: 0, |
142 tabId: tabId, | 165 tabId: 0, |
143 timeStamp: 0, | 166 timeStamp: 0, |
144 url: getURL('clientRedirect/b.html') }]]); | 167 url: getURL('clientRedirect/b.html') }]]); |
145 chrome.tabs.update(tabId, { url: getURL('clientRedirect/a.html') }); | 168 chrome.tabs.update(tabId, { url: getURL('clientRedirect/a.html') }); |
146 }, | 169 }, |
147 | 170 |
148 /* First navigates to a.html which redirects to to b.html which uses | 171 /* First navigates to a.html which redirects to to b.html which uses |
149 history.back() to navigate back to a.html */ | 172 history.back() to navigate back to a.html */ |
150 function forwardBack() { | 173 function forwardBack() { |
151 expect([ | 174 expect([ |
152 [ "onBeforeNavigate", | 175 [ "onBeforeNavigate", |
153 { frameId: 0, | 176 { frameId: 0, |
154 requestId: 0, | 177 requestId: 0, |
155 tabId: tabId, | 178 tabId: 0, |
156 timeStamp: 0, | 179 timeStamp: 0, |
157 url: getURL('forwardBack/a.html') }], | 180 url: getURL('forwardBack/a.html') }], |
158 [ "onCommitted", | 181 [ "onCommitted", |
159 { frameId: 0, | 182 { frameId: 0, |
160 tabId: tabId, | 183 tabId: 0, |
161 timeStamp: 0, | 184 timeStamp: 0, |
162 transitionQualifiers: "", | 185 transitionQualifiers: "", |
163 transitionType: "link", | 186 transitionType: "link", |
164 url: getURL('forwardBack/a.html') }], | 187 url: getURL('forwardBack/a.html') }], |
165 [ "onDOMContentLoaded", | 188 [ "onDOMContentLoaded", |
166 { frameId: 0, | 189 { frameId: 0, |
167 tabId: tabId, | 190 tabId: 0, |
168 timeStamp: 0, | 191 timeStamp: 0, |
169 url: getURL('forwardBack/a.html') }], | 192 url: getURL('forwardBack/a.html') }], |
170 [ "onCompleted", | 193 [ "onCompleted", |
171 { frameId: 0, | 194 { frameId: 0, |
172 tabId: tabId, | 195 tabId: 0, |
173 timeStamp: 0, | 196 timeStamp: 0, |
174 url: getURL('forwardBack/a.html') }], | 197 url: getURL('forwardBack/a.html') }], |
175 [ "onBeforeNavigate", | 198 [ "onBeforeNavigate", |
176 { frameId: 0, | 199 { frameId: 0, |
177 requestId: 0, | 200 requestId: 0, |
178 tabId: tabId, | 201 tabId: 0, |
179 timeStamp: 0, | 202 timeStamp: 0, |
180 url: getURL('forwardBack/b.html') }], | 203 url: getURL('forwardBack/b.html') }], |
181 [ "onCommitted", | 204 [ "onCommitted", |
182 { frameId: 0, | 205 { frameId: 0, |
183 tabId: tabId, | 206 tabId: 0, |
184 timeStamp: 0, | 207 timeStamp: 0, |
185 transitionQualifiers: "client_redirect", | 208 transitionQualifiers: "client_redirect", |
186 transitionType: "link", | 209 transitionType: "link", |
187 url: getURL('forwardBack/b.html') }], | 210 url: getURL('forwardBack/b.html') }], |
188 [ "onDOMContentLoaded", | 211 [ "onDOMContentLoaded", |
189 { frameId: 0, | 212 { frameId: 0, |
190 tabId: tabId, | 213 tabId: 0, |
191 timeStamp: 0, | 214 timeStamp: 0, |
192 url: getURL('forwardBack/b.html') }], | 215 url: getURL('forwardBack/b.html') }], |
193 [ "onCompleted", | 216 [ "onCompleted", |
194 { frameId: 0, | 217 { frameId: 0, |
195 tabId: tabId, | 218 tabId: 0, |
196 timeStamp: 0, | 219 timeStamp: 0, |
197 url: getURL('forwardBack/b.html') }], | 220 url: getURL('forwardBack/b.html') }], |
198 [ "onBeforeNavigate", | 221 [ "onBeforeNavigate", |
199 { frameId: 0, | 222 { frameId: 0, |
200 requestId: 0, | 223 requestId: 0, |
201 tabId: tabId, | 224 tabId: 0, |
202 timeStamp: 0, | 225 timeStamp: 0, |
203 url: getURL('forwardBack/a.html') }], | 226 url: getURL('forwardBack/a.html') }], |
204 [ "onCommitted", | 227 [ "onCommitted", |
205 { frameId: 0, | 228 { frameId: 0, |
206 tabId: tabId, | 229 tabId: 0, |
207 timeStamp: 0, | 230 timeStamp: 0, |
208 transitionQualifiers: "forward_back", | 231 transitionQualifiers: "forward_back", |
209 transitionType: "link", | 232 transitionType: "link", |
210 url: getURL('forwardBack/a.html') }], | 233 url: getURL('forwardBack/a.html') }], |
211 [ "onDOMContentLoaded", | 234 [ "onDOMContentLoaded", |
212 { frameId: 0, | 235 { frameId: 0, |
213 tabId: tabId, | 236 tabId: 0, |
214 timeStamp: 0, | 237 timeStamp: 0, |
215 url: getURL('forwardBack/a.html') }], | 238 url: getURL('forwardBack/a.html') }], |
216 [ "onCompleted", | 239 [ "onCompleted", |
217 { frameId: 0, | 240 { frameId: 0, |
218 tabId: tabId, | 241 tabId: 0, |
219 timeStamp: 0, | 242 timeStamp: 0, |
220 url: getURL('forwardBack/a.html') }]]); | 243 url: getURL('forwardBack/a.html') }]]); |
221 chrome.tabs.update(tabId, { url: getURL('forwardBack/a.html') }); | 244 chrome.tabs.update(tabId, { url: getURL('forwardBack/a.html') }); |
222 }, | 245 }, |
223 | 246 |
224 /* Navigates to a.html which includes b.html as an iframe. b.html | 247 /* Navigates to a.html which includes b.html as an iframe. b.html |
225 redirects to c.html. */ | 248 redirects to c.html. */ |
226 function iframe() { | 249 function iframe() { |
227 expect([ | 250 expect([ |
228 [ "onBeforeNavigate", | 251 [ "onBeforeNavigate", |
229 { frameId: 0, | 252 { frameId: 0, |
230 requestId: 0, | 253 requestId: 0, |
231 tabId: tabId, | 254 tabId: 0, |
232 timeStamp: 0, | 255 timeStamp: 0, |
233 url: getURL('iframe/a.html') }], | 256 url: getURL('iframe/a.html') }], |
234 [ "onCommitted", | 257 [ "onCommitted", |
235 { frameId: 0, | 258 { frameId: 0, |
236 tabId: tabId, | 259 tabId: 0, |
237 timeStamp: 0, | 260 timeStamp: 0, |
238 transitionQualifiers: "", | 261 transitionQualifiers: "", |
239 transitionType: "link", | 262 transitionType: "link", |
240 url: getURL('iframe/a.html') }], | 263 url: getURL('iframe/a.html') }], |
241 [ "onBeforeNavigate", | 264 [ "onBeforeNavigate", |
242 { frameId: 1, | 265 { frameId: 1, |
243 requestId: 0, | 266 requestId: 0, |
244 tabId: tabId, | 267 tabId: 0, |
245 timeStamp: 0, | 268 timeStamp: 0, |
246 url: getURL('iframe/b.html') }], | 269 url: getURL('iframe/b.html') }], |
247 [ "onDOMContentLoaded", | 270 [ "onDOMContentLoaded", |
248 { frameId: 0, | 271 { frameId: 0, |
249 tabId: tabId, | 272 tabId: 0, |
250 timeStamp: 0, | 273 timeStamp: 0, |
251 url: getURL('iframe/a.html') }], | 274 url: getURL('iframe/a.html') }], |
252 [ "onCommitted", | 275 [ "onCommitted", |
253 { frameId: 1, | 276 { frameId: 1, |
254 tabId: tabId, | 277 tabId: 0, |
255 timeStamp: 0, | 278 timeStamp: 0, |
256 transitionQualifiers: "", | 279 transitionQualifiers: "", |
257 transitionType: "auto_subframe", | 280 transitionType: "auto_subframe", |
258 url: getURL('iframe/b.html') }], | 281 url: getURL('iframe/b.html') }], |
259 [ "onDOMContentLoaded", | 282 [ "onDOMContentLoaded", |
260 { frameId: 1, | 283 { frameId: 1, |
261 tabId: tabId, | 284 tabId: 0, |
262 timeStamp: 0, | 285 timeStamp: 0, |
263 url: getURL('iframe/b.html') }], | 286 url: getURL('iframe/b.html') }], |
264 [ "onCompleted", | 287 [ "onCompleted", |
265 { frameId: 1, | 288 { frameId: 1, |
266 tabId: tabId, | 289 tabId: 0, |
267 timeStamp: 0, | 290 timeStamp: 0, |
268 url: getURL('iframe/b.html') }], | 291 url: getURL('iframe/b.html') }], |
269 [ "onCompleted", | 292 [ "onCompleted", |
270 { frameId: 0, | 293 { frameId: 0, |
271 tabId: tabId, | 294 tabId: 0, |
272 timeStamp: 0, | 295 timeStamp: 0, |
273 url: getURL('iframe/a.html') }], | 296 url: getURL('iframe/a.html') }], |
274 [ "onBeforeNavigate", | 297 [ "onBeforeNavigate", |
275 { frameId: 1, | 298 { frameId: 1, |
276 requestId: 0, | 299 requestId: 0, |
277 tabId: tabId, | 300 tabId: 0, |
278 timeStamp: 0, | 301 timeStamp: 0, |
279 url: getURL('iframe/c.html') }], | 302 url: getURL('iframe/c.html') }], |
280 [ "onCommitted", | 303 [ "onCommitted", |
281 { frameId: 1, | 304 { frameId: 1, |
282 tabId: tabId, | 305 tabId: 0, |
283 timeStamp: 0, | 306 timeStamp: 0, |
284 transitionQualifiers: "", | 307 transitionQualifiers: "", |
285 transitionType: "manual_subframe", | 308 transitionType: "manual_subframe", |
286 url: getURL('iframe/c.html') }], | 309 url: getURL('iframe/c.html') }], |
287 [ "onDOMContentLoaded", | 310 [ "onDOMContentLoaded", |
288 { frameId: 1, | 311 { frameId: 1, |
289 tabId: tabId, | 312 tabId: 0, |
290 timeStamp: 0, | 313 timeStamp: 0, |
291 url: getURL('iframe/c.html') }], | 314 url: getURL('iframe/c.html') }], |
292 [ "onCompleted", | 315 [ "onCompleted", |
293 { frameId: 1, | 316 { frameId: 1, |
294 tabId: tabId, | 317 tabId: 0, |
295 timeStamp: 0, | 318 timeStamp: 0, |
296 url: getURL('iframe/c.html') }]]); | 319 url: getURL('iframe/c.html') }]]); |
297 chrome.tabs.update(tabId, { url: getURL('iframe/a.html') }); | 320 chrome.tabs.update(tabId, { url: getURL('iframe/a.html') }); |
298 }, | 321 }, |
299 | 322 |
300 /* Navigates to d.html which includes e.html and f.html as iframes. To be | 323 /* Navigates to d.html which includes e.html and f.html as iframes. To be |
301 able to predict which iframe has which id, the iframe for f.html is | 324 able to predict which iframe has which id, the iframe for f.html is |
302 created by javascript. f.html then navigates to g.html. */ | 325 created by javascript. f.html then navigates to g.html. */ |
303 function iframe2() { | 326 function iframe2() { |
304 expect([ | 327 expect([ |
305 [ "onBeforeNavigate", | 328 [ "onBeforeNavigate", |
306 { frameId: 0, | 329 { frameId: 0, |
307 requestId: 0, | 330 requestId: 0, |
308 tabId: tabId, | 331 tabId: 0, |
309 timeStamp: 0, | 332 timeStamp: 0, |
310 url: getURL('iframe/d.html') }], | 333 url: getURL('iframe/d.html') }], |
311 [ "onCommitted", | 334 [ "onCommitted", |
312 { frameId: 0, | 335 { frameId: 0, |
313 tabId: tabId, | 336 tabId: 0, |
314 timeStamp: 0, | 337 timeStamp: 0, |
315 transitionQualifiers: "", | 338 transitionQualifiers: "", |
316 transitionType: "link", | 339 transitionType: "link", |
317 url: getURL('iframe/d.html') }], | 340 url: getURL('iframe/d.html') }], |
318 [ "onBeforeNavigate", | 341 [ "onBeforeNavigate", |
319 { frameId: 1, | 342 { frameId: 1, |
320 requestId: 0, | 343 requestId: 0, |
321 tabId: tabId, | 344 tabId: 0, |
322 timeStamp: 0, | 345 timeStamp: 0, |
323 url: getURL('iframe/e.html') }], | 346 url: getURL('iframe/e.html') }], |
324 [ "onDOMContentLoaded", | 347 [ "onDOMContentLoaded", |
325 { frameId: 0, | 348 { frameId: 0, |
326 tabId: tabId, | 349 tabId: 0, |
327 timeStamp: 0, | 350 timeStamp: 0, |
328 url: getURL('iframe/d.html') }], | 351 url: getURL('iframe/d.html') }], |
329 [ "onCommitted", | 352 [ "onCommitted", |
330 { frameId: 1, | 353 { frameId: 1, |
331 tabId: tabId, | 354 tabId: 0, |
332 timeStamp: 0, | 355 timeStamp: 0, |
333 transitionQualifiers: "", | 356 transitionQualifiers: "", |
334 transitionType: "auto_subframe", | 357 transitionType: "auto_subframe", |
335 url: getURL('iframe/e.html') }], | 358 url: getURL('iframe/e.html') }], |
336 [ "onDOMContentLoaded", | 359 [ "onDOMContentLoaded", |
337 { frameId: 1, | 360 { frameId: 1, |
338 tabId: tabId, | 361 tabId: 0, |
339 timeStamp: 0, | 362 timeStamp: 0, |
340 url: getURL('iframe/e.html') }], | 363 url: getURL('iframe/e.html') }], |
341 [ "onBeforeNavigate", | 364 [ "onBeforeNavigate", |
342 { frameId: 2, | 365 { frameId: 2, |
343 requestId: 0, | 366 requestId: 0, |
344 tabId: tabId, | 367 tabId: 0, |
345 timeStamp: 0, | 368 timeStamp: 0, |
346 url: getURL('iframe/f.html') }], | 369 url: getURL('iframe/f.html') }], |
347 [ "onCompleted", | 370 [ "onCompleted", |
348 { frameId: 1, | 371 { frameId: 1, |
349 tabId: tabId, | 372 tabId: 0, |
350 timeStamp: 0, | 373 timeStamp: 0, |
351 url: getURL('iframe/e.html') }], | 374 url: getURL('iframe/e.html') }], |
352 [ "onCommitted", | 375 [ "onCommitted", |
353 { frameId: 2, | 376 { frameId: 2, |
354 tabId: tabId, | 377 tabId: 0, |
355 timeStamp: 0, | 378 timeStamp: 0, |
356 transitionQualifiers: "", | 379 transitionQualifiers: "", |
357 transitionType: "auto_subframe", | 380 transitionType: "auto_subframe", |
358 url: getURL('iframe/f.html') }], | 381 url: getURL('iframe/f.html') }], |
359 [ "onDOMContentLoaded", | 382 [ "onDOMContentLoaded", |
360 { frameId: 2, | 383 { frameId: 2, |
361 tabId: tabId, | 384 tabId: 0, |
362 timeStamp: 0, | 385 timeStamp: 0, |
363 url: getURL('iframe/f.html') }], | 386 url: getURL('iframe/f.html') }], |
364 [ "onCompleted", | 387 [ "onCompleted", |
365 { frameId: 2, | 388 { frameId: 2, |
366 tabId: tabId, | 389 tabId: 0, |
367 timeStamp: 0, | 390 timeStamp: 0, |
368 url: getURL('iframe/f.html') }], | 391 url: getURL('iframe/f.html') }], |
369 [ "onCompleted", | 392 [ "onCompleted", |
370 { frameId: 0, | 393 { frameId: 0, |
371 tabId: tabId, | 394 tabId: 0, |
372 timeStamp: 0, | 395 timeStamp: 0, |
373 url: getURL('iframe/d.html') }], | 396 url: getURL('iframe/d.html') }], |
374 [ "onBeforeNavigate", | 397 [ "onBeforeNavigate", |
375 { frameId: 2, | 398 { frameId: 2, |
376 requestId: 0, | 399 requestId: 0, |
377 tabId: tabId, | 400 tabId: 0, |
378 timeStamp: 0, | 401 timeStamp: 0, |
379 url: getURL('iframe/g.html') }], | 402 url: getURL('iframe/g.html') }], |
380 [ "onCommitted", | 403 [ "onCommitted", |
381 { frameId: 2, | 404 { frameId: 2, |
382 tabId: tabId, | 405 tabId: 0, |
383 timeStamp: 0, | 406 timeStamp: 0, |
384 transitionQualifiers: "", | 407 transitionQualifiers: "", |
385 transitionType: "manual_subframe", | 408 transitionType: "manual_subframe", |
386 url: getURL('iframe/g.html') }], | 409 url: getURL('iframe/g.html') }], |
387 [ "onDOMContentLoaded", | 410 [ "onDOMContentLoaded", |
388 { frameId: 2, | 411 { frameId: 2, |
389 tabId: tabId, | 412 tabId: 0, |
390 timeStamp: 0, | 413 timeStamp: 0, |
391 url: getURL('iframe/g.html') }], | 414 url: getURL('iframe/g.html') }], |
392 [ "onCompleted", | 415 [ "onCompleted", |
393 { frameId: 2, | 416 { frameId: 2, |
394 tabId: tabId, | 417 tabId: 0, |
395 timeStamp: 0, | 418 timeStamp: 0, |
396 url: getURL('iframe/g.html') }]]); | 419 url: getURL('iframe/g.html') }]]); |
397 chrome.tabs.update(tabId, { url: getURL('iframe/d.html') }); | 420 chrome.tabs.update(tabId, { url: getURL('iframe/d.html') }); |
398 }, | 421 }, |
422 | |
423 /* Opens a new tab from javascript. */ | |
424 function openTab() { | |
425 expect([ | |
426 [ "onBeforeNavigate", | |
427 { frameId: 0, | |
428 requestId: 0, | |
429 tabId: 0, | |
430 timeStamp: 0, | |
431 url: getURL('openTab/a.html') }], | |
432 [ "onCommitted", | |
433 { frameId: 0, | |
434 tabId: 0, | |
435 timeStamp: 0, | |
436 transitionQualifiers: "", | |
437 transitionType: "link", | |
438 url: getURL('openTab/a.html') }], | |
439 [ "onDOMContentLoaded", | |
440 { frameId: 0, | |
441 tabId: 0, | |
442 timeStamp: 0, | |
443 url: getURL('openTab/a.html') }], | |
444 [ "onCompleted", | |
445 { frameId: 0, | |
446 tabId: 0, | |
447 timeStamp: 0, | |
448 url: getURL('openTab/a.html') }], | |
449 [ "onBeforeRetarget", | |
450 { sourceTabId: 0, | |
451 sourceUrl: getURL('openTab/a.html'), | |
yzshen1
2011/01/18 21:49:24
[Nice to have, optional]
Test the scenario that a
| |
452 targetUrl: getURL('openTab/b.html'), | |
453 timeStamp: 0 }], | |
454 [ "onBeforeNavigate", | |
455 { frameId: 0, | |
456 requestId: 0, | |
457 tabId: 1, | |
458 timeStamp: 0, | |
459 url: getURL('openTab/b.html') }], | |
460 [ "onCommitted", | |
461 { frameId: 0, | |
462 tabId: 1, | |
463 timeStamp: 0, | |
464 transitionQualifiers: "", | |
465 transitionType: "link", | |
466 url: getURL('openTab/b.html') }], | |
467 [ "onDOMContentLoaded", | |
468 { frameId: 0, | |
469 tabId: 1, | |
470 timeStamp: 0, | |
471 url: getURL('openTab/b.html') }], | |
472 [ "onCompleted", | |
473 { frameId: 0, | |
474 tabId: 1, | |
475 timeStamp: 0, | |
476 url: getURL('openTab/b.html') }]]); | |
477 chrome.tabs.update(tabId, { url: getURL('openTab/a.html') }); | |
478 }, | |
399 ]); | 479 ]); |
400 }); | 480 }); |
401 </script> | 481 </script> |
OLD | NEW |