Bug 1292486 - Get rid of nsIUnicodeNormalizer interface. r?jfkthame draft
authorMakoto Kato <m_kato@ga2.so-net.ne.jp>
Fri, 20 Oct 2017 17:35:34 +0900
changeset 683824 96628a717d3d019e3ad613219c3cdf87e42b8f69
parent 683823 dabc52f35ddbfac80f262e2b99b8170b849ed3bb
child 736729 d75c04a7e50c7cfe60a824b54e15d6fcd9d459e1
push id85466
push userbmo:m_kato@ga2.so-net.ne.jp
push dateFri, 20 Oct 2017 08:39:51 +0000
reviewersjfkthame
bugs1292486
milestone58.0a1
Bug 1292486 - Get rid of nsIUnicodeNormalizer interface. r?jfkthame m-c and c-c don't use nsIUnicodeNormalizer interface now. MozReview-Commit-ID: DGK7wBrcrob
browser/installer/package-manifest.in
intl/build/nsI18nModule.cpp
intl/unicharutil/moz.build
intl/unicharutil/nsIUnicodeNormalizer.idl
intl/unicharutil/nsUnicodeNormalizer.cpp
intl/unicharutil/nsUnicodeNormalizer.h
intl/unicharutil/tests/NormalizationData.h
intl/unicharutil/tests/NormalizationTest.cpp
intl/unicharutil/tests/genNormalizationData.pl
intl/unicharutil/tests/moz.build
intl/unicharutil/tests/unit/xpcshell.ini
mobile/android/installer/package-manifest.in
--- a/browser/installer/package-manifest.in
+++ b/browser/installer/package-manifest.in
@@ -315,17 +315,16 @@
 @RESPATH@/components/toolkit_xulstore.xpt
 @RESPATH@/components/toolkitprofile.xpt
 #ifdef MOZ_ENABLE_XREMOTE
 @RESPATH@/components/toolkitremote.xpt
 #endif
 @RESPATH@/components/txtsvc.xpt
 @RESPATH@/components/txmgr.xpt
 @RESPATH@/components/uconv.xpt
-@RESPATH@/components/unicharutil.xpt
 @RESPATH@/components/update.xpt
 @RESPATH@/components/uriloader.xpt
 @RESPATH@/components/urlformatter.xpt
 @RESPATH@/components/webBrowser_core.xpt
 @RESPATH@/components/webbrowserpersist.xpt
 @RESPATH@/components/webextensions.xpt
 @RESPATH@/components/widget.xpt
 #ifdef XP_MACOSX
--- a/intl/build/nsI18nModule.cpp
+++ b/intl/build/nsI18nModule.cpp
@@ -5,67 +5,59 @@
 
 #include "mozilla/ModuleUtils.h"
 
 // lwbrk
 #include "nsLWBrkCIID.h"
 #include "nsJISx4051LineBreaker.h"
 #include "nsSampleWordBreaker.h"
 
-// unicharutil
-#include "nsUnicodeNormalizer.h"
-
 // string bundles (intl)
 #include "nsStringBundleService.h"
 #include "nsStringBundleTextOverride.h"
 
 // locale
 #include "nsLocaleConstructors.h"
 
 // uconv
 
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsJISx4051LineBreaker)
 NS_GENERIC_FACTORY_CONSTRUCTOR(nsSampleWordBreaker)
 
 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsStringBundleService, Init)
 NS_GENERIC_FACTORY_CONSTRUCTOR_INIT(nsStringBundleTextOverride, Init)
 
-NS_GENERIC_FACTORY_CONSTRUCTOR(nsUnicodeNormalizer)
-
 NS_DEFINE_NAMED_CID(MOZ_LOCALESERVICE_CID);
 NS_DEFINE_NAMED_CID(MOZ_OSPREFERENCES_CID);
 NS_DEFINE_NAMED_CID(NS_LBRK_CID);
 NS_DEFINE_NAMED_CID(NS_WBRK_CID);
