2020-01-13 14:04:38 +00:00
|
|
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
|
|
From: Cheng Zhao <zcbenz@gmail.com>
|
|
|
|
Date: Thu, 20 Sep 2018 17:48:49 -0700
|
2021-05-19 18:20:12 +00:00
|
|
|
Subject: mas: disable private window-frame APIs
|
2020-01-13 14:04:38 +00:00
|
|
|
|
|
|
|
Disable private window frame APIs (NSNextStepFrame and NSThemeFrame) for MAS
|
|
|
|
build.
|
|
|
|
|
|
|
|
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
|
2023-09-29 05:26:41 +00:00
|
|
|
index b8eb13a42aa41143412b9a01f2716a3608b968fb..8eaccd4ce7e484aef1b4517935bc4ba2fa4a1ea4 100644
|
2020-01-13 14:04:38 +00:00
|
|
|
--- a/components/remote_cocoa/app_shim/browser_native_widget_window_mac.mm
|
|
|
|
+++ b/components/remote_cocoa/app_shim/browser_native_widget_window_mac.mm
|
2023-09-29 05:26:41 +00:00
|
|
|
@@ -9,6 +9,7 @@
|
2023-08-15 15:49:41 +00:00
|
|
|
#include "components/remote_cocoa/app_shim/native_widget_ns_window_bridge.h"
|
|
|
|
#include "components/remote_cocoa/common/native_widget_ns_window_host.mojom.h"
|
2020-01-13 14:04:38 +00:00
|
|
|
|
2022-11-14 20:46:52 +00:00
|
|
|
+#if !IS_MAS_BUILD()
|
2020-01-13 14:04:38 +00:00
|
|
|
@interface NSWindow (PrivateBrowserNativeWidgetAPI)
|
|
|
|
+ (Class)frameViewClassForStyleMask:(NSUInteger)windowStyle;
|
|
|
|
@end
|
2023-09-29 05:26:41 +00:00
|
|
|
@@ -65,10 +66,13 @@ - (BOOL)_shouldCenterTrafficLights {
|
2020-01-13 14:04:38 +00:00
|
|
|
|
|
|
|
@end
|
|
|
|
|
|
|
|
+#endif // MAS_BUILD
|
|
|
|
+
|
|
|
|
@implementation BrowserNativeWidgetWindow
|
|
|
|
|
|
|
|
// NSWindow (PrivateAPI) overrides.
|
|
|
|
|
2022-11-14 20:46:52 +00:00
|
|
|
+#if !IS_MAS_BUILD()
|
2020-01-13 14:04:38 +00:00
|
|
|
+ (Class)frameViewClassForStyleMask:(NSUInteger)windowStyle {
|
|
|
|
// - NSThemeFrame and its subclasses will be nil if it's missing at runtime.
|
|
|
|
if ([BrowserWindowFrame class])
|
2023-09-29 05:26:41 +00:00
|
|
|
@@ -115,6 +119,8 @@ - (BOOL)_usesCustomDrawing {
|
2020-01-13 14:04:38 +00:00
|
|
|
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.
|
|
|
|
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
|
2023-08-15 15:49:41 +00:00
|
|
|
index 3a815ebf505bd95fa7f6b61ba433d98fbfe20225..dbbebbdc1735bc14224dfcde0b7fe3a6fd9f9e40 100644
|
2020-01-13 14:04:38 +00:00
|
|
|
--- a/components/remote_cocoa/app_shim/native_widget_mac_frameless_nswindow.mm
|
|
|
|
+++ b/components/remote_cocoa/app_shim/native_widget_mac_frameless_nswindow.mm
|
2023-08-15 15:49:41 +00:00
|
|
|
@@ -4,6 +4,8 @@
|
|
|
|
|
|
|
|
#import "components/remote_cocoa/app_shim/native_widget_mac_frameless_nswindow.h"
|
2020-01-13 14:04:38 +00:00
|
|
|
|
2022-11-14 20:46:52 +00:00
|
|
|
+#if !IS_MAS_BUILD()
|
2020-01-13 14:04:38 +00:00
|
|
|
+
|
|
|
|
@interface NSWindow (PrivateAPI)
|
|
|
|
+ (Class)frameViewClassForStyleMask:(NSUInteger)windowStyle;
|
|
|
|
@end
|
2023-08-15 15:49:41 +00:00
|
|
|
@@ -18,8 +20,12 @@ - (CGFloat)_titlebarHeight {
|
2020-01-13 14:04:38 +00:00
|
|
|
}
|
|
|
|
@end
|
|
|
|
|
|
|
|
+#endif // MAS_BUILD
|
|
|
|
+
|
|
|
|
@implementation NativeWidgetMacFramelessNSWindow
|
|
|
|
|
2022-11-14 20:46:52 +00:00
|
|
|
+#if !IS_MAS_BUILD()
|
2020-01-13 14:04:38 +00:00
|
|
|
+
|
|
|
|
+ (Class)frameViewClassForStyleMask:(NSUInteger)windowStyle {
|
|
|
|
if ([NativeWidgetMacFramelessNSWindowFrame class]) {
|
|
|
|
return [NativeWidgetMacFramelessNSWindowFrame class];
|
2023-08-15 15:49:41 +00:00
|
|
|
@@ -27,4 +33,6 @@ + (Class)frameViewClassForStyleMask:(NSUInteger)windowStyle {
|
2020-01-13 14:04:38 +00:00
|
|
|
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
|
2023-11-01 14:02:12 +00:00
|
|
|
index 085d9821933390c781fe11d441910501bf22d601..6c79434e2a5b59267c9801ac23c318c9c320f019 100644
|
2020-01-13 14:04:38 +00:00
|
|
|
--- a/components/remote_cocoa/app_shim/native_widget_mac_nswindow.h
|
|
|
|
+++ b/components/remote_cocoa/app_shim/native_widget_mac_nswindow.h
|
|
|
|
@@ -17,6 +17,7 @@ class NativeWidgetNSWindowBridge;
|
|
|
|
|
|
|
|
@protocol WindowTouchBarDelegate;
|
|
|
|
|
2022-11-14 20:46:52 +00:00
|
|
|
+#if !IS_MAS_BUILD()
|
2020-01-13 14:04:38 +00:00
|
|
|
// Weak lets Chrome launch even if a future macOS doesn't have the below classes
|
|
|
|
WEAK_IMPORT_ATTRIBUTE
|
|
|
|
@interface NSNextStepFrame : NSView
|
|
|
|
@@ -33,6 +34,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
|
2023-11-01 14:02:12 +00:00
|
|
|
index 6e837d66209e6322324227bc596e40e56fccc495..3c3c5db57cfaba8e59867e74b81b4fad1cf7a8ed 100644
|
2020-01-13 14:04:38 +00:00
|
|
|
--- a/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm
|
|
|
|
+++ b/components/remote_cocoa/app_shim/native_widget_mac_nswindow.mm
|
2023-11-01 14:02:12 +00:00
|
|
|
@@ -101,7 +101,9 @@ void OrderChildWindow(NSWindow* child_window,
|
2022-06-27 20:50:08 +00:00
|
|
|
} // namespace
|
2020-01-13 14:04:38 +00:00
|
|
|
|
|
|
|
@interface NSWindow (Private)
|
2022-11-14 20:46:52 +00:00
|
|
|
+#if !IS_MAS_BUILD()
|
2020-01-13 14:04:38 +00:00
|
|
|
+ (Class)frameViewClassForStyleMask:(NSWindowStyleMask)windowStyle;
|
|
|
|
+#endif
|
|
|
|
- (BOOL)hasKeyAppearance;
|
|
|
|
- (long long)_resizeDirectionForMouseLocation:(CGPoint)location;
|
|
|
|
- (BOOL)_isConsideredOpenForPersistentState;
|
2023-11-01 14:02:12 +00:00
|
|
|
@@ -139,6 +141,8 @@ - (void)cr_mouseDownOnFrameView:(NSEvent*)event {
|
2020-01-13 14:04:38 +00:00
|
|
|
}
|
|
|
|
@end
|
|
|
|
|
2022-11-14 20:46:52 +00:00
|
|
|
+#if !IS_MAS_BUILD()
|
2020-01-13 14:04:38 +00:00
|
|
|
+
|
|
|
|
@implementation NativeWidgetMacNSWindowTitledFrame
|
|
|
|
- (void)mouseDown:(NSEvent*)event {
|
2020-08-12 18:33:58 +00:00
|
|
|
if (self.window.isMovable)
|
2023-11-01 14:02:12 +00:00
|
|
|
@@ -165,6 +169,8 @@ - (BOOL)usesCustomDrawing {
|
2020-01-13 14:04:38 +00:00
|
|
|
}
|
|
|
|
@end
|
|
|
|
|
|
|
|
+#endif // MAS_BUILD
|
|
|
|
+
|
|
|
|
@implementation NativeWidgetMacNSWindow {
|
|
|
|
@private
|
2023-07-16 14:14:43 +00:00
|
|
|
CommandDispatcher* __strong _commandDispatcher;
|
2023-11-01 14:02:12 +00:00
|
|
|
@@ -353,6 +359,8 @@ - (NSAccessibilityRole)accessibilityRole {
|
2020-01-13 14:04:38 +00:00
|
|
|
|
|
|
|
// NSWindow overrides.
|
|
|
|
|
2022-11-14 20:46:52 +00:00
|
|
|
+#if !IS_MAS_BUILD()
|
2020-01-13 14:04:38 +00:00
|
|
|
+
|
|
|
|
+ (Class)frameViewClassForStyleMask:(NSWindowStyleMask)windowStyle {
|
|
|
|
if (windowStyle & NSWindowStyleMaskTitled) {
|
|
|
|
if (Class customFrame = [NativeWidgetMacNSWindowTitledFrame class])
|
2023-11-01 14:02:12 +00:00
|
|
|
@@ -364,6 +372,8 @@ + (Class)frameViewClassForStyleMask:(NSWindowStyleMask)windowStyle {
|
2020-01-13 14:04:38 +00:00
|
|
|
return [super frameViewClassForStyleMask:windowStyle];
|
|
|
|
}
|
|
|
|
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
- (BOOL)_isTitleHidden {
|
|
|
|
bool shouldShowWindowTitle = YES;
|
|
|
|
if (_bridge)
|