summaryrefslogtreecommitdiff
path: root/src/mscorlib/src/System/CompatibilitySwitches.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/mscorlib/src/System/CompatibilitySwitches.cs')
-rw-r--r--src/mscorlib/src/System/CompatibilitySwitches.cs161
1 files changed, 161 insertions, 0 deletions
diff --git a/src/mscorlib/src/System/CompatibilitySwitches.cs b/src/mscorlib/src/System/CompatibilitySwitches.cs
new file mode 100644
index 0000000000..59668fd13a
--- /dev/null
+++ b/src/mscorlib/src/System/CompatibilitySwitches.cs
@@ -0,0 +1,161 @@
+// Copyright (c) Microsoft. All rights reserved.
+// Licensed under the MIT license. See LICENSE file in the project root for full license information.
+
+
+using System.Runtime;
+using System.Runtime.CompilerServices;
+
+namespace System
+{
+ [FriendAccessAllowed]
+ internal static class CompatibilitySwitches
+ {
+ private static bool s_AreSwitchesSet;
+
+#if FEATURE_LEGACYNETCF
+ private static bool s_isAppEarlierThanWindowsPhone8;
+ private static bool s_isAppEarlierThanWindowsPhoneMango;
+#endif //FEATURE_LEGACYNETCF
+
+#if FEATURE_CORECLR
+ private static bool s_isAppSilverlight81; // The app targets SL8.1 version
+ private static bool s_useLatestBehaviorWhenTFMNotSpecified; // Which behavior to use when the TFM is not specified.
+#endif //FEATURE_CORECLR
+
+#if !FEATURE_CORECLR
+ private static bool s_isNetFx40TimeSpanLegacyFormatMode;
+ private static bool s_isNetFx40LegacySecurityPolicy;
+ private static bool s_isNetFx45LegacyManagedDeflateStream;
+#endif //!FEATURE_CORECLR
+
+ public static bool IsCompatibilityBehaviorDefined
+ {
+ get
+ {
+ return s_AreSwitchesSet;
+ }
+ }
+
+ private static bool IsCompatibilitySwitchSet(string compatibilitySwitch)
+ {
+ bool? result = AppDomain.CurrentDomain.IsCompatibilitySwitchSet(compatibilitySwitch);
+ return (result.HasValue && result.Value);
+ }
+
+ internal static void InitializeSwitches()
+ {
+#if FEATURE_CORECLR
+ s_isAppSilverlight81 = IsCompatibilitySwitchSet("WindowsPhone_5.1.0.0");
+ s_useLatestBehaviorWhenTFMNotSpecified = IsCompatibilitySwitchSet("UseLatestBehaviorWhenTFMNotSpecified");
+#endif //FEATURE_CORECLR
+
+#if FEATURE_LEGACYNETCF
+ s_isAppEarlierThanWindowsPhoneMango = IsCompatibilitySwitchSet("WindowsPhone_3.7.0.0");
+ s_isAppEarlierThanWindowsPhone8 = s_isAppEarlierThanWindowsPhoneMango ||
+ IsCompatibilitySwitchSet("WindowsPhone_3.8.0.0");
+
+#endif //FEATURE_LEGACYNETCF
+
+#if !FEATURE_CORECLR
+ s_isNetFx40TimeSpanLegacyFormatMode = IsCompatibilitySwitchSet("NetFx40_TimeSpanLegacyFormatMode");
+ s_isNetFx40LegacySecurityPolicy = IsCompatibilitySwitchSet("NetFx40_LegacySecurityPolicy");
+ s_isNetFx45LegacyManagedDeflateStream = IsCompatibilitySwitchSet("NetFx45_LegacyManagedDeflateStream");
+#endif //FEATURE_CORECLR
+
+ s_AreSwitchesSet = true;
+ }
+
+ public static bool IsAppEarlierThanSilverlight4
+ {
+ get
+ {
+ return false;
+ }
+ }
+
+#if FEATURE_CORECLR
+ /// <summary>
+ /// This property returns whether the app is hosted under SL 8.1 version
+ /// </summary>
+ internal static bool IsAppSilverlight81
+ {
+ get
+ {
+ // PS - Do not use this property for adding quirks. Please use the exposed properties of BinaryCompatiblity class instead.
+ return s_isAppSilverlight81;
+ }
+ }
+
+ /// <summary>
+ /// This property returns whether to give the latest behavior when the TFM is missing
+ /// </summary>
+ internal static bool UseLatestBehaviorWhenTFMNotSpecified
+ {
+ get
+ {
+ return s_useLatestBehaviorWhenTFMNotSpecified;
+ }
+ }
+#endif //FEATURE_CORECLR
+
+ public static bool IsAppEarlierThanWindowsPhone8
+ {
+ get
+ {
+#if FEATURE_LEGACYNETCF
+ return s_isAppEarlierThanWindowsPhone8;
+#else
+ return false;
+#endif //FEATURE_LEGACYNETCF
+ }
+ }
+
+ public static bool IsAppEarlierThanWindowsPhoneMango
+ {
+ get
+ {
+#if FEATURE_LEGACYNETCF
+ return s_isAppEarlierThanWindowsPhoneMango;
+#else
+ return false;
+#endif //FEATURE_LEGACYNETCF
+ }
+ }
+
+ public static bool IsNetFx40TimeSpanLegacyFormatMode
+ {
+ get
+ {
+#if !FEATURE_CORECLR
+ return s_isNetFx40TimeSpanLegacyFormatMode;
+#else
+ return false;
+#endif //!FEATURE_CORECLR
+ }
+ }
+
+ public static bool IsNetFx40LegacySecurityPolicy
+ {
+ get
+ {
+#if !FEATURE_CORECLR
+ return s_isNetFx40LegacySecurityPolicy;
+#else
+ return false;
+#endif //!FEATURE_CORECLR
+ }
+ }
+
+ public static bool IsNetFx45LegacyManagedDeflateStream
+ {
+ get
+ {
+#if !FEATURE_CORECLR
+ return s_isNetFx45LegacyManagedDeflateStream;
+#else
+ return false;
+#endif //!FEATURE_CORECLR
+ }
+ }
+ }
+}