Browse Source

fix: properly register custom url evt handling (#20523)

trop[bot] 5 years ago
parent
commit
4463715714

+ 1 - 0
shell/browser/atom_browser_main_parts.cc

@@ -535,6 +535,7 @@ void AtomBrowserMainParts::PreMainMessageLoopStart() {
 void AtomBrowserMainParts::PreMainMessageLoopStartCommon() {
 #if defined(OS_MACOSX)
   InitializeEmptyApplicationMenu();
+  RegisterURLHandler();
 #endif
   media::SetLocalizedStringProvider(MediaStringProvider);
 }

+ 1 - 0
shell/browser/atom_browser_main_parts.h

@@ -105,6 +105,7 @@ class AtomBrowserMainParts : public content::BrowserMainParts {
 
 #if defined(OS_MACOSX)
   void FreeAppDelegate();
+  void RegisterURLHandler();
   void InitializeEmptyApplicationMenu();
 #endif
 

+ 5 - 0
shell/browser/atom_browser_main_parts_mac.mm

@@ -5,6 +5,7 @@
 #include "shell/browser/atom_browser_main_parts.h"
 
 #include "shell/browser/atom_paths.h"
+#import "shell/browser/mac/atom_application.h"
 #include "shell/browser/mac/atom_application_delegate.h"
 
 namespace electron {
@@ -72,6 +73,10 @@ void AtomBrowserMainParts::FreeAppDelegate() {
   [NSApp setDelegate:nil];
 }
 
+void AtomBrowserMainParts::RegisterURLHandler() {
+  [[AtomApplication sharedApplication] registerURLHandler];
+}
+
 void AtomBrowserMainParts::InitializeEmptyApplicationMenu() {
   base::scoped_nsobject<NSMenu> main_menu = BuildEmptyMainMenu();
   [[NSApplication sharedApplication] setMainMenu:main_menu];

+ 1 - 0
shell/browser/mac/atom_application.h

@@ -97,6 +97,7 @@ typedef NS_ENUM(NSInteger, AVAuthorizationStatusMac) {
 + (AtomApplication*)sharedApplication;
 
 - (void)setShutdownHandler:(base::Callback<bool()>)handler;
+- (void)registerURLHandler;
 
 // CrAppProtocol:
 - (BOOL)isHandlingSendEvent;

+ 1 - 1
shell/browser/mac/atom_application.mm

@@ -153,7 +153,7 @@ inline void dispatch_sync_main(dispatch_block_t block) {
   [userActivity setNeedsSave:YES];
 }
 
-- (void)awakeFromNib {
+- (void)registerURLHandler {
   [[NSAppleEventManager sharedAppleEventManager]
       setEventHandler:self
           andSelector:@selector(handleURLEvent:withReplyEvent:)