Backed out changeset 533f3277cdbb (bug 479520) for bustage on a CLOSED TREE

This commit is contained in:
Carsten "Tomcat" Book 2015-10-28 12:29:27 +01:00
parent a5db13c0c1
commit 13e11e60f6
5 changed files with 3 additions and 127 deletions

View File

@ -142,6 +142,7 @@ if test -z "$BUILDING_JS" -o -n "$JS_STANDALONE"; then
ICU_CPPFLAGS="$ICU_CPPFLAGS -DUCONFIG_NO_TRANSLITERATION"
ICU_CPPFLAGS="$ICU_CPPFLAGS -DUCONFIG_NO_REGULAR_EXPRESSIONS"
ICU_CPPFLAGS="$ICU_CPPFLAGS -DUCONFIG_NO_BREAK_ITERATION"
ICU_CPPFLAGS="$ICU_CPPFLAGS -DUCONFIG_NO_IDNA"
# we don't need to pass data to and from legacy char* APIs
ICU_CPPFLAGS="$ICU_CPPFLAGS -DU_CHARSET_IS_UTF8"
# make sure to not accidentally pick up system-icu headers

View File

@ -40,6 +40,7 @@ UNIFIED_SOURCES += [
'DNSRequestChild.cpp',
'DNSRequestParent.cpp',
'GetAddrInfo.cpp',
'nameprep.c',
'nsDNSService2.cpp',
'nsIDNService.cpp',
'punycode.c',
@ -68,13 +69,3 @@ LOCAL_INCLUDES += [
if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk' and CONFIG['ANDROID_VERSION'] > '19':
CXXFLAGS += ['-I%s/bionic/libc/dns/include' % CONFIG['ANDROID_SOURCE']]
if CONFIG['ENABLE_INTL_API']:
DEFINES['IDNA2008'] = True
CXXFLAGS += CONFIG['MOZ_ICU_CFLAGS']
CFLAGS += CONFIG['MOZ_ICU_CFLAGS']
USE_LIBS += ['icu']
else:
UNIFIED_SOURCES += [
'nameprep.c',
]

View File

@ -17,16 +17,6 @@
#include "nsISupportsPrimitives.h"
#include "punycode.h"
#ifdef IDNA2008
// Currently we use the transitional processing option -- see
// http://unicode.org/reports/tr46/
// To switch to non-transitional processing, change the value of this flag
// and kTransitionalProcessing in netwerk/test/unit/test_idna2008.js to false
// (patch in bug 1218179).
const bool kIDNA2008_TransitionalProcessing = true;
#include "ICUUtils.h"
#endif
using namespace mozilla::unicode;
@ -133,91 +123,18 @@ void nsIDNService::prefsChanged(nsIPrefBranch *prefBranch, const char16_t *pref)
nsIDNService::nsIDNService()
{
#ifdef IDNA2008
uint32_t IDNAOptions = UIDNA_CHECK_BIDI | UIDNA_CHECK_CONTEXTJ;
if (!kIDNA2008_TransitionalProcessing) {
IDNAOptions |= UIDNA_NONTRANSITIONAL_TO_UNICODE;
}
UErrorCode errorCode = U_ZERO_ERROR;
mIDNA = uidna_openUTS46(IDNAOptions, &errorCode);
#else
if (idn_success != idn_nameprep_create(nullptr, &mNamePrepHandle))
mNamePrepHandle = nullptr;
mNormalizer = do_GetService(NS_UNICODE_NORMALIZER_CONTRACTID);
/* member initializers and constructor code */
#endif
}
nsIDNService::~nsIDNService()
{
#ifdef IDNA2008
uidna_close(mIDNA);
#else
idn_nameprep_destroy(mNamePrepHandle);
#endif
}
#ifdef IDNA2008
nsresult
nsIDNService::IDNA2008ToUnicode(const nsACString& input, nsAString& output)
{
NS_ConvertUTF8toUTF16 inputStr(input);
UIDNAInfo info = UIDNA_INFO_INITIALIZER;
UErrorCode errorCode = U_ZERO_ERROR;
int32_t inLen = inputStr.Length();
int32_t outMaxLen = inLen - kACEPrefixLen + 1;
UChar outputBuffer[kMaxDNSNodeLen + 1];
int32_t outLen = uidna_labelToUnicode(mIDNA, (const UChar*)inputStr.get(),
inLen, outputBuffer, outMaxLen,
&info, &errorCode);
if (info.errors != 0) {
return NS_ERROR_FAILURE;
}
if (U_SUCCESS(errorCode)) {
ICUUtils::AssignUCharArrayToString(outputBuffer, outLen, output);
}
return ICUUtils::UErrorToNsResult(errorCode);
}
nsresult
nsIDNService::IDNA2008StringPrep(const nsAString& input,
nsAString& output,
stringPrepFlag flag)
{
UIDNAInfo info = UIDNA_INFO_INITIALIZER;
UErrorCode errorCode = U_ZERO_ERROR;
int32_t inLen = input.Length();
int32_t outMaxLen = kMaxDNSNodeLen + 1;
UChar outputBuffer[kMaxDNSNodeLen + 1];
int32_t outLen =
uidna_labelToUnicode(mIDNA, (const UChar*)PromiseFlatString(input).get(),
inLen, outputBuffer, outMaxLen, &info, &errorCode);
nsresult rv = ICUUtils::UErrorToNsResult(errorCode);
NS_ENSURE_SUCCESS(rv, rv);
// Output the result of nameToUnicode even if there were errors
ICUUtils::AssignUCharArrayToString(outputBuffer, outLen, output);
if (flag == eStringPrepIgnoreErrors) {
return NS_OK;
}
if (info.errors != 0) {
if (flag == eStringPrepForDNS) {
output.Truncate();
}
rv = NS_ERROR_FAILURE;
}
return rv;
}
#endif
NS_IMETHODIMP nsIDNService::ConvertUTF8toACE(const nsACString & input, nsACString & ace)
{
return UTF8toACE(input, ace, eStringPrepForDNS);
@ -479,7 +396,6 @@ static nsresult utf16ToUcs4(const nsAString& in,
return NS_OK;
}
#ifndef IDNA2008
static void ucs4toUtf16(const uint32_t *in, nsAString& out)
{
while (*in) {
@ -492,7 +408,6 @@ static void ucs4toUtf16(const uint32_t *in, nsAString& out)
in++;
}
}
#endif
static nsresult punycode(const nsAString& in, nsACString& out)
{
@ -547,9 +462,6 @@ static nsresult punycode(const nsAString& in, nsACString& out)
nsresult nsIDNService::stringPrep(const nsAString& in, nsAString& out,
stringPrepFlag flag)
{
#ifdef IDNA2008
return IDNA2008StringPrep(in, out, flag);
#else
if (!mNamePrepHandle || !mNormalizer)
return NS_ERROR_FAILURE;
@ -611,7 +523,6 @@ nsresult nsIDNService::stringPrep(const nsAString& in, nsAString& out,
}
return rv;
#endif
}
nsresult nsIDNService::stringPrepAndACE(const nsAString& in, nsACString& out,
@ -701,11 +612,6 @@ nsresult nsIDNService::decodeACE(const nsACString& in, nsACString& out,
return NS_OK;
}
nsAutoString utf16;
#ifdef IDNA2008
nsresult result = IDNA2008ToUnicode(in, utf16);
NS_ENSURE_SUCCESS(result, result);
#else
// RFC 3490 - 4.2 ToUnicode
// The ToUnicode output never contains more code points than its input.
punycode_uint output_length = in.Length() - kACEPrefixLen + 1;
@ -724,9 +630,9 @@ nsresult nsIDNService::decodeACE(const nsACString& in, nsACString& out,
// UCS4 -> UTF8
output[output_length] = 0;
nsAutoString utf16;
ucs4toUtf16(output, utf16);
delete [] output;
#endif
if (flag != eStringPrepForUI || isLabelSafe(utf16)) {
CopyUTF16toUTF8(utf16, out);
} else {

View File

@ -10,14 +10,8 @@
#include "nsCOMPtr.h"
#include "nsIObserver.h"
#include "nsWeakReference.h"
#ifdef IDNA2008
#include "unicode/uidna.h"
#else
#include "nsIUnicodeNormalizer.h"
#include "nsIDNKitInterface.h"
#endif
#include "nsString.h"
class nsIPrefBranch;
@ -149,23 +143,8 @@ private:
*/
bool illegalScriptCombo(int32_t script, int32_t& savedScript);
#ifdef IDNA2008
/**
* Convert a DNS label from ASCII to Unicode using IDNA2008
*/
nsresult IDNA2008ToUnicode(const nsACString& input, nsAString& output);
/**
* Convert a DNS label to a normalized form conforming to IDNA2008
*/
nsresult IDNA2008StringPrep(const nsAString& input, nsAString& output,
stringPrepFlag flag);
UIDNA* mIDNA;
#else
idn_nameprep_t mNamePrepHandle;
nsCOMPtr<nsIUnicodeNormalizer> mNormalizer;
#endif
nsXPIDLString mIDNBlacklist;
/**

View File

@ -43,7 +43,6 @@ LOCAL_INCLUDES = [
'../dns',
]
DEFINES['IDNA2008'] = False
DEFINES['MOZILLA_INTERNAL_API'] = True
DEFINES['MOZILLA_XPCOMRT_API'] = True
DEFINES['MOZILLA_EXTERNAL_LINKAGE'] = True