mirror of
https://github.com/electron/electron.git
synced 2026-01-09 15:38:08 -05:00
* chore: bump chromium in DEPS to 144.0.7543.0 * Pass PipScreenCaptureCoordinatorProxy to ScreenCaptureKitDeviceMac https://chromium-review.googlesource.com/c/chromium/src/+/7157590 * chore: update patches * chore: update filenames.libcxx.gni * 7142359: Spanification of process_singleton_posix.cc https: //chromium-review.googlesource.com/c/chromium/src/+/7142359 Co-Authored-By: Charles Kerr <70381+ckerr@users.noreply.github.com> * Move logging::LoggingSettings to base/logging/logging_settings.h https://chromium-review.googlesource.com/c/chromium/src/+/7173024 * chore: bump chromium in DEPS to 144.0.7545.0 * 7159368: update PluginService API for sync GetPlugins Upstream removed async PluginService APIs: - GetPluginsAsync() removed, use synchronous GetPlugins() - RegisterInternalPlugin() now takes single argument (remove add_at_beginning) - RefreshPlugins() removed entirely Updated ElectronPluginInfoHostImpl to use synchronous plugin loading and simplified ElectronBrowserMainParts internal plugin registration. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7159368 Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7159328 Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7159056 (cherry picked from commit88cdf50b0a) * 7159184: add missing base/files/file_path.h include Add explicit include for base/files/file_path.h in electron_browser_context.h. After removal of superfluous Mojo includes from content headers, base::FilePath is no longer transitively included via content/public/browser/browser_context.h. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7159184 (cherry picked from commit6ca8ea03ec) * 7126479: add ShouldForceRefreshTextCheckService parameter to SpellCheckClient Upstream added a force-refresh parameter to WebTextCheckClient::RequestCheckingOfText to bypass spell check cache. Add the new ShouldForceRefreshTextCheckService parameter to SpellCheckClient's override (currently unused in Electron). Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7126479 (cherry picked from commit879c0401c4) * 7083663: remove fingerprinting_protection_ruleset_service override Upstream deleted external references to Fingerprinting Protection Filter (FPF) component. Remove the fingerprinting_protection_ruleset_service() override from BrowserProcessImpl as the method no longer exists in the base class. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7083663 (cherry picked from commit8350d152f9) * 7155287: implement WebContentsView::GetSize and Resize Upstream delegated WebContents::GetSize() and Resize() to WebContentsView, making them pure virtual. Add const qualifier to GetSize() and implement the Resize() override in OffScreenWebContentsView (no-op for offscreen). Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7155287 (cherry picked from commit084eaa568e) * 7184238: add OnUnconfirmedTapConvertedToTap override Upstream added OnUnconfirmedTapConvertedToTap as a pure virtual method to RenderWidgetHostViewBase to inform root view when child frame converts an unconfirmed tap. Add empty override for offscreen rendering. Ref: https://chromium-review.googlesource.com/c/chromium/src/+/7184238 (cherry picked from commitef03400d9a) * 7143586: add widget parameter to OnCommandsChanged GlobalAcceleratorListener::OnCommandsChanged gained a gfx::AcceleratedWidget parameter for window association in the GlobalShortcutListenerLinux implementation. Pass gfx::kNullAcceleratedWidget for Electron's usage. Ref: : Pass parent handle to GlobalAcceleratorListenerLinux::BindShortcuts | https://chromium-review.googlesource.com/c/chromium/src/+/7143586 (cherry picked from commit38306e2bfc) Co-Authored-By: Samuel Attard <MarshallOfSound@users.noreply.github.com> * chore: update patches Co-Authored-By: Samuel Attard <MarshallOfSound@users.noreply.github.com> * chore: bump chromium in DEPS to 144.0.7547.0 * chore: update patches * 7189232: Add support for UnownedUserData in GlobalFeatures https: //chromium-review.googlesource.com/c/chromium/src/+/7189232 * Refactor: Use std::u16string for extension load error messages https://chromium-review.googlesource.com/c/chromium/src/+/7185844 * fixup Add support for UnownedUserData in GlobalFeatures * 7165650: Remove ResourceContext https://chromium-review.googlesource.com/c/chromium/src/+/7165650 * fixup BUILD.gn for lint * 7202164: Reland "Reland "Remove GenericScopedHandle:IsValid"" https://chromium-review.googlesource.com/c/chromium/src/+/7202164 * advance deprecation of v8::ReturnValue<void>::Set(Local<S>). 7168624: [runtime][api] Relax requirements for setter/definer/deleter callbacks | https://chromium-review.googlesource.com/c/v8/v8/+/7168624 * fixup advance deprecation of v8::ReturnValue<void>::Set(Local<S>) * chore: skip setting LPAC ACLs * Revert "chore: skip setting LPAC ACLs" This reverts commite187aec488. * chore: revert Convert to UNSAFE_TODO in sandbox revert https://chromium-review.googlesource.com/c/chromium/src/+/7131661 to see if it fixes the Windows sandbox issue. * Revert "chore: revert Convert to UNSAFE_TODO in sandbox" This reverts commit57afbfefe5. * chore: Revert "Enable network sandbox by default on Windows" see if this fixes the Windows sandbox issue * Enable network sandbox by default on Windows https://chromium-review.googlesource.com/c/chromium/src/+/7204292 * Revert "chore: Revert "Enable network sandbox by default on Windows"" This reverts commit530ab6af82. * fixup! Enable network sandbox by default on Windows | https://chromium-review.googlesource.com/c/chromium/src/+/7204292 * fixup!: Correct flag name, add kLocalNetworkAccessChecks to all platforms --------- Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org> Co-authored-by: Charles Kerr <70381+ckerr@users.noreply.github.com> Co-authored-by: Samuel Attard <sattard@anthropic.com> Co-authored-by: Samuel Attard <MarshallOfSound@users.noreply.github.com> Co-authored-by: John Kleinschmidt <kleinschmidtorama@gmail.com> Co-authored-by: Keeley Hammond <khammond@slack-corp.com>
2010 lines
70 KiB
Diff
2010 lines
70 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Samuel Attard <samuel.r.attard@gmail.com>
|
|
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 bd20a3ead53ff862d3eac85a8313f28338db29e0..9c93c52fbfec3e85ed06847d28409f5bf4bfe55b 100644
|
|
--- a/base/BUILD.gn
|
|
+++ b/base/BUILD.gn
|
|
@@ -1076,6 +1076,7 @@ component("base") {
|
|
"//build:ios_buildflags",
|
|
"//build/config/compiler:compiler_buildflags",
|
|
"//third_party/modp_b64",
|
|
+ "//electron/build/config:generate_mas_config",
|
|
]
|
|
|
|
# Used by metrics/crc32
|
|
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 b63d58da9837ba4d1e4aff8f24f2cd977c5ed02d..8387fd7d2bcf8951b6cc024829c16d970799190c 100644
|
|
--- a/base/process/launch_mac.cc
|
|
+++ b/base/process/launch_mac.cc
|
|
@@ -84,6 +84,10 @@ int posix_spawnattr_set_csm_np(const posix_spawnattr_t*, uint32_t)
|
|
#include "base/threading/scoped_blocking_call.h"
|
|
#include "base/threading/thread_restrictions.h"
|
|
#include "base/trace_event/trace_event.h"
|
|
+#include "electron/mas.h"
|
|
+#if IS_MAS_BUILD()
|
|
+#include <sys/syscall.h>
|
|
+#endif
|
|
|
|
#if BUILDFLAG(IS_MAC)
|
|
#include "base/apple/mach_port_rendezvous_mac.h"
|
|
@@ -92,9 +96,11 @@ int posix_spawnattr_set_csm_np(const posix_spawnattr_t*, uint32_t)
|
|
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);
|
|
@@ -171,13 +177,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
|
|
|
|
@@ -301,7 +321,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.mm b/base/process/process_info_mac.mm
|
|
index e12c1d078147d956a1d9b1bc498c1b1d6fe7b974..233362259dc4e728ed37435e650417647b45a6af 100644
|
|
--- a/base/process/process_info_mac.mm
|
|
+++ b/base/process/process_info_mac.mm
|
|
@@ -4,15 +4,20 @@
|
|
|
|
#include "base/process/process_info.h"
|
|
|
|
+#include "electron/mas.h"
|
|
+
|
|
#import <AppKit/AppKit.h>
|
|
#include <unistd.h>
|
|
|
|
+#if !IS_MAS_BUILD()
|
|
extern "C" {
|
|
pid_t responsibility_get_pid_responsible_for_pid(pid_t);
|
|
}
|
|
+#endif
|
|
|
|
namespace {
|
|
|
|
+#if !IS_MAS_BUILD()
|
|
bool AppContainsBluetoothUsageDescription(NSRunningApplication* app) {
|
|
NSURL* bundle_url = app.bundleURL;
|
|
if (!bundle_url) {
|
|
@@ -24,12 +29,14 @@ bool AppContainsBluetoothUsageDescription(NSRunningApplication* app) {
|
|
[bundle objectForInfoDictionaryKey:@"NSBluetoothAlwaysUsageDescription"];
|
|
return bluetooth_entry != nil;
|
|
}
|
|
+#endif
|
|
|
|
} // namespace
|
|
|
|
namespace base {
|
|
|
|
bool DoesResponsibleProcessHaveBluetoothMetadata() {
|
|
+#if !IS_MAS_BUILD()
|
|
const pid_t pid = getpid();
|
|
const pid_t responsible_pid = responsibility_get_pid_responsible_for_pid(pid);
|
|
// Returns true directly if this is a self-responsible app(e.g. Chrome opens
|
|
@@ -46,6 +53,9 @@ bool DoesResponsibleProcessHaveBluetoothMetadata() {
|
|
return AppContainsBluetoothUsageDescription(app);
|
|
}
|
|
return false;
|
|
+#else
|
|
+ return true;
|
|
+#endif
|
|
}
|
|
|
|
} // namespace base
|
|
diff --git a/components/os_crypt/common/keychain_password_mac.mm b/components/os_crypt/common/keychain_password_mac.mm
|
|
index caa0e420956a31be1bd744319a0e40a0e50b46cf..f19628cc0cdba39b232f55935e8eee9786b02a77 100644
|
|
--- a/components/os_crypt/common/keychain_password_mac.mm
|
|
+++ b/components/os_crypt/common/keychain_password_mac.mm
|
|
@@ -16,6 +16,7 @@
|
|
#include "base/strings/string_view_util.h"
|
|
#include "build/branding_buildflags.h"
|
|
#include "crypto/apple/keychain.h"
|
|
+#include "electron/mas.h"
|
|
#include "third_party/abseil-cpp/absl/cleanup/cleanup.h"
|
|
|
|
using crypto::apple::Keychain;
|
|
diff --git a/components/os_crypt/sync/BUILD.gn b/components/os_crypt/sync/BUILD.gn
|
|
index 2d155f49248a24b5551cb93e010ac1a0c0f94261..23aa391aaf380f87310fb295277809f8b105d6e8 100644
|
|
--- a/components/os_crypt/sync/BUILD.gn
|
|
+++ b/components/os_crypt/sync/BUILD.gn
|
|
@@ -61,6 +61,7 @@ component("sync") {
|
|
deps += [
|
|
"//components/os_crypt/common:keychain_password_mac",
|
|
"//crypto:mock_apple_keychain",
|
|
+ "//electron/build/config:generate_mas_config"
|
|
]
|
|
} else if (is_win) {
|
|
sources += [ "os_crypt_win.cc" ]
|
|
diff --git a/components/remote_cocoa/app_shim/BUILD.gn b/components/remote_cocoa/app_shim/BUILD.gn
|
|
index ba813851fde2660c21f99248a124161d2ac2ca07..c34f920e4a592b6798f5307c726bc34ebedf3f88 100644
|
|
--- a/components/remote_cocoa/app_shim/BUILD.gn
|
|
+++ b/components/remote_cocoa/app_shim/BUILD.gn
|
|
@@ -77,6 +77,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 d5afd4be1ef4ac3fd1cfa7c09c667bc87b9a6b3a..4f005f2fe24ecfe1962fc64782fb7187161cbd7a 100644
|
|
--- a/components/remote_cocoa/app_shim/application_bridge.mm
|
|
+++ b/components/remote_cocoa/app_shim/application_bridge.mm
|
|
@@ -13,6 +13,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"
|
|
@@ -54,6 +55,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;
|
|
@@ -64,6 +66,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;
|
|
@@ -102,7 +107,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
|
|
};
|
|
|
|
bool g_is_out_of_process_app_shim = false;
|
|
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 f7200edbe6059ac6d7ade0672852b52da7642a71..0cc5da96411b46eb39d0c01dfec59cb503df0d9b 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 "base/mac/mac_util.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;
|
|
@@ -125,12 +127,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])
|
|
@@ -189,6 +194,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.
|
|
@@ -199,8 +206,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 020050de162705651b4eb8378880cd4eb017d46c..2d3554861a570271d6f9b9a2c8b1de53860b9fd2 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 a474e70cf3c10405b6f94f129f5a7312bb81fd73..9463bd647a4d47ff3241579255966f5e4409941a 100644
|
|
--- a/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm
|
|
+++ b/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm
|
|
@@ -21,6 +21,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"
|
|
#include "ui/accessibility/platform/ax_platform_node.h"
|
|
#import "ui/base/cocoa/user_interface_item_command_handler.h"
|
|
#import "ui/base/cocoa/window_size_constants.h"
|
|
@@ -108,14 +109,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;
|
|
@@ -165,6 +170,8 @@ - (void)cr_mouseDownOnFrameView:(NSEvent*)event {
|
|
}
|
|
@end
|
|
|
|
+#if !IS_MAS_BUILD()
|
|
+
|
|
@implementation NativeWidgetMacNSWindowTitledFrame
|
|
- (void)mouseDown:(NSEvent*)event {
|
|
if (self.window.isMovable)
|
|
@@ -192,6 +199,8 @@ - (BOOL)usesCustomDrawing {
|
|
}
|
|
@end
|
|
|
|
+#endif // MAS_BUILD
|
|
+
|
|
@implementation NativeWidgetMacNSWindow {
|
|
@private
|
|
CommandDispatcher* __strong _commandDispatcher;
|
|
@@ -393,6 +402,8 @@ - (NSAccessibilityRole)accessibilityRole {
|
|
|
|
// NSWindow overrides.
|
|
|
|
+#if !IS_MAS_BUILD()
|
|
+
|
|
+ (Class)frameViewClassForStyleMask:(NSWindowStyleMask)windowStyle {
|
|
if (windowStyle & NSWindowStyleMaskTitled) {
|
|
if (Class customFrame = [NativeWidgetMacNSWindowTitledFrame class])
|
|
@@ -404,6 +415,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 32c5dbcc5941f81c4ac03af97d1376dd1cf808a4..361523f87eb8f75a3d1bc39650ca04e6bd941471 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
|
|
@@ -42,6 +42,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"
|
|
@@ -700,10 +701,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 da33fa857f85484853d14f24d0601f4c284fd67a..9af007dfc14e442d34ebe82fc678ea9f32782cdf 100644
|
|
--- a/components/viz/service/BUILD.gn
|
|
+++ b/components/viz/service/BUILD.gn
|
|
@@ -387,6 +387,7 @@ viz_component("service") {
|
|
"frame_sinks/external_begin_frame_source_mac.h",
|
|
]
|
|
}
|
|
+ deps += ["//electron/build/config:generate_mas_config"]
|
|
}
|
|
|
|
if (is_ios) {
|
|
@@ -712,6 +713,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 010c713090e5038dc90db131c8f621422d30c03b..20c35e887a0496ee609c077e3b0494bdded41dba 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 f69cd6100f2ac5ccb6f185e0d0bf186073ed5953..29a40923a55287b608c2ffae63a1dbbc2a7e7c1d 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
|
|
@@ -34,6 +34,7 @@
|
|
#import "content/public/browser/render_widget_host_view_mac_delegate.h"
|
|
#include "content/public/browser/scoped_accessibility_mode.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"
|
|
@@ -2090,15 +2091,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 c0a4466595dc5a7a345ebf87a820ef64a9eff895..10f58b8711d3f6e50655bd8ec41992f97eddea89 100644
|
|
--- a/content/browser/BUILD.gn
|
|
+++ b/content/browser/BUILD.gn
|
|
@@ -342,6 +342,7 @@ source_set("browser") {
|
|
"//ui/webui/resources",
|
|
"//v8",
|
|
"//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 5abae9e0825d8375b4df7512dad02345d7a18d01..19168bfb72e450efab5010a7dcdc474f6c8ea477 100644
|
|
--- a/content/browser/renderer_host/render_widget_host_view_mac.h
|
|
+++ b/content/browser/renderer_host/render_widget_host_view_mac.h
|
|
@@ -24,6 +24,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"
|
|
@@ -58,7 +59,9 @@ struct CopyOutputBitmapWithMetadata;
|
|
|
|
@protocol RenderWidgetHostViewMacDelegate;
|
|
|
|
+#if !IS_MAS_BUILD()
|
|
@class NSAccessibilityRemoteUIElement;
|
|
+#endif
|
|
@class RenderWidgetHostViewCocoa;
|
|
|
|
namespace content {
|
|
@@ -682,9 +685,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 e918b3ac9c9fd0641dd1943a349ac3fa1626e860..6d0ad4ed5e8a48a19dbea3d729d7d54a1c7c0133 100644
|
|
--- a/content/browser/renderer_host/render_widget_host_view_mac.mm
|
|
+++ b/content/browser/renderer_host/render_widget_host_view_mac.mm
|
|
@@ -52,6 +52,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"
|
|
@@ -274,8 +275,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.
|
|
@@ -1664,10 +1667,12 @@ void CombineTextNodesAndMakeCallback(SpeechCallback callback,
|
|
|
|
gfx::NativeViewAccessible
|
|
RenderWidgetHostViewMac::AccessibilityGetNativeViewAccessibleForWindow() {
|
|
+#if !IS_MAS_BUILD()
|
|
if (remote_window_accessible_) {
|
|
return gfx::NativeViewAccessible(
|
|
(id<NSAccessibility>)remote_window_accessible_);
|
|
}
|
|
+#endif
|
|
return gfx::NativeViewAccessible([GetInProcessNSView() window]);
|
|
}
|
|
|
|
@@ -1719,9 +1724,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(
|
|
@@ -2224,20 +2231,26 @@ void CombineTextNodesAndMakeCallback(SpeechCallback callback,
|
|
void RenderWidgetHostViewMac::GetRenderWidgetAccessibilityToken(
|
|
GetRenderWidgetAccessibilityTokenCallback callback) {
|
|
base::ProcessId pid = getpid();
|
|
+#if !IS_MAS_BUILD()
|
|
id element_id = GetNativeViewAccessible().Get();
|
|
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 f57ce1a0430df7692be55685e79121ed604daf2a..3fbc26fb179a64a2f1eab027a05b16241c185b28 100644
|
|
--- a/content/common/BUILD.gn
|
|
+++ b/content/common/BUILD.gn
|
|
@@ -273,6 +273,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 c6f5d884808f5a55a08edd23f6f30bd1cb8a42ea..82826e3306712402d6951fdee710553b6dff987c 100644
|
|
--- a/content/renderer/BUILD.gn
|
|
+++ b/content/renderer/BUILD.gn
|
|
@@ -328,6 +328,7 @@ target(link_target_type, "renderer") {
|
|
"//ui/strings:auto_image_annotation_strings_grit",
|
|
"//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 b4c06d82c010355f46fd5b16f69a4b4040961c6f..9c2eb16c9c5343a37a7d89afe46c24ade92f6dc3 100644
|
|
--- a/content/test/BUILD.gn
|
|
+++ b/content/test/BUILD.gn
|
|
@@ -701,6 +701,7 @@ static_library("test_support") {
|
|
"//url",
|
|
"//url/mojom:url_mojom_gurl",
|
|
"//v8",
|
|
+ "//electron/build/config:generate_mas_config"
|
|
]
|
|
|
|
data_deps = [
|
|
@@ -1176,6 +1177,8 @@ static_library("browsertest_support") {
|
|
# TODO(crbug.com/40031409): Fix code that adds exit-time destructors and
|
|
# enable the diagnostic by removing this line.
|
|
configs += [ "//build/config/compiler:no_exit_time_destructors" ]
|
|
+
|
|
+ deps += ["//electron/build/config:generate_mas_config"]
|
|
}
|
|
|
|
mojom("content_test_mojo_bindings") {
|
|
@@ -2063,6 +2066,7 @@ test("content_browsertests") {
|
|
"//ui/shell_dialogs",
|
|
"//ui/snapshot",
|
|
"//ui/webui:test_support",
|
|
+ "//electron/build/config:generate_mas_config"
|
|
]
|
|
|
|
if (!(is_chromeos && target_cpu == "arm64" && current_cpu == "arm")) {
|
|
@@ -3403,6 +3407,7 @@ test("content_unittests") {
|
|
"//ui/shell_dialogs",
|
|
"//ui/webui:test_support",
|
|
"//url",
|
|
+ "//electron/build/config:generate_mas_config",
|
|
]
|
|
|
|
if (is_chromeos) {
|
|
diff --git a/content/web_test/BUILD.gn b/content/web_test/BUILD.gn
|
|
index 23eccafa5fbc79d633168923855644f5811a4b80..7174d4816765fa2d3cde99a6756048a42b0c4a5a 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",
|
|
"//url",
|
|
+ "//electron/build/config:generate_mas_config",
|
|
]
|
|
|
|
if (is_mac) {
|
|
diff --git a/device/bluetooth/BUILD.gn b/device/bluetooth/BUILD.gn
|
|
index 3504d7197bd3225b6b83d7e057f389d8327b9ff7..92547d8bc700f3139f4bbc77d621152e0bc2a81c 100644
|
|
--- a/device/bluetooth/BUILD.gn
|
|
+++ b/device/bluetooth/BUILD.gn
|
|
@@ -257,6 +257,7 @@ component("bluetooth") {
|
|
"CoreBluetooth.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 f300e8d331057e894b43b74944e5052c39206844..4ff5277d550485cd79c5b5316d89c730ba709254 100644
|
|
--- a/device/bluetooth/bluetooth_adapter_mac.mm
|
|
+++ b/device/bluetooth/bluetooth_adapter_mac.mm
|
|
@@ -39,7 +39,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
|
|
@@ -53,6 +55,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|.
|
|
@@ -162,8 +165,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)) {
|
|
}
|
|
@@ -314,8 +319,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 327c2a54f2977ec99885c8c50709129cd5dcd87f..67c1b8a68dec740d0230d6b2396234b9a8b39a8a 100644
|
|
--- a/gpu/ipc/service/BUILD.gn
|
|
+++ b/gpu/ipc/service/BUILD.gn
|
|
@@ -119,6 +119,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 8b7a675d95ad36cbb9528bc5bc7ef05e5124e5a3..ed6a9a326b82b177059317dc4bc54b102f9bcc78 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"
|
|
@@ -27,7 +28,9 @@
|
|
#include <BrowserEngineKit/BrowserEngineKit.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 9388ffac4f70746b04e533b51faf4f2d55ab3358..98f45dc973159b5823d8a0433dfd4bc634874b1e 100644
|
|
--- a/media/audio/BUILD.gn
|
|
+++ b/media/audio/BUILD.gn
|
|
@@ -203,6 +203,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 686c7e9b126260720424cd72d91a3f27002c5af8..e181ff1b909d928a3aa3a913a267d01f0fd647ec 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"
|
|
@@ -42,19 +43,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 5ed1605df7339b504838dfd949772b47ed72a89f..07ccbd74e0835f20edfeef76d0e5e1241a48a65c 100644
|
|
--- a/net/dns/BUILD.gn
|
|
+++ b/net/dns/BUILD.gn
|
|
@@ -197,6 +197,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 f863fceb0b35555e4c3bc334c0c082bb2bed2a97..1120297f383826523d9131a73eea7b956375d76c 100644
|
|
--- a/net/dns/dns_config_service_posix.cc
|
|
+++ b/net/dns/dns_config_service_posix.cc
|
|
@@ -24,6 +24,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"
|
|
@@ -131,8 +132,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.";
|
|
@@ -149,6 +150,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 d145bdb3f879ae7e2d77f3b58fe7abd09d6f7255..8973f310aa62b59bc829e8e0f8ed068bfffa3f2b 100644
|
|
--- a/sandbox/mac/BUILD.gn
|
|
+++ b/sandbox/mac/BUILD.gn
|
|
@@ -25,6 +25,7 @@ component("seatbelt") {
|
|
libs = [ "sandbox" ]
|
|
deps = [ ":seatbelt_export" ]
|
|
defines = [ "SEATBELT_IMPLEMENTATION" ]
|
|
+ deps += ["//electron/build/config:generate_mas_config"]
|
|
}
|
|
|
|
component("seatbelt_extension") {
|
|
@@ -38,6 +39,7 @@ component("seatbelt_extension") {
|
|
libs = [ "sandbox" ]
|
|
public_deps = [ "//base" ]
|
|
defines = [ "SEATBELT_IMPLEMENTATION" ]
|
|
+ deps += ["//electron/build/config:generate_mas_config"]
|
|
}
|
|
|
|
component("system_services") {
|
|
@@ -52,6 +54,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_logging.cc b/sandbox/mac/sandbox_logging.cc
|
|
index 950cf7cfee4e11766dccf5c0bf3f15a8562f0f1e..a5adaaabdbbd91fedbc4cb679c865bc342536090 100644
|
|
--- a/sandbox/mac/sandbox_logging.cc
|
|
+++ b/sandbox/mac/sandbox_logging.cc
|
|
@@ -21,6 +21,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)
|
|
@@ -38,9 +39,11 @@
|
|
}
|
|
#endif
|
|
|
|
+#if !IS_MAS_BUILD()
|
|
extern "C" {
|
|
void abort_report_np(const char*, ...);
|
|
}
|
|
+#endif
|
|
|
|
namespace sandbox::logging {
|
|
|
|
@@ -81,9 +84,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/sandbox_serializer.cc b/sandbox/mac/sandbox_serializer.cc
|
|
index 0e6e650f88e6aadd46bec96a8b41768c37d7cc6a..a6830e3f886e408c254ccd1c2b1d5c15cd3bcb92 100644
|
|
--- a/sandbox/mac/sandbox_serializer.cc
|
|
+++ b/sandbox/mac/sandbox_serializer.cc
|
|
@@ -8,6 +8,7 @@
|
|
#include <string>
|
|
#include <vector>
|
|
|
|
+#include "electron/mas.h"
|
|
#include "sandbox/mac/sandbox_logging.h"
|
|
#include "sandbox/mac/seatbelt.h"
|
|
|
|
@@ -193,6 +194,7 @@ SandboxSerializer::DeserializePolicy(const std::string& serialized_policy,
|
|
// static
|
|
bool SandboxSerializer::ApplySerializedPolicy(
|
|
const std::string& serialized_policy) {
|
|
+#if !IS_MAS_BUILD()
|
|
std::string error;
|
|
std::optional<DeserializedPolicy> deserialized_policy =
|
|
DeserializePolicy(serialized_policy, error);
|
|
@@ -223,6 +225,9 @@ bool SandboxSerializer::ApplySerializedPolicy(
|
|
break;
|
|
}
|
|
return true;
|
|
+#else
|
|
+ return true;
|
|
+#endif
|
|
}
|
|
|
|
} // namespace sandbox
|
|
diff --git a/sandbox/mac/seatbelt.cc b/sandbox/mac/seatbelt.cc
|
|
index e9321ba5fc0f1b24b2d990ecb27c8aaa1c8b970b..51df9671a507acd115f09a50c2d6e987fb4183c2 100644
|
|
--- a/sandbox/mac/seatbelt.cc
|
|
+++ b/sandbox/mac/seatbelt.cc
|
|
@@ -4,6 +4,8 @@
|
|
|
|
#include "sandbox/mac/seatbelt.h"
|
|
|
|
+#include "electron/mas.h"
|
|
+
|
|
#include <errno.h>
|
|
#include <unistd.h>
|
|
|
|
@@ -12,7 +14,7 @@
|
|
|
|
extern "C" {
|
|
#include <sandbox.h>
|
|
-
|
|
+#if !IS_MAS_BUILD()
|
|
int sandbox_init_with_parameters(const char* profile,
|
|
uint64_t flags,
|
|
const char* const parameters[],
|
|
@@ -58,13 +60,14 @@ 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()
|
|
// `managed_errorbuf` uses a unique_ptr with a deleter to ensure that memory is
|
|
// freed using the sandbox library's deallocation function to prevent unexpected
|
|
// behavior.
|
|
@@ -107,36 +110,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.
|
|
@@ -147,6 +162,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
|
|
@@ -156,6 +172,9 @@ bool Seatbelt::Init(const char* profile, uint64_t flags, std::string* error) {
|
|
return HandleSandboxResult(
|
|
rv, std::unique_ptr<char, sandbox_error_deleter>(errorbuf), error);
|
|
#pragma clang diagnostic pop
|
|
+#else
|
|
+ return true;
|
|
+#endif
|
|
}
|
|
|
|
// static
|
|
@@ -163,17 +182,22 @@ bool Seatbelt::InitWithParams(const std::string& profile,
|
|
uint64_t flags,
|
|
const std::vector<std::string>& parameters,
|
|
std::string* error) {
|
|
+#if !IS_MAS_BUILD()
|
|
std::vector<const char*> weak_params;
|
|
for (const std::string& param : parameters) {
|
|
weak_params.push_back(param.c_str());
|
|
}
|
|
// The parameters array must be null terminated.
|
|
weak_params.push_back(nullptr);
|
|
+
|
|
char* errorbuf = nullptr;
|
|
int rv = ::sandbox_init_with_parameters(profile.c_str(), flags,
|
|
weak_params.data(), &errorbuf);
|
|
return HandleSandboxResult(
|
|
rv, std::unique_ptr<char, sandbox_error_deleter>(errorbuf), error);
|
|
+#else
|
|
+ return true;
|
|
+#endif
|
|
}
|
|
|
|
// static
|
|
@@ -181,6 +205,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);
|
|
@@ -192,23 +217,32 @@ 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
|
|
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 613943b1ee6faf5c57fbc7b6c0130cf87a7ff413..3904d55d7504c3e62de36c8040d52c11951b6bab 100644
|
|
--- a/third_party/blink/renderer/core/BUILD.gn
|
|
+++ b/third_party/blink/renderer/core/BUILD.gn
|
|
@@ -443,6 +443,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 4f04476e9175bae9e89eb9ea4316bffe49a9eb91..e77615c7b26518f4930ac1b004b413173fa0f46b 100644
|
|
--- a/third_party/blink/renderer/core/editing/build.gni
|
|
+++ b/third_party/blink/renderer/core/editing/build.gni
|
|
@@ -362,10 +362,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 0f8a6f75b7f01029adc2f5fd23559bacce19cf72..cf66c2f4f02a8e21cc83c3b7389fc5156bcd93ba 100644
|
|
--- a/ui/accelerated_widget_mac/BUILD.gn
|
|
+++ b/ui/accelerated_widget_mac/BUILD.gn
|
|
@@ -83,6 +83,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 d5f35d2ccfb21b231e235dbfae3eee96a488eb20..14592180823131ca87bc95300c8d9a82451e6628 100644
|
|
--- a/ui/accelerated_widget_mac/ca_layer_tree_coordinator.h
|
|
+++ b/ui/accelerated_widget_mac/ca_layer_tree_coordinator.h
|
|
@@ -8,13 +8,16 @@
|
|
#include <queue>
|
|
|
|
#include "base/containers/queue.h"
|
|
+#include "electron/mas.h"
|
|
#include "ui/accelerated_widget_mac/accelerated_widget_mac_export.h"
|
|
#include "ui/gfx/ca_layer_result.h"
|
|
#include "ui/gfx/presentation_feedback.h"
|
|
#include "ui/gl/gl_context.h"
|
|
#include "ui/gl/presenter.h"
|
|
|
|
+#if !IS_MAS_BUILD()
|
|
@class CAContext;
|
|
+#endif
|
|
@class CALayer;
|
|
@protocol MTLDevice;
|
|
|
|
@@ -119,7 +122,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 5e50feb42b4a49b03a75b510bb3ddc269282aa2f..1519401a362530b7107eab17c28b63486e7455ff 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/accelerated_widget_mac/ca_renderer_layer_tree.h"
|
|
#include "ui/base/cocoa/animation_utils.h"
|
|
#include "ui/base/cocoa/remote_layer_api.h"
|
|
@@ -37,6 +38,7 @@
|
|
buffer_presented_callback_(buffer_presented_callback),
|
|
gl_make_current_callback_(gl_make_current_callback),
|
|
metal_device_(metal_device) {
|
|
+#if !IS_MAS_BUILD()
|
|
if (allow_remote_layers_) {
|
|
root_ca_layer_ = [[CALayer alloc] init];
|
|
#if BUILDFLAG(IS_MAC)
|
|
@@ -65,6 +67,7 @@
|
|
#endif
|
|
ca_context_.layer = root_ca_layer_;
|
|
}
|
|
+#endif
|
|
}
|
|
|
|
CALayerTreeCoordinator::~CALayerTreeCoordinator() = default;
|
|
@@ -207,9 +210,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 54d483d6b3f1a56573e21b1f873b8dee8fc25a0f..33bc8c9ef097a907060ed347dca2ad46b6d081f5 100644
|
|
--- a/ui/accessibility/platform/BUILD.gn
|
|
+++ b/ui/accessibility/platform/BUILD.gn
|
|
@@ -299,6 +299,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 27c442df8f9fcd602465a86a48a50b9c59d3481c..b6be8a18f76fe56e2e8ff927b407a327ac2edc73 100644
|
|
--- a/ui/accessibility/platform/browser_accessibility_manager_mac.mm
|
|
+++ b/ui/accessibility/platform/browser_accessibility_manager_mac.mm
|
|
@@ -14,6 +14,7 @@
|
|
#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/accessibility_features.h"
|
|
#include "ui/accessibility/ax_role_properties.h"
|
|
@@ -22,7 +23,9 @@
|
|
#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 {
|
|
|
|
@@ -231,6 +234,7 @@ void PostAnnouncementNotification(NSString* announcement,
|
|
return;
|
|
}
|
|
|
|
+#if !IS_MAS_BUILD()
|
|
BrowserAccessibilityManager* root_manager = GetManagerForRootFrame();
|
|
if (root_manager) {
|
|
BrowserAccessibilityManagerMac* root_manager_mac =
|
|
@@ -253,6 +257,7 @@ void PostAnnouncementNotification(NSString* announcement,
|
|
return;
|
|
}
|
|
}
|
|
+#endif
|
|
|
|
// Use native VoiceOver support for live regions.
|
|
BrowserAccessibilityCocoa* retained_node = native_node;
|
|
@@ -697,6 +702,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
|
|
@@ -725,6 +731,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 6846060ef9622d8fc8d1d6c8da16e2f1b785e6bd..05c22db87e882b246bd7034e027cf1495376b6c6 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 fb8d813511df674326803084a8083da34e754308..a17afdfeb2c5fc29e13d299c41ddb1c9796fe16a 100644
|
|
--- a/ui/base/BUILD.gn
|
|
+++ b/ui/base/BUILD.gn
|
|
@@ -355,6 +355,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",
|
|
@@ -503,6 +510,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 93e90c4eba9bc9b93d68e834eb6baabeb2d0ecf0..1b90f41d05f847a94adf2f4da827b1d0143b7bcf 100644
|
|
--- a/ui/base/cocoa/remote_layer_api.mm
|
|
+++ b/ui/base/cocoa/remote_layer_api.mm
|
|
@@ -5,18 +5,22 @@
|
|
#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.
|
|
BASE_FEATURE(kRemoteCoreAnimationAPI, base::FEATURE_ENABLED_BY_DEFAULT);
|
|
} // namespace
|
|
+#endif
|
|
|
|
bool RemoteLayerAPISupported() {
|
|
+#if !IS_MAS_BUILD()
|
|
if (!base::FeatureList::IsEnabled(kRemoteCoreAnimationAPI))
|
|
return false;
|
|
|
|
@@ -53,6 +57,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 41572ec01d71f56eb8815cf9845e2c4ccefb9964..90c72f19b557d985581c7250187616ee85821964 100644
|
|
--- a/ui/display/BUILD.gn
|
|
+++ b/ui/display/BUILD.gn
|
|
@@ -132,6 +132,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 890d86acb0e92760590b4d0860dd41eaa70486c7..2e9e16cb47606f627b1473a479a6e8ae514cb88e 100644
|
|
--- a/ui/display/mac/screen_mac.mm
|
|
+++ b/ui/display/mac/screen_mac.mm
|
|
@@ -29,6 +29,7 @@
|
|
#include "build/build_config.h"
|
|
#include "components/device_event_log/device_event_log.h"
|
|
#include "components/viz/common/resources/shared_image_format.h"
|
|
+#include "electron/mas.h"
|
|
#include "ui/display/display.h"
|
|
#include "ui/display/display_change_notifier.h"
|
|
#include "ui/display/mac/screen_mac_headless.h"
|
|
@@ -179,7 +180,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.
|
|
double refresh_rate = 1.0 / screen.minimumRefreshInterval;
|
|
diff --git a/ui/gfx/BUILD.gn b/ui/gfx/BUILD.gn
|
|
index f23cf9d02aa7a7fefb0bcd55d363e5c86de80f26..4968d2cd8f2e2b553120d0ad7225207c42b6bcec 100644
|
|
--- a/ui/gfx/BUILD.gn
|
|
+++ b/ui/gfx/BUILD.gn
|
|
@@ -279,6 +279,8 @@ component("gfx") {
|
|
"CoreGraphics.framework",
|
|
"CoreText.framework",
|
|
]
|
|
+
|
|
+ deps += ["//electron/build/config:generate_mas_config"]
|
|
}
|
|
if (is_ios) {
|
|
sources += [
|
|
diff --git a/ui/gfx/platform_font_mac.mm b/ui/gfx/platform_font_mac.mm
|
|
index bbe355cf69f160866188216cc274d75bd35603db..06ee100d7ea2e892dbf3c0b1adc96c5013ef678a 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 987d7cc4888df0e4bfc8e6a3ca8ba9ff185db6ef..ae7283dbf718767c8fa737d1b89cc87e1a765d0e 100644
|
|
--- a/ui/views/BUILD.gn
|
|
+++ b/ui/views/BUILD.gn
|
|
@@ -723,6 +723,8 @@ component("views") {
|
|
"IOSurface.framework",
|
|
"QuartzCore.framework",
|
|
]
|
|
+
|
|
+ deps += ["//electron/build/config:generate_mas_config"]
|
|
}
|
|
|
|
if (is_win) {
|
|
@@ -1153,6 +1155,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 fdc7eb4e4c5e8338c725f7d317559b091d8b38fe..2239b085ac7fd87fe06aef1001551f8afe8e21e4 100644
|
|
--- a/ui/views/cocoa/native_widget_mac_ns_window_host.h
|
|
+++ b/ui/views/cocoa/native_widget_mac_ns_window_host.h
|
|
@@ -19,6 +19,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"
|
|
@@ -34,7 +35,9 @@
|
|
#include "ui/views/window/dialog_observer.h"
|
|
|
|
@class NativeWidgetMacNSWindow;
|
|
+#if !IS_MAS_BUILD()
|
|
@class NSAccessibilityRemoteUIElement;
|
|
+#endif
|
|
@class NSView;
|
|
|
|
namespace remote_cocoa {
|
|
@@ -506,10 +509,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 5c0d4134c8205b018a4f71509879485a7f92bcf2..d2204fd2b737f7f3e146cb1be80c3be6bfce8cd4 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"
|
|
@@ -362,8 +363,12 @@ void HandleAccelerator(const ui::Accelerator& accelerator,
|
|
if (in_process_ns_window_bridge_) {
|
|
return gfx::NativeViewAccessible(in_process_ns_window_bridge_->ns_view());
|
|
}
|
|
+#if !IS_MAS_BUILD()
|
|
return gfx::NativeViewAccessible(
|
|
(id<NSAccessibility>)remote_view_accessible_);
|
|
+#else
|
|
+ return {};
|
|
+#endif
|
|
}
|
|
|
|
gfx::NativeViewAccessible
|
|
@@ -379,8 +384,12 @@ void HandleAccelerator(const ui::Accelerator& accelerator,
|
|
[in_process_ns_window_bridge_->ns_view() window]);
|
|
}
|
|
|
|
+#if !IS_MAS_BUILD()
|
|
return gfx::NativeViewAccessible(
|
|
(id<NSAccessibility>)remote_window_accessible_);
|
|
+#else
|
|
+ return {};
|
|
+#endif
|
|
}
|
|
|
|
remote_cocoa::mojom::NativeWidgetNSWindow*
|
|
@@ -1451,9 +1460,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) {
|
|
@@ -1606,17 +1617,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();
|
|
|
|
@@ -1629,6 +1643,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 50bb38a38dca67f9f393c48efe123f7dd7ca2594..2062e479581d63325de3c3398844acca0601c86c 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",
|