1 // Copyright 2013 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.
6 var getURL
= chrome
.extension
.getURL
;
8 "http://127.0.0.1:PORT/extensions/api_test/webnavigation/" +
9 "crossProcess/empty.html";
10 var URL_REDIRECT
= "http://www.a.com:PORT/server-redirect";
11 var URL_TEST
= "http://127.0.0.1:PORT/test";
12 chrome
.tabs
.create({"url": "about:blank"}, function(tab
) {
14 chrome
.test
.getConfig(function(config
) {
15 var fixPort = function(url
) {
16 return url
.replace(/PORT/g, config
.testServer
.port
);
18 URL_REGULAR
= fixPort(URL_REGULAR
);
19 URL_REDIRECT
= fixPort(URL_REDIRECT
);
20 URL_TEST
= fixPort(URL_TEST
);
22 chrome
.test
.runTests([
23 // Navigates from an extension page to a HTTP page which causes a
25 function crossProcess() {
27 { label
: "a-onBeforeNavigate",
28 event
: "onBeforeNavigate",
29 details
: { frameId
: 0,
34 url
: getURL('a.html') }},
35 { label
: "a-onCommitted",
37 details
: { frameId
: 0,
41 transitionQualifiers
: [],
42 transitionType
: "link",
43 url
: getURL('a.html') }},
44 { label
: "a-onDOMContentLoaded",
45 event
: "onDOMContentLoaded",
46 details
: { frameId
: 0,
50 url
: getURL('a.html') }},
51 { label
: "a-onCompleted",
53 details
: { frameId
: 0,
57 url
: getURL('a.html') }},
58 { label
: "b-onBeforeNavigate",
59 event
: "onBeforeNavigate",
60 details
: { frameId
: 0,
66 { label
: "b-onCommitted",
68 details
: { frameId
: 0,
72 transitionQualifiers
: [],
73 transitionType
: "link",
75 { label
: "b-onDOMContentLoaded",
76 event
: "onDOMContentLoaded",
77 details
: { frameId
: 0,
82 { label
: "b-onCompleted",
84 details
: { frameId
: 0,
89 [ navigationOrder("a-"), navigationOrder("b-") ]);
93 { url
: getURL('a.html?' + config
.testServer
.port
) });
96 // Redirects through an app extent, should cause two process switches.
97 function crossProcessRedirect() {
99 { label
: "a-onBeforeNavigate",
100 event
: "onBeforeNavigate",
101 details
: { frameId
: 0,
106 url
: getURL('c.html') }},
107 { label
: "a-onCommitted",
108 event
: "onCommitted",
109 details
: { frameId
: 0,
113 transitionQualifiers
: [],
114 transitionType
: "link",
115 url
: getURL('c.html') }},
116 { label
: "a-onDOMContentLoaded",
117 event
: "onDOMContentLoaded",
118 details
: { frameId
: 0,
122 url
: getURL('c.html') }},
123 { label
: "a-onCompleted",
124 event
: "onCompleted",
125 details
: { frameId
: 0,
129 url
: getURL('c.html') }},
130 { label
: "b-onBeforeNavigate",
131 event
: "onBeforeNavigate",
132 details
: { frameId
: 0,
137 url
: URL_REDIRECT
}},
138 { label
: "b-onErrorOccurred",
139 event
: "onErrorOccurred",
140 details
: { error
: "net::ERR_ABORTED",
145 url
: URL_REDIRECT
}},
146 { label
: "c-onBeforeNavigate",
147 event
: "onBeforeNavigate",
148 details
: { frameId
: 0,
154 { label
: "c-onCommitted",
155 event
: "onCommitted",
156 details
: { frameId
: 0,
160 transitionQualifiers
: [],
161 transitionType
: "link",
163 { label
: "c-onDOMContentLoaded",
164 event
: "onDOMContentLoaded",
165 details
: { frameId
: 0,
170 { label
: "c-onCompleted",
171 event
: "onCompleted",
172 details
: { frameId
: 0,
176 url
: URL_REGULAR
}}],
177 [ navigationOrder("a-"),
178 navigationOrder("c-"),
179 [ "a-onCompleted", "b-onBeforeNavigate", "b-onErrorOccurred",
180 "c-onBeforeNavigate"] ]);
184 { url
: getURL('c.html?' + config
.testServer
.port
) });
187 // Navigates to a different site, but then commits
188 // same-site, non-user, renderer-initiated navigation
189 // before the slow cross-site navigation commits.
191 * This test case is disabled, because it is flaky and fails fairly
192 * consistently on MSan bots. See https://crbug.com/467800
194 function crossProcessWithSameSiteCommit() {
196 { label: "a-onBeforeNavigate",
197 event: "onBeforeNavigate",
198 details: { frameId: 0,
203 url: getURL('d.html') }},
204 { label: "a-onCommitted",
205 event: "onCommitted",
206 details: { frameId: 0,
210 transitionQualifiers: [],
211 transitionType: "link",
212 url: getURL('d.html') }},
213 { label: "a-onDOMContentLoaded",
214 event: "onDOMContentLoaded",
215 details: { frameId: 0,
219 url: getURL('d.html') }},
220 { label: "a-onCompleted",
221 event: "onCompleted",
222 details: { frameId: 0,
226 url: getURL('d.html') }},
227 { label: "b-onBeforeNavigate",
228 event: "onBeforeNavigate",
229 details: { frameId: 0,
234 url: URL_TEST + "1" }},
235 { label: "b-onCommitted",
236 event: "onCommitted",
237 details: { frameId: 0,
241 transitionQualifiers: [],
242 transitionType: "link",
243 url: URL_TEST + "1" }},
244 { label: "b-onDOMContentLoaded",
245 event: "onDOMContentLoaded",
246 details: { frameId: 0,
250 url: URL_TEST + "1" }},
251 { label: "b-onCompleted",
252 event: "onCompleted",
253 details: { frameId: 0,
257 url: URL_TEST + "1" }},
258 { label: "c-onBeforeNavigate",
259 event: "onBeforeNavigate",
260 details: { frameId: 0,
265 url: getURL('empty.html') }},
266 { label: "c-onCommitted",
267 event: "onCommitted",
268 details: { frameId: 0,
272 transitionQualifiers: ["client_redirect"],
273 transitionType: "link",
274 url: getURL('empty.html') }},
275 { label: "c-onDOMContentLoaded",
276 event: "onDOMContentLoaded",
277 details: { frameId: 0,
281 url: getURL('empty.html') }},
282 { label: "c-onCompleted",
283 event: "onCompleted",
284 details: { frameId: 0,
288 url: getURL('empty.html') }}],
289 [ navigationOrder("a-"),
290 navigationOrder("c-"),
291 navigationOrder("b-"),
292 [ "a-onCompleted", "b-onBeforeNavigate", "c-onBeforeNavigate",
293 "c-onCommitted", "b-onCommitted"] ]);
295 // Note: d.html expects the redirect path to follow the port
299 { url: getURL('d.html?' + config.testServer.port + "/test1") });
303 // Navigates cross-site, but then starts a same-site,
304 // renderer-initiated navigation with user gesture.
305 // The expectation is that the cross-process navigation
306 // will be cancelled and the API should dispatch an onErrorOccurred
308 function crossProcessAbortUserGesture() {
310 { label
: "a-onBeforeNavigate",
311 event
: "onBeforeNavigate",
312 details
: { frameId
: 0,
317 url
: getURL('d.html') }},
318 { label
: "a-onCommitted",
319 event
: "onCommitted",
320 details
: { frameId
: 0,
324 transitionQualifiers
: [],
325 transitionType
: "link",
326 url
: getURL('d.html') }},
327 { label
: "a-onDOMContentLoaded",
328 event
: "onDOMContentLoaded",
329 details
: { frameId
: 0,
333 url
: getURL('d.html') }},
334 { label
: "a-onCompleted",
335 event
: "onCompleted",
336 details
: { frameId
: 0,
340 url
: getURL('d.html') }},
341 { label
: "b-onBeforeNavigate",
342 event
: "onBeforeNavigate",
343 details
: { frameId
: 0,
348 url
: URL_TEST
+ "2" }},
349 { label
: "b-onErrorOccurred",
350 event
: "onErrorOccurred",
351 details
: { error
: "net::ERR_ABORTED",
356 url
: URL_TEST
+ "2" }},
357 { label
: "c-onBeforeNavigate",
358 event
: "onBeforeNavigate",
359 details
: { frameId
: 0,
364 url
: getURL('empty.html') }},
365 { label
: "c-onCommitted",
366 event
: "onCommitted",
367 details
: { frameId
: 0,
371 transitionQualifiers
: ["client_redirect"],
372 transitionType
: "link",
373 url
: getURL('empty.html') }},
374 { label
: "c-onDOMContentLoaded",
375 event
: "onDOMContentLoaded",
376 details
: { frameId
: 0,
380 url
: getURL('empty.html') }},
381 { label
: "c-onCompleted",
382 event
: "onCompleted",
383 details
: { frameId
: 0,
387 url
: getURL('empty.html') }}],
388 [ navigationOrder("a-"),
389 navigationOrder("c-"),
390 [ "a-onCompleted", "b-onBeforeNavigate", "b-onErrorOccurred",
393 // Note: d.html expects the redirect path to follow the port
397 { url
: getURL('d.html?' + config
.testServer
.port
+ "/test2") });