Index: chrome/browser/notifications/notification_builder_mac.mm |
diff --git a/chrome/browser/notifications/notification_builder_mac.mm b/chrome/browser/notifications/notification_builder_mac.mm |
deleted file mode 100644 |
index 7a92e2503357a9d99c4d0cce4bef72d106e0c5f0..0000000000000000000000000000000000000000 |
--- a/chrome/browser/notifications/notification_builder_mac.mm |
+++ /dev/null |
@@ -1,214 +0,0 @@ |
-// Copyright 2016 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/notifications/notification_builder_mac.h" |
- |
-#import <AppKit/AppKit.h> |
- |
-#include "base/mac/mac_util.h" |
-#include "base/mac/scoped_nsobject.h" |
-#include "chrome/grit/generated_resources.h" |
-#include "ui/base/l10n/l10n_util_mac.h" |
- |
-namespace { |
- |
-// Internal builder constants representing the different notification fields |
-// They don't need to be exposed outside the builder. |
- |
-NSString* const kNotificationTitle = @"title"; |
-NSString* const kNotificationSubTitle = @"subtitle"; |
-NSString* const kNotificationInformativeText = @"informativeText"; |
-NSString* const kNotificationImage = @"icon"; |
-NSString* const kNotificationButtonOne = @"buttonOne"; |
-NSString* const kNotificationButtonTwo = @"buttonTwo"; |
-NSString* const kNotificationTag = @"tag"; |
- |
-} // namespace |
- |
-namespace notification_builder { |
- |
-// Exposed constants to include user related data in the notification. |
-NSString* const kNotificationOrigin = @"notificationOrigin"; |
-NSString* const kNotificationId = @"notificationId"; |
-NSString* const kNotificationProfileId = @"notificationProfileId"; |
-NSString* const kNotificationIncognito = @"notificationIncognito"; |
- |
-} // namespace notification_builder |
- |
-@implementation NotificationBuilder { |
- base::scoped_nsobject<NSMutableDictionary> notificationData_; |
-} |
- |
-- (instancetype)init { |
- if ((self = [super init])) { |
- notificationData_.reset([[NSMutableDictionary alloc] init]); |
- } |
- return self; |
-} |
- |
-- (instancetype)initWithDictionary:(NSDictionary*)data { |
- if ((self = [super init])) { |
- notificationData_.reset([data copy]); |
- } |
- return self; |
-} |
- |
-- (void)setTitle:(NSString*)title { |
- if (title.length) |
- [notificationData_ setObject:title forKey:kNotificationTitle]; |
-} |
- |
-- (void)setSubTitle:(NSString*)subTitle { |
- if (subTitle.length) |
- [notificationData_ setObject:subTitle forKey:kNotificationSubTitle]; |
-} |
- |
-- (void)setContextMessage:(NSString*)contextMessage { |
- if (contextMessage.length) |
- [notificationData_ setObject:contextMessage |
- forKey:kNotificationInformativeText]; |
-} |
- |
-- (void)setIcon:(NSImage*)icon { |
- if (icon) |
- [notificationData_ setObject:icon forKey:kNotificationImage]; |
-} |
- |
-- (void)setButtons:(NSString*)primaryButton |
- secondaryButton:(NSString*)secondaryButton { |
- DCHECK(primaryButton.length); |
- [notificationData_ setObject:primaryButton forKey:kNotificationButtonOne]; |
- if (secondaryButton.length) { |
- [notificationData_ setObject:secondaryButton forKey:kNotificationButtonTwo]; |
- } |
-} |
- |
-- (void)setTag:(NSString*)tag { |
- if (tag.length) |
- [notificationData_ setObject:tag forKey:kNotificationTag]; |
-} |
- |
-- (void)setOrigin:(NSString*)origin { |
- if (origin.length) |
- [notificationData_ setObject:origin |
- forKey:notification_builder::kNotificationOrigin]; |
-} |
- |
-- (void)setNotificationId:(NSString*)notificationId { |
- DCHECK(notificationId.length); |
- [notificationData_ setObject:notificationId |
- forKey:notification_builder::kNotificationId]; |
-} |
- |
-- (void)setProfileId:(NSString*)profileId { |
- DCHECK(profileId.length); |
- [notificationData_ setObject:profileId |
- forKey:notification_builder::kNotificationProfileId]; |
-} |
- |
-- (void)setIncognito:(BOOL)incognito { |
- [notificationData_ setObject:[NSNumber numberWithBool:incognito] |
- forKey:notification_builder::kNotificationIncognito]; |
-} |
- |
-- (NSUserNotification*)buildUserNotification { |
- base::scoped_nsobject<NSUserNotification> toast( |
- [[NSUserNotification alloc] init]); |
- [toast setTitle:[notificationData_ objectForKey:kNotificationTitle]]; |
- [toast setSubtitle:[notificationData_ objectForKey:kNotificationSubTitle]]; |
- [toast setInformativeText:[notificationData_ |
- objectForKey:kNotificationInformativeText]]; |
- |
- // Icon |
- if ([notificationData_ objectForKey:kNotificationImage]) { |
- if ([toast respondsToSelector:@selector(_identityImage)]) { |
- NSImage* image = [notificationData_ objectForKey:kNotificationImage]; |
- [toast setValue:image forKey:@"_identityImage"]; |
- [toast setValue:@NO forKey:@"_identityImageHasBorder"]; |
- } |
- } |
- |
- // Buttons |
- if ([toast respondsToSelector:@selector(_showsButtons)]) { |
- [toast setValue:@YES forKey:@"_showsButtons"]; |
- // A default close button label is provided by the platform but we |
- // explicitly override it in case the user decides to not |
- // use the OS language in Chrome. |
- [toast setOtherButtonTitle:l10n_util::GetNSString( |
- IDS_NOTIFICATION_BUTTON_CLOSE)]; |
- |
- // Display the Settings button as the action button if there are either no |
- // developer-provided action buttons, or the alternate action menu is not |
- // available on this Mac version. This avoids needlessly showing the menu. |
- // TODO(miguelg): Extensions should not have a settings button. |
- if (![notificationData_ objectForKey:kNotificationButtonOne] || |
- ![toast respondsToSelector:@selector(_alwaysShowAlternateActionMenu)]) { |
- [toast setActionButtonTitle:l10n_util::GetNSString( |
- IDS_NOTIFICATION_BUTTON_SETTINGS)]; |
- } else { |
- // Otherwise show the alternate menu, then show the developer actions and |
- // finally the settings one. |
- DCHECK( |
- [toast respondsToSelector:@selector(_alwaysShowAlternateActionMenu)]); |
- DCHECK( |
- [toast respondsToSelector:@selector(_alternateActionButtonTitles)]); |
- [toast setActionButtonTitle:l10n_util::GetNSString( |
- IDS_NOTIFICATION_BUTTON_OPTIONS)]; |
- [toast setValue:@YES forKey:@"_alwaysShowAlternateActionMenu"]; |
- |
- NSMutableArray* buttons = [NSMutableArray arrayWithCapacity:3]; |
- [buttons |
- addObject:[notificationData_ objectForKey:kNotificationButtonOne]]; |
- if ([notificationData_ objectForKey:kNotificationButtonTwo]) { |
- [buttons |
- addObject:[notificationData_ objectForKey:kNotificationButtonTwo]]; |
- } |
- [buttons |
- addObject:l10n_util::GetNSString(IDS_NOTIFICATION_BUTTON_SETTINGS)]; |
- [toast setValue:buttons forKey:@"_alternateActionButtonTitles"]; |
- } |
- } |
- |
- // Tag |
- if ([toast respondsToSelector:@selector(setIdentifier:)] && |
- [notificationData_ objectForKey:kNotificationTag]) { |
- [toast setValue:[notificationData_ objectForKey:kNotificationTag] |
- forKey:@"identifier"]; |
- } |
- |
- NSString* origin = |
- [notificationData_ objectForKey:notification_builder::kNotificationOrigin] |
- ? [notificationData_ |
- objectForKey:notification_builder::kNotificationOrigin] |
- : @""; |
- DCHECK( |
- [notificationData_ objectForKey:notification_builder::kNotificationId]); |
- NSString* notificationId = |
- [notificationData_ objectForKey:notification_builder::kNotificationId]; |
- |
- DCHECK([notificationData_ |
- objectForKey:notification_builder::kNotificationProfileId]); |
- NSString* profileId = [notificationData_ |
- objectForKey:notification_builder::kNotificationProfileId]; |
- |
- DCHECK([notificationData_ |
- objectForKey:notification_builder::kNotificationIncognito]); |
- NSNumber* incognito = [notificationData_ |
- objectForKey:notification_builder::kNotificationIncognito]; |
- |
- toast.get().userInfo = @{ |
- notification_builder::kNotificationOrigin : origin, |
- notification_builder::kNotificationId : notificationId, |
- notification_builder::kNotificationProfileId : profileId, |
- notification_builder::kNotificationIncognito : incognito, |
- }; |
- |
- return toast.autorelease(); |
-} |
- |
-- (NSDictionary*)buildDictionary { |
- return [[notificationData_ copy] autorelease]; |
-} |
- |
-@end |