diff --git a/docs/design/features/hybrid-globalization.md b/docs/design/features/hybrid-globalization.md index 9583aa067aea4c..c6767e7d0c08dc 100644 --- a/docs/design/features/hybrid-globalization.md +++ b/docs/design/features/hybrid-globalization.md @@ -8,7 +8,7 @@ Hybrid mode does not use ICU data for some functions connected with globalizatio ### WASM -For WebAssembly, both on Browser and WASI, we are using Web API instead of some ICU data. +For WebAssembly in Browser we are using Web API instead of some ICU data. **Case change** diff --git a/src/libraries/Common/tests/TestUtilities/System/PlatformDetection.cs b/src/libraries/Common/tests/TestUtilities/System/PlatformDetection.cs index c72b550b4abfe7..aed60f25163346 100644 --- a/src/libraries/Common/tests/TestUtilities/System/PlatformDetection.cs +++ b/src/libraries/Common/tests/TestUtilities/System/PlatformDetection.cs @@ -355,7 +355,7 @@ public static string GetDistroVersionString() public static Version ICUVersion => m_icuVersion.Value; public static bool IsInvariantGlobalization => m_isInvariant.Value; - public static bool IsHybridGlobalizationOnWasm => m_isHybrid.Value && (IsBrowser || IsWasi); + public static bool IsHybridGlobalizationOnBrowser => m_isHybrid.Value && IsBrowser; public static bool IsNotInvariantGlobalization => !IsInvariantGlobalization; public static bool IsIcuGlobalization => ICUVersion > new Version(0, 0, 0, 0); public static bool IsNlsGlobalization => IsNotInvariantGlobalization && !IsIcuGlobalization; diff --git a/src/libraries/System.Globalization/tests/CompareInfo/CompareInfoTests.Compare.cs b/src/libraries/System.Globalization/tests/CompareInfo/CompareInfoTests.Compare.cs index c0f7851b07fb63..3725cf4fa037a2 100644 --- a/src/libraries/System.Globalization/tests/CompareInfo/CompareInfoTests.Compare.cs +++ b/src/libraries/System.Globalization/tests/CompareInfo/CompareInfoTests.Compare.cs @@ -15,12 +15,12 @@ public class CompareInfoCompareTests private static CompareInfo s_turkishCompare = new CultureInfo("tr-TR").CompareInfo; private static CompareInfo s_japaneseCompare = new CultureInfo("ja-JP").CompareInfo; private static CompareOptions supportedIgnoreNonSpaceOption = - PlatformDetection.IsHybridGlobalizationOnWasm ? + PlatformDetection.IsHybridGlobalizationOnBrowser ? CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreKanaType : CompareOptions.IgnoreNonSpace; private static CompareOptions supportedIgnoreCaseIgnoreNonSpaceOptions = - PlatformDetection.IsHybridGlobalizationOnWasm ? + PlatformDetection.IsHybridGlobalizationOnBrowser ? CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreKanaType : CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace; @@ -38,9 +38,9 @@ public class CompareInfoCompareTests public static IEnumerable Compare_Kana_TestData() { // HybridGlobalization does not support IgnoreWidth - if (!PlatformDetection.IsHybridGlobalizationOnWasm) + if (!PlatformDetection.IsHybridGlobalizationOnBrowser) { - CompareOptions ignoreKanaIgnoreWidthIgnoreCase = CompareOptions.IgnoreKanaType | CompareOptions.IgnoreWidth | CompareOptions.IgnoreCase; + CompareOptions ignoreKanaIgnoreWidthIgnoreCase = CompareOptions.IgnoreKanaType | CompareOptions.IgnoreWidth | CompareOptions.IgnoreCase; yield return new object[] { s_invariantCompare, "\u3070\u3073\u3076\u3079\u307C", "\u30D0\u30D3\u3076\u30D9\uFF8E\uFF9E", ignoreKanaIgnoreWidthIgnoreCase, 0 }; yield return new object[] { s_invariantCompare, "\u30D0\u30D3\u3076\u30D9\uFF8E\uFF9E", "\u3070\u3073\uFF8C\uFF9E\uFF8D\uFF9E\u307C", ignoreKanaIgnoreWidthIgnoreCase, 0 }; yield return new object[] { s_invariantCompare, "\u3060", "\uFF80\uFF9E", ignoreKanaIgnoreWidthIgnoreCase, 0 }; @@ -65,11 +65,11 @@ public static IEnumerable Compare_Kana_TestData() public static IEnumerable Compare_TestData() { - // PlatformDetection.IsHybridGlobalizationOnWasm does not support IgnoreWidth - CompareOptions ignoredOptions = PlatformDetection.IsHybridGlobalizationOnWasm ? + // PlatformDetection.IsHybridGlobalizationOnBrowser does not support IgnoreWidth + CompareOptions ignoredOptions = PlatformDetection.IsHybridGlobalizationOnBrowser ? CompareOptions.IgnoreKanaType | CompareOptions.IgnoreCase : CompareOptions.IgnoreKanaType | CompareOptions.IgnoreWidth | CompareOptions.IgnoreCase; - + yield return new object[] { s_invariantCompare, "\u3042", "\u30A2", ignoredOptions, 0 }; yield return new object[] { s_invariantCompare, "\u3042", "\uFF71", ignoredOptions, 0 }; @@ -84,9 +84,9 @@ public static IEnumerable Compare_TestData() yield return new object[] { s_invariantCompare, "ABCDE", "\uFF21\uFF22\uFF23D\uFF25", ignoredOptions, 0 }; // as above yield return new object[] { s_invariantCompare, "ABCDE", "a\uFF22\uFF23D\uFF25", ignoredOptions, 0 }; // as above yield return new object[] { s_invariantCompare, "ABCDE", "\uFF41\uFF42\uFF23D\uFF25", ignoredOptions, 0 }; // as above - + yield return new object[] { s_invariantCompare, "\u6FA4", "\u6CA2", ignoredOptions, 1 }; - + yield return new object[] { s_invariantCompare, "\u3070\u3073\u3076\u3079\u307C", "\u30D0\u30D3\u30D6\u30D9\u30DC", ignoredOptions, 0 }; yield return new object[] { s_invariantCompare, "\u3070\u3073\u3076\u3079\u307C", "\u30D0\u30D3\u3076\u30D9\u30DC", ignoredOptions, 0 }; yield return new object[] { s_invariantCompare, "\u3070\u3073\uFF8C\uFF9E\uFF8D\uFF9E\u307C", "\uFF8E\uFF9E", ignoredOptions, -1 }; @@ -97,7 +97,7 @@ public static IEnumerable Compare_TestData() yield return new object[] { s_invariantCompare, "\u3070\u30DC\uFF8C\uFF9E\uFF8D\uFF9E\u307C", "\u3070\uFF8E\uFF9E\u30D6", ignoredOptions, 1 }; // known exception for hg: should be -1 yield return new object[] { s_invariantCompare, "\u3070\u30DC\uFF8C\uFF9E\uFF8D\uFF9E\u307C\u3079\u307C", "\u3079\uFF8E\uFF9E", ignoredOptions, -1 }; yield return new object[] { s_invariantCompare, "\u3070\uFF8C\uFF9E\uFF8D\uFF9E\u307C", "\u30D6", ignoredOptions, -1 }; - + yield return new object[] { s_invariantCompare, "ABDDE", "D", ignoredOptions, -1 }; yield return new object[] { s_invariantCompare, "ABCDE", "\uFF43D", ignoredOptions, -1 }; yield return new object[] { s_invariantCompare, "ABCDE", "c", ignoredOptions, -1 }; @@ -118,7 +118,7 @@ public static IEnumerable Compare_TestData() yield return new object[] { s_invariantCompare, "10", "1\uFF10", ignoredOptions, 0 }; // as above yield return new object[] { s_invariantCompare, "9999\uFF1910", "1\uFF10", ignoredOptions, 1 }; yield return new object[] { s_invariantCompare, "9999\uFF191010", "1\uFF10", ignoredOptions, 1 }; - + yield return new object[] { s_invariantCompare, "'\u3000'", "' '", ignoredOptions, 0 }; yield return new object[] { s_invariantCompare, "\uFF1B", ";", ignoredOptions, 0 }; // known exception for hg: should be 1 yield return new object[] { s_invariantCompare, "\uFF08", "(", ignoredOptions, 0 }; // known exception for hg: should be 1 @@ -243,12 +243,12 @@ public static IEnumerable Compare_TestData() yield return new object[] { s_invariantCompare, "foobar", "FooB\u00C0R", supportedIgnoreNonSpaceOption, -1 }; yield return new object[] { s_invariantCompare, "\uFF9E", "\u3099", supportedIgnoreNonSpaceOption, 0 }; - yield return new object[] { s_invariantCompare, "\uFF9E", "\u3099", CompareOptions.IgnoreCase, PlatformDetection.IsHybridGlobalizationOnWasm ? 1 : 0 }; + yield return new object[] { s_invariantCompare, "\uFF9E", "\u3099", CompareOptions.IgnoreCase, PlatformDetection.IsHybridGlobalizationOnBrowser ? 1 : 0 }; yield return new object[] { s_invariantCompare, "\u20A9", "\uFFE6", CompareOptions.IgnoreCase, -1 }; yield return new object[] { s_invariantCompare, "\u20A9", "\uFFE6", CompareOptions.None, -1 }; yield return new object[] { s_invariantCompare, "\u0021", "\uFF01", CompareOptions.IgnoreSymbols, 0 }; // some symbols e.g. currencies are not ignored correctly in HybridGlobalization - if (!PlatformDetection.IsHybridGlobalizationOnWasm) + if (!PlatformDetection.IsHybridGlobalizationOnBrowser) { yield return new object[] { s_invariantCompare, "\u00A2", "\uFFE0", CompareOptions.IgnoreSymbols, 0 }; yield return new object[] { s_invariantCompare, "$", "&", CompareOptions.IgnoreSymbols, 0 }; @@ -256,7 +256,7 @@ public static IEnumerable Compare_TestData() yield return new object[] { s_invariantCompare, "\uFF65", "\u30FB", CompareOptions.IgnoreSymbols, 0 }; yield return new object[] { s_invariantCompare, "\u0021", "\uFF01", CompareOptions.None, -1 }; - if (!PlatformDetection.IsHybridGlobalizationOnWasm) + if (!PlatformDetection.IsHybridGlobalizationOnBrowser) { yield return new object[] { s_invariantCompare, "\u20A9", "\uFFE6", CompareOptions.IgnoreWidth, 0 }; yield return new object[] { s_invariantCompare, "\u0021", "\uFF01", CompareOptions.IgnoreWidth, 0 }; @@ -265,13 +265,13 @@ public static IEnumerable Compare_TestData() yield return new object[] { s_invariantCompare, "\uFF66", "\u30F2", CompareOptions.IgnoreSymbols, s_expectedHalfToFullFormsComparison }; yield return new object[] { s_invariantCompare, "\uFF66", "\u30F2", CompareOptions.IgnoreCase, s_expectedHalfToFullFormsComparison }; - // in HybridGlobalization on WASM IgnoreNonSpace is not supported and comparison of katakana/hiragana equivalents with supportedIgnoreNonSpaceOption gives 0 - if (!PlatformDetection.IsHybridGlobalizationOnWasm) + // in HybridGlobalization on Browser IgnoreNonSpace is not supported and comparison of katakana/hiragana equivalents with supportedIgnoreNonSpaceOption gives 0 + if (!PlatformDetection.IsHybridGlobalizationOnBrowser) yield return new object[] { s_invariantCompare, "\uFF66", "\u30F2", CompareOptions.IgnoreNonSpace, s_expectedHalfToFullFormsComparison }; yield return new object[] { s_invariantCompare, "\uFF66", "\u30F2", CompareOptions.None, s_expectedHalfToFullFormsComparison }; - // in HybridGlobalization on WASM IgnoreKanaType is supported only for "ja" - var kanaComparison = PlatformDetection.IsHybridGlobalizationOnWasm ? s_japaneseCompare : s_invariantCompare; + // in HybridGlobalization on Browser IgnoreKanaType is supported only for "ja" + var kanaComparison = PlatformDetection.IsHybridGlobalizationOnBrowser ? s_japaneseCompare : s_invariantCompare; yield return new object[] { kanaComparison, "\u3060", "\u30C0", CompareOptions.IgnoreKanaType, 0 }; yield return new object[] { kanaComparison, "c", "C", CompareOptions.IgnoreKanaType, -1 }; yield return new object[] { s_invariantCompare, "\u3060", "\u30C0", CompareOptions.IgnoreCase, s_expectedHiraganaToKatakanaCompare }; @@ -296,7 +296,7 @@ public static IEnumerable Compare_TestData() // Misc differences between platforms bool useNls = PlatformDetection.IsNlsGlobalization; - var supportedCmpOptions = PlatformDetection.IsHybridGlobalizationOnWasm ? + var supportedCmpOptions = PlatformDetection.IsHybridGlobalizationOnBrowser ? CompareOptions.IgnoreKanaType | CompareOptions.IgnoreCase : CompareOptions.IgnoreKanaType | CompareOptions.IgnoreWidth | CompareOptions.IgnoreCase; @@ -538,15 +538,15 @@ public void TestIgnoreKanaAndWidthCases() // Edge case of the Ignore Width. Assert.False(string.Compare("\u3162\u3163", "\uFFDB\uFFDC", CultureInfo.InvariantCulture, CompareOptions.None) == 0, $"Expect '0x3162 0x3163' != '0xFFDB 0xFFDC'"); - if (!PlatformDetection.IsHybridGlobalizationOnWasm) + if (!PlatformDetection.IsHybridGlobalizationOnBrowser) Assert.True(string.Compare("\u3162\u3163", "\uFFDB\uFFDC", CultureInfo.InvariantCulture, CompareOptions.IgnoreWidth) == 0, "Expect '0x3162 0x3163' == '0xFFDB 0xFFDC'"); const char hiraganaStart = '\u3041'; const char hiraganaEnd = '\u3096'; const int hiraganaToKatakanaOffset = 0x30a1 - 0x3041; - // in HybridGlobalization on WASM IgnoreKanaType is supported only for "ja-JP" - CultureInfo ignoreKanaTypeTestedCulture = PlatformDetection.IsHybridGlobalizationOnWasm ? new CultureInfo("ja-JP") : CultureInfo.InvariantCulture; + // in HybridGlobalization on Browser IgnoreKanaType is supported only for "ja-JP" + CultureInfo ignoreKanaTypeTestedCulture = PlatformDetection.IsHybridGlobalizationOnBrowser ? new CultureInfo("ja-JP") : CultureInfo.InvariantCulture; for (Char hiraganaChar = hiraganaStart; hiraganaChar <= hiraganaEnd; hiraganaChar++) { @@ -559,7 +559,7 @@ public void TestIgnoreKanaAndWidthCases() public static IEnumerable Compare_HiraganaAndKatakana_TestData() { - CompareOptions[] optionsPositive = PlatformDetection.IsHybridGlobalizationOnWasm ? + CompareOptions[] optionsPositive = PlatformDetection.IsHybridGlobalizationOnBrowser ? new[] { CompareOptions.None, CompareOptions.IgnoreCase, @@ -594,7 +594,7 @@ public static IEnumerable Compare_HiraganaAndKatakana_TestData() CompareOptions.IgnoreKanaType | CompareOptions.IgnoreWidth | CompareOptions.IgnoreNonSpace, CompareOptions.IgnoreKanaType | CompareOptions.IgnoreWidth | CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace, }; - CompareOptions[] optionsNegative = PlatformDetection.IsHybridGlobalizationOnWasm ? + CompareOptions[] optionsNegative = PlatformDetection.IsHybridGlobalizationOnBrowser ? new[] { CompareOptions.IgnoreNonSpace, CompareOptions.IgnoreNonSpace | CompareOptions.IgnoreCase, diff --git a/src/libraries/System.Globalization/tests/Hybrid/Hybrid.WASM.Tests.csproj b/src/libraries/System.Globalization/tests/Hybrid/Hybrid.WASM.Tests.csproj index 70a7f0f6a51c29..a142fa3556055a 100644 --- a/src/libraries/System.Globalization/tests/Hybrid/Hybrid.WASM.Tests.csproj +++ b/src/libraries/System.Globalization/tests/Hybrid/Hybrid.WASM.Tests.csproj @@ -1,6 +1,6 @@ - $(NetCoreAppCurrent)-browser;$(NetCoreAppCurrent)-wasi + $(NetCoreAppCurrent)-browser true true diff --git a/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems b/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems index a705b2ad725717..eaae7a28b9c467 100644 --- a/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems +++ b/src/libraries/System.Private.CoreLib/src/System.Private.CoreLib.Shared.projitems @@ -341,7 +341,7 @@ - + @@ -399,7 +399,7 @@ - + @@ -1260,10 +1260,10 @@ - + Common\Interop\Interop.CompareInfo.cs - + Common\Interop\Interop.TextInfo.cs @@ -2610,4 +2610,4 @@ - \ No newline at end of file + diff --git a/src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.cs b/src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.cs index b7c47a684f349c..32eef9a1f885c0 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Globalization/CompareInfo.cs @@ -487,7 +487,7 @@ private static void ThrowCompareOptionsCheckFailed(CompareOptions options) private unsafe int CompareStringCore(ReadOnlySpan string1, ReadOnlySpan string2, CompareOptions options) => GlobalizationMode.UseNls ? NlsCompareString(string1, string2, options) : -#if TARGET_BROWSER || TARGET_WASI +#if TARGET_BROWSER GlobalizationMode.Hybrid ? JsCompareString(string1, string2, options) : #endif diff --git a/src/libraries/System.Private.CoreLib/src/System/Globalization/GlobalizationMode.cs b/src/libraries/System.Private.CoreLib/src/System/Globalization/GlobalizationMode.cs index 8e367e7db25f8d..56be02927c6e8d 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Globalization/GlobalizationMode.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Globalization/GlobalizationMode.cs @@ -13,7 +13,7 @@ internal static partial class GlobalizationMode private static partial class Settings { internal static bool Invariant { get; } = AppContextConfigHelper.GetBooleanConfig("System.Globalization.Invariant", "DOTNET_SYSTEM_GLOBALIZATION_INVARIANT"); -#if TARGET_OSX || TARGET_MACCATALYST || TARGET_IOS || TARGET_TVOS || TARGET_BROWSER || TARGET_WASI +#if TARGET_OSX || TARGET_MACCATALYST || TARGET_IOS || TARGET_TVOS || TARGET_BROWSER internal static bool Hybrid { get; } = AppContextConfigHelper.GetBooleanConfig("System.Globalization.Hybrid", "DOTNET_SYSTEM_GLOBALIZATION_HYBRID"); #endif internal static bool PredefinedCulturesOnly { get; } = AppContextConfigHelper.GetBooleanConfig("System.Globalization.PredefinedCulturesOnly", "DOTNET_SYSTEM_GLOBALIZATION_PREDEFINED_CULTURES_ONLY", GlobalizationMode.Invariant); @@ -23,7 +23,7 @@ private static partial class Settings // This allows for the whole Settings nested class to be trimmed when Invariant=true, and allows for the Settings // static cctor (on Unix) to be preserved when Invariant=false. internal static bool Invariant => Settings.Invariant; -#if TARGET_OSX || TARGET_MACCATALYST || TARGET_IOS || TARGET_TVOS || TARGET_BROWSER || TARGET_WASI +#if TARGET_OSX || TARGET_MACCATALYST || TARGET_IOS || TARGET_TVOS || TARGET_BROWSER internal static bool Hybrid => Settings.Hybrid; #endif internal static bool PredefinedCulturesOnly => Settings.PredefinedCulturesOnly; diff --git a/src/libraries/System.Private.CoreLib/src/System/Globalization/TextInfo.Icu.cs b/src/libraries/System.Private.CoreLib/src/System/Globalization/TextInfo.Icu.cs index ace02b9df7b5c8..b2e113cb9c58bb 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Globalization/TextInfo.Icu.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Globalization/TextInfo.Icu.cs @@ -19,7 +19,7 @@ private static bool NeedsTurkishCasing(string localeName) internal unsafe void IcuChangeCase(char* src, int srcLen, char* dstBuffer, int dstBufferCapacity, bool bToUpper) { Debug.Assert(!GlobalizationMode.Invariant); -#if TARGET_BROWSER || TARGET_WASI +#if TARGET_BROWSER Debug.Assert(!GlobalizationMode.Hybrid); #endif Debug.Assert(!GlobalizationMode.UseNls); diff --git a/src/libraries/System.Private.CoreLib/src/System/Globalization/TextInfo.Nls.cs b/src/libraries/System.Private.CoreLib/src/System/Globalization/TextInfo.Nls.cs index f940778d490e6c..57c47cf9a9812a 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Globalization/TextInfo.Nls.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Globalization/TextInfo.Nls.cs @@ -10,7 +10,7 @@ public partial class TextInfo private unsafe void NlsChangeCase(char* pSource, int pSourceLen, char* pResult, int pResultLen, bool toUpper) { Debug.Assert(!GlobalizationMode.Invariant); -#if TARGET_BROWSER || TARGET_WASI +#if TARGET_BROWSER Debug.Assert(!GlobalizationMode.Hybrid); #endif Debug.Assert(GlobalizationMode.UseNls); diff --git a/src/libraries/System.Private.CoreLib/src/System/Globalization/TextInfo.cs b/src/libraries/System.Private.CoreLib/src/System/Globalization/TextInfo.cs index 33e46db3178459..018724ada78256 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Globalization/TextInfo.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Globalization/TextInfo.cs @@ -686,7 +686,7 @@ private unsafe void ChangeCaseCore(char* src, int srcLen, char* dstBuffer, int d NlsChangeCase(src, srcLen, dstBuffer, dstBufferCapacity, bToUpper); return; } -#if TARGET_BROWSER || TARGET_WASI +#if TARGET_BROWSER if (GlobalizationMode.Hybrid) { JsChangeCase(src, srcLen, dstBuffer, dstBufferCapacity, bToUpper);