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

Unified Diff: third_party/WebKit/Source/modules/notifications/Notification.cpp

Issue 2344983003: Merge the code paths for closing different kinds of notifications. (Closed)
Patch Set: Merge the close methods Created 4 years, 3 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/modules/notifications/Notification.cpp
diff --git a/third_party/WebKit/Source/modules/notifications/Notification.cpp b/third_party/WebKit/Source/modules/notifications/Notification.cpp
index 2e748e7b4f7e307719789d565d32580e3a49cd8e..76554747750b011aa3e6a242b6c450b3dba1c2d0 100644
--- a/third_party/WebKit/Source/modules/notifications/Notification.cpp
+++ b/third_party/WebKit/Source/modules/notifications/Notification.cpp
@@ -167,45 +167,40 @@ void Notification::didLoadResources(NotificationResourcesLoader* loader)
void Notification::close()
{
- if (m_state != State::Showing)
+ if (m_state != State::Showing || m_notificationId.isEmpty())
johnme 2016/09/23 16:14:58 Is this possible? Or can it just be a DCHECK? If i
Peter Beverloo 2016/10/04 10:27:23 This would happen in time it takes for the Show IP
return;
// Schedule the "close" event to be fired for non-persistent notifications.
// Persistent notifications won't get such events for programmatic closes.
if (m_type == Type::NonPersistent) {
- getExecutionContext()->postTask(BLINK_FROM_HERE, createSameThreadTask(&Notification::dispatchCloseEvent, wrapPersistent(this)));
+ getExecutionContext()->postTask(BLINK_FROM_HERE, createSameThreadTask(&Notification::didCloseNotification, wrapPersistent(this)));
m_state = State::Closing;
-
- notificationManager()->close(this);
- return;
+ } else {
+ m_state = State::Closed;
}
- m_state = State::Closed;
-
SecurityOrigin* origin = getExecutionContext()->getSecurityOrigin();
DCHECK(origin);
- notificationManager()->closePersistent(WebSecurityOrigin(origin), m_data.tag, m_notificationId);
+ notificationManager()->close(WebSecurityOrigin(origin), m_data.tag, m_notificationId);
}
-void Notification::dispatchShowEvent()
+void Notification::didShowNotification(const WebString& notificationId)
{
+ DCHECK(m_notificationId.isEmpty());
+ m_notificationId = notificationId;
+
dispatchEvent(Event::create(EventTypeNames::show));
}
-void Notification::dispatchClickEvent()
+void Notification::didClickNotification()
{
UserGestureIndicator gestureIndicator(DefinitelyProcessingNewUserGesture);
ScopedWindowFocusAllowedIndicator windowFocusAllowed(getExecutionContext());
dispatchEvent(Event::create(EventTypeNames::click));
}
-void Notification::dispatchErrorEvent()
-{
- dispatchEvent(Event::create(EventTypeNames::error));
-}
-
-void Notification::dispatchCloseEvent()
+void Notification::didCloseNotification()
{
// The notification will be showing when the user initiated the close, or it will be
// closing if the developer initiated the close.
@@ -216,6 +211,11 @@ void Notification::dispatchCloseEvent()
dispatchEvent(Event::create(EventTypeNames::close));
}
+void Notification::dispatchErrorEvent()
+{
+ dispatchEvent(Event::create(EventTypeNames::error));
+}
+
String Notification::title() const
{
return m_data.title;

Powered by Google App Engine
This is Rietveld 408576698