-NS_DEFINE_NAMED_CID(NS_UNICODE_NORMALIZER_CID);
 NS_DEFINE_NAMED_CID(NS_STRINGBUNDLESERVICE_CID);
 NS_DEFINE_NAMED_CID(NS_STRINGBUNDLETEXTOVERRIDE_CID);
 NS_DEFINE_NAMED_CID(NS_COLLATIONFACTORY_CID);
 NS_DEFINE_NAMED_CID(NS_PLATFORMCHARSET_CID);
 NS_DEFINE_NAMED_CID(NS_COLLATION_CID);
 
 static const mozilla::Module::CIDEntry kIntlCIDs[] = {
     { &kMOZ_LOCALESERVICE_CID, false, nullptr, mozilla::intl::LocaleServiceConstructor },
     { &kMOZ_OSPREFERENCES_CID, false, nullptr, mozilla::intl::OSPreferencesConstructor },
     { &kNS_LBRK_CID, false, nullptr, nsJISx4051LineBreakerConstructor },
     { &kNS_WBRK_CID, false, nullptr, nsSampleWordBreakerConstructor },
-    { &kNS_UNICODE_NORMALIZER_CID, false, nullptr, nsUnicodeNormalizerConstructor },
     { &kNS_STRINGBUNDLESERVICE_CID, false, nullptr, nsStringBundleServiceConstructor },
     { &kNS_STRINGBUNDLETEXTOVERRIDE_CID, false, nullptr, nsStringBundleTextOverrideConstructor },
     { &kNS_COLLATIONFACTORY_CID, false, nullptr, nsCollationFactoryConstructor },
     { &kNS_PLATFORMCHARSET_CID, false, nullptr, nsPlatformCharsetConstructor },
     { &kNS_COLLATION_CID, false, nullptr, nsCollationConstructor },
     { nullptr }
 };
 
 static const mozilla::Module::ContractIDEntry kIntlContracts[] = {
     { MOZ_LOCALESERVICE_CONTRACTID, &kMOZ_LOCALESERVICE_CID },
     { MOZ_OSPREFERENCES_CONTRACTID, &kMOZ_OSPREFERENCES_CID },
     { NS_LBRK_CONTRACTID, &kNS_LBRK_CID },
     { NS_WBRK_CONTRACTID, &kNS_WBRK_CID },
-    { NS_UNICODE_NORMALIZER_CONTRACTID, &kNS_UNICODE_NORMALIZER_CID },
     { NS_STRINGBUNDLE_CONTRACTID, &kNS_STRINGBUNDLESERVICE_CID },
     { NS_STRINGBUNDLETEXTOVERRIDE_CONTRACTID, &kNS_STRINGBUNDLETEXTOVERRIDE_CID },
     { NS_COLLATIONFACTORY_CONTRACTID, &kNS_COLLATIONFACTORY_CID },
     { NS_PLATFORMCHARSET_CONTRACTID, &kNS_PLATFORMCHARSET_CID },
     { NS_COLLATION_CONTRACTID, &kNS_COLLATION_CID },
     { nullptr }
 };
 
--- a/intl/unicharutil/moz.build
+++ b/intl/unicharutil/moz.build
@@ -1,28 +1,13 @@
 # -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
 # vim: set filetype=python:
 # This Source Code Form is subject to the terms of the Mozilla Public
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
 DIRS += ['util']
-TEST_DIRS += ['tests']
-
-XPIDL_SOURCES += [
-    'nsIUnicodeNormalizer.idl',
-]
-
-XPIDL_MODULE = 'unicharutil'
 
 EXPORTS += [
     'nsUGenCategory.h',
-    'nsUnicodeNormalizer.h',
-]
-
-UNIFIED_SOURCES += [
-    'nsUnicodeNormalizer.cpp',
 ]
 
 FINAL_LIBRARY = 'xul'
