browser(firefox): set opener for popup opened from iframe (#9837)

This commit is contained in:
Yury Semikhatsky 2021-10-28 02:16:37 -07:00 committed by GitHub
parent 0dcb6f44a1
commit 7560f40c77
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 10 additions and 8 deletions

View file

@ -1,2 +1,2 @@
1299 1300
Changed: lushnikov@chromium.org Wed 27 Oct 2021 12:40:16 AM PDT Changed: yurys@chromium.org Wed Oct 27 17:58:07 PDT 2021

View file

@ -159,8 +159,9 @@ class TargetRegistry {
const openerContext = tab.linkedBrowser.browsingContext.opener; const openerContext = tab.linkedBrowser.browsingContext.opener;
let openerTarget; let openerTarget;
if (openerContext) { if (openerContext) {
// Popups usually have opener context. // Popups usually have opener context. Get top context for the case when opener is
openerTarget = this._browserBrowsingContextToTarget.get(openerContext); // an iframe.
openerTarget = this._browserBrowsingContextToTarget.get(openerContext.top);
} else if (tab.openerTab) { } else if (tab.openerTab) {
// Noopener popups from the same window have opener tab instead. // Noopener popups from the same window have opener tab instead.
openerTarget = this._browserToTarget.get(tab.openerTab.linkedBrowser); openerTarget = this._browserToTarget.get(tab.openerTab.linkedBrowser);

View file

@ -1,2 +1,2 @@
1297 1298
Changed: lushnikov@chromium.org Fri Oct 15 18:51:16 PDT 2021 Changed: yurys@chromium.org Wed Oct 27 17:58:07 PDT 2021

View file

@ -159,8 +159,9 @@ class TargetRegistry {
const openerContext = tab.linkedBrowser.browsingContext.opener; const openerContext = tab.linkedBrowser.browsingContext.opener;
let openerTarget; let openerTarget;
if (openerContext) { if (openerContext) {
// Popups usually have opener context. // Popups usually have opener context. Get top context for the case when opener is
openerTarget = this._browserBrowsingContextToTarget.get(openerContext); // an iframe.
openerTarget = this._browserBrowsingContextToTarget.get(openerContext.top);
} else if (tab.openerTab) { } else if (tab.openerTab) {
// Noopener popups from the same window have opener tab instead. // Noopener popups from the same window have opener tab instead.
openerTarget = this._browserToTarget.get(tab.openerTab.linkedBrowser); openerTarget = this._browserToTarget.get(tab.openerTab.linkedBrowser);