Index: chrome/browser/resources/google_now/cards.js |
diff --git a/chrome/browser/resources/google_now/cards.js b/chrome/browser/resources/google_now/cards.js |
index 547730f4a9c8d6139bef75c6f7d122933c1df26f..24df10b8354d3e94c4cbd32474a27a94b37af2cb 100644 |
--- a/chrome/browser/resources/google_now/cards.js |
+++ b/chrome/browser/resources/google_now/cards.js |
@@ -183,12 +183,14 @@ function buildCardSet() { |
* based on the current time and show-hide intervals in the combined card. |
* @param {ChromeNotificationId} cardId Card ID. |
* @param {CombinedCard} combinedCard Combined cards with |cardId|. |
+ * @param {Object.<string, StoredNotificationGroup>} notificationGroups |
+ * Map from group name to group information. |
* @param {function(ReceivedNotification)=} onCardShown Optional parameter |
* called when each card is shown. |
* @return {(NotificationDataEntry|undefined)} Notification data entry for |
* this card. It's 'undefined' if the card's life is over. |
*/ |
- function update(cardId, combinedCard, onCardShown) { |
+ function update(cardId, combinedCard, notificationGroups, onCardShown) { |
console.log('cardManager.update ' + JSON.stringify(combinedCard)); |
chrome.alarms.clear(alarmPrefix + cardId); |
@@ -254,7 +256,7 @@ function buildCardSet() { |
// If there are no more events, we are done with this card. Note that all |
// received notifications have hideTime. |
verify(!winningCard, 'No events left, but card is shown.'); |
- clearCardFromGroups(cardId); |
+ clearCardFromGroups(cardId, notificationGroups); |
return undefined; |
} |
} |
@@ -265,12 +267,14 @@ function buildCardSet() { |
* @param {ChromeNotificationId} cardId Card ID. |
* @param {NotificationDataEntry} notificationData Stored notification entry |
* for this card. |
+ * @param {Object.<string, StoredNotificationGroup>} notificationGroups |
+ * Map from group name to group information. |
* @return {{ |
* dismissals: Array.<DismissalData>, |
* notificationData: (NotificationDataEntry|undefined) |
* }} |
*/ |
- function onDismissal(cardId, notificationData) { |
+ function onDismissal(cardId, notificationData, notificationGroups) { |
var dismissals = []; |
var newCombinedCard = []; |
@@ -293,34 +297,27 @@ function buildCardSet() { |
return { |
dismissals: dismissals, |
- notificationData: update(cardId, newCombinedCard) |
+ notificationData: update(cardId, newCombinedCard, notificationGroups) |
}; |
} |
/** |
- * Removes card information from 'notificationGroups'. |
+ * Removes card information from |notificationGroups|. |
* @param {ChromeNotificationId} cardId Card ID. |
+ * @param {Object.<string, StoredNotificationGroup>} notificationGroups |
+ * Map from group name to group information. |
*/ |
- function clearCardFromGroups(cardId) { |
+ function clearCardFromGroups(cardId, notificationGroups) { |
console.log('cardManager.clearCardFromGroups ' + cardId); |
- |
- instrumented.storage.local.get('notificationGroups', function(items) { |
- items = items || {}; |
- /** @type {Object.<string, StoredNotificationGroup>} */ |
- items.notificationGroups = items.notificationGroups || {}; |
- |
- for (var groupName in items.notificationGroups) { |
- var group = items.notificationGroups[groupName]; |
- for (var i = 0; i != group.cards.length; ++i) { |
- if (group.cards[i].chromeNotificationId == cardId) { |
- group.cards.splice(i, 1); |
- break; |
- } |
+ for (var groupName in notificationGroups) { |
+ var group = notificationGroups[groupName]; |
+ for (var i = 0; i != group.cards.length; ++i) { |
+ if (group.cards[i].chromeNotificationId == cardId) { |
+ group.cards.splice(i, 1); |
+ break; |
} |
} |
- |
- chrome.storage.local.set(items); |
- }); |
+ } |
} |
instrumented.alarms.onAlarm.addListener(function(alarm) { |
@@ -330,26 +327,35 @@ function buildCardSet() { |
// Alarm to show the card. |
tasks.add(UPDATE_CARD_TASK_NAME, function() { |
var cardId = alarm.name.substring(alarmPrefix.length); |
- instrumented.storage.local.get('notificationsData', function(items) { |
- console.log('cardManager.onAlarm.get ' + JSON.stringify(items)); |
- items = items || {}; |
- /** @type {Object.<string, NotificationDataEntry>} */ |
- items.notificationsData = items.notificationsData || {}; |
- var combinedCard = |
- (items.notificationsData[cardId] && |
- items.notificationsData[cardId].combinedCard) || []; |
- |
- var cardShownCallback = undefined; |
- if (localStorage['locationCardsShown'] < |
- LOCATION_CARDS_LINK_THRESHOLD) { |
- cardShownCallback = countLocationCard; |
- } |
- |
- items.notificationsData[cardId] = |
- update(cardId, combinedCard, cardShownCallback); |
- |
- chrome.storage.local.set(items); |
- }); |
+ instrumented.storage.local.get( |
+ ['notificationsData', 'notificationGroups'], |
+ function(items) { |
+ console.log('cardManager.onAlarm.get ' + JSON.stringify(items)); |
+ items = items || {}; |
+ /** @type {Object.<string, NotificationDataEntry>} */ |
+ items.notificationsData = items.notificationsData || {}; |
+ /** @type {Object.<string, StoredNotificationGroup>} */ |
+ items.notificationGroups = items.notificationGroups || {}; |
+ |
+ var combinedCard = |
+ (items.notificationsData[cardId] && |
+ items.notificationsData[cardId].combinedCard) || []; |
+ |
+ var cardShownCallback = undefined; |
+ if (localStorage['locationCardsShown'] < |
+ LOCATION_CARDS_LINK_THRESHOLD) { |
+ cardShownCallback = countLocationCard; |
+ } |
+ |
+ items.notificationsData[cardId] = |
+ update( |
+ cardId, |
+ combinedCard, |
+ items.notificationGroups, |
+ cardShownCallback); |
+ |
+ chrome.storage.local.set(items); |
+ }); |
}); |
} |
}); |