diff --git a/browser_patches/firefox-beta/BUILD_NUMBER b/browser_patches/firefox-beta/BUILD_NUMBER
index b867a00f2f..a3b3d6261f 100644
--- a/browser_patches/firefox-beta/BUILD_NUMBER
+++ b/browser_patches/firefox-beta/BUILD_NUMBER
@@ -1,2 +1,2 @@
-1284
-Changed: lushnikov@chromium.org Wed 25 Aug 2021 08:50:22 AM PDT
+1285
+Changed: lushnikov@chromium.org Fri 27 Aug 2021 09:23:19 AM PDT
diff --git a/browser_patches/firefox-beta/juggler/content/PageAgent.js b/browser_patches/firefox-beta/juggler/content/PageAgent.js
index a007fdb853..234c6b0801 100644
--- a/browser_patches/firefox-beta/juggler/content/PageAgent.js
+++ b/browser_patches/firefox-beta/juggler/content/PageAgent.js
@@ -246,9 +246,9 @@ class PageAgent {
}
_filePickerShown(inputElement) {
- if (inputElement.ownerGlobal.docShell !== this._docShell)
- return;
const frame = this._findFrameForNode(inputElement);
+ if (!frame)
+ return;
this._browserPage.emit('pageFileChooserOpened', {
executionContextId: frame.mainExecutionContext().id(),
element: frame.mainExecutionContext().rawValueToRemoteObject(inputElement)
diff --git a/browser_patches/firefox/BUILD_NUMBER b/browser_patches/firefox/BUILD_NUMBER
index c7950901a1..bde0a84273 100644
--- a/browser_patches/firefox/BUILD_NUMBER
+++ b/browser_patches/firefox/BUILD_NUMBER
@@ -1,2 +1,2 @@
-1288
-Changed: joel.einbinder@gmail.com Wed 25 Aug 2021 08:41:36 AM PDT
+1289
+Changed: lushnikov@chromium.org Fri 27 Aug 2021 09:23:19 AM PDT
diff --git a/browser_patches/firefox/juggler/content/PageAgent.js b/browser_patches/firefox/juggler/content/PageAgent.js
index a007fdb853..234c6b0801 100644
--- a/browser_patches/firefox/juggler/content/PageAgent.js
+++ b/browser_patches/firefox/juggler/content/PageAgent.js
@@ -246,9 +246,9 @@ class PageAgent {
}
_filePickerShown(inputElement) {
- if (inputElement.ownerGlobal.docShell !== this._docShell)
- return;
const frame = this._findFrameForNode(inputElement);
+ if (!frame)
+ return;
this._browserPage.emit('pageFileChooserOpened', {
executionContextId: frame.mainExecutionContext().id(),
element: frame.mainExecutionContext().rawValueToRemoteObject(inputElement)
diff --git a/tests/page/page-set-input-files.spec.ts b/tests/page/page-set-input-files.spec.ts
index 66feef9aa2..5d2a8aba55 100644
--- a/tests/page/page-set-input-files.spec.ts
+++ b/tests/page/page-set-input-files.spec.ts
@@ -16,6 +16,7 @@
*/
import { test as it, expect } from './pageTest';
+import { attachFrame } from '../config/utils';
import path from 'path';
import fs from 'fs';
@@ -69,6 +70,17 @@ it('should emit event once', async ({page, server}) => {
expect(chooser).toBeTruthy();
});
+it('should emit event for iframe', async ({page, server, browserName}) => {
+ it.skip(browserName === 'firefox');
+ const frame = await attachFrame(page, 'frame1', server.EMPTY_PAGE);
+ await frame.setContent(``);
+ const [chooser] = await Promise.all([
+ new Promise(f => page.once('filechooser', f)),
+ frame.click('input'),
+ ]);
+ expect(chooser).toBeTruthy();
+});
+
it('should emit event on/off', async ({page, server}) => {
await page.setContent(``);
const [chooser] = await Promise.all([