- add sources.
[platform/framework/web/crosswalk.git] / src / chrome / test / data / extensions / api_test / webnavigation / test_iframe.js
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 onload = function() {
6   var getURL = chrome.extension.getURL;
7   chrome.tabs.create({"url": "about:blank"}, function(tab) {
8     var tabId = tab.id;
9
10     chrome.test.runTests([
11       // Navigates to a.html which includes b.html as an iframe. b.html
12       // redirects to c.html.
13       function iframe() {
14         expect([
15           { label: "a-onBeforeNavigate",
16             event: "onBeforeNavigate",
17             details: { frameId: 0,
18                        parentFrameId: -1,
19                        processId: 0,
20                        tabId: 0,
21                        timeStamp: 0,
22                        url: getURL('iframe/a.html') }},
23           { label: "a-onCommitted",
24             event: "onCommitted",
25             details: { frameId: 0,
26                        processId: 0,
27                        tabId: 0,
28                        timeStamp: 0,
29                        transitionQualifiers: [],
30                        transitionType: "link",
31                        url: getURL('iframe/a.html') }},
32           { label: "a-onDOMContentLoaded",
33             event: "onDOMContentLoaded",
34             details: { frameId: 0,
35                        processId: 0,
36                        tabId: 0,
37                        timeStamp: 0,
38                        url: getURL('iframe/a.html') }},
39           { label: "a-onCompleted",
40             event: "onCompleted",
41             details: { frameId: 0,
42                        processId: 0,
43                        tabId: 0,
44                        timeStamp: 0,
45                        url: getURL('iframe/a.html') }},
46           { label: "b-onBeforeNavigate",
47             event: "onBeforeNavigate",
48             details: { frameId: 1,
49                        parentFrameId: 0,
50                        processId: 0,
51                        tabId: 0,
52                        timeStamp: 0,
53                        url: getURL('iframe/b.html') }},
54           { label: "b-onCommitted",
55             event: "onCommitted",
56             details: { frameId: 1,
57                        processId: 0,
58                        tabId: 0,
59                        timeStamp: 0,
60                        transitionQualifiers: [],
61                        transitionType: "auto_subframe",
62                        url: getURL('iframe/b.html') }},
63           { label: "b-onDOMContentLoaded",
64             event: "onDOMContentLoaded",
65             details: { frameId: 1,
66                        processId: 0,
67                        tabId: 0,
68                        timeStamp: 0,
69                        url: getURL('iframe/b.html') }},
70           { label: "b-onCompleted",
71             event: "onCompleted",
72             details: { frameId: 1,
73                        processId: 0,
74                        tabId: 0,
75                        timeStamp: 0,
76                        url: getURL('iframe/b.html') }},
77           { label: "c-onBeforeNavigate",
78             event: "onBeforeNavigate",
79             details: { frameId: 1,
80                        parentFrameId: 0,
81                        processId: 0,
82                        tabId: 0,
83                        timeStamp: 0,
84                        url: getURL('iframe/c.html') }},
85           { label: "c-onCommitted",
86             event: "onCommitted",
87             details: { frameId: 1,
88                        processId: 0,
89                        tabId: 0,
90                        timeStamp: 0,
91                        transitionQualifiers: [],
92                        transitionType: "auto_subframe",
93                        url: getURL('iframe/c.html') }},
94           { label: "c-onDOMContentLoaded",
95             event: "onDOMContentLoaded",
96             details: { frameId: 1,
97                        processId: 0,
98                        tabId: 0,
99                        timeStamp: 0,
100                        url: getURL('iframe/c.html') }},
101           { label: "c-onCompleted",
102             event: "onCompleted",
103             details: { frameId: 1,
104                        processId: 0,
105                        tabId: 0,
106                        timeStamp: 0,
107                        url: getURL('iframe/c.html') }}],
108           [ navigationOrder("a-"),
109             navigationOrder("b-"),
110             navigationOrder("c-"),
111             isIFrameOf("b-", "a-"),
112             isLoadedBy("c-", "b-")]);
113         chrome.tabs.update(tabId, { url: getURL('iframe/a.html') });
114       },
115
116       // Navigates to d.html which includes e.html and f.html as iframes. To be
117       // able to predict which iframe has which id, the iframe for f.html is
118       // created by javascript. f.html then navigates to g.html.
119       function iframeMultiple() {
120         expect([
121           { label: "d-onBeforeNavigate",
122             event: "onBeforeNavigate",
123             details: { frameId: 0,
124                        parentFrameId: -1,
125                        processId: 0,
126                        tabId: 0,
127                        timeStamp: 0,
128                        url: getURL('iframe/d.html') }},
129           { label: "d-onCommitted",
130             event: "onCommitted",
131             details: { frameId: 0,
132                        processId: 0,
133                        tabId: 0,
134                        timeStamp: 0,
135                        transitionQualifiers: [],
136                        transitionType: "link",
137                        url: getURL('iframe/d.html') }},
138           { label: "d-onDOMContentLoaded",
139             event: "onDOMContentLoaded",
140             details: { frameId: 0,
141                        processId: 0,
142                        tabId: 0,
143                        timeStamp: 0,
144                        url: getURL('iframe/d.html') }},
145           { label: "d-onCompleted",
146             event: "onCompleted",
147             details: { frameId: 0,
148                        processId: 0,
149                        tabId: 0,
150                        timeStamp: 0,
151                        url: getURL('iframe/d.html') }},
152           { label: "e-onBeforeNavigate",
153             event: "onBeforeNavigate",
154             details: { frameId: 1,
155                        parentFrameId: 0,
156                        processId: 0,
157                        tabId: 0,
158                        timeStamp: 0,
159                        url: getURL('iframe/e.html') }},
160           { label: "e-onCommitted",
161             event: "onCommitted",
162             details: { frameId: 1,
163                        processId: 0,
164                        tabId: 0,
165                        timeStamp: 0,
166                        transitionQualifiers: [],
167                        transitionType: "auto_subframe",
168                        url: getURL('iframe/e.html') }},
169           { label: "e-onDOMContentLoaded",
170             event: "onDOMContentLoaded",
171             details: { frameId: 1,
172                        processId: 0,
173                        tabId: 0,
174                        timeStamp: 0,
175                        url: getURL('iframe/e.html') }},
176           { label: "e-onCompleted",
177             event: "onCompleted",
178             details: { frameId: 1,
179                        processId: 0,
180                        tabId: 0,
181                        timeStamp: 0,
182                        url: getURL('iframe/e.html') }},
183           { label: "f-onBeforeNavigate",
184             event: "onBeforeNavigate",
185             details: { frameId: 2,
186                        parentFrameId: 0,
187                        processId: 0,
188                        tabId: 0,
189                        timeStamp: 0,
190                        url: getURL('iframe/f.html') }},
191           { label: "f-onCommitted",
192             event: "onCommitted",
193             details: { frameId: 2,
194                        processId: 0,
195                        tabId: 0,
196                        timeStamp: 0,
197                        transitionQualifiers: [],
198                        transitionType: "auto_subframe",
199                        url: getURL('iframe/f.html') }},
200           { label: "f-onDOMContentLoaded",
201             event: "onDOMContentLoaded",
202             details: { frameId: 2,
203                        processId: 0,
204                        tabId: 0,
205                        timeStamp: 0,
206                        url: getURL('iframe/f.html') }},
207           { label: "f-onCompleted",
208             event: "onCompleted",
209             details: { frameId: 2,
210                        processId: 0,
211                        tabId: 0,
212                        timeStamp: 0,
213                        url: getURL('iframe/f.html') }},
214           { label: "g-onBeforeNavigate",
215             event: "onBeforeNavigate",
216             details: { frameId: 2,
217                        parentFrameId: 0,
218                        processId: 0,
219                        tabId: 0,
220                        timeStamp: 0,
221                        url: getURL('iframe/g.html') }},
222           { label: "g-onCommitted",
223             event: "onCommitted",
224             details: { frameId: 2,
225                        processId: 0,
226                        tabId: 0,
227                        timeStamp: 0,
228                        transitionQualifiers: [],
229                        transitionType: "auto_subframe",
230                        url: getURL('iframe/g.html') }},
231           { label: "g-onDOMContentLoaded",
232             event: "onDOMContentLoaded",
233             details: { frameId: 2,
234                        processId: 0,
235                        tabId: 0,
236                        timeStamp: 0,
237                        url: getURL('iframe/g.html') }},
238           { label: "g-onCompleted",
239             event: "onCompleted",
240             details: { frameId: 2,
241                        processId: 0,
242                        tabId: 0,
243                        timeStamp: 0,
244                        url: getURL('iframe/g.html') }}],
245           [ navigationOrder("d-"),
246             navigationOrder("e-"),
247             navigationOrder("f-"),
248             navigationOrder("g-"),
249             isIFrameOf("e-", "d-"),
250             ["d-onDOMContentLoaded", "f-onBeforeNavigate", "f-onCompleted",
251              "d-onCompleted"],
252             isLoadedBy("g-", "f-")]);
253         chrome.tabs.update(tabId, { url: getURL('iframe/d.html') });
254       },
255
256       // Navigates to h.html which includes i.html that triggers a navigation
257       // on the main frame.
258       function iframeNavigate() {
259         expect([
260           { label: "h-onBeforeNavigate",
261             event: "onBeforeNavigate",
262             details: { frameId: 0,
263                        parentFrameId: -1,
264                        processId: 0,
265                        tabId: 0,
266                        timeStamp: 0,
267                        url: getURL('iframe/h.html') }},
268           { label: "h-onCommitted",
269             event: "onCommitted",
270             details: { frameId: 0,
271                        processId: 0,
272                        tabId: 0,
273                        timeStamp: 0,
274                        transitionQualifiers: [],
275                        transitionType: "link",
276                        url: getURL('iframe/h.html') }},
277           { label: "h-onDOMContentLoaded",
278             event: "onDOMContentLoaded",
279             details: { frameId: 0,
280                        processId: 0,
281                        tabId: 0,
282                        timeStamp: 0,
283                        url: getURL('iframe/h.html') }},
284           { label: "h-onCompleted",
285             event: "onCompleted",
286             details: { frameId: 0,
287                        processId: 0,
288                        tabId: 0,
289                        timeStamp: 0,
290                        url: getURL('iframe/h.html') }},
291           { label: "i-onBeforeNavigate",
292             event: "onBeforeNavigate",
293             details: { frameId: 1,
294                        parentFrameId: 0,
295                        processId: 0,
296                        tabId: 0,
297                        timeStamp: 0,
298                        url: getURL('iframe/i.html') }},
299           { label: "i-onCommitted",
300             event: "onCommitted",
301             details: { frameId: 1,
302                        processId: 0,
303                        tabId: 0,
304                        timeStamp: 0,
305                        transitionQualifiers: [],
306                        transitionType: "auto_subframe",
307                        url: getURL('iframe/i.html') }},
308           { label: "i-onDOMContentLoaded",
309             event: "onDOMContentLoaded",
310             details: { frameId: 1,
311                        processId: 0,
312                        tabId: 0,
313                        timeStamp: 0,
314                        url: getURL('iframe/i.html') }},
315           { label: "i-onCompleted",
316             event: "onCompleted",
317             details: { frameId: 1,
318                        processId: 0,
319                        tabId: 0,
320                        timeStamp: 0,
321                        url: getURL('iframe/i.html') }},
322           { label: "c-onBeforeNavigate",
323             event: "onBeforeNavigate",
324             details: { frameId: 0,
325                        parentFrameId: -1,
326                        processId: 0,
327                        tabId: 0,
328                        timeStamp: 0,
329                        url: getURL('iframe/c.html') }},
330           { label: "c-onCommitted",
331             event: "onCommitted",
332             details: { frameId: 0,
333                        processId: 0,
334                        tabId: 0,
335                        timeStamp: 0,
336                        transitionQualifiers: ['maybe_client_redirect'],
337                        transitionType: "link",
338                        url: getURL('iframe/c.html') }},
339           { label: "c-onDOMContentLoaded",
340             event: "onDOMContentLoaded",
341             details: { frameId: 0,
342                        processId: 0,
343                        tabId: 0,
344                        timeStamp: 0,
345                        url: getURL('iframe/c.html') }},
346           { label: "c-onCompleted",
347             event: "onCompleted",
348             details: { frameId: 0,
349                        processId: 0,
350                        tabId: 0,
351                        timeStamp: 0,
352                        url: getURL('iframe/c.html') }}],
353           [ navigationOrder("h-"),
354             navigationOrder("i-"),
355             navigationOrder("c-"),
356             isIFrameOf("i-", "h-"),
357             isLoadedBy("c-", "i-") ]);
358         chrome.tabs.update(tabId, { url: getURL('iframe/h.html') });
359       },
360     ]);
361   });
362 };