diff --git a/mozilla/htmlparser/public/nsIParserService.h b/mozilla/htmlparser/public/nsIParserService.h index 3ea9acb2cfc..7900a419a03 100644 --- a/mozilla/htmlparser/public/nsIParserService.h +++ b/mozilla/htmlparser/public/nsIParserService.h @@ -103,6 +103,11 @@ class nsIParserService : public nsISupports { NS_IMETHOD GetTopicObservers(const nsAString& aTopic, nsIObserverEntry** aEntry) = 0; + virtual PRBool IsValidQName(const nsASingleFragmentString& aQName, + PRBool aNamespaceAware, + const PRUnichar** aColon) = 0; + virtual PRBool IsXMLLetter(PRUnichar aChar) = 0; + virtual PRBool IsXMLNCNameChar(PRUnichar aChar) = 0; }; #endif // nsIParserService_h__ diff --git a/mozilla/htmlparser/src/nsExpatDriver.cpp b/mozilla/htmlparser/src/nsExpatDriver.cpp index 91c8cf85ed6..9344b4ea767 100644 --- a/mozilla/htmlparser/src/nsExpatDriver.cpp +++ b/mozilla/htmlparser/src/nsExpatDriver.cpp @@ -699,10 +699,11 @@ nsExpatDriver::OpenInputStreamFromExternalDTD(const PRUnichar* aFPIStr, { nsresult rv; nsCOMPtr baseURI; - rv = NS_NewURI(getter_AddRefs(baseURI), NS_ConvertUCS2toUTF8(aBaseURL).get()); + rv = NS_NewURI(getter_AddRefs(baseURI), NS_ConvertUTF16toUTF8(aBaseURL)); if (NS_SUCCEEDED(rv) && baseURI) { nsCOMPtr uri; - rv = NS_NewURI(getter_AddRefs(uri), NS_ConvertUCS2toUTF8(aURLStr).get(), baseURI); + rv = NS_NewURI(getter_AddRefs(uri), NS_ConvertUTF16toUTF8(aURLStr), nsnull, + baseURI); if (NS_SUCCEEDED(rv) && uri) { // check if it is alright to load this uri PRBool isChrome = PR_FALSE; @@ -721,7 +722,7 @@ nsExpatDriver::OpenInputStreamFromExternalDTD(const PRUnichar* aFPIStr, rv = NS_OpenURI(in, uri); nsCAutoString absURL; uri->GetSpec(absURL); - aAbsURL = NS_ConvertUTF8toUCS2(absURL); + CopyUTF8toUTF16(absURL, aAbsURL); } } return rv; diff --git a/mozilla/htmlparser/src/nsParserService.h b/mozilla/htmlparser/src/nsParserService.h index 6d3baa15f06..a82cb6179c2 100644 --- a/mozilla/htmlparser/src/nsParserService.h +++ b/mozilla/htmlparser/src/nsParserService.h @@ -25,6 +25,11 @@ #include "nsDTDUtils.h" #include "nsVoidArray.h" +extern "C" int MOZ_XMLIsValidQName(const char* ptr, const char* end, + int ns_aware, const char** colon); +extern "C" int MOZ_XMLIsLetter(const char* ptr); +extern "C" int MOZ_XMLIsNCNameChar(const char* ptr); + class nsParserService : public nsIParserService { public: nsParserService(); @@ -48,7 +53,7 @@ public: NS_IMETHOD IsContainer(PRInt32 aId, PRBool& aIsContainer) const; NS_IMETHOD IsBlock(PRInt32 aId, PRBool& aIsBlock) const; - // Observer mechanism5 + // Observer mechanism NS_IMETHOD RegisterObserver(nsIElementObserver* aObserver, const nsAString& aTopic, const eHTMLTags* aTags = nsnull); @@ -57,6 +62,30 @@ public: const nsAString& aTopic); NS_IMETHOD GetTopicObservers(const nsAString& aTopic, nsIObserverEntry** aEntry); + + PRBool IsValidQName(const nsASingleFragmentString& aQName, + PRBool aNamespaceAware, + const PRUnichar** aColon) + { + const char* colon; + const PRUnichar *begin, *end; + aQName.BeginReading(begin); + aQName.EndReading(end); + int result = MOZ_XMLIsValidQName(NS_REINTERPRET_CAST(const char*, begin), + NS_REINTERPRET_CAST(const char*, end), + aNamespaceAware, &colon); + *aColon = NS_REINTERPRET_CAST(const PRUnichar*, colon); + return !!result; + } + PRBool IsXMLLetter(PRUnichar aChar) + { + return MOZ_XMLIsLetter(NS_REINTERPRET_CAST(const char*, &aChar)); + } + PRBool IsXMLNCNameChar(PRUnichar aChar) + { + return MOZ_XMLIsNCNameChar(NS_REINTERPRET_CAST(const char*, &aChar)); + } + protected: nsObserverEntry* GetEntry(const nsAString& aTopic); nsresult CreateEntry(const nsAString& aTopic, diff --git a/mozilla/parser/htmlparser/public/nsIParserService.h b/mozilla/parser/htmlparser/public/nsIParserService.h index 3ea9acb2cfc..7900a419a03 100644 --- a/mozilla/parser/htmlparser/public/nsIParserService.h +++ b/mozilla/parser/htmlparser/public/nsIParserService.h @@ -103,6 +103,11 @@ class nsIParserService : public nsISupports { NS_IMETHOD GetTopicObservers(const nsAString& aTopic, nsIObserverEntry** aEntry) = 0; + virtual PRBool IsValidQName(const nsASingleFragmentString& aQName, + PRBool aNamespaceAware, + const PRUnichar** aColon) = 0; + virtual PRBool IsXMLLetter(PRUnichar aChar) = 0; + virtual PRBool IsXMLNCNameChar(PRUnichar aChar) = 0; }; #endif // nsIParserService_h__ diff --git a/mozilla/parser/htmlparser/src/nsExpatDriver.cpp b/mozilla/parser/htmlparser/src/nsExpatDriver.cpp index 91c8cf85ed6..9344b4ea767 100644 --- a/mozilla/parser/htmlparser/src/nsExpatDriver.cpp +++ b/mozilla/parser/htmlparser/src/nsExpatDriver.cpp @@ -699,10 +699,11 @@ nsExpatDriver::OpenInputStreamFromExternalDTD(const PRUnichar* aFPIStr, { nsresult rv; nsCOMPtr baseURI; - rv = NS_NewURI(getter_AddRefs(baseURI), NS_ConvertUCS2toUTF8(aBaseURL).get()); + rv = NS_NewURI(getter_AddRefs(baseURI), NS_ConvertUTF16toUTF8(aBaseURL)); if (NS_SUCCEEDED(rv) && baseURI) { nsCOMPtr uri; - rv = NS_NewURI(getter_AddRefs(uri), NS_ConvertUCS2toUTF8(aURLStr).get(), baseURI); + rv = NS_NewURI(getter_AddRefs(uri), NS_ConvertUTF16toUTF8(aURLStr), nsnull, + baseURI); if (NS_SUCCEEDED(rv) && uri) { // check if it is alright to load this uri PRBool isChrome = PR_FALSE; @@ -721,7 +722,7 @@ nsExpatDriver::OpenInputStreamFromExternalDTD(const PRUnichar* aFPIStr, rv = NS_OpenURI(in, uri); nsCAutoString absURL; uri->GetSpec(absURL); - aAbsURL = NS_ConvertUTF8toUCS2(absURL); + CopyUTF8toUTF16(absURL, aAbsURL); } } return rv; diff --git a/mozilla/parser/htmlparser/src/nsParserService.h b/mozilla/parser/htmlparser/src/nsParserService.h index 6d3baa15f06..a82cb6179c2 100644 --- a/mozilla/parser/htmlparser/src/nsParserService.h +++ b/mozilla/parser/htmlparser/src/nsParserService.h @@ -25,6 +25,11 @@ #include "nsDTDUtils.h" #include "nsVoidArray.h" +extern "C" int MOZ_XMLIsValidQName(const char* ptr, const char* end, + int ns_aware, const char** colon); +extern "C" int MOZ_XMLIsLetter(const char* ptr); +extern "C" int MOZ_XMLIsNCNameChar(const char* ptr); + class nsParserService : public nsIParserService { public: nsParserService(); @@ -48,7 +53,7 @@ public: NS_IMETHOD IsContainer(PRInt32 aId, PRBool& aIsContainer) const; NS_IMETHOD IsBlock(PRInt32 aId, PRBool& aIsBlock) const; - // Observer mechanism5 + // Observer mechanism NS_IMETHOD RegisterObserver(nsIElementObserver* aObserver, const nsAString& aTopic, const eHTMLTags* aTags = nsnull); @@ -57,6 +62,30 @@ public: const nsAString& aTopic); NS_IMETHOD GetTopicObservers(const nsAString& aTopic, nsIObserverEntry** aEntry); + + PRBool IsValidQName(const nsASingleFragmentString& aQName, + PRBool aNamespaceAware, + const PRUnichar** aColon) + { + const char* colon; + const PRUnichar *begin, *end; + aQName.BeginReading(begin); + aQName.EndReading(end); + int result = MOZ_XMLIsValidQName(NS_REINTERPRET_CAST(const char*, begin), + NS_REINTERPRET_CAST(const char*, end), + aNamespaceAware, &colon); + *aColon = NS_REINTERPRET_CAST(const PRUnichar*, colon); + return !!result; + } + PRBool IsXMLLetter(PRUnichar aChar) + { + return MOZ_XMLIsLetter(NS_REINTERPRET_CAST(const char*, &aChar)); + } + PRBool IsXMLNCNameChar(PRUnichar aChar) + { + return MOZ_XMLIsNCNameChar(NS_REINTERPRET_CAST(const char*, &aChar)); + } + protected: nsObserverEntry* GetEntry(const nsAString& aTopic); nsresult CreateEntry(const nsAString& aTopic,