Bug 484200. src attribute on <style> makes styles not apply. r=bzbarsky

This commit is contained in:
David Zbarsky 2009-07-28 12:07:31 -04:00
parent b4582131a5
commit b908f99056
9 changed files with 47 additions and 46 deletions

View File

@ -250,9 +250,9 @@ nsStyleLinkElement::DoUpdateStyleSheet(nsIDocument *aOldDocument,
return NS_OK;
}
nsCOMPtr<nsIURI> uri;
PRBool isInline;
GetStyleSheetURL(&isInline, getter_AddRefs(uri));
nsCOMPtr<nsIURI> uri = GetStyleSheetURL(&isInline);
if (!aForceUpdate && mStyleSheet && !isInline && uri) {
nsCOMPtr<nsIURI> oldURI;

View File

@ -95,8 +95,7 @@ protected:
nsresult UpdateStyleSheetInternal(nsIDocument *aOldDocument,
PRBool aForceUpdate = PR_FALSE);
virtual void GetStyleSheetURL(PRBool* aIsInline,
nsIURI** aURI) = 0;
virtual already_AddRefed<nsIURI> GetStyleSheetURL(PRBool* aIsInline) = 0;
virtual void GetStyleSheetInfo(nsAString& aTitle,
nsAString& aType,
nsAString& aMedia,

View File

@ -0,0 +1,11 @@
<html>
<head>
<title>Test for Bug 484200</title>
<style>
p { background:lime }
</style>
</head>
<body>
<p>xxxxx</p>
</body>
</html>

View File

@ -0,0 +1,11 @@
<html>
<head>
<title>Test for Bug 484200</title>
<style src=style>
p { background:lime }
</style>
</head>
<body>
<p>xxxxx</p>
</body>
</html>

View File

@ -4,3 +4,4 @@
!= 468263-1d.html about:blank
== 468263-2.html 468263-2-ref.html
== 468263-2.html 468263-2-alternate-ref.html
== 484200-1.html 484200-1-ref.html

View File

@ -116,8 +116,7 @@ public:
virtual nsresult Clone(nsINodeInfo *aNodeInfo, nsINode **aResult) const;
protected:
virtual void GetStyleSheetURL(PRBool* aIsInline,
nsIURI** aURI);
virtual already_AddRefed<nsIURI> GetStyleSheetURL(PRBool* aIsInline);
virtual void GetStyleSheetInfo(nsAString& aTitle,
nsAString& aType,
nsAString& aMedia,
@ -395,13 +394,11 @@ nsHTMLLinkElement::GetHrefURI() const
return GetHrefURIForAnchors();
}
void
nsHTMLLinkElement::GetStyleSheetURL(PRBool* aIsInline,
nsIURI** aURI)
already_AddRefed<nsIURI>
nsHTMLLinkElement::GetStyleSheetURL(PRBool* aIsInline)
{
*aIsInline = PR_FALSE;
*aURI = GetHrefURIForAnchors().get();
return;
return GetHrefURIForAnchors();
}
void

View File

@ -103,8 +103,7 @@ public:
NS_DECL_NSIMUTATIONOBSERVER_CONTENTREMOVED
protected:
void GetStyleSheetURL(PRBool* aIsInline,
nsIURI** aURI);
already_AddRefed<nsIURI> GetStyleSheetURL(PRBool* aIsInline);
void GetStyleSheetInfo(nsAString& aTitle,
nsAString& aType,
nsAString& aMedia,
@ -312,24 +311,11 @@ nsHTMLStyleElement::SetInnerHTML(const nsAString& aInnerHTML)
return rv;
}
void
nsHTMLStyleElement::GetStyleSheetURL(PRBool* aIsInline,
nsIURI** aURI)
already_AddRefed<nsIURI>
nsHTMLStyleElement::GetStyleSheetURL(PRBool* aIsInline)
{
*aURI = nsnull;
*aIsInline = !HasAttr(kNameSpaceID_None, nsGkAtoms::src);
if (*aIsInline) {
return;
}
if (!IsInHTMLDocument()) {
// We stopped supporting <style src="..."> for XHTML as it is
// non-standard.
*aIsInline = PR_TRUE;
return;
}
*aURI = GetHrefURIForAnchors().get();
return;
*aIsInline = PR_TRUE;
return nsnull;
}
void

View File

@ -99,8 +99,8 @@ protected:
}
// nsStyleLinkElement overrides
void GetStyleSheetURL(PRBool* aIsInline,
nsIURI** aURI);
already_AddRefed<nsIURI> GetStyleSheetURL(PRBool* aIsInline);
void GetStyleSheetInfo(nsAString& aTitle,
nsAString& aType,
nsAString& aMedia,
@ -311,14 +311,11 @@ NS_IMETHODIMP nsSVGStyleElement::SetTitle(const nsAString & aTitle)
//----------------------------------------------------------------------
// nsStyleLinkElement methods
void
nsSVGStyleElement::GetStyleSheetURL(PRBool* aIsInline,
nsIURI** aURI)
already_AddRefed<nsIURI>
nsSVGStyleElement::GetStyleSheetURL(PRBool* aIsInline)
{
*aURI = nsnull;
*aIsInline = PR_TRUE;
return;
return nsnull;
}
void

View File

@ -78,8 +78,7 @@ public:
protected:
nsCOMPtr<nsIURI> mOverriddenBaseURI;
void GetStyleSheetURL(PRBool* aIsInline,
nsIURI** aURI);
already_AddRefed<nsIURI> GetStyleSheetURL(PRBool* aIsInline);
void GetStyleSheetInfo(nsAString& aTitle,
nsAString& aType,
nsAString& aMedia,
@ -166,16 +165,14 @@ nsXMLStylesheetPI::OverrideBaseURI(nsIURI* aNewBaseURI)
mOverriddenBaseURI = aNewBaseURI;
}
void
nsXMLStylesheetPI::GetStyleSheetURL(PRBool* aIsInline,
nsIURI** aURI)
already_AddRefed<nsIURI>
nsXMLStylesheetPI::GetStyleSheetURL(PRBool* aIsInline)
{
*aIsInline = PR_FALSE;
*aURI = nsnull;
nsAutoString href;
if (!GetAttrValue(nsGkAtoms::href, href)) {
return;
return nsnull;
}
nsIURI *baseURL;
@ -188,7 +185,9 @@ nsXMLStylesheetPI::GetStyleSheetURL(PRBool* aIsInline,
baseURL = mOverriddenBaseURI;
}
NS_NewURI(aURI, href, charset.get(), baseURL);
nsCOMPtr<nsIURI> aURI;
NS_NewURI(getter_AddRefs(aURI), href, charset.get(), baseURL);
return aURI.forget();
}
void