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

Side by Side 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: Fixing missing argument. Created 7 years, 2 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 * @typedef {{ 45 * @typedef {{
46 * notification: Object, 46 * notification: Object,
47 * hideTime: number=, 47 * hideTime: number=,
48 * version: number, 48 * version: number,
49 * previousVersion: number= 49 * previousVersion: number=
50 * }} 50 * }}
51 */ 51 */
52 var CardCreateInfo; 52 var CardCreateInfo;
53 53
54 /** 54 /**
55 * Names for tasks that can be created by the this file.
56 */
57 var CLEAR_CARD_TASK_NAME = 'clear-card';
58
59 /**
55 * Builds an object to manage notification card set. 60 * Builds an object to manage notification card set.
56 * @return {Object} Card set interface. 61 * @return {Object} Card set interface.
57 */ 62 */
58 function buildCardSet() { 63 function buildCardSet() {
59 var cardShowPrefix = 'card-show-'; 64 var cardShowPrefix = 'card-show-';
60 var cardHidePrefix = 'card-hide-'; 65 var cardHidePrefix = 'card-hide-';
61 66
62 /** 67 /**
63 * Schedules hiding a notification. 68 * Schedules hiding a notification.
64 * @param {string} cardId Card ID. 69 * @param {string} cardId Card ID.
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 return { 166 return {
162 actionUrls: card.actionUrls, 167 actionUrls: card.actionUrls,
163 cardCreateInfo: cardCreateInfo, 168 cardCreateInfo: cardCreateInfo,
164 dismissals: card.dismissals 169 dismissals: card.dismissals
165 }; 170 };
166 } 171 }
167 172
168 /** 173 /**
169 * Removes a card notification. 174 * Removes a card notification.
170 * @param {string} cardId Card ID. 175 * @param {string} cardId Card ID.
176 * @param {boolean} clearStorage True if the information associated with the
177 * card should be erased from chrome.storage.
171 */ 178 */
172 function clear(cardId) { 179 function clear(cardId, clearStorage) {
173 console.log('cardManager.clear ' + cardId); 180 console.log('cardManager.clear ' + cardId);
174 181
175 chrome.notifications.clear(cardId, function() {}); 182 chrome.notifications.clear(cardId, function() {});
176 chrome.alarms.clear(cardShowPrefix + cardId); 183 chrome.alarms.clear(cardShowPrefix + cardId);
177 chrome.alarms.clear(cardHidePrefix + cardId); 184 chrome.alarms.clear(cardHidePrefix + cardId);
185
186 if (clearStorage) {
187 instrumented.storage.local.get(
188 ['notificationsData', 'notificationGroups'],
189 function(items) {
190 items = items || {};
191 items.notificationsData = items.notificationsData || {};
192 items.notificationGroups = items.notificationGroups || {};
193
194 delete items.notificationsData[cardId];
195
196 for (var groupName in items.notificationGroups) {
197 var group = items.notificationGroups[groupName];
198 for (var i = 0; i != group.cards.length; ++i) {
199 if (group.cards[i].chromeNotificationId == cardId) {
200 group.cards.splice(i, 1);
201 break;
202 }
203 }
204 }
205
206 chrome.storage.local.set(items);
207 });
208 }
178 } 209 }
179 210
180 instrumented.alarms.onAlarm.addListener(function(alarm) { 211 instrumented.alarms.onAlarm.addListener(function(alarm) {
181 console.log('cardManager.onAlarm ' + JSON.stringify(alarm)); 212 console.log('cardManager.onAlarm ' + JSON.stringify(alarm));
182 213
183 if (alarm.name.indexOf(cardShowPrefix) == 0) { 214 if (alarm.name.indexOf(cardShowPrefix) == 0) {
184 // Alarm to show the card. 215 // Alarm to show the card.
185 var cardId = alarm.name.substring(cardShowPrefix.length); 216 var cardId = alarm.name.substring(cardShowPrefix.length);
186 instrumented.storage.local.get('notificationsData', function(items) { 217 instrumented.storage.local.get('notificationsData', function(items) {
187 console.log('cardManager.onAlarm.get ' + JSON.stringify(items)); 218 console.log('cardManager.onAlarm.get ' + JSON.stringify(items));
188 if (!items || !items.notificationsData) 219 if (!items || !items.notificationsData)
189 return; 220 return;
190 var notificationData = items.notificationsData[cardId]; 221 var notificationData = items.notificationsData[cardId];
191 if (!notificationData) 222 if (!notificationData)
192 return; 223 return;
193 224
194 showNotification(cardId, notificationData.cardCreateInfo); 225 showNotification(cardId, notificationData.cardCreateInfo);
195 }); 226 });
196 } else if (alarm.name.indexOf(cardHidePrefix) == 0) { 227 } else if (alarm.name.indexOf(cardHidePrefix) == 0) {
197 // Alarm to hide the card. 228 // Alarm to hide the card.
198 var cardId = alarm.name.substring(cardHidePrefix.length); 229 tasks.add(CLEAR_CARD_TASK_NAME, function() {
199 clear(cardId); 230 var cardId = alarm.name.substring(cardHidePrefix.length);
231 clear(cardId, true);
232 });
200 } 233 }
201 }); 234 });
202 235
203 return { 236 return {
204 update: update, 237 update: update,
205 clear: clear 238 clear: clear
206 }; 239 };
207 } 240 }
OLDNEW
« no previous file with comments | « chrome/browser/resources/google_now/background.js ('k') | chrome/browser/resources/google_now/cards_unittest.gtestjs » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698