Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(64)

Side by Side Diff: chrome/browser/notifications/non_persistent_notification_handler.cc

Issue 2916383004: Revert of Minimize the delegate dependencies for non persistent notifications. (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/notifications/non_persistent_notification_handler.h" 5 #include "chrome/browser/notifications/non_persistent_notification_handler.h"
6 6
7 #include "base/strings/nullable_string16.h" 7 #include "base/strings/nullable_string16.h"
8 #include "chrome/browser/notifications/notification_delegate.h"
8 #include "chrome/browser/notifications/platform_notification_service_impl.h" 9 #include "chrome/browser/notifications/platform_notification_service_impl.h"
9 #include "content/public/browser/notification_event_dispatcher.h"
10 10
11 NonPersistentNotificationHandler::NonPersistentNotificationHandler() = default; 11 NonPersistentNotificationHandler::NonPersistentNotificationHandler() = default;
12 NonPersistentNotificationHandler::~NonPersistentNotificationHandler() = default; 12 NonPersistentNotificationHandler::~NonPersistentNotificationHandler() = default;
13 13
14 void NonPersistentNotificationHandler::OnClose( 14 void NonPersistentNotificationHandler::OnClose(
15 Profile* profile, 15 Profile* profile,
16 const std::string& origin, 16 const std::string& origin,
17 const std::string& notification_id, 17 const std::string& notification_id,
18 bool by_user) { 18 bool by_user) {
19 content::NotificationEventDispatcher::GetInstance() 19 if (notifications_.find(notification_id) != notifications_.end()) {
20 ->DispatchNonPersistentCloseEvent(notification_id); 20 notifications_[notification_id]->Close(by_user);
21 notifications_.erase(notification_id);
22 }
21 } 23 }
22 24
23 void NonPersistentNotificationHandler::OnClick( 25 void NonPersistentNotificationHandler::OnClick(
24 Profile* profile, 26 Profile* profile,
25 const std::string& origin, 27 const std::string& origin,
26 const std::string& notification_id, 28 const std::string& notification_id,
27 int action_index, 29 int action_index,
28 const base::NullableString16& reply) { 30 const base::NullableString16& reply) {
29 DCHECK(reply.is_null()); 31 DCHECK(reply.is_null());
30 32
31 // Non persistent notifications don't allow buttons. 33 if (notifications_.find(notification_id) != notifications_.end()) {
32 // https://notifications.spec.whatwg.org/#create-a-notification 34 if (action_index >= 0)
33 DCHECK_EQ(-1, action_index); 35 notifications_[notification_id]->ButtonClick(action_index);
34 36 else
35 content::NotificationEventDispatcher::GetInstance() 37 notifications_[notification_id]->Click();
36 ->DispatchNonPersistentClickEvent(notification_id); 38 }
37 } 39 }
38 40
39 void NonPersistentNotificationHandler::OpenSettings(Profile* profile) { 41 void NonPersistentNotificationHandler::OpenSettings(Profile* profile) {
40 NotificationCommon::OpenNotificationSettings(profile); 42 NotificationCommon::OpenNotificationSettings(profile);
41 } 43 }
44
45 void NonPersistentNotificationHandler::RegisterNotification(
46 const std::string& notification_id,
47 NotificationDelegate* delegate) {
48 notifications_[notification_id] =
49 scoped_refptr<NotificationDelegate>(delegate);
50 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698