|
@@ -10,7 +10,6 @@
|
|
|
#include "base/allocator/buildflags.h"
|
|
|
#include "base/allocator/partition_allocator/shim/allocator_shim.h"
|
|
|
#include "base/mac/mac_util.h"
|
|
|
-#include "base/mac/scoped_objc_class_swizzler.h"
|
|
|
#include "base/strings/sys_string_conversions.h"
|
|
|
#include "base/values.h"
|
|
|
#include "shell/browser/api/electron_api_push_notifications.h"
|
|
@@ -20,9 +19,12 @@
|
|
|
|
|
|
#import <UserNotifications/UserNotifications.h>
|
|
|
|
|
|
+#if !defined(__has_feature) || !__has_feature(objc_arc)
|
|
|
+#error "This file requires ARC support."
|
|
|
+#endif
|
|
|
+
|
|
|
static NSDictionary* UNNotificationResponseToNSDictionary(
|
|
|
UNNotificationResponse* response) API_AVAILABLE(macosx(10.14)) {
|
|
|
- // [response isKindOfClass:[UNNotificationResponse class]]
|
|
|
if (![response respondsToSelector:@selector(actionIdentifier)] ||
|
|
|
![response respondsToSelector:@selector(notification)]) {
|
|
|
return nil;
|
|
@@ -43,11 +45,13 @@ static NSDictionary* UNNotificationResponseToNSDictionary(
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
-@implementation ElectronApplicationDelegate
|
|
|
+@implementation ElectronApplicationDelegate {
|
|
|
+ ElectronMenuController* __strong menu_controller_;
|
|
|
+}
|
|
|
|
|
|
- (void)setApplicationDockMenu:(electron::ElectronMenuModel*)model {
|
|
|
- menu_controller_.reset([[ElectronMenuController alloc] initWithModel:model
|
|
|
- useDefaultAccelerator:NO]);
|
|
|
+ menu_controller_ = [[ElectronMenuController alloc] initWithModel:model
|
|
|
+ useDefaultAccelerator:NO];
|
|
|
}
|
|
|
|
|
|
- (void)willPowerOff:(NSNotification*)notify {
|
|
@@ -97,10 +101,7 @@ static NSDictionary* UNNotificationResponseToNSDictionary(
|
|
|
}
|
|
|
|
|
|
- (NSMenu*)applicationDockMenu:(NSApplication*)sender {
|
|
|
- if (menu_controller_)
|
|
|
- return [menu_controller_ menu];
|
|
|
- else
|
|
|
- return nil;
|
|
|
+ return menu_controller_ ? menu_controller_.menu : nil;
|
|
|
}
|
|
|
|
|
|
- (BOOL)application:(NSApplication*)sender openFile:(NSString*)filename {
|
|
@@ -126,7 +127,7 @@ static NSDictionary* UNNotificationResponseToNSDictionary(
|
|
|
restorationHandler {
|
|
|
std::string activity_type(base::SysNSStringToUTF8(userActivity.activityType));
|
|
|
NSURL* url = userActivity.webpageURL;
|
|
|
- NSDictionary* details = url ? @{@"webpageURL" : [url absoluteString]} : @{};
|
|
|
+ NSDictionary* details = url ? @{@"webpageURL" : url.absoluteString} : @{};
|
|
|
if (!userActivity.userInfo)
|
|
|
return NO;
|
|
|
|
|
@@ -152,7 +153,7 @@ static NSDictionary* UNNotificationResponseToNSDictionary(
|
|
|
error:(NSError*)error {
|
|
|
std::string activity_type(base::SysNSStringToUTF8(userActivityType));
|
|
|
std::string error_message(
|
|
|
- base::SysNSStringToUTF8([error localizedDescription]));
|
|
|
+ base::SysNSStringToUTF8(error.localizedDescription));
|
|
|
|
|
|
electron::Browser* browser = electron::Browser::Get();
|
|
|
browser->DidFailToContinueUserActivity(activity_type, error_message);
|
|
@@ -165,9 +166,9 @@ static NSDictionary* UNNotificationResponseToNSDictionary(
|
|
|
- (void)application:(NSApplication*)application
|
|
|
didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken {
|
|
|
// https://stackoverflow.com/a/16411517
|
|
|
- const char* token_data = static_cast<const char*>([deviceToken bytes]);
|
|
|
+ const char* token_data = static_cast<const char*>(deviceToken.bytes);
|
|
|
NSMutableString* token_string = [NSMutableString string];
|
|
|
- for (NSUInteger i = 0; i < [deviceToken length]; i++) {
|
|
|
+ for (NSUInteger i = 0; i < deviceToken.length; i++) {
|
|
|
[token_string appendFormat:@"%02.2hhX", token_data[i]];
|
|
|
}
|
|
|
// Resolve outstanding APNS promises created during registration attempts
|
|
@@ -182,8 +183,8 @@ static NSDictionary* UNNotificationResponseToNSDictionary(
|
|
|
- (void)application:(NSApplication*)application
|
|
|
didFailToRegisterForRemoteNotificationsWithError:(NSError*)error {
|
|
|
std::string error_message(base::SysNSStringToUTF8(
|
|
|
- [NSString stringWithFormat:@"%ld %@ %@", [error code], [error domain],
|
|
|
- [error userInfo]]));
|
|
|
+ [NSString stringWithFormat:@"%ld %@ %@", error.code, error.domain,
|
|
|
+ error.userInfo]));
|
|
|
electron::api::PushNotifications* push_notifications =
|
|
|
electron::api::PushNotifications::Get();
|
|
|
if (push_notifications) {
|