Bug 1509346 - Add support for <form rel>. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D166489
This commit is contained in:
@@ -12958,10 +12958,12 @@ bool nsDocShell::ShouldOpenInBlankTarget(const nsAString& aOriginalTarget,
|
||||
: !linkHost.Equals("www."_ns + docHost);
|
||||
}
|
||||
|
||||
static bool IsElementAnchorOrArea(nsIContent* aContent) {
|
||||
// Make sure we are dealing with either an <A> or <AREA> element in the HTML
|
||||
// or XHTML namespace.
|
||||
return aContent->IsAnyOfHTMLElements(nsGkAtoms::a, nsGkAtoms::area);
|
||||
static bool ElementCanHaveNoopener(nsIContent* aContent) {
|
||||
// Make sure we are dealing with either an <A>, <AREA>, or <FORM> element in
|
||||
// the HTML, XHTML, or SVG namespace.
|
||||
return aContent->IsAnyOfHTMLElements(nsGkAtoms::a, nsGkAtoms::area,
|
||||
nsGkAtoms::form) ||
|
||||
aContent->IsSVGElement(nsGkAtoms::a);
|
||||
}
|
||||
|
||||
nsresult nsDocShell::OnLinkClickSync(nsIContent* aContent,
|
||||
@@ -13020,11 +13022,11 @@ nsresult nsDocShell::OnLinkClickSync(nsIContent* aContent,
|
||||
}
|
||||
|
||||
uint32_t flags = INTERNAL_LOAD_FLAGS_NONE;
|
||||
bool isElementAnchorOrArea = IsElementAnchorOrArea(aContent);
|
||||
bool elementCanHaveNoopener = ElementCanHaveNoopener(aContent);
|
||||
bool triggeringPrincipalIsSystemPrincipal =
|
||||
aLoadState->TriggeringPrincipal()->IsSystemPrincipal();
|
||||
if (isElementAnchorOrArea) {
|
||||
MOZ_ASSERT(aContent->IsHTMLElement());
|
||||
if (elementCanHaveNoopener) {
|
||||
MOZ_ASSERT(aContent->IsHTMLElement() || aContent->IsSVGElement());
|
||||
nsAutoString relString;
|
||||
aContent->AsElement()->GetAttr(kNameSpaceID_None, nsGkAtoms::rel,
|
||||
relString);
|
||||
@@ -13107,8 +13109,8 @@ nsresult nsDocShell::OnLinkClickSync(nsIContent* aContent,
|
||||
uint32_t loadType = inOnLoadHandler ? LOAD_NORMAL_REPLACE : LOAD_LINK;
|
||||
|
||||
nsCOMPtr<nsIReferrerInfo> referrerInfo =
|
||||
isElementAnchorOrArea ? new ReferrerInfo(*aContent->AsElement())
|
||||
: new ReferrerInfo(*referrerDoc);
|
||||
elementCanHaveNoopener ? new ReferrerInfo(*aContent->AsElement())
|
||||
: new ReferrerInfo(*referrerDoc);
|
||||
RefPtr<WindowContext> context = mBrowsingContext->GetCurrentWindowContext();
|
||||
|
||||
aLoadState->SetTriggeringSandboxFlags(triggeringSandboxFlags);
|
||||
|
||||
Reference in New Issue
Block a user