|
608 | 608 | return redirected; |
609 | 609 | } |
610 | 610 |
|
611 | | - let normalizeRequest = request => { |
612 | | - |
613 | | - function fakeOriginFromTab({tabId, type} = request) { |
614 | | - if (type !== "main_frame") { |
615 | | - let tabUrl = request.tabUrl || tabId !== -1 && TabCache.get(tabId)?.url; |
616 | | - if (tabUrl) { |
617 | | - return request.initiator = request.originUrl = request.documentUrl = tabUrl; |
618 | | - } |
619 | | - } |
620 | | - return request.initiator || request.originUrl; |
621 | | - } |
| 611 | + const normalizeRequest = request => { |
622 | 612 |
|
623 | 613 | if ("initiator" in request && !("originUrl" in request)) { |
624 | | - if (request.initiator === "null") { |
625 | | - // Chromium sandboxed content? |
626 | | - fakeOriginFromTab(); |
627 | | - } |
628 | 614 | request.originUrl = request.initiator; |
629 | 615 | if (request.type !== "main_frame" && !("documentUrl" in request)) { |
630 | 616 | request.documentUrl = request.initiator; |
631 | 617 | } |
632 | 618 | } |
633 | | - if ("frameAncestors" in request && (!request.originUrl || request.documentUrl)) { |
634 | | - // Gecko sandboxed content? |
| 619 | + if (request.frameAncestors && !request.originUrl && request.type == "sub_frame") { |
| 620 | + // Gecko sandboxed iframe |
635 | 621 | for (let f of request.frameAncestors) { |
636 | 622 | if (f.url !== "null" && !f.url.startsWith("moz-nullprincipal:")) { |
637 | | - request.originUrl = request.documentUrl = f.url; |
| 623 | + let { url } = f; |
| 624 | + if (url === "") { |
| 625 | + // redacted ancestor url in sandboxed frame, let's grab the real one from NavCache |
| 626 | + url = NavCache.getFrame(request.tabId, f.frameId)?.url; |
| 627 | + } |
| 628 | + request.originUrl = request.documentUrl = url; |
638 | 629 | break; |
639 | 630 | } |
640 | 631 | } |
641 | | - if (!request.originUrl) { |
642 | | - fakeOriginFromTab(); |
643 | | - } |
| 632 | + request.originUrl ||= request.documentUrl; |
644 | 633 | } |
645 | 634 | }; |
646 | 635 |
|
|
760 | 749 |
|
761 | 750 | let {tabId, type, url, originUrl} = request; |
762 | 751 |
|
763 | | - const {policy} = ns |
| 752 | + const { policy } = ns; |
764 | 753 |
|
765 | 754 | let previous = recent.find(request); |
766 | 755 | if (previous) { |
|
0 commit comments