diff --git a/mozilla/content/html/style/src/nsCSSLoader.cpp b/mozilla/content/html/style/src/nsCSSLoader.cpp
index f252dcc4a0d..5fa8ce1ae33 100644
--- a/mozilla/content/html/style/src/nsCSSLoader.cpp
+++ b/mozilla/content/html/style/src/nsCSSLoader.cpp
@@ -681,7 +681,7 @@ SheetLoadData::OnDetermineCharset(nsIUnicharStreamLoader* aLoader,
*/
static nsresult
ReportToConsole(const PRUnichar* aMessageName, const PRUnichar **aParams,
- PRUint32 aParamsLength, PRUint32 aErrorFlags)
+ PRUint32 aParamsLength, PRUint32 aErrorFlags, const PRUnichar* aReferrer)
{
nsresult rv;
nsCOMPtr consoleService =
@@ -703,7 +703,7 @@ ReportToConsole(const PRUnichar* aMessageName, const PRUnichar **aParams,
getter_Copies(errorText));
NS_ENSURE_SUCCESS(rv, rv);
rv = errorObject->Init(errorText.get(),
- EmptyString().get(), /* file name */
+ aReferrer, /* file name */
EmptyString().get(), /* source line */
0, /* line number */
0, /* column number */
@@ -715,6 +715,17 @@ ReportToConsole(const PRUnichar* aMessageName, const PRUnichar **aParams,
return NS_OK;
}
+already_AddRefed
+SheetLoadData::GetReferrerURI()
+{
+ nsIURI* uri = nsnull;
+ if (mParentData)
+ mParentData->mSheet->GetURL(uri);
+ if (!uri && mLoader->mDocument)
+ NS_IF_ADDREF(uri = mLoader->mDocument->GetDocumentURI());
+ return uri;
+}
+
/*
* Here we need to check that the load did not give us an http error
* page and check the mimetype on the channel to make sure we're not
@@ -789,35 +800,34 @@ SheetLoadData::OnStreamComplete(nsIUnicharStreamLoader* aLoader,
contentType.EqualsLiteral(UNKNOWN_CONTENT_TYPE) ||
contentType.IsEmpty();
- if (mLoader->mCompatMode == eCompatibility_NavQuirks || validType) {
- if (!validType) {
- nsCAutoString spec;
- if (channelURI) {
- channelURI->GetSpec(spec);
- }
-
- const nsAFlatString& specUCS2 = NS_ConvertUTF8toUCS2(spec);
- const nsAFlatString& ctypeUCS2 = NS_ConvertASCIItoUCS2(contentType);
- const PRUnichar *strings[] = { specUCS2.get(), ctypeUCS2.get() };
-
- ReportToConsole(NS_LITERAL_STRING("MimeNotCssWarn").get(), strings, 2,
- nsIScriptError::warningFlag);
- }
- } else {
- // Drop the data stream so that we do not load it
- aDataStream = nsnull;
-
+ if (!validType) {
nsCAutoString spec;
+ nsCAutoString referrer;
if (channelURI) {
channelURI->GetSpec(spec);
}
- const nsAFlatString& specUCS2 = NS_ConvertUTF8toUCS2(spec);
- const nsAFlatString& ctypeUCS2 = NS_ConvertASCIItoUCS2(contentType);
- const PRUnichar *strings[] = { specUCS2.get(), ctypeUCS2.get() };
+ {
+ nsCOMPtr referrerURI = GetReferrerURI();
+ if (referrerURI)
+ referrerURI->GetSpec(referrer);
+ }
- ReportToConsole(NS_LITERAL_STRING("MimeNotCss").get(), strings, 2,
- nsIScriptError::errorFlag);
+ const nsAFlatString& specUTF16 = NS_ConvertUTF8toUTF16(spec);
+ const nsAFlatString& ctypeUTF16 = NS_ConvertASCIItoUTF16(contentType);
+ const nsAFlatString& referrerUTF16 = NS_ConvertUTF8toUTF16(referrer);
+ const PRUnichar *strings[] = { specUTF16.get(), ctypeUTF16.get() };
+
+ if (mLoader->mCompatMode == eCompatibility_NavQuirks) {
+ ReportToConsole(NS_LITERAL_STRING("MimeNotCssWarn").get(), strings, 2,
+ nsIScriptError::warningFlag, referrerUTF16.get());
+ } else {
+ // Drop the data stream so that we do not load it
+ aDataStream = nsnull;
+
+ ReportToConsole(NS_LITERAL_STRING("MimeNotCss").get(), strings, 2,
+ nsIScriptError::errorFlag, referrerUTF16.get());
+ }
}
}
@@ -1399,17 +1409,9 @@ CSSLoaderImpl::LoadSheet(SheetLoadData* aLoadData, StyleSheetState aSheetState)
httpChannel->SetRequestHeader(NS_LITERAL_CSTRING("Accept"),
NS_LITERAL_CSTRING("text/css,*/*;q=0.1"),
PR_FALSE);
- if (aLoadData->mParentData) {
- nsCOMPtr parentURI;
- aLoadData->mParentData->mSheet->GetURL(*getter_AddRefs(parentURI));
- httpChannel->SetReferrer(parentURI);
- } else if (mDocument) {
- nsIURI *documentURI = mDocument->GetDocumentURI();
- NS_ASSERTION(documentURI, "Null document uri is bad!");
- if (documentURI) {
- httpChannel->SetReferrer(documentURI);
- }
- }
+ nsCOMPtr referrerURI = aLoadData->GetReferrerURI();
+ if (referrerURI)
+ httpChannel->SetReferrer(referrerURI);
}
// Now tell the channel we expect text/css data back.... We do
diff --git a/mozilla/content/html/style/src/nsCSSLoader.h b/mozilla/content/html/style/src/nsCSSLoader.h
index 117514e5d98..36acf1fd310 100644
--- a/mozilla/content/html/style/src/nsCSSLoader.h
+++ b/mozilla/content/html/style/src/nsCSSLoader.h
@@ -121,7 +121,8 @@ public:
nsICSSStyleSheet* aSheet,
PRBool aSyncLoad,
nsICSSLoaderObserver* aObserver);
-
+
+ already_AddRefed GetReferrerURI();
NS_DECL_ISUPPORTS
NS_DECL_NSIUNICHARSTREAMLOADEROBSERVER
diff --git a/mozilla/layout/style/nsCSSLoader.cpp b/mozilla/layout/style/nsCSSLoader.cpp
index f252dcc4a0d..5fa8ce1ae33 100644
--- a/mozilla/layout/style/nsCSSLoader.cpp
+++ b/mozilla/layout/style/nsCSSLoader.cpp
@@ -681,7 +681,7 @@ SheetLoadData::OnDetermineCharset(nsIUnicharStreamLoader* aLoader,
*/
static nsresult
ReportToConsole(const PRUnichar* aMessageName, const PRUnichar **aParams,
- PRUint32 aParamsLength, PRUint32 aErrorFlags)
+ PRUint32 aParamsLength, PRUint32 aErrorFlags, const PRUnichar* aReferrer)
{
nsresult rv;
nsCOMPtr consoleService =
@@ -703,7 +703,7 @@ ReportToConsole(const PRUnichar* aMessageName, const PRUnichar **aParams,
getter_Copies(errorText));
NS_ENSURE_SUCCESS(rv, rv);
rv = errorObject->Init(errorText.get(),
- EmptyString().get(), /* file name */
+ aReferrer, /* file name */
EmptyString().get(), /* source line */
0, /* line number */
0, /* column number */
@@ -715,6 +715,17 @@ ReportToConsole(const PRUnichar* aMessageName, const PRUnichar **aParams,
return NS_OK;
}
+already_AddRefed
+SheetLoadData::GetReferrerURI()
+{
+ nsIURI* uri = nsnull;
+ if (mParentData)
+ mParentData->mSheet->GetURL(uri);
+ if (!uri && mLoader->mDocument)
+ NS_IF_ADDREF(uri = mLoader->mDocument->GetDocumentURI());
+ return uri;
+}
+
/*
* Here we need to check that the load did not give us an http error
* page and check the mimetype on the channel to make sure we're not
@@ -789,35 +800,34 @@ SheetLoadData::OnStreamComplete(nsIUnicharStreamLoader* aLoader,
contentType.EqualsLiteral(UNKNOWN_CONTENT_TYPE) ||
contentType.IsEmpty();
- if (mLoader->mCompatMode == eCompatibility_NavQuirks || validType) {
- if (!validType) {
- nsCAutoString spec;
- if (channelURI) {
- channelURI->GetSpec(spec);
- }
-
- const nsAFlatString& specUCS2 = NS_ConvertUTF8toUCS2(spec);
- const nsAFlatString& ctypeUCS2 = NS_ConvertASCIItoUCS2(contentType);
- const PRUnichar *strings[] = { specUCS2.get(), ctypeUCS2.get() };
-
- ReportToConsole(NS_LITERAL_STRING("MimeNotCssWarn").get(), strings, 2,
- nsIScriptError::warningFlag);
- }
- } else {
- // Drop the data stream so that we do not load it
- aDataStream = nsnull;
-
+ if (!validType) {
nsCAutoString spec;
+ nsCAutoString referrer;
if (channelURI) {
channelURI->GetSpec(spec);
}
- const nsAFlatString& specUCS2 = NS_ConvertUTF8toUCS2(spec);
- const nsAFlatString& ctypeUCS2 = NS_ConvertASCIItoUCS2(contentType);
- const PRUnichar *strings[] = { specUCS2.get(), ctypeUCS2.get() };
+ {
+ nsCOMPtr referrerURI = GetReferrerURI();
+ if (referrerURI)
+ referrerURI->GetSpec(referrer);
+ }
- ReportToConsole(NS_LITERAL_STRING("MimeNotCss").get(), strings, 2,
- nsIScriptError::errorFlag);
+ const nsAFlatString& specUTF16 = NS_ConvertUTF8toUTF16(spec);
+ const nsAFlatString& ctypeUTF16 = NS_ConvertASCIItoUTF16(contentType);
+ const nsAFlatString& referrerUTF16 = NS_ConvertUTF8toUTF16(referrer);
+ const PRUnichar *strings[] = { specUTF16.get(), ctypeUTF16.get() };
+
+ if (mLoader->mCompatMode == eCompatibility_NavQuirks) {
+ ReportToConsole(NS_LITERAL_STRING("MimeNotCssWarn").get(), strings, 2,
+ nsIScriptError::warningFlag, referrerUTF16.get());
+ } else {
+ // Drop the data stream so that we do not load it
+ aDataStream = nsnull;
+
+ ReportToConsole(NS_LITERAL_STRING("MimeNotCss").get(), strings, 2,
+ nsIScriptError::errorFlag, referrerUTF16.get());
+ }
}
}
@@ -1399,17 +1409,9 @@ CSSLoaderImpl::LoadSheet(SheetLoadData* aLoadData, StyleSheetState aSheetState)
httpChannel->SetRequestHeader(NS_LITERAL_CSTRING("Accept"),
NS_LITERAL_CSTRING("text/css,*/*;q=0.1"),
PR_FALSE);
- if (aLoadData->mParentData) {
- nsCOMPtr parentURI;
- aLoadData->mParentData->mSheet->GetURL(*getter_AddRefs(parentURI));
- httpChannel->SetReferrer(parentURI);
- } else if (mDocument) {
- nsIURI *documentURI = mDocument->GetDocumentURI();
- NS_ASSERTION(documentURI, "Null document uri is bad!");
- if (documentURI) {
- httpChannel->SetReferrer(documentURI);
- }
- }
+ nsCOMPtr referrerURI = aLoadData->GetReferrerURI();
+ if (referrerURI)
+ httpChannel->SetReferrer(referrerURI);
}
// Now tell the channel we expect text/css data back.... We do
diff --git a/mozilla/layout/style/nsCSSLoader.h b/mozilla/layout/style/nsCSSLoader.h
index 117514e5d98..36acf1fd310 100644
--- a/mozilla/layout/style/nsCSSLoader.h
+++ b/mozilla/layout/style/nsCSSLoader.h
@@ -121,7 +121,8 @@ public:
nsICSSStyleSheet* aSheet,
PRBool aSyncLoad,
nsICSSLoaderObserver* aObserver);
-
+
+ already_AddRefed GetReferrerURI();
NS_DECL_ISUPPORTS
NS_DECL_NSIUNICHARSTREAMLOADEROBSERVER