From 14e2678b00aa9a5538256dec593a2c445107934c Mon Sep 17 00:00:00 2001 From: Keeley Hammond Date: Tue, 19 Oct 2021 23:12:59 -0700 Subject: [PATCH] fix: don't use private enterprise APIs in MAS build (#31482) --- patches/chromium/.patches | 1 + .../chromium/mas_gate_private_enterprise_APIs | 36 +++++++++++++++++++ 2 files changed, 37 insertions(+) create mode 100644 patches/chromium/mas_gate_private_enterprise_APIs diff --git a/patches/chromium/.patches b/patches/chromium/.patches index 45a062887ccd..1cf7984e83a9 100644 --- a/patches/chromium/.patches +++ b/patches/chromium/.patches @@ -107,3 +107,4 @@ chore_do_not_use_chrome_windows_in_cryptotoken_webrequestsender.patch process_singleton.patch fix_expose_decrementcapturercount_in_web_contents_impl.patch feat_add_data_parameter_to_processsingleton.patch +mas_gate_private_enterprise_APIs diff --git a/patches/chromium/mas_gate_private_enterprise_APIs b/patches/chromium/mas_gate_private_enterprise_APIs new file mode 100644 index 000000000000..306a8c379240 --- /dev/null +++ b/patches/chromium/mas_gate_private_enterprise_APIs @@ -0,0 +1,36 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: VerteDinde +Date: Tue, 19 Oct 2021 16:56:25 -0700 +Subject: fix: mas gate private enterprise APIs + +Beginning in Electron 15.2.0, Chromium moved several formerly public +APIs into the AreDeviceAndUserJoinedToDomain method. Using these APIs +in a MAS build will result in rejection from the Apple Store. This +patch gates those APIs to non-MAS builds to comply with Apple +Store requirements, and returns the default state for MAS builds. + +diff --git a/base/enterprise_util_mac.mm b/base/enterprise_util_mac.mm +index bbb851e1cafb37ebaa67e4577598fab25c90fde6..6ab12e5505b5ba545e7e0cc8c93d3ba9a6d0bacc 100644 +--- a/base/enterprise_util_mac.mm ++++ b/base/enterprise_util_mac.mm +@@ -168,6 +168,13 @@ MacDeviceManagementStateNew IsDeviceRegisteredWithManagementNew() { + DeviceUserDomainJoinState AreDeviceAndUserJoinedToDomain() { + static DeviceUserDomainJoinState state = [] { + DeviceUserDomainJoinState state{false, false}; ++#if defined(MAS_BUILD) ++ return state; ++ }(); ++ ++ return state; ++} ++#else + + @autoreleasepool { + ODSession* session = [ODSession defaultSession]; +@@ -274,5 +281,6 @@ DeviceUserDomainJoinState AreDeviceAndUserJoinedToDomain() { + + return state; + } ++#endif + + } // namespace base