Commit 2aa811b0 authored by Mohamed Adel's avatar Mohamed Adel Committed by Commit Bot

Implement GetDisplayed method

Adding implementation for GetDisplayed notifications for banners.

Bug: 1134575
Change-Id: I5e2ffa8d127e2e2bfef76b3c5cf596ee96fe1972
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2445411
Commit-Queue: Mohamed Adel <adelm@google.com>
Reviewed-by: default avatarRayan Kanso <rayankans@chromium.org>
Reviewed-by: default avatarRichard Knoll <knollr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#813190}
parent 16039291
...@@ -6,13 +6,17 @@ ...@@ -6,13 +6,17 @@
#import <UserNotifications/UserNotifications.h> #import <UserNotifications/UserNotifications.h>
#include "base/notreached.h" #include "base/bind.h"
#include "base/bind_helpers.h"
#include "base/callback.h"
#include "base/callback_helpers.h"
#include "base/strings/sys_string_conversions.h" #include "base/strings/sys_string_conversions.h"
#include "base/strings/utf_string_conversions.h" #include "base/strings/utf_string_conversions.h"
#include "chrome/browser/notifications/notification_platform_bridge_mac_utils.h" #include "chrome/browser/notifications/notification_platform_bridge_mac_utils.h"
#include "chrome/browser/profiles/profile.h" #include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/cocoa/notifications/unnotification_builder_mac.h" #include "chrome/browser/ui/cocoa/notifications/unnotification_builder_mac.h"
#import "chrome/browser/ui/cocoa/notifications/unnotification_response_builder_mac.h" #import "chrome/browser/ui/cocoa/notifications/unnotification_response_builder_mac.h"
#include "content/public/browser/browser_task_traits.h"
#include "ui/message_center/public/cpp/notification.h" #include "ui/message_center/public/cpp/notification.h"
@class UNMutableNotificationContent; @class UNMutableNotificationContent;
...@@ -131,20 +135,46 @@ void NotificationPlatformBridgeMacUNNotification::Close( ...@@ -131,20 +135,46 @@ void NotificationPlatformBridgeMacUNNotification::Close(
void NotificationPlatformBridgeMacUNNotification::GetDisplayed( void NotificationPlatformBridgeMacUNNotification::GetDisplayed(
Profile* profile, Profile* profile,
GetDisplayedNotificationsCallback callback) const { GetDisplayedNotificationsCallback callback) const {
NOTIMPLEMENTED(); bool incognito = profile->IsOffTheRecord();
std::move(callback).Run(/*notification_ids=*/{}, /*supports_sync=*/false); NSString* profileId = base::SysUTF8ToNSString(GetProfileId(profile));
// Create a copyable version of the OnceCallback because ObjectiveC blocks
// copy all referenced variables via copy constructor.
auto copyable_callback = base::AdaptCallbackForRepeating(std::move(callback));
[notification_center_ getDeliveredNotificationsWithCompletionHandler:^(
NSArray<UNNotification*>* _Nonnull notifications) {
std::set<std::string> displayedNotifications;
for (UNNotification* notification in notifications) {
NSString* toastProfileId = [[[[notification request] content] userInfo]
objectForKey:notification_constants::kNotificationProfileId];
bool incognitoNotification = [[[[[notification request] content] userInfo]
objectForKey:notification_constants::kNotificationIncognito]
boolValue];
if ([toastProfileId isEqualToString:profileId] &&
incognito == incognitoNotification) {
displayedNotifications.insert(
base::SysNSStringToUTF8([[[[notification request] content] userInfo]
objectForKey:notification_constants::kNotificationId]));
}
}
// TODO(crbug/1134570): Query for displayed alerts as well
content::GetUIThreadTaskRunner({})->PostTask(
FROM_HERE,
base::BindOnce(copyable_callback, std::move(displayedNotifications),
true /* supports_synchronization */));
}];
} }
void NotificationPlatformBridgeMacUNNotification::SetReadyCallback( void NotificationPlatformBridgeMacUNNotification::SetReadyCallback(
NotificationBridgeReadyCallback callback) { NotificationBridgeReadyCallback callback) {
NOTIMPLEMENTED();
std::move(callback).Run(/*success=*/true); std::move(callback).Run(/*success=*/true);
} }
void NotificationPlatformBridgeMacUNNotification::DisplayServiceShutDown( void NotificationPlatformBridgeMacUNNotification::DisplayServiceShutDown(
Profile* profile) { Profile* profile) {}
NOTIMPLEMENTED();
}
void NotificationPlatformBridgeMacUNNotification::RequestPermission() { void NotificationPlatformBridgeMacUNNotification::RequestPermission() {
UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert | UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert |
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment