| // Copyright 2018 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| (async function(testRunner) { |
| let {page, session, dp} = await testRunner.startWithFrameControl( |
| 'Tests renderer: frame load events.'); |
| |
| let RendererTestHelper = |
| await testRunner.loadScript('../helpers/renderer-test-helper.js'); |
| let {httpInterceptor, frameNavigationHelper, virtualTimeController} = |
| await (new RendererTestHelper(testRunner, dp, page)).init(); |
| |
| httpInterceptor.addResponse( |
| `http://example.com/`, null, |
| ['HTTP/1.1 302 Found', 'Location: http://example.com/1']); |
| |
| httpInterceptor.addResponse(`http://example.com/1`, `<html><frameset> |
| <frame id="frameA" src="http://example.com/frameA/"> |
| <frame id="frameB" src="http://example.com/frameB/"> |
| </frameset></html>`); |
| |
| httpInterceptor.addResponse( |
| `http://example.com/frameA/`, `<html><head><script> |
| document.location="http://example.com/frameA/1" |
| </script></head></html>`); |
| |
| httpInterceptor.addResponse( |
| `http://example.com/frameB/`, `<html><head><script> |
| document.location="http://example.com/frameB/1" |
| </script></head></html>`); |
| |
| httpInterceptor.addResponse( |
| `http://example.com/frameA/1`, `<html><body>FRAME A 1</body></html>`); |
| |
| httpInterceptor.addResponse( |
| `http://example.com/frameB/1`, `<html><body>FRAME B 1 |
| <iframe id="iframe" src="http://example.com/frameB/1/iframe/"></iframe> |
| </body></html>`); |
| |
| httpInterceptor.addResponse( |
| `http://example.com/frameB/1/iframe/`, `<html><head><script> |
| document.location="http://example.com/frameB/1/iframe/1" |
| </script></head></html>`); |
| |
| httpInterceptor.addResponse( |
| `http://example.com/frameB/1/iframe/1`, |
| `<html><body>IFRAME 1</body><html>`); |
| |
| // Frame redirection requests are handled in an arbitrary order, so disable |
| // requested url logging to ensure test's stability. |
| httpInterceptor.setDisableRequestedUrlsLogging(true); |
| |
| await virtualTimeController.initialize(1000); |
| await frameNavigationHelper.navigate('http://example.com/'); |
| await virtualTimeController.grantTime(500); |
| |
| testRunner.log(await session.evaluate( |
| `document.getElementById('frameA').contentDocument.body.innerText`)); |
| testRunner.log(await session.evaluate( |
| `document.getElementById('frameB').contentDocument.` + |
| `getElementById('iframe').contentDocument.body.innerHTML`)); |
| |
| frameNavigationHelper.logFrames(); |
| frameNavigationHelper.logScheduledNavigations(); |
| |
| httpInterceptor.hasRequestedUrls([ |
| 'http://example.com/', 'http://example.com/1', 'http://example.com/frameA/', |
| 'http://example.com/frameA/1', 'http://example.com/frameB/', |
| 'http://example.com/frameB/1', 'http://example.com/frameB/1/iframe/', |
| 'http://example.com/frameB/1/iframe/1' |
| ]); |
| |
| testRunner.completeTest(); |
| }) |