-
-if CONFIG['GNU_CXX']:
-    CXXFLAGS += ['-Wno-error=shadow']
deleted file mode 100644
--- a/intl/unicharutil/nsIUnicodeNormalizer.idl
+++ /dev/null
@@ -1,33 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsISupports.idl"
-
-%{C++
-#define NS_UNICODE_NORMALIZER_CID { 0xa665e49a, 0xf3e6, 0x4fed, { 0x9f, 0x31, 0xf7, 0xc5, 0x68, 0xa2, 0x98, 0x99 } }
-#define NS_UNICODE_NORMALIZER_CONTRACTID "@mozilla.org/intl/unicodenormalizer;1"
-%}
-
-[scriptable, uuid(B43A461F-1BCF-4329-820B-66E48C979E14)]
-interface nsIUnicodeNormalizer : nsISupports
-{
- /**
- * Normalize Unicode (NFD, NFC, NFKD, NFKC).
- *
- * NFD: Canonical Decomposition
- * NFC: Canonical Decomposition, followed by Canonical Composition
- * NFKD: Compatibility Decomposition
- * NFKC: Compatibility Decomposition, followed by Canonical Composition
- * Reference: Unicode Standard, TR15, Unicode Normalization Forms
- *
- * @param aSrc         [IN]  nsAString which contains an input UTF-16 string.
- * @param aDest        [OUT] A pointer to an output buffer provided by a callee.
- * @return             NS_OK for success, 
- */
-  void NormalizeUnicodeNFD(in AString aSrc, out AString aDest);
-  void NormalizeUnicodeNFC(in AString aSrc, out AString aDest);
-  void NormalizeUnicodeNFKD(in AString aSrc, out AString aDest);
-  void NormalizeUnicodeNFKC(in AString aSrc, out AString aDest);
-};
deleted file mode 100644
--- a/intl/unicharutil/nsUnicodeNormalizer.cpp
+++ /dev/null
@@ -1,91 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "nsUnicodeNormalizer.h"
-#include "ICUUtils.h"
-#include "unicode/unorm2.h"
-#include "unicode/utext.h"
-
-NS_IMPL_ISUPPORTS(nsUnicodeNormalizer, nsIUnicodeNormalizer)
-
-static nsresult
-DoNormalization(const UNormalizer2* aNorm, const nsAString& aSrc,
-                nsAString& aDest)
-{
-  UErrorCode errorCode = U_ZERO_ERROR;
-  const int32_t length = aSrc.Length();
-  const UChar* src = reinterpret_cast<const UChar*>(aSrc.BeginReading());
-  // Initial guess for a capacity that is likely to be enough for most cases.
-  int32_t capacity = length + (length >> 8) + 8;
-  while (true) {
-    aDest.SetLength(capacity);
-    UChar* dest = reinterpret_cast<UChar*>(aDest.BeginWriting());
-    int32_t len = unorm2_normalize(aNorm, src, aSrc.Length(), dest, capacity,
-                                   &errorCode);
-    if (U_SUCCESS(errorCode)) {
-      aDest.SetLength(len);
-      break;
-    }
-    if (errorCode != U_BUFFER_OVERFLOW_ERROR) {
-      // Some other error that we don't handle
-      break;
-    }
-    // Buffer wasn't big enough; adjust to the reported size and try again.
-    capacity = len;
-    errorCode = U_ZERO_ERROR;
-  }
-  return ICUUtils::UErrorToNsResult(errorCode);
-}
-
-nsresult
-nsUnicodeNormalizer::NormalizeUnicodeNFD(const nsAString& aSrc,
-                                         nsAString& aDest)
-{
-  // The unorm2_getNF*Instance functions return static singletons that should
-  // not be deleted, so we just get them once on first use.
-  static UErrorCode errorCode = U_ZERO_ERROR;
-  static const UNormalizer2* norm = unorm2_getNFDInstance(&errorCode);
-  if (U_SUCCESS(errorCode)) {
-    return DoNormalization(norm, aSrc, aDest);
-  }
-  return ICUUtils::UErrorToNsResult(errorCode);
-}
-
-nsresult
-nsUnicodeNormalizer::NormalizeUnicodeNFC(const nsAString& aSrc,
-                                         nsAString& aDest)
-{
-  static UErrorCode errorCode = U_ZERO_ERROR;
-  static const UNormalizer2* norm = unorm2_getNFCInstance(&errorCode);
-  if (U_SUCCESS(errorCode)) {
-    return DoNormalization(norm, aSrc, aDest);
-  }
-  return ICUUtils::UErrorToNsResult(errorCode);
-}
-
-nsresult
-nsUnicodeNormalizer::NormalizeUnicodeNFKD(const nsAString& aSrc,
-                                          nsAString& aDest)
-{
-  static UErrorCode errorCode = U_ZERO_ERROR;
-  static const UNormalizer2* norm = unorm2_getNFKDInstance(&errorCode);
-  if (U_SUCCESS(errorCode)) {
-    return DoNormalization(norm, aSrc, aDest);
-  }
-  return ICUUtils::UErrorToNsResult(errorCode);
-}
-
-nsresult
-nsUnicodeNormalizer::NormalizeUnicodeNFKC(const nsAString& aSrc,
-                                          nsAString& aDest)
-{
-  static UErrorCode errorCode = U_ZERO_ERROR;
-  static const UNormalizer2* norm = unorm2_getNFKCInstance(&errorCode);
-  if (U_SUCCESS(errorCode)) {
-    return DoNormalization(norm, aSrc, aDest);
-  }
-  return ICUUtils::UErrorToNsResult(errorCode);
-}
deleted file mode 100644
--- a/intl/unicharutil/nsUnicodeNormalizer.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef nsUnicodeNormalizer_h__
-#define nsUnicodeNormalizer_h__
-
-#include "nscore.h"
-#include "nsISupports.h"
-
-#include "nsIUnicodeNormalizer.h"
-
-nsresult NS_NewUnicodeNormalizer(nsISupports** oResult);
-
-
-class nsUnicodeNormalizer : public nsIUnicodeNormalizer {
-public:
-   nsUnicodeNormalizer() { }
-
-   NS_DECL_ISUPPORTS
-
-   NS_IMETHOD NormalizeUnicodeNFD( const nsAString& aSrc, nsAString& aDest) override;
-   NS_IMETHOD NormalizeUnicodeNFC( const nsAString& aSrc, nsAString& aDest) override;
-   NS_IMETHOD NormalizeUnicodeNFKD( const nsAString& aSrc, nsAString& aDest) override;
-   NS_IMETHOD NormalizeUnicodeNFKC( const nsAString& aSrc, nsAString& aDest) override;
-
-private:
-   virtual ~nsUnicodeNormalizer() { }
-};
-
-#endif //nsUnicodeNormalizer_h__
-
deleted file mode 100644
--- a/intl/unicharutil/tests/NormalizationData.h
+++ /dev/null
@@ -1,12 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-/* dummy test data will be overwritten by generator */
-static char versionText[] = "\0";
-static testcaseLine Part0TestData[1];
-static testcaseLine Part1TestData[1];
-static testcaseLine Part2TestData[1];
-static testcaseLine Part3TestData[1];
-
deleted file mode 100644
--- a/intl/unicharutil/tests/NormalizationTest.cpp
+++ /dev/null
@@ -1,282 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include <stdio.h>
-#include "gtest/gtest.h"
-#include "nsXPCOM.h"
-#include "nsIUnicodeNormalizer.h"
-#include "nsString.h"
-#include "nsCharTraits.h"
-#include "nsServiceManagerUtils.h"
-#include "mozilla/Sprintf.h"
-
-struct testcaseLine {
-  wchar_t* c1;
-  wchar_t* c2;
-  wchar_t* c3;
-  wchar_t* c4;
-  wchar_t* c5;
-  char* description;
-};
-
-#ifdef DEBUG_smontagu
-#define DEBUG_NAMED_TESTCASE(t, s) \
-  printf(t ": "); \
-  for (uint32_t i = 0; i < s.Length(); ++i) \
-    printf("%x ", s.CharAt(i)); \
-  printf("\n")
-#else
-#define DEBUG_NAMED_TESTCASE(t, s)
-#endif
-
-#define DEBUG_TESTCASE(x) DEBUG_NAMED_TESTCASE(#x, x)
-
-#define NORMALIZE_AND_COMPARE(base, comparison, form, description) \
-   normalized.Truncate();\
-   normalizer->NormalizeUnicode##form(comparison, normalized);\
-   DEBUG_NAMED_TESTCASE(#form "(" #comparison ")", normalized);\
-   if (!base.Equals(normalized)) {\
-     rv = false;\
-     showError(description, #base " != " #form "(" #comparison ")\n");\
-   }
-
-NS_DEFINE_CID(kUnicodeNormalizerCID, NS_UNICODE_NORMALIZER_CID);
-
-nsIUnicodeNormalizer *normalizer;
-
-#include "NormalizationData.h"
-
-void showError(const char* description, const char* errorText)
-{
-  printf("%s failed: %s", description, errorText);
-}
-
-bool TestInvariants(testcaseLine* testLine)
-{
-  nsAutoString c1, c2, c3, c4, c5, normalized;
-  c1 = nsDependentString((char16_t*)testLine->c1);
-  c2 = nsDependentString((char16_t*)testLine->c2);
-  c3 = nsDependentString((char16_t*)testLine->c3);
-  c4 = nsDependentString((char16_t*)testLine->c4);
-  c5 = nsDependentString((char16_t*)testLine->c5);
-  bool rv = true;
-
-  /*
-    1. The following invariants must be true for all conformant implementations
-
-    NFC
-      c2 ==  NFC(c1) ==  NFC(c2) ==  NFC(c3)
-  */
-  DEBUG_TESTCASE(c2);
-  NORMALIZE_AND_COMPARE(c2, c1, NFC, testLine->description);
-  NORMALIZE_AND_COMPARE(c2, c2, NFC, testLine->description);
-  NORMALIZE_AND_COMPARE(c2, c3, NFC, testLine->description);
-
-  /*
-      c4 ==  NFC(c4) ==  NFC(c5)
-  */
-  DEBUG_TESTCASE(c4);
-  NORMALIZE_AND_COMPARE(c4, c4, NFC, testLine->description);
-  NORMALIZE_AND_COMPARE(c4, c5, NFC, testLine->description);
-
-  /*
-    NFD
-      c3 ==  NFD(c1) ==  NFD(c2) ==  NFD(c3)
-  */
-  DEBUG_TESTCASE(c3);
-  NORMALIZE_AND_COMPARE(c3, c1, NFD, testLine->description);
-  NORMALIZE_AND_COMPARE(c3, c2, NFD, testLine->description);
-  NORMALIZE_AND_COMPARE(c3, c3, NFD, testLine->description);
-  /*
-      c5 ==  NFD(c4) ==  NFD(c5)
-  */
-  DEBUG_TESTCASE(c5);
-  NORMALIZE_AND_COMPARE(c5, c4, NFD, testLine->description);
-  NORMALIZE_AND_COMPARE(c5, c5, NFD, testLine->description);
-
-  /*
-    NFKC
-      c4 == NFKC(c1) == NFKC(c2) == NFKC(c3) == NFKC(c4) == NFKC(c5)
-  */
-  DEBUG_TESTCASE(c4);
-  NORMALIZE_AND_COMPARE(c4, c1, NFKC, testLine->description);
-  NORMALIZE_AND_COMPARE(c4, c2, NFKC, testLine->description);
-  NORMALIZE_AND_COMPARE(c4, c3, NFKC, testLine->description);
-  NORMALIZE_AND_COMPARE(c4, c4, NFKC, testLine->description);
-  NORMALIZE_AND_COMPARE(c4, c5, NFKC, testLine->description);
-
-  /*
-    NFKD
-      c5 == NFKD(c1) == NFKD(c2) == NFKD(c3) == NFKD(c4) == NFKD(c5)
-  */
-  DEBUG_TESTCASE(c5);
-  NORMALIZE_AND_COMPARE(c5, c1, NFKD, testLine->description);
-  NORMALIZE_AND_COMPARE(c5, c2, NFKD, testLine->description);
-  NORMALIZE_AND_COMPARE(c5, c3, NFKD, testLine->description);
-  NORMALIZE_AND_COMPARE(c5, c4, NFKD, testLine->description);
-  NORMALIZE_AND_COMPARE(c5, c5, NFKD, testLine->description);
-
-  return rv;
-}
-
-uint32_t UTF32CodepointFromTestcase(testcaseLine* testLine)
-{
-  if (!IS_SURROGATE(testLine->c1[0]))
-    return testLine->c1[0];
-
-  NS_ASSERTION(NS_IS_HIGH_SURROGATE(testLine->c1[0]) &&
-               NS_IS_LOW_SURROGATE(testLine->c1[1]),
-               "Test data neither in BMP nor legal surrogate pair");
-  return SURROGATE_TO_UCS4(testLine->c1[0], testLine->c1[1]);
-}
-
-bool TestUnspecifiedCodepoint(uint32_t codepoint)
-{
-  bool rv = true;
-  char16_t unicharArray[3];
-  nsAutoString X, normalized;
-
-  if (IS_IN_BMP(codepoint)) {
-    unicharArray[0] = codepoint;
-    unicharArray[1] = 0;
-    X = nsDependentString(unicharArray);
-  }
-  else {
-    unicharArray[0] = H_SURROGATE(codepoint);
-    unicharArray[1] = L_SURROGATE(codepoint);
-    unicharArray[2] = 0;
-    X = nsDependentString(unicharArray);
-  }
-
-  /*
- 2. For every code point X assigned in this version of Unicode that is not specifically
-    listed in Part 1, the following invariants must be true for all conformant
-    implementations:
-
-      X == NFC(X) == NFD(X) == NFKC(X) == NFKD(X)
-  */
-  static const size_t len = 9;
-  char description[len];
-
-  DEBUG_TESTCASE(X);
-  snprintf(description, len, "U+%04X", codepoint);
-  NORMALIZE_AND_COMPARE(X, X, NFC, description);
-  NORMALIZE_AND_COMPARE(X, X, NFD, description);
-  NORMALIZE_AND_COMPARE(X, X, NFKC, description);
-  NORMALIZE_AND_COMPARE(X, X, NFKD, description);
-  return rv;
-}
-
-void TestPart0()
-{
-  printf("Test Part0: Specific cases\n");
-
-  uint32_t i = 0;
-  uint32_t numFailed = 0;
-  uint32_t numPassed = 0;
-
-  while (Part0TestData[i].c1[0] != 0) {
-    if (TestInvariants(&Part0TestData[i++]))
-      ++numPassed;
-    else
-      ++numFailed;
-  }
-  printf(" %d cases passed, %d failed\n\n", numPassed, numFailed);
-  EXPECT_EQ(0u, numFailed);
-}
-
-void TestPart1()
-{
-  printf("Test Part1: Character by character test\n");
-
-  uint32_t i = 0;
-  uint32_t numFailed = 0;
-  uint32_t numPassed = 0;
-  uint32_t codepoint;
-  uint32_t testDataCodepoint = UTF32CodepointFromTestcase(&Part1TestData[i]);
-
-  for (codepoint = 1; codepoint < 0x110000; ++codepoint) {
-    if (testDataCodepoint == codepoint) {
-      if (TestInvariants(&Part1TestData[i]))
-        ++numPassed;
-      else
-        ++numFailed;
-      testDataCodepoint = UTF32CodepointFromTestcase(&Part1TestData[++i]);
-    } else {
-      if (TestUnspecifiedCodepoint(codepoint))
-        ++numPassed;
-      else
-        ++numFailed;
-    }
-  }
-  printf(" %d cases passed, %d failed\n\n", numPassed, numFailed);
-  EXPECT_EQ(0u, numFailed);
-}
-
-void TestPart2()
-{
-  printf("Test Part2: Canonical Order Test\n");
-
-  uint32_t i = 0;
-  uint32_t numFailed = 0;
-  uint32_t numPassed = 0;
-
-  while (Part2TestData[i].c1[0] != 0) {
-    if (TestInvariants(&Part2TestData[i++]))
-      ++numPassed;
-    else
-      ++numFailed;
-  }
-  printf(" %d cases passed, %d failed\n\n", numPassed, numFailed);
-  EXPECT_EQ(0u, numFailed);
-}
-
-void TestPart3()
-{
-  printf("Test Part3: PRI #29 Test\n");
-
-  uint32_t i = 0;
-  uint32_t numFailed = 0;
-  uint32_t numPassed = 0;
-
-  while (Part3TestData[i].c1[0] != 0) {
-    if (TestInvariants(&Part3TestData[i++]))
-      ++numPassed;
-    else
-      ++numFailed;
-  }
-  printf(" %d cases passed, %d failed\n\n", numPassed, numFailed);
-  EXPECT_EQ(0u, numFailed);
-}
-
-TEST(NormalizationTest, Main) {
-  if (sizeof(wchar_t) != 2) {
-    printf("This test can only be run where sizeof(wchar_t) == 2\n");
-    return;
-  }
-  if (strlen(versionText) == 0) {
-    printf("No testcases: to run the tests generate the header file using\n");
-    printf(" perl genNormalizationData.pl\n");
-    printf("in intl/unichar/tools and rebuild\n");
-    return;
-  }
-
-  printf("NormalizationTest: test nsIUnicodeNormalizer. UCD version: %s\n",
-         versionText);
-
-  normalizer = nullptr;
-  nsresult res;
-  res = CallGetService(kUnicodeNormalizerCID, &normalizer);
-
-  ASSERT_FALSE(NS_FAILED(res)) << "GetService failed";
-  ASSERT_NE(nullptr, normalizer);
-
-  TestPart0();
-  TestPart1();
-  TestPart2();
-  TestPart3();
-
-  NS_RELEASE(normalizer);
-}
deleted file mode 100644
--- a/intl/unicharutil/tests/genNormalizationData.pl
+++ /dev/null
@@ -1,93 +0,0 @@
-#!/usr/bin/perl 
-#
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-open ( TEXTFILE , "< NormalizationTest.txt")
-    || die "Cannot find NormalizationTest.txt. The latest version should be available from\n http://www.unicode.org/Public/UNIDATA/NormalizationTest.txt\n";
-
-open ( OUT , "> NormalizationData.h")
-#open ( OUT , "> test.txt")
-    || die "Cannot create output file NormalizationData.h\n";
-
-$mpl = <<END_OF_MPL;
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-/* 
-    DO NOT EDIT THIS DOCUMENT !!! THIS DOCUMENT IS GENERATED BY
-    mozilla/intl/unicharutil/tools/genNormalizationData.pl
- */
-END_OF_MPL
-
-print OUT $mpl;
-
-# XXX This code assumes that wchar_t is 16-bit unsigned, which is currently
-#      true on Windows, Linux and Mac (with |g++ -fshort-wchar|).
-#      To make it work where that assumption doesn't hold, one could generate
-#      one huge array containing all the strings as 16-bit units (including
-#      the 0 terminator) and initialize the array of testcaseLine with pointers
-#      into the huge array.
-
-while(<TEXTFILE>) {
-    chop;
-    if (/^# NormalizationTest-(.+)\.txt/) {
-	print OUT "static char versionText[] = \"$1\";\n";
-    } elsif (/^\@Part(.)/) {
-	if ($1 != "0") {
-	    print OUT "  {\n";
-	    print OUT "    L\"\",\n";
-	    print OUT "    L\"\",\n";
-	    print OUT "    L\"\",\n";
-	    print OUT "    L\"\",\n";
-	    print OUT "    L\"\",\n";
-	    print OUT "    \"\",\n";
-	    print OUT "  },\n";
-	    print OUT "};\n";
-	}
-	print OUT "\n";
-	print OUT "static testcaseLine Part$1TestData[] = \n";
-	print OUT "{\n";
-    } else {
-	unless (/^\#/) {
-	    @cases = split(/;/ , $_);
-	    print OUT "  {\n";
-	    for ($case = 0; $case < 5; ++$case) {
-		$c = $cases[$case];
-		print OUT "    L\"";
-		@codepoints = split(/ / , $c);
-		foreach (@codepoints) {
-		    $cp = hex($_);
-		    if ($cp < 0x10000) {
-                      # BMP codepoint
-			printf OUT "\\x%04X", $cp;
-		    } else {
-                      # non-BMP codepoint, convert to surrogate pair
-			printf OUT "\\x%04X\\x%04X",
-			           ($cp >> 10) + 0xD7C0,
-			           ($cp & 0x03FF) | 0xDC00;
-		    }
-		}
-		print OUT "\",\n";
-	    }
-	    $description = $cases[10];
-	    $description =~ s/^ \) //;
-	    print OUT "    \"$description\"\n";
-	    print OUT "  },\n";
-	}
-    }
-}
- 
-print OUT "  {\n";
-print OUT "    L\"\",\n";
-print OUT "    L\"\",\n";
-print OUT "    L\"\",\n";
-print OUT "    L\"\",\n";
-print OUT "    L\"\",\n";
-print OUT "    \"\",\n";
-print OUT "  },\n";
-print OUT "};\n";
-close (OUT);
-close (TEXTFILE);
deleted file mode 100755
--- a/intl/unicharutil/tests/moz.build
+++ /dev/null
@@ -1,11 +0,0 @@
-# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
-SOURCES += [
-    'NormalizationTest.cpp',
-]
-
-FINAL_LIBRARY = 'xul-gtest'
deleted file mode 100755
--- a/intl/unicharutil/tests/unit/xpcshell.ini
+++ /dev/null
@@ -1,2 +0,0 @@
-[DEFAULT]
-head = 
--- a/mobile/android/installer/package-manifest.in
+++ b/mobile/android/installer/package-manifest.in
@@ -225,17 +225,16 @@
 @BINPATH@/components/toolkit_xulstore.xpt
 @BINPATH@/components/toolkitprofile.xpt
 #ifdef MOZ_ENABLE_XREMOTE
 @BINPATH@/components/toolkitremote.xpt
 #endif
 @BINPATH@/components/txtsvc.xpt
 @BINPATH@/components/txmgr.xpt
 @BINPATH@/components/uconv.xpt
-@BINPATH@/components/unicharutil.xpt
 @BINPATH@/components/update.xpt
 @BINPATH@/components/uriloader.xpt
 @BINPATH@/components/urlformatter.xpt
 @BINPATH@/components/webBrowser_core.xpt
 @BINPATH@/components/webbrowserpersist.xpt
 @BINPATH@/components/webextensions.xpt
 @BINPATH@/components/widget.xpt
 @BINPATH@/components/widget_android.xpt