mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-29 08:11:13 +00:00
Ladybird/AppKit: Add actions to set navigator compatibility mode
This commit is contained in:
parent
afd8d90f32
commit
98e1ae49f5
Notes:
sideshowbarker
2024-07-17 16:23:06 +09:00
Author: https://github.com/jamierocks Commit: https://github.com/LadybirdBrowser/ladybird/commit/98e1ae49f5 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/528
|
@ -32,6 +32,7 @@
|
|||
Web::CSS::PreferredColorScheme m_preferred_color_scheme;
|
||||
Web::CSS::PreferredContrast m_preferred_contrast;
|
||||
Web::CSS::PreferredMotion m_preferred_motion;
|
||||
ByteString m_navigator_compatibility_mode;
|
||||
|
||||
WebView::SearchEngine m_search_engine;
|
||||
}
|
||||
|
@ -92,6 +93,7 @@
|
|||
m_preferred_color_scheme = Web::CSS::PreferredColorScheme::Auto;
|
||||
m_preferred_contrast = Web::CSS::PreferredContrast::Auto;
|
||||
m_preferred_motion = Web::CSS::PreferredMotion::Auto;
|
||||
m_navigator_compatibility_mode = "chrome";
|
||||
m_search_engine = WebView::default_search_engine();
|
||||
|
||||
// Reduce the tooltip delay, as the default delay feels quite long.
|
||||
|
@ -663,6 +665,23 @@
|
|||
[spoof_user_agent_menu_item setSubmenu:spoof_user_agent_menu];
|
||||
|
||||
[submenu addItem:spoof_user_agent_menu_item];
|
||||
|
||||
auto* navigator_compatibility_mode_menu = [[NSMenu alloc] init];
|
||||
auto add_navigator_compatibility_mode = [navigator_compatibility_mode_menu](ByteString name) {
|
||||
[navigator_compatibility_mode_menu addItem:[[NSMenuItem alloc] initWithTitle:Ladybird::string_to_ns_string(name)
|
||||
action:@selector(setNavigatorCompatibilityMode:)
|
||||
keyEquivalent:@""]];
|
||||
};
|
||||
add_navigator_compatibility_mode("Chrome");
|
||||
add_navigator_compatibility_mode("Gecko");
|
||||
add_navigator_compatibility_mode("WebKit");
|
||||
|
||||
auto* navigator_compatibility_mode_menu_item = [[NSMenuItem alloc] initWithTitle:@"Navigator Compatibility Mode"
|
||||
action:nil
|
||||
keyEquivalent:@""];
|
||||
[navigator_compatibility_mode_menu_item setSubmenu:navigator_compatibility_mode_menu];
|
||||
|
||||
[submenu addItem:navigator_compatibility_mode_menu_item];
|
||||
[submenu addItem:[NSMenuItem separatorItem]];
|
||||
|
||||
[submenu addItem:[[NSMenuItem alloc] initWithTitle:@"Enable Scripting"
|
||||
|
|
|
@ -17,6 +17,7 @@ struct TabSettings {
|
|||
BOOL block_popups { YES };
|
||||
BOOL same_origin_policy_enabled { NO };
|
||||
ByteString user_agent_name { "Disabled"sv };
|
||||
ByteString navigator_compatibility_mode { "chrome"sv };
|
||||
};
|
||||
|
||||
@interface TabController : NSWindowController <NSWindowDelegate>
|
||||
|
|
|
@ -367,6 +367,14 @@ static NSString* const TOOLBAR_TAB_OVERVIEW_IDENTIFIER = @"ToolbarTabOverviewIde
|
|||
[self debugRequest:"clear-cache" argument:""]; // clear the cache to ensure requests are re-done with the new user agent
|
||||
}
|
||||
|
||||
- (void)setNavigatorCompatibilityMode:(NSMenuItem*)sender
|
||||
{
|
||||
ByteString const compatibility_mode = [[[sender title] lowercaseString] UTF8String];
|
||||
m_settings.navigator_compatibility_mode = compatibility_mode;
|
||||
|
||||
[self debugRequest:"navigator-compatibility-mode" argument:compatibility_mode];
|
||||
}
|
||||
|
||||
#pragma mark - Properties
|
||||
|
||||
- (NSButton*)create_button:(NSImageName)image
|
||||
|
@ -574,6 +582,8 @@ static NSString* const TOOLBAR_TAB_OVERVIEW_IDENTIFIER = @"ToolbarTabOverviewIde
|
|||
[item setState:m_settings.same_origin_policy_enabled ? NSControlStateValueOn : NSControlStateValueOff];
|
||||
} else if ([item action] == @selector(setUserAgentSpoof:)) {
|
||||
[item setState:(m_settings.user_agent_name == [[item title] UTF8String]) ? NSControlStateValueOn : NSControlStateValueOff];
|
||||
} else if ([item action] == @selector(setNavigatorCompatibilityMode:)) {
|
||||
[item setState:(m_settings.navigator_compatibility_mode == [[[item title] lowercaseString] UTF8String]) ? NSControlStateValueOn : NSControlStateValueOff];
|
||||
}
|
||||
|
||||
return YES;
|
||||
|
|
Loading…
Reference in a new issue