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

Unified Diff: chrome/browser/resources/google_now/cards.js

Issue 25097002: Cleaning data associated with the card upon deletion. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Cosmetics Created 7 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: 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 5c7845c3a31053ee69903d35e0c00c23695e8765..42925e3ee54a444e8eed82b7bbd1d37870caba68 100644
--- a/chrome/browser/resources/google_now/cards.js
+++ b/chrome/browser/resources/google_now/cards.js
@@ -51,6 +51,11 @@ var MergedCard;
*/
var CardCreateInfo;
+/**
+ * Names for tasks that can be created by the this file.
+ */
+var CLEAR_CARD_TASK_NAME = 'clear-card';
+
/**
* Builds an object to manage notification card set.
* @return {Object} Card set interface.
@@ -99,7 +104,7 @@ function buildCardSet() {
return;
}
- scheduleHiding(cardId, cardCreateInfo.hideTime);
+ scheduleHiding(cardId, cardCreateInfo.hideTime);
});
} else {
// Update existing notification.
@@ -115,7 +120,7 @@ function buildCardSet() {
return;
}
- scheduleHiding(cardId, cardCreateInfo.hideTime);
+ scheduleHiding(cardId, cardCreateInfo.hideTime);
});
}
}
@@ -168,13 +173,39 @@ function buildCardSet() {
/**
* Removes a card notification.
* @param {string} cardId Card ID.
+ * @param {boolean} clearStorage True if the information associated with the
+ * card should be erased from chrome.storage.
*/
- function clear(cardId) {
+ function clear(cardId, clearStorage) {
console.log('cardManager.clear ' + cardId);
chrome.notifications.clear(cardId, function() {});
chrome.alarms.clear(cardShowPrefix + cardId);
chrome.alarms.clear(cardHidePrefix + cardId);
+
+ if (clearStorage) {
+ instrumented.storage.local.get(
+ ['notificationsData', 'notificationGroups'],
+ function(items) {
+ items = items || {};
+ items.notificationsData = items.notificationsData || {};
+ items.notificationGroups = items.notificationGroups || {};
+
+ delete items.notificationsData[cardId];
rgustafson 2013/09/27 18:57:20 Do you have to use delete vs setting to null in th
vadimt 2013/09/27 20:10:56 We'll never attempt to access this data after clea
rgustafson 2013/09/27 20:19:28 Then style says to set to null instead of delete.
vadimt 2013/09/27 20:25:24 "The delete keyword should be avoided except when
rgustafson 2013/09/27 22:53:01 It has a list of keys. It isn't necessary to remov
robliao 2013/09/27 22:59:13 The concern here is that deleting is slower than s
vadimt 2013/09/30 16:56:17 FWIW: I'm not null-ing it. This is a map. No one d
rgustafson 2013/09/30 18:44:02 You still send reviews to arv, right? If the style
+
+ 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;
+ }
+ }
+ }
+
+ chrome.storage.local.set(items);
+ });
+ }
}
instrumented.alarms.onAlarm.addListener(function(alarm) {
@@ -195,8 +226,10 @@ function buildCardSet() {
});
} else if (alarm.name.indexOf(cardHidePrefix) == 0) {
// Alarm to hide the card.
- var cardId = alarm.name.substring(cardHidePrefix.length);
- clear(cardId);
+ tasks.add(CLEAR_CARD_TASK_NAME, function() {
+ var cardId = alarm.name.substring(cardHidePrefix.length);
+ clear(cardId, true);
+ });
}
});

Powered by Google App Engine
This is Rietveld 408576698