| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 'use strict'; | 5 'use strict'; |
| 6 | 6 |
| 7 /** | 7 /** |
| 8 * Show/hide trigger in a card. | 8 * Show/hide trigger in a card. |
| 9 * | 9 * |
| 10 * @typedef {{ | 10 * @typedef {{ |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 53 * Notification as sent by the server. | 53 * Notification as sent by the server. |
| 54 * | 54 * |
| 55 * @typedef {{ | 55 * @typedef {{ |
| 56 * notificationId: NotificationId, | 56 * notificationId: NotificationId, |
| 57 * chromeNotificationId: ChromeNotificationId, | 57 * chromeNotificationId: ChromeNotificationId, |
| 58 * trigger: Trigger, | 58 * trigger: Trigger, |
| 59 * chromeNotificationOptions: Object, | 59 * chromeNotificationOptions: Object, |
| 60 * actionUrls: (ActionUrls|undefined), | 60 * actionUrls: (ActionUrls|undefined), |
| 61 * dismissal: Object, | 61 * dismissal: Object, |
| 62 * locationBased: (boolean|undefined), | 62 * locationBased: (boolean|undefined), |
| 63 * groupName: string | 63 * groupName: string, |
| 64 * cardTypeId: (number|undefined) |
| 64 * }} | 65 * }} |
| 65 */ | 66 */ |
| 66 var ReceivedNotification; | 67 var ReceivedNotification; |
| 67 | 68 |
| 68 /** | 69 /** |
| 69 * Received notification in a self-sufficient form that doesn't require group's | 70 * Received notification in a self-sufficient form that doesn't require group's |
| 70 * timestamp to calculate show and hide times. | 71 * timestamp to calculate show and hide times. |
| 71 * | 72 * |
| 72 * @typedef {{ | 73 * @typedef {{ |
| 73 * receivedNotification: ReceivedNotification, | 74 * receivedNotification: ReceivedNotification, |
| (...skipping 10 matching lines...) Expand all Loading... |
| 84 */ | 85 */ |
| 85 var CombinedCard; | 86 var CombinedCard; |
| 86 | 87 |
| 87 /** | 88 /** |
| 88 * Data entry that we store for every Chrome notification. | 89 * Data entry that we store for every Chrome notification. |
| 89 * |timestamp| is the time when corresponding Chrome notification was created or | 90 * |timestamp| is the time when corresponding Chrome notification was created or |
| 90 * updated last time by cardSet.update(). | 91 * updated last time by cardSet.update(). |
| 91 * | 92 * |
| 92 * @typedef {{ | 93 * @typedef {{ |
| 93 * actionUrls: (ActionUrls|undefined), | 94 * actionUrls: (ActionUrls|undefined), |
| 95 * cardTypeId: (number|undefined), |
| 94 * timestamp: number, | 96 * timestamp: number, |
| 95 * combinedCard: CombinedCard | 97 * combinedCard: CombinedCard |
| 96 * }} | 98 * }} |
| 97 * | 99 * |
| 98 */ | 100 */ |
| 99 var NotificationDataEntry; | 101 var NotificationDataEntry; |
| 100 | 102 |
| 101 /** | 103 /** |
| 102 * Names for tasks that can be created by the this file. | 104 * Names for tasks that can be created by the this file. |
| 103 */ | 105 */ |
| 104 var UPDATE_CARD_TASK_NAME = 'update-card'; | 106 var UPDATE_CARD_TASK_NAME = 'update-card'; |
| 105 | 107 |
| 106 /** | 108 /** |
| 107 * Builds an object to manage notification card set. | 109 * Builds an object to manage notification card set. |
| 108 * @return {Object} Card set interface. | 110 * @return {Object} Card set interface. |
| 109 */ | 111 */ |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 239 // If we expect more events, create an alarm for the next one. | 241 // If we expect more events, create an alarm for the next one. |
| 240 chrome.alarms.create(alarmPrefix + cardId, {when: nextEventTime}); | 242 chrome.alarms.create(alarmPrefix + cardId, {when: nextEventTime}); |
| 241 | 243 |
| 242 // The trick with stringify/parse is to create a copy of action URLs, | 244 // The trick with stringify/parse is to create a copy of action URLs, |
| 243 // otherwise notifications data with 2 pointers to the same object won't | 245 // otherwise notifications data with 2 pointers to the same object won't |
| 244 // be stored correctly to chrome.storage. | 246 // be stored correctly to chrome.storage. |
| 245 var winningActionUrls = winningCard && | 247 var winningActionUrls = winningCard && |
| 246 winningCard.receivedNotification.actionUrls && | 248 winningCard.receivedNotification.actionUrls && |
| 247 JSON.parse(JSON.stringify( | 249 JSON.parse(JSON.stringify( |
| 248 winningCard.receivedNotification.actionUrls)); | 250 winningCard.receivedNotification.actionUrls)); |
| 249 | 251 var winningCardTypeId = winningCard && |
| 252 winningCard.receivedNotification.cardTypeId; |
| 250 return { | 253 return { |
| 251 actionUrls: winningActionUrls, | 254 actionUrls: winningActionUrls, |
| 255 cardTypeId: winningCardTypeId, |
| 252 timestamp: now, | 256 timestamp: now, |
| 253 combinedCard: combinedCard | 257 combinedCard: combinedCard |
| 254 }; | 258 }; |
| 255 } else { | 259 } else { |
| 256 // If there are no more events, we are done with this card. Note that all | 260 // If there are no more events, we are done with this card. Note that all |
| 257 // received notifications have hideTime. | 261 // received notifications have hideTime. |
| 258 verify(!winningCard, 'No events left, but card is shown.'); | 262 verify(!winningCard, 'No events left, but card is shown.'); |
| 259 clearCardFromGroups(cardId, notificationGroups); | 263 clearCardFromGroups(cardId, notificationGroups); |
| 260 return undefined; | 264 return undefined; |
| 261 } | 265 } |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 356 }); | 360 }); |
| 357 }); | 361 }); |
| 358 } | 362 } |
| 359 }); | 363 }); |
| 360 | 364 |
| 361 return { | 365 return { |
| 362 update: update, | 366 update: update, |
| 363 onDismissal: onDismissal | 367 onDismissal: onDismissal |
| 364 }; | 368 }; |
| 365 } | 369 } |
| OLD | NEW |