Skip to content

Commit 2ddc987

Browse files
yury-saslushnikov
authored andcommitted
fix(webkit): initialize popups on start (#693)
1 parent a64fc0e commit 2ddc987

File tree

2 files changed

+10
-5
lines changed

2 files changed

+10
-5
lines changed

src/webkit/wkPageProxy.ts

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,8 +144,13 @@ export class WKPageProxy {
144144
(session as any)[isPovisionalSymbol] = true;
145145
if (targetInfo.isProvisional && this._wkPage)
146146
this._wkPage.onProvisionalLoadStarted(session);
147-
if (targetInfo.isPaused)
148-
this._pageProxySession.send('Target.resume', { targetId: targetInfo.targetId }).catch(debugError);
147+
if (targetInfo.isPaused) {
148+
const resume = () => this._pageProxySession.send('Target.resume', { targetId: targetInfo.targetId }).catch(debugError);
149+
if (targetInfo.isProvisional || !this._pagePromise)
150+
resume();
151+
else
152+
this._pagePromise.then(resume);
153+
}
149154
}
150155

151156
private _onTargetDestroyed(event: Protocol.Target.targetDestroyedPayload) {

test/page.spec.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ module.exports.describe = function({testRunner, expect, headless, playwright, FF
154154
await page.goto(server.EMPTY_PAGE);
155155
await page.setContent('<a target=_blank rel=noopener href="/one-style.html">yo</a>');
156156
const [popup] = await Promise.all([
157-
page.waitForEvent('popup'),
157+
page.waitForEvent('popup').then(async popup => { await popup.waitForLoadState(); return popup; }),
158158
page.$eval('a', a => a.click()),
159159
]);
160160
expect(await page.evaluate(() => !!window.opener)).toBe(false);
@@ -166,13 +166,13 @@ module.exports.describe = function({testRunner, expect, headless, playwright, FF
166166
await page.goto(server.EMPTY_PAGE);
167167
await page.setContent('<a target=_blank rel=noopener href="/one-style.html">yo</a>');
168168
const [popup] = await Promise.all([
169-
new Promise(x => page.once('popup', x)),
169+
page.waitForEvent('popup').then(async popup => { await popup.waitForLoadState(); return popup; }),
170170
page.click('a'),
171171
]);
172172
expect(await page.evaluate(() => !!window.opener)).toBe(false);
173173
expect(await popup.evaluate(() => !!window.opener)).toBe(false);
174174
});
175-
it.skip(WEBKIT || FFOX)('should not treat navigations as new popups', async({page, server}) => {
175+
it.skip(FFOX)('should not treat navigations as new popups', async({page, server}) => {
176176
await page.goto(server.EMPTY_PAGE);
177177
await page.setContent('<a target=_blank rel=noopener href="/one-style.html">yo</a>');
178178
const [popup] = await Promise.all([

0 commit comments

Comments
 (0)