Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 160 DCHECK(origin); | 160 DCHECK(origin); |
| 161 | 161 |
| 162 notificationManager()->show(WebSecurityOrigin(origin), m_data, loader->getRe sources(), this); | 162 notificationManager()->show(WebSecurityOrigin(origin), m_data, loader->getRe sources(), this); |
| 163 m_loader.clear(); | 163 m_loader.clear(); |
| 164 | 164 |
| 165 m_state = State::Showing; | 165 m_state = State::Showing; |
| 166 } | 166 } |
| 167 | 167 |
| 168 void Notification::close() | 168 void Notification::close() |
| 169 { | 169 { |
| 170 if (m_state != State::Showing) | 170 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
| |
| 171 return; | 171 return; |
| 172 | 172 |
| 173 // Schedule the "close" event to be fired for non-persistent notifications. | 173 // Schedule the "close" event to be fired for non-persistent notifications. |
| 174 // Persistent notifications won't get such events for programmatic closes. | 174 // Persistent notifications won't get such events for programmatic closes. |
| 175 if (m_type == Type::NonPersistent) { | 175 if (m_type == Type::NonPersistent) { |
| 176 getExecutionContext()->postTask(BLINK_FROM_HERE, createSameThreadTask(&N otification::dispatchCloseEvent, wrapPersistent(this))); | 176 getExecutionContext()->postTask(BLINK_FROM_HERE, createSameThreadTask(&N otification::didCloseNotification, wrapPersistent(this))); |
| 177 m_state = State::Closing; | 177 m_state = State::Closing; |
| 178 | 178 } else { |
| 179 notificationManager()->close(this); | 179 m_state = State::Closed; |
| 180 return; | |
| 181 } | 180 } |
| 182 | 181 |
| 183 m_state = State::Closed; | |
| 184 | |
| 185 SecurityOrigin* origin = getExecutionContext()->getSecurityOrigin(); | 182 SecurityOrigin* origin = getExecutionContext()->getSecurityOrigin(); |
| 186 DCHECK(origin); | 183 DCHECK(origin); |
| 187 | 184 |
| 188 notificationManager()->closePersistent(WebSecurityOrigin(origin), m_data.tag , m_notificationId); | 185 notificationManager()->close(WebSecurityOrigin(origin), m_data.tag, m_notifi cationId); |
| 189 } | 186 } |
| 190 | 187 |
| 191 void Notification::dispatchShowEvent() | 188 void Notification::didShowNotification(const WebString& notificationId) |
| 192 { | 189 { |
| 190 DCHECK(m_notificationId.isEmpty()); | |
| 191 m_notificationId = notificationId; | |
| 192 | |
| 193 dispatchEvent(Event::create(EventTypeNames::show)); | 193 dispatchEvent(Event::create(EventTypeNames::show)); |
| 194 } | 194 } |
| 195 | 195 |
| 196 void Notification::dispatchClickEvent() | 196 void Notification::didClickNotification() |
| 197 { | 197 { |
| 198 UserGestureIndicator gestureIndicator(DefinitelyProcessingNewUserGesture); | 198 UserGestureIndicator gestureIndicator(DefinitelyProcessingNewUserGesture); |
| 199 ScopedWindowFocusAllowedIndicator windowFocusAllowed(getExecutionContext()); | 199 ScopedWindowFocusAllowedIndicator windowFocusAllowed(getExecutionContext()); |
| 200 dispatchEvent(Event::create(EventTypeNames::click)); | 200 dispatchEvent(Event::create(EventTypeNames::click)); |
| 201 } | 201 } |
| 202 | 202 |
| 203 void Notification::dispatchErrorEvent() | 203 void Notification::didCloseNotification() |
| 204 { | |
| 205 dispatchEvent(Event::create(EventTypeNames::error)); | |
| 206 } | |
| 207 | |
| 208 void Notification::dispatchCloseEvent() | |
| 209 { | 204 { |
| 210 // The notification will be showing when the user initiated the close, or it will be | 205 // The notification will be showing when the user initiated the close, or it will be |
| 211 // closing if the developer initiated the close. | 206 // closing if the developer initiated the close. |
| 212 if (m_state != State::Showing && m_state != State::Closing) | 207 if (m_state != State::Showing && m_state != State::Closing) |
| 213 return; | 208 return; |
| 214 | 209 |
| 215 m_state = State::Closed; | 210 m_state = State::Closed; |
| 216 dispatchEvent(Event::create(EventTypeNames::close)); | 211 dispatchEvent(Event::create(EventTypeNames::close)); |
| 217 } | 212 } |
| 218 | 213 |
| 214 void Notification::dispatchErrorEvent() | |
| 215 { | |
| 216 dispatchEvent(Event::create(EventTypeNames::error)); | |
| 217 } | |
| 218 | |
| 219 String Notification::title() const | 219 String Notification::title() const |
| 220 { | 220 { |
| 221 return m_data.title; | 221 return m_data.title; |
| 222 } | 222 } |
| 223 | 223 |
| 224 String Notification::dir() const | 224 String Notification::dir() const |
| 225 { | 225 { |
| 226 switch (m_data.direction) { | 226 switch (m_data.direction) { |
| 227 case WebNotificationData::DirectionLeftToRight: | 227 case WebNotificationData::DirectionLeftToRight: |
| 228 return "ltr"; | 228 return "ltr"; |
| (...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 400 | 400 |
| 401 DEFINE_TRACE(Notification) | 401 DEFINE_TRACE(Notification) |
| 402 { | 402 { |
| 403 visitor->trace(m_prepareShowMethodRunner); | 403 visitor->trace(m_prepareShowMethodRunner); |
| 404 visitor->trace(m_loader); | 404 visitor->trace(m_loader); |
| 405 EventTargetWithInlineData::trace(visitor); | 405 EventTargetWithInlineData::trace(visitor); |
| 406 ActiveDOMObject::trace(visitor); | 406 ActiveDOMObject::trace(visitor); |
| 407 } | 407 } |
| 408 | 408 |
| 409 } // namespace blink | 409 } // namespace blink |
| OLD | NEW |