Bug 1426234 part 3. Simplify ProcessStyleLink now that it's only called for Link headers. r=mystor

MozReview-Commit-ID: 2Gn3AsYwVmI
This commit is contained in:
Boris Zbarsky 2017-12-21 16:43:24 -05:00
parent 13bf7b431d
commit bc51214e31
5 changed files with 92 additions and 103 deletions

View File

@ -669,7 +669,7 @@ nsContentSink::ProcessLinkHeader(const nsAString& aLinkData)
href.Trim(" \t\n\r\f"); // trim HTML5 whitespace
if (!href.IsEmpty() && !rel.IsEmpty()) {
rv = ProcessLink(anchor, href, rel,
rv = ProcessLinkFromHeader(anchor, href, rel,
// prefer RFC 5987 variant over non-I18zed version
titleStar.IsEmpty() ? title : titleStar,
type, media, crossOrigin, referrerPolicy, as);
@ -693,7 +693,7 @@ nsContentSink::ProcessLinkHeader(const nsAString& aLinkData)
href.Trim(" \t\n\r\f"); // trim HTML5 whitespace
if (!href.IsEmpty() && !rel.IsEmpty()) {
rv = ProcessLink(anchor, href, rel,
rv = ProcessLinkFromHeader(anchor, href, rel,
// prefer RFC 5987 variant over non-I18zed version
titleStar.IsEmpty() ? title : titleStar,
type, media, crossOrigin, referrerPolicy, as);
@ -704,7 +704,7 @@ nsContentSink::ProcessLinkHeader(const nsAString& aLinkData)
nsresult
nsContentSink::ProcessLink(const nsAString& aAnchor, const nsAString& aHref,
nsContentSink::ProcessLinkFromHeader(const nsAString& aAnchor, const nsAString& aHref,
const nsAString& aRel, const nsAString& aTitle,
const nsAString& aType, const nsAString& aMedia,
const nsAString& aCrossOrigin,
@ -753,13 +753,12 @@ nsContentSink::ProcessLink(const nsAString& aAnchor, const nsAString& aHref,
}
bool isAlternate = linkTypes & nsStyleLinkElement::eALTERNATE;
return ProcessStyleLink(nullptr, aHref, isAlternate, aTitle, aType,
return ProcessStyleLinkFromHeader(aHref, isAlternate, aTitle, aType,
aMedia, aReferrerPolicy);
}
nsresult
nsContentSink::ProcessStyleLink(nsIContent* aElement,
const nsAString& aHref,
nsContentSink::ProcessStyleLinkFromHeader(const nsAString& aHref,
bool aAlternate,
const nsAString& aTitle,
const nsAString& aType,
@ -790,20 +789,6 @@ nsContentSink::ProcessStyleLink(nsIContent* aElement,
return NS_OK;
}
NS_ASSERTION(!aElement ||
aElement->NodeType() == nsIDOMNode::PROCESSING_INSTRUCTION_NODE,
"We only expect processing instructions here");
nsAutoString integrity;
if (aElement) {
aElement->GetAttr(kNameSpaceID_None, nsGkAtoms::integrity, integrity);
}
if (!integrity.IsEmpty()) {
MOZ_LOG(dom::SRILogHelper::GetSriLog(), mozilla::LogLevel::Debug,
("nsContentSink::ProcessStyleLink, integrity=%s",
NS_ConvertUTF16toUTF8(integrity).get()));
}
mozilla::net::ReferrerPolicy referrerPolicy =
mozilla::net::AttributeReferrerPolicyFromString(aReferrerPolicy);
if (referrerPolicy == net::RP_Unset) {
@ -812,9 +797,10 @@ nsContentSink::ProcessStyleLink(nsIContent* aElement,
// If this is a fragment parser, we don't want to observe.
// We don't support CORS for processing instructions
bool isAlternate;
rv = mCSSLoader->LoadStyleLink(aElement, url, nullptr, aTitle, aMedia, aAlternate,
rv = mCSSLoader->LoadStyleLink(nullptr, url, nullptr, aTitle, aMedia, aAlternate,
CORS_NONE, referrerPolicy,
integrity, mRunsToCompletion ? nullptr : this,
/* integrity = */ EmptyString(),
mRunsToCompletion ? nullptr : this,
&isAlternate);
NS_ENSURE_SUCCESS(rv, rv);

View File

@ -151,15 +151,15 @@ protected:
nsresult ProcessHeaderData(nsAtom* aHeader, const nsAString& aValue,
nsIContent* aContent = nullptr);
nsresult ProcessLinkHeader(const nsAString& aLinkData);
nsresult ProcessLink(const nsAString& aAnchor,
nsresult ProcessLinkFromHeader(const nsAString& aAnchor,
const nsAString& aHref, const nsAString& aRel,
const nsAString& aTitle, const nsAString& aType,
const nsAString& aMedia, const nsAString& aCrossOrigin,
const nsAString& aMedia,
const nsAString& aCrossOrigin,
const nsAString& aReferrerPolicy,
const nsAString& aAs);
virtual nsresult ProcessStyleLink(nsIContent* aElement,
const nsAString& aHref,
virtual nsresult ProcessStyleLinkFromHeader(const nsAString& aHref,
bool aAlternate,
const nsAString& aTitle,
const nsAString& aType,

View File

@ -651,8 +651,7 @@ nsXMLContentSink::LoadXSLStyleSheet(nsIURI* aUrl)
}
nsresult
nsXMLContentSink::ProcessStyleLink(nsIContent* aElement,
const nsAString& aHref,
nsXMLContentSink::ProcessStyleLinkFromHeader(const nsAString& aHref,
bool aAlternate,
const nsAString& aTitle,
const nsAString& aType,
@ -668,7 +667,7 @@ nsXMLContentSink::ProcessStyleLink(nsIContent* aElement,
return NS_OK; // Do not load stylesheets when loading as data
bool wasXSLT;
nsresult rv = MaybeProcessXSLTLink(aElement, aHref, aAlternate, aType, aType,
nsresult rv = MaybeProcessXSLTLink(nullptr, aHref, aAlternate, aType, aType,
aMedia, aReferrerPolicy, &wasXSLT);
NS_ENSURE_SUCCESS(rv, rv);
if (wasXSLT) {
@ -677,12 +676,14 @@ nsXMLContentSink::ProcessStyleLink(nsIContent* aElement,
}
// Otherwise fall through to nsContentSink to handle CSS Link headers.
return nsContentSink::ProcessStyleLink(aElement, aHref, aAlternate,
aTitle, aType, aMedia, aReferrerPolicy);
return nsContentSink::ProcessStyleLinkFromHeader(aHref, aAlternate,
aTitle, aType, aMedia,
aReferrerPolicy);
}
nsresult
nsXMLContentSink::MaybeProcessXSLTLink(nsIContent* aProcessingInstruction,
nsXMLContentSink::MaybeProcessXSLTLink(
ProcessingInstruction* aProcessingInstruction,
const nsAString& aHref,
bool aAlternate,
const nsAString& aTitle,
@ -732,7 +733,7 @@ nsXMLContentSink::MaybeProcessXSLTLink(nsIContent* aProcessingInstruction,
url,
mDocument->NodePrincipal(), // loading principal
mDocument->NodePrincipal(), // triggering principal
aProcessingInstruction,
ToSupports(aProcessingInstruction),
NS_ConvertUTF16toUTF8(aType),
nullptr,
&decision,

View File

@ -27,6 +27,7 @@ class nsIParser;
namespace mozilla {
namespace dom {
class NodeInfo;
class ProcessingInstruction;
} // namespace dom
} // namespace mozilla
@ -145,7 +146,7 @@ protected:
}
// nsContentSink override
virtual nsresult ProcessStyleLink(nsIContent* aElement,
virtual nsresult ProcessStyleLinkFromHeader(
const nsAString& aHref,
bool aAlternate,
const nsAString& aTitle,
@ -160,7 +161,7 @@ protected:
// header; otherwise it will be the xml-styleshset XML PI that the loading
// information comes from.
virtual nsresult MaybeProcessXSLTLink(
nsIContent* aProcessingInstruction,
mozilla::dom::ProcessingInstruction* aProcessingInstruction,
const nsAString& aHref,
bool aAlternate,
const nsAString& aTitle,

View File

@ -91,7 +91,7 @@ protected:
virtual void MaybeStartLayout(bool aIgnorePendingSheets) override;
// nsContentSink overrides
virtual nsresult ProcessStyleLink(nsIContent* aElement,
virtual nsresult ProcessStyleLinkFromHeader(
const nsAString& aHref,
bool aAlternate,
const nsAString& aTitle,
@ -101,7 +101,7 @@ protected:
// nsXMLContentSink overrides
virtual nsresult MaybeProcessXSLTLink(
nsIContent* aProcessingInstruction,
ProcessingInstruction* aProcessingInstruction,
const nsAString& aHref,
bool aAlternate,
const nsAString& aTitle,
@ -336,7 +336,7 @@ nsXMLFragmentContentSink::ReportError(const char16_t* aErrorText,
}
nsresult
nsXMLFragmentContentSink::ProcessStyleLink(nsIContent* aElement,
nsXMLFragmentContentSink::ProcessStyleLinkFromHeader(
const nsAString& aHref,
bool aAlternate,
const nsAString& aTitle,
@ -345,12 +345,13 @@ nsXMLFragmentContentSink::ProcessStyleLink(nsIContent* aElement,
const nsAString& aReferrerPolicy)
{
// don't process until moved to document
NS_NOTREACHED("Shouldn't have headers for a fragment sink");
return NS_OK;
}
nsresult
nsXMLFragmentContentSink::MaybeProcessXSLTLink(nsIContent* aProcessingInstruction,
nsXMLFragmentContentSink::MaybeProcessXSLTLink(
ProcessingInstruction* aProcessingInstruction,
const nsAString& aHref,
bool aAlternate,
const nsAString& aTitle,