diff --git a/widget/GfxDriverInfo.h b/widget/GfxDriverInfo.h index ad4337b0fb..119976bcbc 100644 --- a/widget/GfxDriverInfo.h +++ b/widget/GfxDriverInfo.h @@ -49,6 +49,23 @@ enum class OperatingSystem { Windows8_1, Windows10, Linux, + OSX, + OSX10_5, + OSX10_6, + OSX10_7, + OSX10_8, + OSX10_9, + OSX10_10, + OSX10_11, + OSX10_12, + OSX10_13, + OSX10_14, + OSX10_15, + OSX10_16, + OSX11_0, + OSX12_0, + OSX13_0, + Ios }; enum VersionComparisonOp { diff --git a/widget/GfxInfoBase.cpp b/widget/GfxInfoBase.cpp index 20e2e1476d..d1c7ac4e1e 100644 --- a/widget/GfxInfoBase.cpp +++ b/widget/GfxInfoBase.cpp @@ -264,6 +264,34 @@ BlacklistOSToOperatingSystem(const nsAString& os) return OperatingSystem::Windows10; else if (os.EqualsLiteral("Linux")) return OperatingSystem::Linux; + else if (os.EqualsLiteral("Darwin 9")) + return OperatingSystem::OSX10_5; + else if (os.EqualsLiteral("Darwin 10")) + return OperatingSystem::OSX10_6; + else if (os.EqualsLiteral("Darwin 11")) + return OperatingSystem::OSX10_7; + else if (os.EqualsLiteral("Darwin 12")) + return OperatingSystem::OSX10_8; + else if (os.EqualsLiteral("Darwin 13")) + return OperatingSystem::OSX10_9; + else if (os.EqualsLiteral("Darwin 14")) + return OperatingSystem::OSX10_10; + else if (os.EqualsLiteral("Darwin 15")) + return OperatingSystem::OSX10_11; + else if (os.EqualsLiteral("Darwin 16")) + return OperatingSystem::OSX10_12; + else if (os.EqualsLiteral("Darwin 17")) + return OperatingSystem::OSX10_13; + else if (os.EqualsLiteral("Darwin 18")) + return OperatingSystem::OSX10_14; + else if (os.EqualsLiteral("Darwin 19")) + return OperatingSystem::OSX10_15; + else if (os.EqualsLiteral("Darwin 20")) + return OperatingSystem::OSX11_0; + else if (os.EqualsLiteral("Darwin 21")) + return OperatingSystem::OSX12_0; + else if (os.EqualsLiteral("Darwin 22")) + return OperatingSystem::OSX13_0; // For historical reasons, "All" in blocklist means "All Windows" else if (os.EqualsLiteral("All")) return OperatingSystem::Windows; diff --git a/widget/cocoa/GfxInfo.mm b/widget/cocoa/GfxInfo.mm index 97bb4c8324..8e7edc1967 100644 --- a/widget/cocoa/GfxInfo.mm +++ b/widget/cocoa/GfxInfo.mm @@ -63,12 +63,12 @@ OSXVersionToOperatingSystem(uint32_t aOSXVersion) { } break; case 11: - switch (nsCocoaFeatures::ExtractMinorVersion(aOSXVersion)) { - case 0: - return OperatingSystem::OSX11_0; - default: - break; - } + return OperatingSystem::OSX11_0; + case 12: + return OperatingSystem::OSX12_0; + case 13: + return OperatingSystem::OSX13_0; + default: break; } diff --git a/widget/cocoa/nsCocoaFeatures.h b/widget/cocoa/nsCocoaFeatures.h index c6841a7491..28ad617387 100644 --- a/widget/cocoa/nsCocoaFeatures.h +++ b/widget/cocoa/nsCocoaFeatures.h @@ -26,6 +26,7 @@ public: static bool OnCatalinaOrLater(); static bool OnBigSurOrLater(); static bool OnMontereyOrLater(); + static bool OnVenturaOrLater(); static bool IsAtLeastVersion(int32_t aMajor, int32_t aMinor, int32_t aBugFix=0); diff --git a/widget/cocoa/nsCocoaFeatures.mm b/widget/cocoa/nsCocoaFeatures.mm index 2edb958931..fdfdf1023f 100644 --- a/widget/cocoa/nsCocoaFeatures.mm +++ b/widget/cocoa/nsCocoaFeatures.mm @@ -27,6 +27,7 @@ #define MACOS_VERSION_10_16_HEX 0x000A1000 #define MACOS_VERSION_11_0_HEX 0x000B0000 #define MACOS_VERSION_12_0_HEX 0x000C0000 +#define MACOS_VERSION_13_0_HEX 0x000D0000 #include "nsCocoaFeatures.h" #include "nsCocoaUtils.h" @@ -212,7 +213,8 @@ nsCocoaFeatures::OnBigSurOrLater() (macOSVersion() >= MACOS_VERSION_11_0_HEX)); } -/* static */ bool nsCocoaFeatures::OnMontereyOrLater() +/* static */ bool +nsCocoaFeatures::OnMontereyOrLater() { // Monterey pretends to be 10.16 and is indistinguishable from Big Sur. // In practice, this means that an Intel build can return false @@ -221,6 +223,12 @@ nsCocoaFeatures::OnBigSurOrLater() return (macOSVersion() >= MACOS_VERSION_12_0_HEX); } +/* static */ bool +nsCocoaFeatures::OnVenturaOrLater() +{ + return (macOSVersion() >= MACOS_VERSION_13_0_HEX); +} + /* static */ bool nsCocoaFeatures::IsAtLeastVersion(int32_t aMajor, int32_t aMinor, int32_t aBugFix) { @@ -234,7 +242,8 @@ nsCocoaFeatures::IsAtLeastVersion(int32_t aMajor, int32_t aMinor, int32_t aBugFi * for this purpose. Note: using this in a sandboxed process requires allowing * the sysctl in the sandbox policy. */ -/* static */ bool nsCocoaFeatures::ProcessIsRosettaTranslated() +/* static */ bool +nsCocoaFeatures::ProcessIsRosettaTranslated() { int ret = 0; size_t size = sizeof(ret);