12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991 |
- From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
- From: Samuel Attard <[email protected]>
- Date: Thu, 20 Sep 2018 17:48:49 -0700
- Subject: mas: avoid private macOS API usage
- * Use the stub killring file when building blink
- * Remove usage of the following private APIs
- * abort_report_np
- * pthread_fchdir_np
- * pthread_chdir_np
- * SetApplicationIsDaemon
- * _LSSetApplicationLaunchServicesServerConnectionStatus
- * AreDeviceAndUserJoinedToDomain
- * _CFIsObjC
- * AudioDeviceDuck
- * NSNextStepFrame
- * NSThemeFrame
- * NSTextInputReplacementRangeAttributeName
- * NSAccessibilityRemoteUIElement is unnecessary for Electron's use-case. We use it
- for progressive web apps (where the AXTree is in the browser process, but macOS
- needs to think it's coming from the PWA process). I think it can just be chopped
- out -- if there are any side-effects, we should be able to work around them.
- * CAContext removal
- * For apps that spend a lot of time watching video (especially fullscreen video),
- the power/battery usage will likely increase 1.5x to 2x. For something that is,
- e.g, scrolling, it'll be smaller, more like 1.15x or 1.25x.
- In terms of performance, the impact will likely be fairly small -- any app that
- could hit 60fps before will likely still be able to hit 60fps. There may even be
- cases where performance improves when disabling remote CoreAnimation (remote
- CoreAnimation is really only about battery usage).
- * CTFontDescriptorIsSystemUIFont is a private API, we're using an
- _interesting_ technique in the MAS build to determine if the font is a
- system font by checking if it's kCTFontPriorityAttribute is set to
- system priority.
- diff --git a/base/BUILD.gn b/base/BUILD.gn
- index 4d2d2e88d37e95a2b8ac0c1e0d7d1b0c1e8ad417..58a4b86746a345eeeca66969aec39791fb2d1a8c 100644
- --- a/base/BUILD.gn
- +++ b/base/BUILD.gn
- @@ -1027,6 +1027,7 @@ component("base") {
- "//build:ios_buildflags",
- "//build/config/compiler:compiler_buildflags",
- "//third_party/modp_b64",
- + "//electron/build/config:generate_mas_config",
- ]
- if (!is_nacl) {
- # Used by metrics/crc32, except on NaCl builds.
- diff --git a/base/enterprise_util_mac.mm b/base/enterprise_util_mac.mm
- index 4bf9a3c27e05c6635b2beb8e880b5b43dbed61b5..f328fbb49c45991f44a9c75325491d0873746b61 100644
- --- a/base/enterprise_util_mac.mm
- +++ b/base/enterprise_util_mac.mm
- @@ -16,6 +16,7 @@
- #include "base/strings/string_split.h"
- #include "base/strings/string_util.h"
- #include "base/strings/sys_string_conversions.h"
- +#include "electron/mas.h"
-
- namespace base {
-
- @@ -116,6 +117,14 @@ DeviceUserDomainJoinState AreDeviceAndUserJoinedToDomain() {
- DeviceUserDomainJoinState state{.device_joined = false,
- .user_joined = false};
-
- +#if IS_MAS_BUILD()
- + return state;
- + }();
- +
- + return state;
- +}
- +#else
- +
- @autoreleasepool {
- ODSession* session = [ODSession defaultSession];
- if (session == nil) {
- @@ -219,5 +228,6 @@ DeviceUserDomainJoinState AreDeviceAndUserJoinedToDomain() {
-
- return state;
- }
- +#endif
-
- } // namespace base
- diff --git a/base/process/launch_mac.cc b/base/process/launch_mac.cc
- index 697eff8aad0142ce0537feec816f9b31fd767061..504a3cba21622b8d79bf6563f3a009c47b093d50 100644
- --- a/base/process/launch_mac.cc
- +++ b/base/process/launch_mac.cc
- @@ -21,13 +21,19 @@
- #include "base/threading/scoped_blocking_call.h"
- #include "base/threading/thread_restrictions.h"
- #include "base/trace_event/base_tracing.h"
- +#include "electron/mas.h"
- +#if IS_MAS_BUILD()
- +#include <sys/syscall.h>
- +#endif
-
- extern "C" {
- // Changes the current thread's directory to a path or directory file
- // descriptor.
- +#if !IS_MAS_BUILD()
- int pthread_chdir_np(const char* dir);
-
- int pthread_fchdir_np(int fd);
- +#endif
-
- int responsibility_spawnattrs_setdisclaim(posix_spawnattr_t attrs,
- int disclaim);
- @@ -104,13 +110,27 @@ class PosixSpawnFileActions {
-
- #if !BUILDFLAG(IS_MAC)
- int ChangeCurrentThreadDirectory(const char* path) {
- +#if IS_MAS_BUILD()
- + #pragma clang diagnostic push
- + #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- + return syscall(SYS___pthread_chdir, path);
- + #pragma clang diagnostic pop
- +#else
- return pthread_chdir_np(path);
- +#endif
- }
-
- // The recommended way to unset a per-thread cwd is to set a new value to an
- // invalid file descriptor, per libpthread-218.1.3/private/private.h.
- int ResetCurrentThreadDirectory() {
- +#if IS_MAS_BUILD()
- + #pragma clang diagnostic push
- + #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- + return syscall(SYS___pthread_fchdir, -1);
- + #pragma clang diagnostic pop
- +#else
- return pthread_fchdir_np(-1);
- +#endif
- }
- #endif
-
- @@ -234,7 +254,7 @@ Process LaunchProcess(const std::vector<std::string>& argv,
- file_actions.Inherit(STDERR_FILENO);
- }
-
- -#if BUILDFLAG(IS_MAC)
- +#if 0
- if (options.disclaim_responsibility) {
- DPSXCHECK(responsibility_spawnattrs_setdisclaim(attr.get(), 1));
- }
- diff --git a/base/process/process_info_mac.cc b/base/process/process_info_mac.cc
- index 94a028be3c315edc0056408ab9ab41b6b001a1c1..abf9003bc71506d389ff77dc708c897113bba412 100644
- --- a/base/process/process_info_mac.cc
- +++ b/base/process/process_info_mac.cc
- @@ -4,19 +4,27 @@
-
- #include "base/process/process_info.h"
-
- +#include "electron/mas.h"
- +
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
-
- +#if !IS_MAS_BUILD()
- extern "C" {
- pid_t responsibility_get_pid_responsible_for_pid(pid_t);
- }
- +#endif
-
- namespace base {
-
- bool IsProcessSelfResponsible() {
- +#if !IS_MAS_BUILD()
- const pid_t pid = getpid();
- return responsibility_get_pid_responsible_for_pid(pid) == pid;
- +#else
- + return true;
- +#endif
- }
-
- } // namespace base
- diff --git a/components/os_crypt/sync/BUILD.gn b/components/os_crypt/sync/BUILD.gn
- index c4df04713a7f76c2ff50c1d2bc750e18bb1865e0..0392602987d99b4e5d776408e75ea605fe6550c4 100644
- --- a/components/os_crypt/sync/BUILD.gn
- +++ b/components/os_crypt/sync/BUILD.gn
- @@ -48,6 +48,7 @@ component("os_crypt") {
- "os_crypt_mac.mm",
- ]
- deps += [ "//crypto:mock_apple_keychain" ]
- + deps += ["//electron/build/config:generate_mas_config"]
- }
-
- if (is_win) {
- diff --git a/components/os_crypt/sync/keychain_password_mac.mm b/components/os_crypt/sync/keychain_password_mac.mm
- index e7a65e97b51d93bff864889813317fb7c6ffc846..bb1fc0c99164ae4bdaaaa78e87c30e88932a928c 100644
- --- a/components/os_crypt/sync/keychain_password_mac.mm
- +++ b/components/os_crypt/sync/keychain_password_mac.mm
- @@ -13,6 +13,7 @@
- #include "base/rand_util.h"
- #include "build/branding_buildflags.h"
- #include "crypto/apple_keychain.h"
- +#include "electron/mas.h"
-
- using crypto::AppleKeychain;
-
- diff --git a/components/remote_cocoa/app_shim/BUILD.gn b/components/remote_cocoa/app_shim/BUILD.gn
- index da8b246916811fbee1e63d0aa95be9fa3ae12bfb..3bcd78507a15bb12ffe71a5f67e756000ca2633a 100644
- --- a/components/remote_cocoa/app_shim/BUILD.gn
- +++ b/components/remote_cocoa/app_shim/BUILD.gn
- @@ -75,6 +75,7 @@ component("app_shim") {
- "//components/crash/core/common",
- "//components/remote_cocoa/common:mojo",
- "//components/system_media_controls",
- + "//electron/build/config:generate_mas_config",
- "//mojo/public/cpp/bindings",
- "//net",
- "//ui/accelerated_widget_mac",
- diff --git a/components/remote_cocoa/app_shim/application_bridge.mm b/components/remote_cocoa/app_shim/application_bridge.mm
- index e9f4e5131238b9fb5f1b4b3e90a0cb84a7fc15b4..8b5f4cae3123ac5480ad73f0c873fca0d62f7c9f 100644
- --- a/components/remote_cocoa/app_shim/application_bridge.mm
- +++ b/components/remote_cocoa/app_shim/application_bridge.mm
- @@ -12,6 +12,7 @@
- #include "components/remote_cocoa/app_shim/native_widget_ns_window_bridge.h"
- #include "components/remote_cocoa/app_shim/native_widget_ns_window_host_helper.h"
- #include "components/system_media_controls/mac/remote_cocoa/system_media_controls_bridge.h"
- +#include "electron/mas.h"
- #include "mojo/public/cpp/bindings/associated_remote.h"
- #include "mojo/public/cpp/bindings/self_owned_receiver.h"
- #include "ui/accelerated_widget_mac/window_resize_helper_mac.h"
- @@ -51,6 +52,7 @@
-
- // NativeWidgetNSWindowHostHelper:
- id GetNativeViewAccessible() override {
- +#if !IS_MAS_BUILD()
- if (!remote_accessibility_element_) {
- base::ProcessId browser_pid = base::kNullProcessId;
- std::vector<uint8_t> element_token;
- @@ -61,6 +63,9 @@ id GetNativeViewAccessible() override {
- ui::RemoteAccessibility::GetRemoteElementFromToken(element_token);
- }
- return remote_accessibility_element_;
- +#else
- + return nil;
- +#endif
- }
- void DispatchKeyEvent(ui::KeyEvent* event) override {
- bool event_handled = false;
- @@ -99,7 +104,9 @@ void GetWordAt(const gfx::Point& location_in_content,
- mojo::AssociatedRemote<mojom::TextInputHost> text_input_host_remote_;
-
- std::unique_ptr<NativeWidgetNSWindowBridge> bridge_;
- +#if !IS_MAS_BUILD()
- NSAccessibilityRemoteUIElement* __strong remote_accessibility_element_;
- +#endif
- };
-
- } // namespace
- diff --git a/components/remote_cocoa/app_shim/browser_native_widget_window_mac.mm b/components/remote_cocoa/app_shim/browser_native_widget_window_mac.mm
- index 19fff43c3daaef5451b6b60b84a610a21311448e..240b954661d34fcc4329d39490be33c485fa8b6e 100644
- --- a/components/remote_cocoa/app_shim/browser_native_widget_window_mac.mm
- +++ b/components/remote_cocoa/app_shim/browser_native_widget_window_mac.mm
- @@ -9,7 +9,9 @@
- #include "components/remote_cocoa/app_shim/features.h"
- #include "components/remote_cocoa/app_shim/native_widget_ns_window_bridge.h"
- #include "components/remote_cocoa/common/native_widget_ns_window_host.mojom.h"
- +#include "electron/mas.h"
-
- +#if !IS_MAS_BUILD()
- namespace {
- // Workaround for https://crbug.com/1369643
- const double kThinControllerHeight = 0.5;
- @@ -100,12 +102,15 @@ - (void)maybeShowTrafficLights {
-
- @end
-
- +#endif // MAS_BUILD
- +
- @implementation BrowserNativeWidgetWindow
-
- @synthesize thinTitlebarViewController = _thinTitlebarViewController;
-
- // NSWindow (PrivateAPI) overrides.
-
- +#if !IS_MAS_BUILD()
- + (Class)frameViewClassForStyleMask:(NSUInteger)windowStyle {
- // - NSThemeFrame and its subclasses will be nil if it's missing at runtime.
- if ([BrowserWindowFrame class])
- @@ -165,6 +170,8 @@ - (BOOL)_usesCustomDrawing {
- return NO;
- }
-
- +#endif // MAS_BUILD
- +
- // Handle "Move focus to the window toolbar" configured in System Preferences ->
- // Keyboard -> Shortcuts -> Keyboard. Usually Ctrl+F5. The argument (|unknown|)
- // tends to just be nil.
- @@ -175,8 +182,8 @@ - (void)_handleFocusToolbarHotKey:(id)unknown {
- }
-
- - (void)setAlwaysShowTrafficLights:(BOOL)alwaysShow {
- - [base::apple::ObjCCastStrict<BrowserWindowFrame>(self.contentView.superview)
- - setAlwaysShowTrafficLights:alwaysShow];
- + // [base::apple::ObjCCastStrict<BrowserWindowFrame>(self.contentView.superview)
- + // setAlwaysShowTrafficLights:alwaysShow];
- }
-
- @end
- diff --git a/components/remote_cocoa/app_shim/native_widget_mac_frameless_nswindow.mm b/components/remote_cocoa/app_shim/native_widget_mac_frameless_nswindow.mm
- index 3a815ebf505bd95fa7f6b61ba433d98fbfe20225..149de0175c2ec0e41e3ba40caad7019ca87386d6 100644
- --- a/components/remote_cocoa/app_shim/native_widget_mac_frameless_nswindow.mm
- +++ b/components/remote_cocoa/app_shim/native_widget_mac_frameless_nswindow.mm
- @@ -4,6 +4,10 @@
-
- #import "components/remote_cocoa/app_shim/native_widget_mac_frameless_nswindow.h"
-
- +#include "electron/mas.h"
- +
- +#if !IS_MAS_BUILD()
- +
- @interface NSWindow (PrivateAPI)
- + (Class)frameViewClassForStyleMask:(NSUInteger)windowStyle;
- @end
- @@ -18,8 +22,12 @@ - (CGFloat)_titlebarHeight {
- }
- @end
-
- +#endif // MAS_BUILD
- +
- @implementation NativeWidgetMacFramelessNSWindow
-
- +#if !IS_MAS_BUILD()
- +
- + (Class)frameViewClassForStyleMask:(NSUInteger)windowStyle {
- if ([NativeWidgetMacFramelessNSWindowFrame class]) {
- return [NativeWidgetMacFramelessNSWindowFrame class];
- @@ -27,4 +35,6 @@ + (Class)frameViewClassForStyleMask:(NSUInteger)windowStyle {
- return [super frameViewClassForStyleMask:windowStyle];
- }
-
- +#endif // MAS_BUILD
- +
- @end
- diff --git a/components/remote_cocoa/app_shim/native_widget_mac_nswindow.h b/components/remote_cocoa/app_shim/native_widget_mac_nswindow.h
- index 945b01f2132547fa0f6a97ee4895994c500d1410..864f93f7c4159abc63e1535195fbf9d112558b91 100644
- --- a/components/remote_cocoa/app_shim/native_widget_mac_nswindow.h
- +++ b/components/remote_cocoa/app_shim/native_widget_mac_nswindow.h
- @@ -9,6 +9,7 @@
-
- #include "base/apple/foundation_util.h"
- #include "components/remote_cocoa/app_shim/remote_cocoa_app_shim_export.h"
- +#include "electron/mas.h"
- #import "ui/base/cocoa/command_dispatcher.h"
-
- namespace remote_cocoa {
- @@ -17,6 +18,7 @@ class NativeWidgetNSWindowBridge;
-
- @protocol WindowTouchBarDelegate;
-
- +#if !IS_MAS_BUILD()
- // Weak lets Chrome launch even if a future macOS doesn't have the below classes
- WEAK_IMPORT_ATTRIBUTE
- @interface NSNextStepFrame : NSView
- @@ -33,6 +35,7 @@ REMOTE_COCOA_APP_SHIM_EXPORT
- REMOTE_COCOA_APP_SHIM_EXPORT
- @interface NativeWidgetMacNSWindowTitledFrame : NSThemeFrame
- @end
- +#endif
-
- // The NSWindow used by BridgedNativeWidget. Provides hooks into AppKit that
- // can only be accomplished by overriding methods.
- diff --git a/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm b/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm
- index 4f875587289f19b06041c5e8a7f76ab9cba169c9..952febab99656f59efee8c0d267d8f76f9943197 100644
- --- a/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm
- +++ b/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm
- @@ -26,6 +26,7 @@
- #import "components/remote_cocoa/app_shim/views_nswindow_delegate.h"
- #import "components/remote_cocoa/app_shim/window_touch_bar_delegate.h"
- #include "components/remote_cocoa/common/native_widget_ns_window_host.mojom.h"
- +#include "electron/mas.h"
- #import "ui/base/cocoa/user_interface_item_command_handler.h"
- #import "ui/base/cocoa/window_size_constants.h"
-
- @@ -111,14 +112,18 @@ void OrderChildWindow(NSWindow* child_window,
-
- } // namespace
-
- +#if !IS_MAS_BUILD()
- @interface NSNextStepFrame (Private)
- - (instancetype)initWithFrame:(NSRect)frame
- styleMask:(NSUInteger)styleMask
- owner:(id)owner;
- @end
- +#endif
-
- @interface NSWindow (Private)
- +#if !IS_MAS_BUILD()
- + (Class)frameViewClassForStyleMask:(NSWindowStyleMask)windowStyle;
- +#endif
- - (BOOL)hasKeyAppearance;
- - (long long)_resizeDirectionForMouseLocation:(CGPoint)location;
- - (BOOL)_isConsideredOpenForPersistentState;
- @@ -157,6 +162,8 @@ - (void)cr_mouseDownOnFrameView:(NSEvent*)event {
- }
- @end
-
- +#if !IS_MAS_BUILD()
- +
- @implementation NativeWidgetMacNSWindowTitledFrame
- - (void)mouseDown:(NSEvent*)event {
- if (self.window.isMovable)
- @@ -184,6 +191,8 @@ - (BOOL)usesCustomDrawing {
- }
- @end
-
- +#endif // MAS_BUILD
- +
- @implementation NativeWidgetMacNSWindow {
- @private
- CommandDispatcher* __strong _commandDispatcher;
- @@ -380,6 +389,8 @@ - (NSAccessibilityRole)accessibilityRole {
-
- // NSWindow overrides.
-
- +#if !IS_MAS_BUILD()
- +
- + (Class)frameViewClassForStyleMask:(NSWindowStyleMask)windowStyle {
- if (windowStyle & NSWindowStyleMaskTitled) {
- if (Class customFrame = [NativeWidgetMacNSWindowTitledFrame class])
- @@ -391,6 +402,8 @@ + (Class)frameViewClassForStyleMask:(NSWindowStyleMask)windowStyle {
- return [super frameViewClassForStyleMask:windowStyle];
- }
-
- +#endif
- +
- - (BOOL)_isTitleHidden {
- bool shouldShowWindowTitle = YES;
- if (_bridge)
- diff --git a/components/remote_cocoa/app_shim/native_widget_ns_window_bridge.mm b/components/remote_cocoa/app_shim/native_widget_ns_window_bridge.mm
- index 97f489043beb4260b1a3ca1781ce7ef67ec8c88a..569859297618cac39aa36655b9e301224ed11f71 100644
- --- a/components/remote_cocoa/app_shim/native_widget_ns_window_bridge.mm
- +++ b/components/remote_cocoa/app_shim/native_widget_ns_window_bridge.mm
- @@ -41,6 +41,7 @@
- #import "components/remote_cocoa/app_shim/views_nswindow_delegate.h"
- #import "components/remote_cocoa/app_shim/window_move_loop.h"
- #include "components/remote_cocoa/common/native_widget_ns_window_host.mojom.h"
- +#include "electron/mas.h"
- #include "mojo/public/cpp/bindings/self_owned_receiver.h"
- #include "net/cert/x509_util_apple.h"
- #include "ui/accelerated_widget_mac/window_resize_helper_mac.h"
- @@ -654,10 +655,12 @@ NSUInteger CountBridgedWindows(NSArray* child_windows) {
- // this should be treated as an error and caught early.
- CHECK(bridged_view_);
-
- +#if !IS_MAS_BUILD()
- // Send the accessibility tokens for the NSView now that it exists.
- host_->SetRemoteAccessibilityTokens(
- ui::RemoteAccessibility::GetTokenForLocalElement(window_),
- ui::RemoteAccessibility::GetTokenForLocalElement(bridged_view_));
- +#endif
-
- // Beware: This view was briefly removed (in favor of a bare CALayer) in
- // https://crrev.com/c/1236675. The ordering of unassociated layers relative
- diff --git a/components/viz/service/BUILD.gn b/components/viz/service/BUILD.gn
- index 2fa9063bb7c2ffff4fec6cf91aa7b6bf1d9ea875..6c661c1766f987297ef1fd5c45069a63209826a3 100644
- --- a/components/viz/service/BUILD.gn
- +++ b/components/viz/service/BUILD.gn
- @@ -381,6 +381,7 @@ viz_component("service") {
- "frame_sinks/external_begin_frame_source_mac.h",
- ]
- }
- + deps += ["//electron/build/config:generate_mas_config"]
- }
-
- if (is_android || use_ozone) {
- @@ -660,6 +661,7 @@ viz_source_set("unit_tests") {
- "display_embedder/software_output_device_mac_unittest.mm",
- ]
- frameworks = [ "IOSurface.framework" ]
- + deps += ["//electron/build/config:generate_mas_config"]
- }
-
- if (is_win) {
- diff --git a/content/app_shim_remote_cocoa/ns_view_bridge_factory_impl.mm b/content/app_shim_remote_cocoa/ns_view_bridge_factory_impl.mm
- index dbf334caa3a6d10017b69ad76802e389a011436b..da828823e8195cc9e497866363c9af93dcd4ec3f 100644
- --- a/content/app_shim_remote_cocoa/ns_view_bridge_factory_impl.mm
- +++ b/content/app_shim_remote_cocoa/ns_view_bridge_factory_impl.mm
- @@ -15,6 +15,7 @@
- #include "content/common/web_contents_ns_view_bridge.mojom.h"
- #include "content/public/browser/remote_cocoa.h"
- #include "content/public/browser/render_widget_host_view_mac_delegate.h"
- +#include "electron/mas.h"
- #include "mojo/public/cpp/bindings/associated_receiver.h"
- #include "mojo/public/cpp/bindings/associated_remote.h"
- #include "mojo/public/cpp/bindings/pending_associated_receiver.h"
- @@ -63,7 +64,9 @@ explicit RenderWidgetHostNSViewBridgeOwner(
- const RenderWidgetHostNSViewBridgeOwner&) = delete;
-
- private:
- +#if !IS_MAS_BUILD()
- NSAccessibilityRemoteUIElement* __strong remote_accessibility_element_;
- +#endif
- void OnMojoDisconnect() { delete this; }
-
- std::unique_ptr<blink::WebCoalescedInputEvent> TranslateEvent(
- @@ -75,6 +78,7 @@ explicit RenderWidgetHostNSViewBridgeOwner(
- }
-
- id GetAccessibilityElement() override {
- +#if !IS_MAS_BUILD()
- if (!remote_accessibility_element_) {
- base::ProcessId browser_pid = base::kNullProcessId;
- std::vector<uint8_t> element_token;
- @@ -85,6 +89,9 @@ id GetAccessibilityElement() override {
- ui::RemoteAccessibility::GetRemoteElementFromToken(element_token);
- }
- return remote_accessibility_element_;
- +#else
- + return nil;
- +#endif
- }
-
- // RenderWidgetHostNSViewHostHelper implementation.
- @@ -103,8 +110,10 @@ id GetFocusedBrowserAccessibilityElement() override {
- return [bridgedContentView accessibilityFocusedUIElement];
- }
- void SetAccessibilityWindow(NSWindow* window) override {
- +#if !IS_MAS_BUILD()
- host_->SetRemoteAccessibilityWindowToken(
- ui::RemoteAccessibility::GetTokenForLocalElement(window));
- +#endif
- }
-
- void ForwardKeyboardEvent(const input::NativeWebKeyboardEvent& key_event,
- diff --git a/content/app_shim_remote_cocoa/render_widget_host_view_cocoa.mm b/content/app_shim_remote_cocoa/render_widget_host_view_cocoa.mm
- index faddee802d6538c092ba96914184663ee57751c8..49238975848d58cd30727ec818bbac52a838f10c 100644
- --- a/content/app_shim_remote_cocoa/render_widget_host_view_cocoa.mm
- +++ b/content/app_shim_remote_cocoa/render_widget_host_view_cocoa.mm
- @@ -35,6 +35,7 @@
- #include "content/public/browser/browser_accessibility_state.h"
- #import "content/public/browser/render_widget_host_view_mac_delegate.h"
- #include "content/public/common/content_features.h"
- +#include "electron/mas.h"
- #include "skia/ext/skia_utils_mac.h"
- #include "third_party/blink/public/common/features.h"
- #include "third_party/blink/public/mojom/input/input_handler.mojom.h"
- @@ -2078,15 +2079,21 @@ - (NSAccessibilityRole)accessibilityRole {
- // Since this implementation doesn't have to wait any IPC calls, this doesn't
- // make any key-typing jank. --hbono 7/23/09
- //
- +#if !IS_MAS_BUILD()
- extern "C" {
- extern NSString* NSTextInputReplacementRangeAttributeName;
- }
- +#endif
-
- - (NSArray*)validAttributesForMarkedText {
- // This code is just copied from WebKit except renaming variables.
- static NSArray* const kAttributes = @[
- NSUnderlineStyleAttributeName, NSUnderlineColorAttributeName,
- +#if !IS_MAS_BUILD()
- NSMarkedClauseSegmentAttributeName, NSTextInputReplacementRangeAttributeName
- +#else
- + NSMarkedClauseSegmentAttributeName
- +#endif
- ];
- return kAttributes;
- }
- diff --git a/content/browser/BUILD.gn b/content/browser/BUILD.gn
- index 00ac46d858b7f83e53b1817028baba13719f04fe..31c9a53d5c7f09a7326ef57753b4a49f0239a7f8 100644
- --- a/content/browser/BUILD.gn
- +++ b/content/browser/BUILD.gn
- @@ -327,6 +327,7 @@ source_set("browser") {
- "//ui/strings:ax_strings",
- "//ui/touch_selection",
- "//v8:v8_version",
- + "//electron/build/config:generate_mas_config",
- ]
-
- public_deps = [
- diff --git a/content/browser/renderer_host/render_widget_host_view_mac.h b/content/browser/renderer_host/render_widget_host_view_mac.h
- index 2285564db47ef15eb9a83affd1e481b5671c3940..cf5e79a5540d8208c34579d7e8b5a5715abb1beb 100644
- --- a/content/browser/renderer_host/render_widget_host_view_mac.h
- +++ b/content/browser/renderer_host/render_widget_host_view_mac.h
- @@ -23,6 +23,7 @@
- #include "content/browser/renderer_host/text_input_manager.h"
- #include "content/common/content_export.h"
- #include "content/common/render_widget_host_ns_view.mojom.h"
- +#include "electron/mas.h"
- #include "mojo/public/cpp/bindings/associated_receiver.h"
- #include "mojo/public/cpp/bindings/associated_remote.h"
- #include "third_party/blink/public/mojom/webshare/webshare.mojom.h"
- @@ -53,7 +54,9 @@ class CursorManager;
-
- @protocol RenderWidgetHostViewMacDelegate;
-
- +#if !IS_MAS_BUILD()
- @class NSAccessibilityRemoteUIElement;
- +#endif
- @class RenderWidgetHostViewCocoa;
-
- namespace content {
- @@ -684,9 +687,11 @@ class CONTENT_EXPORT RenderWidgetHostViewMac
- // EnsureSurfaceSynchronizedForWebTest().
- uint32_t latest_capture_sequence_number_ = 0u;
-
- +#if !IS_MAS_BUILD()
- // Remote accessibility objects corresponding to the NSWindow that this is
- // displayed to the user in.
- NSAccessibilityRemoteUIElement* __strong remote_window_accessible_;
- +#endif
-
- // Used to force the NSApplication's focused accessibility element to be the
- // content::BrowserAccessibilityCocoa accessibility tree when the NSView for
- diff --git a/content/browser/renderer_host/render_widget_host_view_mac.mm b/content/browser/renderer_host/render_widget_host_view_mac.mm
- index 34fb29866785ef07c6dca4cfc85966df1c479b5f..e305d25a8f2a34ac90f4d503a9c74dcc6c553cdf 100644
- --- a/content/browser/renderer_host/render_widget_host_view_mac.mm
- +++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
- @@ -48,6 +48,7 @@
- #include "content/public/browser/render_widget_host.h"
- #include "content/public/browser/web_contents.h"
- #include "content/public/common/page_visibility_state.h"
- +#include "electron/mas.h"
- #include "media/base/media_switches.h"
- #include "skia/ext/platform_canvas.h"
- #include "skia/ext/skia_utils_mac.h"
- @@ -273,8 +274,10 @@
- void RenderWidgetHostViewMac::MigrateNSViewBridge(
- remote_cocoa::mojom::Application* remote_cocoa_application,
- uint64_t parent_ns_view_id) {
- +#if !IS_MAS_BUILD()
- // Destroy the previous remote accessibility element.
- remote_window_accessible_ = nil;
- +#endif
-
- // Reset `ns_view_` before resetting `remote_ns_view_` to avoid dangling
- // pointers. `ns_view_` gets reinitialized later in this method.
- @@ -1636,8 +1639,10 @@ void CombineTextNodesAndMakeCallback(SpeechCallback callback,
-
- gfx::NativeViewAccessible
- RenderWidgetHostViewMac::AccessibilityGetNativeViewAccessibleForWindow() {
- +#if !IS_MAS_BUILD()
- if (remote_window_accessible_)
- return remote_window_accessible_;
- +#endif
- return [GetInProcessNSView() window];
- }
-
- @@ -1686,9 +1691,11 @@ void CombineTextNodesAndMakeCallback(SpeechCallback callback,
- }
-
- void RenderWidgetHostViewMac::SetAccessibilityWindow(NSWindow* window) {
- +#if !IS_MAS_BUILD()
- // When running in-process, just use the NSView's NSWindow as its own
- // accessibility element.
- remote_window_accessible_ = nil;
- +#endif
- }
-
- bool RenderWidgetHostViewMac::SyncIsWidgetForMainFrame(
- @@ -2212,20 +2219,26 @@ void CombineTextNodesAndMakeCallback(SpeechCallback callback,
- void RenderWidgetHostViewMac::GetRenderWidgetAccessibilityToken(
- GetRenderWidgetAccessibilityTokenCallback callback) {
- base::ProcessId pid = getpid();
- +#if !IS_MAS_BUILD()
- id element_id = GetNativeViewAccessible();
- std::vector<uint8_t> token =
- ui::RemoteAccessibility::GetTokenForLocalElement(element_id);
- std::move(callback).Run(pid, token);
- +#else
- + std::move(callback).Run(pid, std::vector<uint8_t>());
- +#endif
- }
-
- void RenderWidgetHostViewMac::SetRemoteAccessibilityWindowToken(
- const std::vector<uint8_t>& window_token) {
- +#if !IS_MAS_BUILD()
- if (window_token.empty()) {
- remote_window_accessible_ = nil;
- } else {
- remote_window_accessible_ =
- ui::RemoteAccessibility::GetRemoteElementFromToken(window_token);
- }
- +#endif
- }
-
- ///////////////////////////////////////////////////////////////////////////////
- diff --git a/content/common/BUILD.gn b/content/common/BUILD.gn
- index d8243ca31b40940f79892cf74a0d9dbbec7d8272..df320813ebc67ea16d6c93c7f2905196be5ef44f 100644
- --- a/content/common/BUILD.gn
- +++ b/content/common/BUILD.gn
- @@ -286,6 +286,7 @@ source_set("common") {
- "//ui/shell_dialogs",
- "//url",
- "//url/ipc:url_ipc",
- + "//electron/build/config:generate_mas_config",
- ]
-
- defines = []
- diff --git a/content/renderer/BUILD.gn b/content/renderer/BUILD.gn
- index 55a3baeeec34e9e89b75e93cd17486baef6e550e..cdd5750c7a84e38501e4b6d24e6a2c365b9ce5f1 100644
- --- a/content/renderer/BUILD.gn
- +++ b/content/renderer/BUILD.gn
- @@ -334,6 +334,7 @@ target(link_target_type, "renderer") {
- "//ui/surface",
- "//url",
- "//v8",
- + "//electron/build/config:generate_mas_config",
- ]
- allow_circular_includes_from = []
-
- diff --git a/content/renderer/renderer_main_platform_delegate_mac.mm b/content/renderer/renderer_main_platform_delegate_mac.mm
- index d4db3b179725cb96bcbd0f73db7d52ef8b7522db..703b0f56a61abac51961bfd918b7349b943900de 100644
- --- a/content/renderer/renderer_main_platform_delegate_mac.mm
- +++ b/content/renderer/renderer_main_platform_delegate_mac.mm
- @@ -7,12 +7,15 @@
- #import <Cocoa/Cocoa.h>
-
- #include "base/check_op.h"
- +#include "electron/mas.h"
- #include "sandbox/mac/seatbelt.h"
- #include "sandbox/mac/system_services.h"
-
- +#if !IS_MAS_BUILD()
- extern "C" {
- CGError CGSSetDenyWindowServerConnections(bool);
- }
- +#endif
-
- namespace content {
-
- @@ -22,6 +25,7 @@
- // verifies there are no existing open connections), and then indicates that
- // Chrome should continue execution without access to launchservicesd.
- void DisableSystemServices() {
- +#if !IS_MAS_BUILD()
- // Tell the WindowServer that we don't want to make any future connections.
- // This will return Success as long as there are no open connections, which
- // is what we want.
- @@ -30,6 +34,7 @@ void DisableSystemServices() {
-
- sandbox::DisableLaunchServices();
- sandbox::DisableCoreServicesCheckFix();
- +#endif
- }
-
- } // namespace
- diff --git a/content/renderer/theme_helper_mac.mm b/content/renderer/theme_helper_mac.mm
- index a1068589ad844518038ee7bc15a3de9bc5cba525..1ff781c49f086ec8015c7d3c44567dbec3d00ff8 100644
- --- a/content/renderer/theme_helper_mac.mm
- +++ b/content/renderer/theme_helper_mac.mm
- @@ -7,16 +7,28 @@
- #include <Cocoa/Cocoa.h>
-
- #include "base/strings/sys_string_conversions.h"
- +#include "electron/mas.h"
-
- +#if !IS_MAS_BUILD()
- extern "C" {
- bool CGFontRenderingGetFontSmoothingDisabled(void);
- }
- -
- +#endif
- namespace content {
-
- bool IsSubpixelAntialiasingAvailable() {
- +#if !IS_MAS_BUILD()
- // See https://trac.webkit.org/changeset/239306/webkit for more info.
- return !CGFontRenderingGetFontSmoothingDisabled();
- +#else
- + NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
- + NSString *default_key = @"CGFontRenderingGetFontSmoothingDisabled";
- + // Check that key exists since boolForKey defaults to NO when the
- + // key is missing and this key in fact defaults to YES;
- + if ([defaults objectForKey:default_key] == nil)
- + return false;
- + return ![defaults boolForKey:default_key];
- +#endif
- }
-
- } // namespace content
- diff --git a/content/test/BUILD.gn b/content/test/BUILD.gn
- index 4f0153bf27764fce04a56d2bce8f8e7a012d78f5..17955a2806d741905bc9507ea6d39fd012162d12 100644
- --- a/content/test/BUILD.gn
- +++ b/content/test/BUILD.gn
- @@ -643,6 +643,7 @@ static_library("test_support") {
- "//url",
- "//url/mojom:url_mojom_gurl",
- "//v8",
- + "//electron/build/config:generate_mas_config"
- ]
-
- data_deps = [
- @@ -1118,6 +1119,7 @@ static_library("browsertest_support") {
- }
-
- configs += [ "//v8:external_startup_data" ]
- + deps += ["//electron/build/config:generate_mas_config"]
- }
-
- mojom("content_test_mojo_bindings") {
- @@ -1952,6 +1954,7 @@ test("content_browsertests") {
- "//ui/shell_dialogs",
- "//ui/snapshot",
- "//ui/webui:test_support",
- + "//electron/build/config:generate_mas_config"
- ]
-
- if (!(is_chromeos_ash && target_cpu == "arm64" && current_cpu == "arm")) {
- @@ -3244,6 +3247,7 @@ test("content_unittests") {
- "//ui/latency:test_support",
- "//ui/shell_dialogs:shell_dialogs",
- "//ui/webui:test_support",
- + "//electron/build/config:generate_mas_config"
- ]
-
- if (enable_nocompile_tests) {
- diff --git a/content/web_test/BUILD.gn b/content/web_test/BUILD.gn
- index 99e612f705c5dff041454802033564085718260a..aa37555d9a9c0fda19d0096d035c245eca5ca0c6 100644
- --- a/content/web_test/BUILD.gn
- +++ b/content/web_test/BUILD.gn
- @@ -228,6 +228,7 @@ static_library("web_test_browser") {
- "//ui/gl",
- "//ui/shell_dialogs:shell_dialogs",
- "//url",
- + "//electron/build/config:generate_mas_config"
- ]
-
- # TODO(crbug.com/40139469): Blink test plugin must be migrated from PPAPI.
- diff --git a/device/bluetooth/BUILD.gn b/device/bluetooth/BUILD.gn
- index 1fb121f31d7a4817a7934d75972a527adecdc91e..35703443b285256286276744e1f6c9f40ed8d595 100644
- --- a/device/bluetooth/BUILD.gn
- +++ b/device/bluetooth/BUILD.gn
- @@ -258,6 +258,7 @@ component("bluetooth") {
- "IOKit.framework",
- "Foundation.framework",
- ]
- + deps += ["//electron/build/config:generate_mas_config"]
- }
-
- if (is_mac) {
- diff --git a/device/bluetooth/bluetooth_adapter_mac.mm b/device/bluetooth/bluetooth_adapter_mac.mm
- index fa86583a2d82c4076cfcf64cdc3f6bbb533b95d7..3e4bda0bc31431cb2cc0893d246be6bb54cfab83 100644
- --- a/device/bluetooth/bluetooth_adapter_mac.mm
- +++ b/device/bluetooth/bluetooth_adapter_mac.mm
- @@ -38,7 +38,9 @@
- #include "device/bluetooth/bluetooth_discovery_session_outcome.h"
- #include "device/bluetooth/bluetooth_socket_mac.h"
- #include "device/bluetooth/public/cpp/bluetooth_address.h"
- +#include "electron/mas.h"
-
- +#if !IS_MAS_BUILD()
- extern "C" {
- // Undocumented IOBluetooth Preference API [1]. Used by `blueutil` [2] and
- // `Karabiner` [3] to programmatically control the Bluetooth state. Calling the
- @@ -52,6 +54,7 @@
- // [4] https://support.apple.com/kb/PH25091
- void IOBluetoothPreferenceSetControllerPowerState(int state);
- }
- +#endif
-
- // A simple helper class that forwards any Bluetooth device connect notification
- // to its wrapped |_adapter|.
- @@ -161,8 +164,10 @@ bool IsDeviceSystemPaired(const std::string& device_address) {
- : controller_state_function_(
- base::BindRepeating(&BluetoothAdapterMac::GetHostControllerState,
- base::Unretained(this))),
- +#if !IS_MAS_BUILD()
- power_state_function_(
- base::BindRepeating(IOBluetoothPreferenceSetControllerPowerState)),
- +#endif
- device_paired_status_callback_(
- base::BindRepeating(&IsDeviceSystemPaired)) {
- }
- @@ -313,8 +318,12 @@ bool IsDeviceSystemPaired(const std::string& device_address) {
- }
-
- bool BluetoothAdapterMac::SetPoweredImpl(bool powered) {
- +#if !IS_MAS_BUILD()
- power_state_function_.Run(base::strict_cast<int>(powered));
- return true;
- +#else
- + return false;
- +#endif
- }
-
- base::WeakPtr<BluetoothLowEnergyAdapterApple>
- diff --git a/gpu/ipc/service/BUILD.gn b/gpu/ipc/service/BUILD.gn
- index 973cd337f2781271b4ca3e29db07939ec6917327..90658a336138e4e50f93c38f1c1f465c1c2bd4dc 100644
- --- a/gpu/ipc/service/BUILD.gn
- +++ b/gpu/ipc/service/BUILD.gn
- @@ -135,6 +135,7 @@ component("service") {
- "QuartzCore.framework",
- ]
- defines += [ "GL_SILENCE_DEPRECATION" ]
- + deps += ["//electron/build/config:generate_mas_config"]
- }
- if (is_ios) {
- sources += [ "image_transport_surface_ios.mm" ]
- diff --git a/gpu/ipc/service/image_transport_surface_overlay_mac.h b/gpu/ipc/service/image_transport_surface_overlay_mac.h
- index 36322ddd3047f96569f35807541a37d3c6672b09..0121a780cf3b79fc1120c1b85cd5cd30c14968ef 100644
- --- a/gpu/ipc/service/image_transport_surface_overlay_mac.h
- +++ b/gpu/ipc/service/image_transport_surface_overlay_mac.h
- @@ -8,6 +8,7 @@
- #include <vector>
-
- #include "base/memory/weak_ptr.h"
- +#include "electron/mas.h"
- #include "gpu/ipc/service/command_buffer_stub.h"
- #include "gpu/ipc/service/image_transport_surface.h"
- #include "ui/gfx/ca_layer_result.h"
- @@ -23,7 +24,9 @@
- #include "ui/display/types/display_constants.h"
- #endif
-
- +#if !IS_MAS_BUILD()
- @class CAContext;
- +#endif
- @class CALayer;
-
- namespace ui {
- diff --git a/media/audio/BUILD.gn b/media/audio/BUILD.gn
- index 45847b155ec8fb197aadb479eca78154436cfa81..e5de2b90a4c7d8181408ddfa62057b977015cbb8 100644
- --- a/media/audio/BUILD.gn
- +++ b/media/audio/BUILD.gn
- @@ -198,6 +198,7 @@ source_set("audio") {
- "CoreMedia.framework",
- ]
- weak_frameworks = [ "ScreenCaptureKit.framework" ] # macOS 13.0
- + deps += ["//electron/build/config:generate_mas_config"]
- }
-
- if (is_ios) {
- diff --git a/media/audio/apple/audio_low_latency_input.cc b/media/audio/apple/audio_low_latency_input.cc
- index da17e30384033a795e35d9cd27f16aa1a2b1ad24..f98dc86b19569290d81e7d2a172c1f217a72d00e 100644
- --- a/media/audio/apple/audio_low_latency_input.cc
- +++ b/media/audio/apple/audio_low_latency_input.cc
- @@ -29,6 +29,7 @@
- #include "base/strings/sys_string_conversions.h"
- #include "base/time/time.h"
- #include "base/trace_event/trace_event.h"
- +#include "electron/mas.h"
- #include "media/audio/apple/audio_manager_apple.h"
- #include "media/audio/apple/scoped_audio_unit.h"
- #include "media/base/audio_bus.h"
- @@ -41,19 +42,23 @@
-
- namespace {
- extern "C" {
- +#if !IS_MAS_BUILD()
- // See:
- // https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/PAL/pal/spi/cf/CoreAudioSPI.h?rev=228264
- OSStatus AudioDeviceDuck(AudioDeviceID inDevice,
- Float32 inDuckedLevel,
- const AudioTimeStamp* __nullable inStartTime,
- Float32 inRampDuration) __attribute__((weak_import));
- +#endif
- }
-
- void UndoDucking(AudioDeviceID output_device_id) {
- +#if !IS_MAS_BUILD()
- if (AudioDeviceDuck != nullptr) {
- // Ramp the volume back up over half a second.
- AudioDeviceDuck(output_device_id, 1.0, nullptr, 0.5);
- }
- +#endif
- }
- } // namespace
- #endif
- diff --git a/net/dns/BUILD.gn b/net/dns/BUILD.gn
- index 543b8ae16c1ddc33b3602adc7216a1756681f5fe..21b2898f8b1f40a85d60145bfdff3aa1d7e9b154 100644
- --- a/net/dns/BUILD.gn
- +++ b/net/dns/BUILD.gn
- @@ -189,6 +189,8 @@ source_set("dns") {
- ":host_resolver_manager",
- ":mdns_client",
- ]
- +
- + deps += ["//electron/build/config:generate_mas_config"]
- }
-
- # The standard API of net/dns.
- diff --git a/net/dns/dns_config_service_posix.cc b/net/dns/dns_config_service_posix.cc
- index 70d5665ad7b9ef62370497636af919ede2508ad4..f4dc3e2b8053cdb3e8c439ab1a1d6369a8e6a7dc 100644
- --- a/net/dns/dns_config_service_posix.cc
- +++ b/net/dns/dns_config_service_posix.cc
- @@ -28,6 +28,7 @@
- #include "base/threading/scoped_blocking_call.h"
- #include "base/time/time.h"
- #include "build/build_config.h"
- +#include "electron/mas.h"
- #include "net/base/ip_endpoint.h"
- #include "net/dns/dns_config.h"
- #include "net/dns/dns_hosts.h"
- @@ -135,8 +136,8 @@ class DnsConfigServicePosix::Watcher : public DnsConfigService::Watcher {
-
- bool Watch() override {
- CheckOnCorrectSequence();
- -
- bool success = true;
- +#if !IS_MAS_BUILD()
- if (!config_watcher_.Watch(base::BindRepeating(&Watcher::OnConfigChanged,
- base::Unretained(this)))) {
- LOG(ERROR) << "DNS config watch failed to start.";
- @@ -153,6 +154,7 @@ class DnsConfigServicePosix::Watcher : public DnsConfigService::Watcher {
- success = false;
- }
- #endif // !BUILDFLAG(IS_IOS)
- +#endif
- return success;
- }
-
- diff --git a/sandbox/mac/BUILD.gn b/sandbox/mac/BUILD.gn
- index 4e53d573ff67615bc7dcee7db6f855c67094f414..8b061d66b1a854b51a5a38b6a71eadab6a7dbbec 100644
- --- a/sandbox/mac/BUILD.gn
- +++ b/sandbox/mac/BUILD.gn
- @@ -39,6 +39,7 @@ component("seatbelt") {
- ]
- public_deps = [ "//third_party/protobuf:protobuf_lite" ]
- defines = [ "SEATBELT_IMPLEMENTATION" ]
- + deps += ["//electron/build/config:generate_mas_config"]
- }
-
- component("seatbelt_extension") {
- @@ -52,6 +53,7 @@ component("seatbelt_extension") {
- libs = [ "sandbox" ]
- public_deps = [ "//base" ]
- defines = [ "SEATBELT_IMPLEMENTATION" ]
- + deps += ["//electron/build/config:generate_mas_config"]
- }
-
- component("system_services") {
- @@ -66,6 +68,7 @@ component("system_services") {
- deps = [ ":seatbelt_export" ]
- public_deps = [ "//base" ]
- defines = [ "SEATBELT_IMPLEMENTATION" ]
- + deps += ["//electron/build/config:generate_mas_config"]
- }
-
- source_set("sandbox_unittests") {
- diff --git a/sandbox/mac/sandbox_compiler.cc b/sandbox/mac/sandbox_compiler.cc
- index f35d9ef2a2df3db8ecbf1d7b909c7b1cf33f3cd9..5d52330d1bd70cd7b97ee3360721f10c8447c717 100644
- --- a/sandbox/mac/sandbox_compiler.cc
- +++ b/sandbox/mac/sandbox_compiler.cc
- @@ -7,6 +7,7 @@
- #include <string>
- #include <vector>
-
- +#include "electron/mas.h"
- #include "sandbox/mac/seatbelt.h"
-
- namespace sandbox {
- @@ -47,6 +48,7 @@ bool SandboxCompiler::SetParameter(const std::string& key,
- }
-
- bool SandboxCompiler::CompileAndApplyProfile(std::string& error) {
- +#if !IS_MAS_BUILD()
- if (mode_ == Target::kSource) {
- std::vector<const char*> params;
-
- @@ -67,6 +69,9 @@ bool SandboxCompiler::CompileAndApplyProfile(std::string& error) {
- }
- }
- return false;
- +#else
- + return true;
- +#endif
- }
-
- bool SandboxCompiler::CompilePolicyToProto(mac::SandboxPolicy& policy,
- diff --git a/sandbox/mac/sandbox_logging.cc b/sandbox/mac/sandbox_logging.cc
- index 095c639b9893e885d8937e29ed7d47a7c28bc6b6..7e0cf9b9f94b16741358bdb45122f8b2bd68c0f9 100644
- --- a/sandbox/mac/sandbox_logging.cc
- +++ b/sandbox/mac/sandbox_logging.cc
- @@ -16,6 +16,7 @@
- #include <string>
-
- #include "build/build_config.h"
- +#include "electron/mas.h"
- #include "sandbox/mac/sandbox_crash_message.h"
-
- #if defined(ARCH_CPU_X86_64)
- @@ -33,9 +34,11 @@
- }
- #endif
-
- +#if !IS_MAS_BUILD()
- extern "C" {
- void abort_report_np(const char*, ...);
- }
- +#endif
-
- namespace sandbox::logging {
-
- @@ -76,9 +79,11 @@ void SendOsLog(Level level, const char* message) {
- sandbox::crash_message::SetCrashMessage(message);
- }
-
- +#if !IS_MAS_BUILD()
- if (level == Level::FATAL) {
- abort_report_np(message);
- }
- +#endif
- }
-
- // |error| is strerror(errno) when a P* logging function is called. Pass
- diff --git a/sandbox/mac/seatbelt.cc b/sandbox/mac/seatbelt.cc
- index 15c835e118456394c0a00ac98c11241c14ca75bd..a16faabe2bd63a5e0fbe9082a3b4b7c8aa0ea064 100644
- --- a/sandbox/mac/seatbelt.cc
- +++ b/sandbox/mac/seatbelt.cc
- @@ -4,12 +4,14 @@
-
- #include "sandbox/mac/seatbelt.h"
-
- +#include "electron/mas.h"
- +
- #include <errno.h>
- #include <unistd.h>
-
- extern "C" {
- #include <sandbox.h>
- -
- +#if !IS_MAS_BUILD()
- int sandbox_init_with_parameters(const char* profile,
- uint64_t flags,
- const char* const parameters[],
- @@ -40,13 +42,13 @@ sandbox_profile_t* sandbox_compile_string(const char* data,
- char** error);
- int sandbox_apply(sandbox_profile_t*);
- void sandbox_free_profile(sandbox_profile_t*);
- -
- +#endif
- } // extern "C"
-
- namespace sandbox {
-
- namespace {
- -
- +#if !IS_MAS_BUILD()
- bool HandleSandboxResult(int rv, char* errorbuf, std::string* error) {
- if (rv == 0) {
- if (error)
- @@ -74,36 +76,48 @@ bool HandleSandboxErrno(int rv, const char* message, std::string* error) {
- }
- return false;
- }
- -
- +#endif
- } // namespace
-
- // static
- Seatbelt::Parameters Seatbelt::Parameters::Create() {
- Parameters params;
- +#if !IS_MAS_BUILD()
- params.params_ = ::sandbox_create_params();
- +#endif
- return params;
- }
-
- Seatbelt::Parameters::Parameters() = default;
-
- Seatbelt::Parameters::Parameters(Seatbelt::Parameters&& other) {
- +#if !IS_MAS_BUILD()
- params_ = std::exchange(other.params_, nullptr);
- +#endif
- }
-
- Seatbelt::Parameters& Seatbelt::Parameters::operator=(
- Seatbelt::Parameters&& other) {
- +#if !IS_MAS_BUILD()
- params_ = std::exchange(other.params_, nullptr);
- +#endif
- return *this;
- }
-
- bool Seatbelt::Parameters::Set(const char* key, const char* value) {
- +#if !IS_MAS_BUILD()
- return ::sandbox_set_param(params_, key, value) == 0;
- +#else
- + return true;
- +#endif
- }
-
- Seatbelt::Parameters::~Parameters() {
- +#if !IS_MAS_BUILD()
- if (params_) {
- ::sandbox_free_params(params_);
- }
- +#endif
- }
-
- // Initialize the static member variables.
- @@ -114,6 +128,7 @@ const char* Seatbelt::kProfilePureComputation = kSBXProfilePureComputation;
-
- // static
- bool Seatbelt::Init(const char* profile, uint64_t flags, std::string* error) {
- +#if !IS_MAS_BUILD()
- // OS X deprecated these functions, but did not provide a suitable replacement,
- // so ignore the deprecation warning.
- #pragma clang diagnostic push
- @@ -122,6 +137,9 @@ bool Seatbelt::Init(const char* profile, uint64_t flags, std::string* error) {
- int rv = ::sandbox_init(profile, flags, &errorbuf);
- return HandleSandboxResult(rv, errorbuf, error);
- #pragma clang diagnostic pop
- +#else
- + return true;
- +#endif
- }
-
- // static
- @@ -129,10 +147,14 @@ bool Seatbelt::InitWithParams(const char* profile,
- uint64_t flags,
- const char* const parameters[],
- std::string* error) {
- +#if !IS_MAS_BUILD()
- char* errorbuf = nullptr;
- int rv =
- ::sandbox_init_with_parameters(profile, flags, parameters, &errorbuf);
- return HandleSandboxResult(rv, errorbuf, error);
- +#else
- + return true;
- +#endif
- }
-
- // static
- @@ -140,6 +162,7 @@ bool Seatbelt::Compile(const char* profile,
- const Seatbelt::Parameters& params,
- std::string& compiled_profile,
- std::string* error) {
- +#if !IS_MAS_BUILD()
- char* errorbuf = nullptr;
- sandbox_profile_t* sandbox_profile =
- ::sandbox_compile_string(profile, params.params(), &errorbuf);
- @@ -149,33 +172,44 @@ bool Seatbelt::Compile(const char* profile,
- compiled_profile.assign(reinterpret_cast<const char*>(sandbox_profile->data),
- sandbox_profile->size);
- ::sandbox_free_profile(sandbox_profile);
- +#endif
- return true;
- }
-
- // static
- bool Seatbelt::ApplyCompiledProfile(const std::string& profile,
- std::string* error) {
- +#if !IS_MAS_BUILD()
- sandbox_profile_t sbox_profile = {
- .builtin = nullptr,
- .data = reinterpret_cast<const uint8_t*>(profile.data()),
- .size = profile.size()};
- return HandleSandboxErrno(::sandbox_apply(&sbox_profile),
- "sandbox_apply: ", error);
- +#else
- + return true;
- +#endif
- }
-
- // static
- void Seatbelt::FreeError(char* errorbuf) {
- +#if !IS_MAS_BUILD()
- // OS X deprecated these functions, but did not provide a suitable replacement,
- // so ignore the deprecation warning.
- #pragma clang diagnostic push
- #pragma clang diagnostic ignored "-Wdeprecated-declarations"
- return ::sandbox_free_error(errorbuf);
- #pragma clang diagnostic pop
- +#endif
- }
-
- // static
- bool Seatbelt::IsSandboxed() {
- +#if !IS_MAS_BUILD()
- return ::sandbox_check(getpid(), NULL, 0);
- +#else
- + return true;
- +#endif
- }
-
- } // namespace sandbox
- diff --git a/sandbox/mac/seatbelt_extension.cc b/sandbox/mac/seatbelt_extension.cc
- index 79edca9ca521d1bc2ff343967348eb98039b292a..23f9410ee66024e2c6b0b6b2b356a67b0ae2eba7 100644
- --- a/sandbox/mac/seatbelt_extension.cc
- +++ b/sandbox/mac/seatbelt_extension.cc
- @@ -9,8 +9,10 @@
- #include "base/check.h"
- #include "base/memory/ptr_util.h"
- #include "base/notreached.h"
- +#include "electron/mas.h"
- #include "sandbox/mac/seatbelt_extension_token.h"
-
- +#if !IS_MAS_BUILD()
- // libsandbox private API.
- extern "C" {
- extern const char* APP_SANDBOX_READ;
- @@ -22,6 +24,7 @@ char* sandbox_extension_issue_file(const char* type,
- const char* path,
- uint32_t flags);
- }
- +#endif
-
- namespace sandbox {
-
- @@ -50,7 +53,11 @@ std::unique_ptr<SeatbeltExtension> SeatbeltExtension::FromToken(
-
- bool SeatbeltExtension::Consume() {
- DCHECK(!token_.empty());
- +#if !IS_MAS_BUILD()
- handle_ = sandbox_extension_consume(token_.c_str());
- +#else
- + handle_ = -1;
- +#endif
- return handle_ > 0;
- }
-
- @@ -62,7 +69,11 @@ bool SeatbeltExtension::ConsumePermanently() {
- }
-
- bool SeatbeltExtension::Revoke() {
- +#if !IS_MAS_BUILD()
- int rv = sandbox_extension_release(handle_);
- +#else
- + int rv = -1;
- +#endif
- handle_ = 0;
- token_.clear();
- return rv == 0;
- @@ -80,12 +91,14 @@ SeatbeltExtension::SeatbeltExtension(const std::string& token)
- char* SeatbeltExtension::IssueToken(SeatbeltExtension::Type type,
- const std::string& resource) {
- switch (type) {
- +#if !IS_MAS_BUILD()
- case FILE_READ:
- return sandbox_extension_issue_file(APP_SANDBOX_READ, resource.c_str(),
- 0);
- case FILE_READ_WRITE:
- return sandbox_extension_issue_file(APP_SANDBOX_READ_WRITE,
- resource.c_str(), 0);
- +#endif
- default:
- NOTREACHED();
- }
- diff --git a/sandbox/mac/system_services.cc b/sandbox/mac/system_services.cc
- index eb81a70e4d5d5cd3e6ae9b45f8cd1c795ea76c51..9921ccb10d3455600eddd85f77f10228016389af 100644
- --- a/sandbox/mac/system_services.cc
- +++ b/sandbox/mac/system_services.cc
- @@ -8,7 +8,9 @@
- #include <CoreFoundation/CoreFoundation.h>
-
- #include "base/apple/osstatus_logging.h"
- +#include "electron/mas.h"
-
- +#if !IS_MAS_BUILD()
- extern "C" {
- OSStatus SetApplicationIsDaemon(Boolean isDaemon);
- void _LSSetApplicationLaunchServicesServerConnectionStatus(
- @@ -19,10 +21,12 @@ void _LSSetApplicationLaunchServicesServerConnectionStatus(
- // https://github.com/WebKit/WebKit/blob/24aaedc770d192d03a07ba4a71727274aaa8fc07/Source/WebKit/WebProcess/cocoa/WebProcessCocoa.mm#L840
- void _CSCheckFixDisable();
- } // extern "C"
- +#endif
-
- namespace sandbox {
-
- void DisableLaunchServices() {
- + #if !IS_MAS_BUILD()
- // Allow the process to continue without a LaunchServices ASN. The
- // INIT_Process function in HIServices will abort if it cannot connect to
- // launchservicesd to get an ASN. By setting this flag, HIServices skips
- @@ -36,10 +40,13 @@ void DisableLaunchServices() {
- 0, ^bool(CFDictionaryRef options) {
- return false;
- });
- + #endif
- }
-
- void DisableCoreServicesCheckFix() {
- +#if !IS_MAS_BUILD()
- _CSCheckFixDisable();
- +#endif
- }
-
- } // namespace sandbox
- diff --git a/third_party/blink/renderer/core/BUILD.gn b/third_party/blink/renderer/core/BUILD.gn
- index 679005c0d241207646a7aabad5ce896bc5c56558..39547524d6e77954c949d4ac05bec1f9596162fd 100644
- --- a/third_party/blink/renderer/core/BUILD.gn
- +++ b/third_party/blink/renderer/core/BUILD.gn
- @@ -409,6 +409,7 @@ component("core") {
- "//ui/gfx/geometry",
- "//ui/gfx/geometry:geometry_skia",
- "//ui/strings",
- + "//electron/build/config:generate_mas_config",
- ]
-
- if (is_mac) {
- diff --git a/third_party/blink/renderer/core/editing/build.gni b/third_party/blink/renderer/core/editing/build.gni
- index d38e951cdbf1ab9b367273ad0fb8f962155a7f3b..e39ee0414cb54004096dbfffc4f768e805f3310a 100644
- --- a/third_party/blink/renderer/core/editing/build.gni
- +++ b/third_party/blink/renderer/core/editing/build.gni
- @@ -358,10 +358,14 @@ blink_core_sources_editing = [
- if (is_mac) {
- blink_core_sources_editing += [
- "commands/smart_replace_cf.cc",
- - "kill_ring_mac.mm",
- "substring_util.h",
- "substring_util.mm",
- ]
- + if (is_mas_build) {
- + blink_core_sources_editing += [ "kill_ring_mac.mm" ]
- + } else {
- + blink_core_sources_editing += [ "kill_ring_none.cc" ]
- + }
- } else {
- blink_core_sources_editing += [ "kill_ring_none.cc" ]
- }
- diff --git a/ui/accelerated_widget_mac/BUILD.gn b/ui/accelerated_widget_mac/BUILD.gn
- index 79501bed8f5853d5dacaaaf08af833b81f3babb7..d3d2759e0b6512ab01d1ef386f43468fe83408c2 100644
- --- a/ui/accelerated_widget_mac/BUILD.gn
- +++ b/ui/accelerated_widget_mac/BUILD.gn
- @@ -67,6 +67,7 @@ component("accelerated_widget_mac") {
- "//ui/gfx",
- "//ui/gfx/geometry",
- "//ui/gl",
- + "//electron/build/config:generate_mas_config",
- ]
- }
-
- diff --git a/ui/accelerated_widget_mac/ca_layer_tree_coordinator.h b/ui/accelerated_widget_mac/ca_layer_tree_coordinator.h
- index b11c365f42dd1ddc363de0d94c387b13ac65bef3..5da42beb20b514396287cc6dc5cba608e1660b2e 100644
- --- a/ui/accelerated_widget_mac/ca_layer_tree_coordinator.h
- +++ b/ui/accelerated_widget_mac/ca_layer_tree_coordinator.h
- @@ -7,6 +7,7 @@
-
- #include <queue>
-
- +#include "electron/mas.h"
- #include "ui/accelerated_widget_mac/accelerated_widget_mac_export.h"
- #include "ui/accelerated_widget_mac/ca_renderer_layer_tree.h"
- #include "ui/gfx/ca_layer_result.h"
- @@ -14,7 +15,9 @@
- #include "ui/gl/gl_surface.h"
- #include "ui/gl/presenter.h"
-
- +#if !IS_MAS_BUILD()
- @class CAContext;
- +#endif
- @class CALayer;
-
- namespace ui {
- @@ -110,7 +113,9 @@ class ACCELERATED_WIDGET_MAC_EXPORT CALayerTreeCoordinator {
- // both the current tree and the pending trees.
- size_t presented_ca_layer_trees_max_length_ = 2;
-
- +#if !IS_MAS_BUILD()
- CAContext* __strong ca_context_;
- +#endif
-
- // The root CALayer to display the current frame. This does not change
- // over the lifetime of the object.
- diff --git a/ui/accelerated_widget_mac/ca_layer_tree_coordinator.mm b/ui/accelerated_widget_mac/ca_layer_tree_coordinator.mm
- index b99461d52e3a62b58330691e65f9956748cfbf02..f0c3bb1b809a29eee3d990b0a8bbffddb7500895 100644
- --- a/ui/accelerated_widget_mac/ca_layer_tree_coordinator.mm
- +++ b/ui/accelerated_widget_mac/ca_layer_tree_coordinator.mm
- @@ -10,6 +10,7 @@
- #include "base/mac/mac_util.h"
- #include "base/task/single_thread_task_runner.h"
- #include "base/trace_event/trace_event.h"
- +#include "electron/mas.h"
- #include "ui/base/cocoa/animation_utils.h"
- #include "ui/base/cocoa/remote_layer_api.h"
- #include "ui/gfx/ca_layer_params.h"
- @@ -33,6 +34,7 @@
- new_presentation_feedback_timestamps_(
- new_presentation_feedback_timestamps),
- buffer_presented_callback_(buffer_presented_callback) {
- +#if !IS_MAS_BUILD()
- if (allow_remote_layers_) {
- root_ca_layer_ = [[CALayer alloc] init];
- #if BUILDFLAG(IS_MAC)
- @@ -61,6 +63,7 @@
- #endif
- ca_context_.layer = root_ca_layer_;
- }
- +#endif
- }
-
- CALayerTreeCoordinator::~CALayerTreeCoordinator() = default;
- @@ -164,9 +167,13 @@
- TRACE_EVENT_INSTANT2("test_gpu", "SwapBuffers", TRACE_EVENT_SCOPE_THREAD,
- "GLImpl", static_cast<int>(gl::GetGLImplementation()),
- "width", pixel_size_.width());
- +#if !IS_MAS_BUILD()
- if (allow_remote_layers_) {
- params.ca_context_id = [ca_context_ contextId];
- } else {
- +#else
- + if (true) {
- +#endif
- IOSurfaceRef io_surface = frame->layer_tree->GetContentIOSurface();
- if (io_surface) {
- DCHECK(!allow_remote_layers_);
- diff --git a/ui/accelerated_widget_mac/display_ca_layer_tree.mm b/ui/accelerated_widget_mac/display_ca_layer_tree.mm
- index dcf493d62990018040a3f84b6f875af737bd2214..3d1c4dcc9ee0bbfdac15f40d9c74e9f342a59e39 100644
- --- a/ui/accelerated_widget_mac/display_ca_layer_tree.mm
- +++ b/ui/accelerated_widget_mac/display_ca_layer_tree.mm
- @@ -12,6 +12,7 @@
- #include "base/mac/mac_util.h"
- #include "base/trace_event/trace_event.h"
- #include "build/build_config.h"
- +#include "electron/mas.h"
- #include "ui/base/cocoa/animation_utils.h"
- #include "ui/base/cocoa/remote_layer_api.h"
- #include "ui/gfx/geometry/dip_util.h"
- @@ -121,6 +122,7 @@ - (void)setContentsChanged;
- }
-
- void DisplayCALayerTree::GotCALayerFrame(uint32_t ca_context_id) {
- +#if !IS_MAS_BUILD()
- // Early-out if the remote layer has not changed.
- if (remote_layer_.contextId == ca_context_id) {
- return;
- @@ -150,6 +152,9 @@ - (void)setContentsChanged;
- [io_surface_layer_ removeFromSuperlayer];
- io_surface_layer_ = nil;
- }
- +#else
- + NOTREACHED() << "Remote layer is being used in MAS build";
- +#endif
- }
-
- void DisplayCALayerTree::GotIOSurfaceFrame(
- diff --git a/ui/accessibility/platform/BUILD.gn b/ui/accessibility/platform/BUILD.gn
- index 2f7f2a8f81ec0e033cb83f82daac4835a2863cbc..21388d7de99fbb97c79eecbab658934d5cac5650 100644
- --- a/ui/accessibility/platform/BUILD.gn
- +++ b/ui/accessibility/platform/BUILD.gn
- @@ -283,6 +283,7 @@ component("platform") {
- "AppKit.framework",
- "Foundation.framework",
- ]
- + deps += ["//electron/build/config:generate_mas_config"]
- }
-
- if (is_ios) {
- diff --git a/ui/accessibility/platform/browser_accessibility_manager_mac.mm b/ui/accessibility/platform/browser_accessibility_manager_mac.mm
- index be442f6a2a67d07ec78fe00a3e864bf0088fe504..2332199d02b98f53375b4e3e40e25018cb584228 100644
- --- a/ui/accessibility/platform/browser_accessibility_manager_mac.mm
- +++ b/ui/accessibility/platform/browser_accessibility_manager_mac.mm
- @@ -13,13 +13,16 @@
- #include "base/task/single_thread_task_runner.h"
- #include "base/task/task_traits.h"
- #include "base/time/time.h"
- +#include "electron/mas.h"
- #include "ui/accelerated_widget_mac/accelerated_widget_mac.h"
- #include "ui/accessibility/ax_role_properties.h"
- #include "ui/accessibility/platform/ax_platform_tree_manager_delegate.h"
- #include "ui/accessibility/platform/ax_private_webkit_constants_mac.h"
- #import "ui/accessibility/platform/browser_accessibility_cocoa.h"
- #import "ui/accessibility/platform/browser_accessibility_mac.h"
- +#if !IS_MAS_BUILD()
- #include "ui/base/cocoa/remote_accessibility_api.h"
- +#endif
-
- namespace {
-
- @@ -227,6 +230,7 @@ void PostAnnouncementNotification(NSString* announcement,
- return;
- }
-
- +#if !IS_MAS_BUILD()
- BrowserAccessibilityManager* root_manager = GetManagerForRootFrame();
- if (root_manager) {
- BrowserAccessibilityManagerMac* root_manager_mac =
- @@ -249,6 +253,7 @@ void PostAnnouncementNotification(NSString* announcement,
- return;
- }
- }
- +#endif
-
- // Use native VoiceOver support for live regions.
- BrowserAccessibilityCocoa* retained_node = native_node;
- @@ -645,6 +650,7 @@ void PostAnnouncementNotification(NSString* announcement,
- return window == [NSApp accessibilityFocusedWindow];
- }
-
- +#if !IS_MAS_BUILD()
- // TODO(accessibility): We need a solution to the problem described below.
- // If the window is NSAccessibilityRemoteUIElement, there are some challenges:
- // 1. NSApp is the browser which spawned the PWA, and what it considers the
- @@ -673,6 +679,7 @@ void PostAnnouncementNotification(NSString* announcement,
- if ([window isKindOfClass:[NSAccessibilityRemoteUIElement class]]) {
- return true;
- }
- +#endif
-
- return false;
- }
- diff --git a/ui/accessibility/platform/inspect/ax_transform_mac.mm b/ui/accessibility/platform/inspect/ax_transform_mac.mm
- index c8171f0527fe5194f0ea73b57c4444d4c630fbc4..c2ac4da580e3e7f749a0a4de1e859af62de11672 100644
- --- a/ui/accessibility/platform/inspect/ax_transform_mac.mm
- +++ b/ui/accessibility/platform/inspect/ax_transform_mac.mm
- @@ -11,6 +11,7 @@
-
- #include "base/apple/foundation_util.h"
- #include "base/strings/sys_string_conversions.h"
- +#include "electron/mas.h"
- #include "ui/accessibility/ax_range.h"
- #include "ui/accessibility/platform/ax_platform_node.h"
- #include "ui/accessibility/platform/ax_platform_node_cocoa.h"
- @@ -111,6 +112,7 @@
- }
- }
-
- +#if !IS_MAS_BUILD()
- // AXTextMarker
- if (IsAXTextMarker(value)) {
- return AXTextMarkerToBaseValue(value, indexer);
- @@ -120,6 +122,7 @@
- if (IsAXTextMarkerRange(value)) {
- return AXTextMarkerRangeToBaseValue(value, indexer);
- }
- +#endif
-
- // Accessible object
- if (AXElementWrapper::IsValidElement(value)) {
- diff --git a/ui/base/BUILD.gn b/ui/base/BUILD.gn
- index 7ef725523fa1b660d589f20cc338052f82a9baf7..61a712df5c7829c320f0f80d859fcf9c840e8022 100644
- --- a/ui/base/BUILD.gn
- +++ b/ui/base/BUILD.gn
- @@ -358,6 +358,13 @@ component("base") {
- ]
- }
-
- + if (is_mas_build) {
- + sources -= [
- + "cocoa/remote_accessibility_api.h",
- + "cocoa/remote_accessibility_api.mm",
- + ]
- + }
- +
- if (is_ios) {
- sources += [
- "device_form_factor_ios.mm",
- @@ -508,6 +515,12 @@ component("base") {
- "//url",
- ]
-
- + if (is_mac) {
- + deps += [
- + "//electron/build/config:generate_mas_config"
- + ]
- + }
- +
- if (is_debug || dcheck_always_on) {
- deps += [ "//third_party/re2" ]
- }
- diff --git a/ui/base/cocoa/remote_accessibility_api.h b/ui/base/cocoa/remote_accessibility_api.h
- index 3182458838aa96d34911280ab4c6c3aa4aa22d6d..6dc85c366b7e61c8bd0302e501c3223a19223313 100644
- --- a/ui/base/cocoa/remote_accessibility_api.h
- +++ b/ui/base/cocoa/remote_accessibility_api.h
- @@ -10,9 +10,12 @@
- #include <vector>
-
- #include "base/component_export.h"
- +#include "electron/mas.h"
-
- // NSAccessibilityRemoteUIElement is a private class in AppKit.
-
- +#if !IS_MAS_BUILD()
- +
- @interface NSAccessibilityRemoteUIElement : NSObject
- + (void)setRemoteUIApp:(BOOL)flag;
- + (BOOL)isRemoteUIApp;
- @@ -38,4 +41,6 @@ class COMPONENT_EXPORT(UI_BASE) RemoteAccessibility {
-
- } // namespace ui
-
- +#endif // MAS_BUILD
- +
- #endif // UI_BASE_COCOA_REMOTE_ACCESSIBILITY_API_H_
- diff --git a/ui/base/cocoa/remote_layer_api.h b/ui/base/cocoa/remote_layer_api.h
- index 59dc2f82214cfd883b6ebef3b0fb25af6387a9cd..912c5252d1b30d943a1552739b9eef9a8eae2d7a 100644
- --- a/ui/base/cocoa/remote_layer_api.h
- +++ b/ui/base/cocoa/remote_layer_api.h
- @@ -9,6 +9,7 @@
-
- #include "base/component_export.h"
- #include "build/build_config.h"
- +#include "electron/mas.h"
-
- #if defined(__OBJC__)
- #import <Foundation/Foundation.h>
- @@ -17,6 +18,7 @@
-
- #if BUILDFLAG(IS_MAC)
-
- +#if !IS_MAS_BUILD()
- // The CGSConnectionID is used to create the CAContext in the process that is
- // going to share the CALayers that it is rendering to another process to
- // display.
- @@ -68,6 +70,8 @@ extern NSString* const kCAContextIgnoresHitTest;
-
- #endif // __OBJC__
-
- +#endif // MAS_BUILD
- +
- namespace ui {
-
- // This function will check if all of the interfaces listed above are supported
- diff --git a/ui/base/cocoa/remote_layer_api.mm b/ui/base/cocoa/remote_layer_api.mm
- index fc25ba79d2b0e1acdb7ba54b89e7d6e16f94771b..de771ef414b9a69e331261524f08e9a12145ec60 100644
- --- a/ui/base/cocoa/remote_layer_api.mm
- +++ b/ui/base/cocoa/remote_layer_api.mm
- @@ -5,11 +5,13 @@
- #include "ui/base/cocoa/remote_layer_api.h"
-
- #include "base/feature_list.h"
- +#include "electron/mas.h"
-
- #include <objc/runtime.h>
-
- namespace ui {
-
- +#if !IS_MAS_BUILD()
- namespace {
- // Control use of cross-process CALayers to display content directly from the
- // GPU process on Mac.
- @@ -17,8 +19,10 @@
- "RemoteCoreAnimationAPI",
- base::FEATURE_ENABLED_BY_DEFAULT);
- } // namespace
- +#endif
-
- bool RemoteLayerAPISupported() {
- +#if !IS_MAS_BUILD()
- if (!base::FeatureList::IsEnabled(kRemoteCoreAnimationAPI))
- return false;
-
- @@ -55,6 +59,9 @@ bool RemoteLayerAPISupported() {
-
- // If everything is there, we should be able to use the API.
- return true;
- +#else
- + return false;
- +#endif // MAS_BUILD
- }
-
- } // namespace
- diff --git a/ui/display/BUILD.gn b/ui/display/BUILD.gn
- index fe7a2787f8b5d25a0c11f7ccc3cf00fa9038231a..d62e60c93b9725b625e7f5d0c011c7363d739917 100644
- --- a/ui/display/BUILD.gn
- +++ b/ui/display/BUILD.gn
- @@ -125,6 +125,12 @@ component("display") {
- "//ui/gfx/geometry",
- ]
-
- + if (is_mac) {
- + deps += [
- + "//electron/build/config:generate_mas_config"
- + ]
- + }
- +
- if (is_ios) {
- deps += [ "//build:ios_buildflags" ]
- }
- diff --git a/ui/display/mac/screen_mac.mm b/ui/display/mac/screen_mac.mm
- index 29ae2da6a8a2c2a612dfb92f7f9c03ca5fa306b1..440c139a32a0c205e77b657d4aab64684661a01d 100644
- --- a/ui/display/mac/screen_mac.mm
- +++ b/ui/display/mac/screen_mac.mm
- @@ -30,6 +30,7 @@
- #include "base/trace_event/trace_event.h"
- #include "build/build_config.h"
- #include "components/device_event_log/device_event_log.h"
- +#include "electron/mas.h"
- #include "ui/display/display.h"
- #include "ui/display/display_change_notifier.h"
- #include "ui/display/util/display_util.h"
- @@ -176,7 +177,17 @@ DisplayMac BuildDisplayForScreen(NSScreen* screen) {
- display.set_color_depth(Display::kDefaultBitsPerPixel);
- display.set_depth_per_component(Display::kDefaultBitsPerComponent);
- }
- +#if IS_MAS_BUILD()
- + // This is equivalent to the CGDisplayUsesForceToGray() API as at 2018-08-06,
- + // but avoids usage of the private API.
- + CFStringRef app = CFSTR("com.apple.CoreGraphics");
- + CFStringRef key = CFSTR("DisplayUseForcedGray");
- + Boolean key_valid = false;
- + display.set_is_monochrome(
- + CFPreferencesGetAppBooleanValue(key, app, &key_valid));
- +#else
- display.set_is_monochrome(CGDisplayUsesForceToGray());
- +#endif
-
- // Query the display's refresh rate.
- if (@available(macos 12.0, *)) {
- diff --git a/ui/gfx/BUILD.gn b/ui/gfx/BUILD.gn
- index 7cd8da2e1a8caf38348d2f56799979a4f1809e7b..d6cbea3a4768ad0e884257fce8db004b1d3b0d72 100644
- --- a/ui/gfx/BUILD.gn
- +++ b/ui/gfx/BUILD.gn
- @@ -329,6 +329,12 @@ component("gfx") {
- "//ui/base:ui_data_pack",
- ]
-
- + if (is_mac) {
- + deps += [
- + "//electron/build/config:generate_mas_config"
- + ]
- + }
- +
- if (!is_apple) {
- sources += [
- "platform_font_skia.cc",
- diff --git a/ui/gfx/platform_font_mac.mm b/ui/gfx/platform_font_mac.mm
- index fe3f85073e31de487a08e57d7f9b07aa4eccf8f3..cf5b07203c8bd559a404600cc98cc8eccdefd4d7 100644
- --- a/ui/gfx/platform_font_mac.mm
- +++ b/ui/gfx/platform_font_mac.mm
- @@ -19,6 +19,7 @@
- #include "base/numerics/safe_conversions.h"
- #include "base/strings/sys_string_conversions.h"
- #include "base/strings/utf_string_conversions.h"
- +#include "electron/mas.h"
- #include "third_party/skia/include/ports/SkTypeface_mac.h"
- #include "ui/gfx/canvas.h"
- #include "ui/gfx/font.h"
- @@ -28,9 +29,11 @@
-
- using Weight = Font::Weight;
-
- +#if !IS_MAS_BUILD()
- extern "C" {
- bool CTFontDescriptorIsSystemUIFont(CTFontDescriptorRef);
- }
- +#endif
-
- namespace {
-
- @@ -250,7 +253,13 @@ CTFontRef SystemFontForConstructorOfType(
- // TODO(avi, etienneb): Figure out this font stuff.
- base::apple::ScopedCFTypeRef<CTFontDescriptorRef> descriptor(
- CTFontCopyFontDescriptor(font));
- +#if IS_MAS_BUILD()
- + CFNumberRef priority = (CFNumberRef)CTFontDescriptorCopyAttribute(descriptor.get(), (CFStringRef)kCTFontPriorityAttribute);
- + SInt64 v;
- + if (CFNumberGetValue(priority, kCFNumberSInt64Type, &v) && v == kCTFontPrioritySystem) {
- +#else
- if (CTFontDescriptorIsSystemUIFont(descriptor.get())) {
- +#endif
- // Assume it's the standard system font. The fact that this much is known is
- // enough.
- return PlatformFontMac::SystemFontType::kGeneral;
- diff --git a/ui/views/BUILD.gn b/ui/views/BUILD.gn
- index 0d4a2d809d3fa731af0bad5a9d5f50f5b0a838f4..059a995648ec07960ab3a3cd15cbcc7952ec472d 100644
- --- a/ui/views/BUILD.gn
- +++ b/ui/views/BUILD.gn
- @@ -713,6 +713,8 @@ component("views") {
- "IOSurface.framework",
- "QuartzCore.framework",
- ]
- +
- + deps += ["//electron/build/config:generate_mas_config"]
- }
-
- if (is_win) {
- @@ -1130,6 +1132,8 @@ source_set("test_support") {
- "//ui/base/mojom:ui_base_types",
- ]
-
- + deps += ["//electron/build/config:generate_mas_config"]
- +
- if (is_win) {
- sources += [
- "test/desktop_window_tree_host_win_test_api.cc",
- diff --git a/ui/views/cocoa/native_widget_mac_ns_window_host.h b/ui/views/cocoa/native_widget_mac_ns_window_host.h
- index 81979cdb6c5dbad84ea67ef9014ce4027bcdc161..daeda64747dcbcd05f34e77079be701c5b281e7d 100644
- --- a/ui/views/cocoa/native_widget_mac_ns_window_host.h
- +++ b/ui/views/cocoa/native_widget_mac_ns_window_host.h
- @@ -18,6 +18,7 @@
- #include "components/remote_cocoa/browser/scoped_cg_window_id.h"
- #include "components/remote_cocoa/common/native_widget_ns_window.mojom.h"
- #include "components/remote_cocoa/common/native_widget_ns_window_host.mojom.h"
- +#include "electron/mas.h"
- #include "mojo/public/cpp/bindings/associated_receiver.h"
- #include "mojo/public/cpp/bindings/associated_remote.h"
- #include "ui/accelerated_widget_mac/accelerated_widget_mac.h"
- @@ -32,7 +33,9 @@
- #include "ui/views/window/dialog_observer.h"
-
- @class NativeWidgetMacNSWindow;
- +#if !IS_MAS_BUILD()
- @class NSAccessibilityRemoteUIElement;
- +#endif
- @class NSView;
-
- namespace remote_cocoa {
- @@ -483,10 +486,12 @@ class VIEWS_EXPORT NativeWidgetMacNSWindowHost
- mojo::AssociatedRemote<remote_cocoa::mojom::NativeWidgetNSWindow>
- remote_ns_window_remote_;
-
- +#if !IS_MAS_BUILD()
- // Remote accessibility objects corresponding to the NSWindow and its root
- // NSView.
- NSAccessibilityRemoteUIElement* __strong remote_window_accessible_;
- NSAccessibilityRemoteUIElement* __strong remote_view_accessible_;
- +#endif
-
- // Used to force the NSApplication's focused accessibility element to be the
- // views::Views accessibility tree when the NSView for this is focused.
- diff --git a/ui/views/cocoa/native_widget_mac_ns_window_host.mm b/ui/views/cocoa/native_widget_mac_ns_window_host.mm
- index 9a915cb0c36b224b8b95fa84bc1909de4283776f..e402df17b4e7273c850d0bd822019ee9d0f669a9 100644
- --- a/ui/views/cocoa/native_widget_mac_ns_window_host.mm
- +++ b/ui/views/cocoa/native_widget_mac_ns_window_host.mm
- @@ -21,6 +21,7 @@
- #include "components/remote_cocoa/app_shim/native_widget_ns_window_bridge.h"
- #include "components/remote_cocoa/browser/ns_view_ids.h"
- #include "components/remote_cocoa/browser/window.h"
- +#include "electron/mas.h"
- #include "mojo/public/cpp/bindings/self_owned_associated_receiver.h"
- #include "ui/accelerated_widget_mac/window_resize_helper_mac.h"
- #include "ui/accessibility/accessibility_features.h"
- @@ -349,7 +350,11 @@ void HandleAccelerator(const ui::Accelerator& accelerator,
- NativeWidgetMacNSWindowHost::GetNativeViewAccessibleForNSView() const {
- if (in_process_ns_window_bridge_)
- return in_process_ns_window_bridge_->ns_view();
- +#if !IS_MAS_BUILD()
- return remote_view_accessible_;
- +#else
- + return nullptr;
- +#endif
- }
-
- gfx::NativeViewAccessible
- @@ -364,7 +369,11 @@ void HandleAccelerator(const ui::Accelerator& accelerator,
- return [in_process_ns_window_bridge_->ns_view() window];
- }
-
- +#if !IS_MAS_BUILD()
- return remote_window_accessible_;
- +#else
- + return nullptr;
- +#endif
- }
-
- remote_cocoa::mojom::NativeWidgetNSWindow*
- @@ -1333,9 +1342,11 @@ void HandleAccelerator(const ui::Accelerator& accelerator,
- // for PWAs. However this breaks accessibility on in-process windows,
- // so set it back to NO when a local window gains focus. See
- // https://crbug.com/41485830.
- +#if !IS_MAS_BUILD()
- if (is_key && features::IsAccessibilityRemoteUIAppEnabled()) {
- [NSAccessibilityRemoteUIElement setRemoteUIApp:!!application_host_];
- }
- +#endif
- // Explicitly set the keyboard accessibility state on regaining key
- // window status.
- if (is_key && is_content_first_responder)
- @@ -1474,17 +1485,20 @@ void HandleAccelerator(const ui::Accelerator& accelerator,
- void NativeWidgetMacNSWindowHost::SetRemoteAccessibilityTokens(
- const std::vector<uint8_t>& window_token,
- const std::vector<uint8_t>& view_token) {
- +#if !IS_MAS_BUILD()
- remote_window_accessible_ =
- ui::RemoteAccessibility::GetRemoteElementFromToken(window_token);
- remote_view_accessible_ =
- ui::RemoteAccessibility::GetRemoteElementFromToken(view_token);
- [remote_view_accessible_ setWindowUIElement:remote_window_accessible_];
- [remote_view_accessible_ setTopLevelUIElement:remote_window_accessible_];
- +#endif
- }
-
- bool NativeWidgetMacNSWindowHost::GetRootViewAccessibilityToken(
- base::ProcessId* pid,
- std::vector<uint8_t>* token) {
- +#if !IS_MAS_BUILD()
- *pid = getpid();
- id element_id = GetNativeViewAccessible();
-
- @@ -1497,6 +1511,7 @@ void HandleAccelerator(const ui::Accelerator& accelerator,
- }
-
- *token = ui::RemoteAccessibility::GetTokenForLocalElement(element_id);
- +#endif
- return true;
- }
-
- diff --git a/ui/views/controls/webview/BUILD.gn b/ui/views/controls/webview/BUILD.gn
- index 111d6432586f47833dde50678b908c76ad88d37a..429ca4402652a2d89ead228d92971f0cb3b6222c 100644
- --- a/ui/views/controls/webview/BUILD.gn
- +++ b/ui/views/controls/webview/BUILD.gn
- @@ -46,6 +46,12 @@ component("webview") {
- "//url",
- ]
-
- + if (is_mac) {
- + deps += [
- + "//electron/build/config:generate_mas_config",
- + ]
- + }
- +
- public_deps = [
- "//base",
- "//content/public/browser",
|