Revert "Support GetCultureInfo with predefinedOnly flag (#654)" (#1257)
authorTarek Mahmoud Sayed <tarekms@microsoft.com>
Thu, 2 Jan 2020 23:31:34 +0000 (15:31 -0800)
committerGitHub <noreply@github.com>
Thu, 2 Jan 2020 23:31:34 +0000 (15:31 -0800)
This reverts commit 5272637ab8ae41c164a51316d792c8dd316df35d.

src/coreclr/src/System.Private.CoreLib/Resources/Strings.resx
src/libraries/Native/Unix/System.Globalization.Native/pal_locale.c
src/libraries/Native/Unix/System.Globalization.Native/pal_locale.h
src/libraries/System.Globalization/tests/CultureInfo/GetCultureInfo.cs [deleted file]
src/libraries/System.Globalization/tests/System.Globalization.Tests.csproj
src/libraries/System.Private.CoreLib/src/Interop/Unix/System.Globalization.Native/Interop.Locale.cs
src/libraries/System.Private.CoreLib/src/System/Globalization/CultureInfo.Unix.cs
src/libraries/System.Private.CoreLib/src/System/Globalization/CultureInfo.Windows.cs
src/libraries/System.Private.CoreLib/src/System/Globalization/CultureInfo.cs
src/libraries/System.Runtime/ref/System.Runtime.cs

index add5d7a..37b49a1 100644 (file)
   <data name="Argument_InvalidCultureName" xml:space="preserve">
     <value>Culture name '{0}' is not supported.</value>
   </data>
-  <data name="Argument_InvalidPredefinedCultureName" xml:space="preserve">
-    <value>Culture name '{0}' is not a predefined culture.</value>
-  </data>
   <data name="Argument_InvalidDateTimeKind" xml:space="preserve">
     <value>Invalid DateTimeKind value.</value>
   </data>
index ffbeef3..9508f97 100644 (file)
@@ -233,24 +233,3 @@ int32_t GlobalizationNative_GetDefaultLocaleName(UChar* value, int32_t valueLeng
 
     return UErrorCodeToBool(status);
 }
-
-// GlobalizationNative_IsPredefinedLocale returns TRUE if ICU has a real data for the locale.
-// Otherwise it returns FALSE;
-
-int32_t GlobalizationNative_IsPredefinedLocale(const UChar* localeName)
-{
-    UErrorCode err = U_ZERO_ERROR;
-    char locale[ULOC_FULLNAME_CAPACITY];
-    GetLocale(localeName, locale, ULOC_FULLNAME_CAPACITY, FALSE, &err);
-
-    if (U_FAILURE(err))
-        return FALSE;
-
-    // ures_open returns err = U_ZERO_ERROR when ICU has data for localeName.
-    // If it is fake locale, it will return err = U_USING_FALLBACK_WARNING || err = U_USING_DEFAULT_WARNING.
-    // Other err values would be just a failure.
-    UResourceBundle* uresb = ures_open(NULL, locale, &err);
-    ures_close(uresb);
-
-    return err == U_ZERO_ERROR;
-}
index f771954..7d3992d 100644 (file)
@@ -56,5 +56,3 @@ DLLEXPORT int32_t GlobalizationNative_GetLocales(UChar *value, int32_t valueLeng
 DLLEXPORT int32_t GlobalizationNative_GetLocaleName(const UChar* localeName, UChar* value, int32_t valueLength);
 
 DLLEXPORT int32_t GlobalizationNative_GetDefaultLocaleName(UChar* value, int32_t valueLength);
-
-DLLEXPORT int32_t GlobalizationNative_IsPredefinedLocale(const UChar* localeName);
diff --git a/src/libraries/System.Globalization/tests/CultureInfo/GetCultureInfo.cs b/src/libraries/System.Globalization/tests/CultureInfo/GetCultureInfo.cs
deleted file mode 100644 (file)
index 985e03f..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-// Licensed to the .NET Foundation under one or more agreements.
-// The .NET Foundation licenses this file to you under the MIT license.
-// See the LICENSE file in the project root for more information.
-
-using System.Collections.Generic;
-using Xunit;
-
-namespace System.Globalization.Tests
-{
-    public class GetCultureInfoTests
-    {
-        public static bool PlatformSupportsFakeCulture => !PlatformDetection.IsWindows || (PlatformDetection.WindowsVersion >= 10 && !PlatformDetection.IsFullFramework);
-
-        [ConditionalTheory(nameof(PlatformSupportsFakeCulture))]
-        [InlineData("en")]
-        [InlineData("en-US")]
-        [InlineData("ja-JP")]
-        [InlineData("ar-SA")]
-        [InlineData("xx-XX")]
-        public void GetCultureInfo(string name)
-        {
-            Assert.Equal(name, CultureInfo.GetCultureInfo(name).Name);
-            Assert.Equal(name, CultureInfo.GetCultureInfo(name, predefinedOnly: false).Name);
-        }
-
-        [ConditionalTheory(nameof(PlatformSupportsFakeCulture))]
-        [InlineData("en@US")]
-        [InlineData("\uFFFF")]
-        public void TestInvalidCultureNames(string name)
-        {
-            Assert.Throws<CultureNotFoundException>(() => CultureInfo.GetCultureInfo(name));
-            Assert.Throws<CultureNotFoundException>(() => CultureInfo.GetCultureInfo(name, predefinedOnly: false));
-            Assert.Throws<CultureNotFoundException>(() => CultureInfo.GetCultureInfo(name, predefinedOnly: true));
-        }
-
-        [ConditionalTheory(nameof(PlatformSupportsFakeCulture))]
-        [InlineData("xx")]
-        [InlineData("xx-XX")]
-        [InlineData("xx-YY")]
-        public void TestFakeCultureNames(string name)
-        {
-            Assert.Equal(name, CultureInfo.GetCultureInfo(name).Name);
-            Assert.Equal(name, CultureInfo.GetCultureInfo(name, predefinedOnly: false).Name);
-            Assert.Throws<CultureNotFoundException>(() => CultureInfo.GetCultureInfo(name, predefinedOnly: true));
-        }
-    }
-}
index 888ebb2..d5dcfcd 100644 (file)
@@ -52,7 +52,6 @@
     <Compile Include="CultureInfo\CultureInfoReadOnly.cs" />
     <Compile Include="CultureInfo\CultureInfoTwoLetterISOLanguageName.cs" />
     <Compile Include="CultureInfo\CultureInfoCurrentCulture.cs" />
-    <Compile Include="CultureInfo\GetCultureInfo.cs" />
     <Compile Include="DateTimeFormatInfo\DateTimeFormatInfoAbbreviatedDayNames.cs" />
     <Compile Include="DateTimeFormatInfo\DateTimeFormatInfoAbbreviatedMonthGenitiveNames.cs" />
     <Compile Include="DateTimeFormatInfo\DateTimeFormatInfoAbbreviatedMonthNames.cs" />
index d9a300f..b563752 100644 (file)
@@ -21,10 +21,6 @@ internal static partial class Interop
         [return: MarshalAs(UnmanagedType.Bool)]
         internal static extern unsafe bool GetDefaultLocaleName(char* value, int valueLength);
 
-        [DllImport(Libraries.GlobalizationNative, CharSet = CharSet.Unicode, EntryPoint = "GlobalizationNative_IsPredefinedLocale")]
-        [return: MarshalAs(UnmanagedType.Bool)]
-        internal static extern unsafe bool IsPredefinedLocale(string localeName);
-
         [DllImport(Libraries.GlobalizationNative, CharSet = CharSet.Unicode, EntryPoint = "GlobalizationNative_GetLocaleTimeFormat")]
         [return: MarshalAs(UnmanagedType.Bool)]
         internal static extern unsafe bool GetLocaleTimeFormat(string localeName, bool shortFormat, char* value, int valueLength);
index da4c00a..2a16ab6 100644 (file)
@@ -28,16 +28,6 @@ namespace System.Globalization
             return cultureInfo;
         }
 
-        private static CultureInfo GetPredefinedCultureInfo(string name)
-        {
-            if (!Interop.Globalization.IsPredefinedLocale(name))
-            {
-                throw new CultureNotFoundException(nameof(name), SR.Format(SR.Argument_InvalidPredefinedCultureName, name));
-            }
-
-            return GetCultureInfo(name);
-        }
-
         private static CultureInfo GetUserDefaultUICulture()
         {
             return InitializeUserDefaultCulture();
index dd4f34f..1a8e8e8 100644 (file)
@@ -26,24 +26,6 @@ namespace System.Globalization
             return GetCultureByName(strDefault);
         }
 
-        private static CultureInfo GetPredefinedCultureInfo(string name)
-        {
-            CultureInfo culture = GetCultureInfo(name);
-            string englishName = culture.EnglishName;
-
-            // Check if the English Name starts with "Unknown Locale" or "Unknown Language" terms.
-            const int SecondTermIndex = 8;
-
-            if (englishName.StartsWith("Unknown ", StringComparison.Ordinal) && englishName.Length > SecondTermIndex &&
-                (englishName.IndexOf("Locale", SecondTermIndex, StringComparison.Ordinal) == SecondTermIndex ||
-                 englishName.IndexOf("Language", SecondTermIndex, StringComparison.Ordinal) == SecondTermIndex))
-            {
-                throw new CultureNotFoundException(nameof(name), SR.Format(SR.Argument_InvalidPredefinedCultureName, name));
-            }
-
-            return culture;
-        }
-
         private static unsafe CultureInfo GetUserDefaultUICulture()
         {
             if (GlobalizationMode.Invariant)
index e853316..bc276e2 100644 (file)
@@ -1114,21 +1114,6 @@ namespace System.Globalization
             return result;
         }
 
-        public static CultureInfo GetCultureInfo(string name, bool predefinedOnly)
-        {
-            if (name is null)
-            {
-                throw new ArgumentNullException(nameof(name));
-            }
-
-            if (predefinedOnly)
-            {
-                return GetPredefinedCultureInfo(name);
-            }
-
-            return GetCultureInfo(name);
-        }
-
         private static Dictionary<string, CultureInfo> CachedCulturesByName
         {
             get
index 457b513..302b853 100644 (file)
@@ -4432,7 +4432,6 @@ namespace System.Globalization
         public System.Globalization.CultureInfo GetConsoleFallbackUICulture() { throw null; }
         public static System.Globalization.CultureInfo GetCultureInfo(int culture) { throw null; }
         public static System.Globalization.CultureInfo GetCultureInfo(string name) { throw null; }
-        public static System.Globalization.CultureInfo GetCultureInfo(string name, bool predefinedOnly) { throw null; }
         public static System.Globalization.CultureInfo GetCultureInfo(string name, string altName) { throw null; }
         public static System.Globalization.CultureInfo GetCultureInfoByIetfLanguageTag(string name) { throw null; }
         public static System.Globalization.CultureInfo[] GetCultures(System.Globalization.CultureTypes types) { throw null; }