| // Copyright 2024 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // META script=resources/controlled_frame_helpers.js |
| |
| promise_test(async (test) => { |
| const controlledFrame = await createControlledFrame('/simple.html'); |
| |
| const popupLoadedPromise = new Promise((resolve, reject) => { |
| controlledFrame.addEventListener('newwindow', (e) => { |
| const popupControlledFrame = document.createElement('controlledframe'); |
| // Attach the new window to the new <controlledframe>. |
| popupControlledFrame.addEventListener( |
| 'loadstop', resolve.bind(null, popupControlledFrame)); |
| popupControlledFrame.addEventListener('loadabort', reject); |
| e.window.attach(popupControlledFrame); |
| document.body.appendChild(popupControlledFrame); |
| }); |
| }); |
| controlledFrame.executeScript({code: 'window.open("/title2.html");'}); |
| const popupControlledFrame = await popupLoadedPromise; |
| |
| assert_equals( |
| await executeAsyncScript(controlledFrame, 'location.pathname'), |
| '/simple.html'); |
| assert_equals( |
| await executeAsyncScript(popupControlledFrame, 'location.pathname'), |
| '/title2.html'); |
| }, "New Window event"); |