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

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

Issue 24924002: Switching getting/dismissing cards to new protocol (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: More rgustafson's comments 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 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 ea123192dd213c11e662fd55ebbba19d7fea3e4f..fa873318f595b09ac59d08aa66598d4c1da4bf30 100644
--- a/chrome/browser/resources/google_now/cards.js
+++ b/chrome/browser/resources/google_now/cards.js
@@ -4,7 +4,52 @@
'use strict';
-var MS_IN_SECOND = 1000;
+/**
+ * Show/hide trigger in a card.
+ *
+ * @typedef {{
+ * showTime: number=,
+ * hideTime: number=
+ * }}
+ */
+var Trigger;
+
+/**
+ * Data to build a dismissal request for a card from a specific group.
+ *
+ * @typedef {{
+ * notificationId: string,
+ * parameters: Object
+ * }}
+ */
+var DismissalData;
+
+/**
+ * Card merged from potentially multiple groups.
+ *
+ * @typedef {{
+ * trigger: Trigger,
+ * version: number,
+ * timestamp: number,
+ * notification: Object,
+ * actionUrls: Object=,
+ * groupRank: number,
+ * dismissals: Array.<DismissalData>
+ * }}
+ */
+var MergedCard;
+
+/**
+ * Set of parameters for creating card notification.
+ *
+ * @typedef {{
+ * notification: Object,
+ * hideTime: number=,
+ * version: number,
+ * previousVersion: number=
+ * }}
+ */
+var CardCreateInfo;
/**
* Builds an object to manage notification card set.
@@ -32,8 +77,8 @@ function buildCardSet() {
/**
* Shows a notification.
* @param {string} cardId Card ID.
- * @param {Object} cardCreateInfo Google Now card represented as a set of
- * parameters for showing a Chrome notification.
+ * @param {CardCreateInfo} cardCreateInfo Google Now card represented as a set
+ * of parameters for showing a Chrome notification.
*/
function showNotification(cardId, cardCreateInfo) {
console.log('cardManager.showNotification ' + cardId + ' ' +
@@ -54,7 +99,7 @@ function buildCardSet() {
return;
}
- scheduleHiding(cardId, cardCreateInfo.timeHide);
+ scheduleHiding(cardId, cardCreateInfo.hideTime);
});
} else {
// Update existing notification.
@@ -70,60 +115,53 @@ function buildCardSet() {
return;
}
- scheduleHiding(cardId, cardCreateInfo.timeHide);
+ scheduleHiding(cardId, cardCreateInfo.hideTime);
});
}
}
/**
* Updates/creates a card notification with new data.
- * @param {Object} card Google Now from the server.
+ * @param {string} cardId Card ID.
+ * @param {MergedCard} card Google Now card from the server.
* @param {number=} previousVersion The version of the shown card with
* this id, if it exists, undefined otherwise.
* @return {Object} Notification data entry for this card.
*/
- function update(card, previousVersion) {
+ function update(cardId, card, previousVersion) {
console.log('cardManager.update ' + JSON.stringify(card) + ' ' +
previousVersion);
- if (typeof card.version != 'number') {
- console.log('cardCreateInfo.version is not a number');
- // Fix card version.
- card.version = previousVersion || 0;
- }
-
// TODO(vadimt): Don't clear alarms etc that don't exist. Or make sure doing
// this doesn't output an error to console.
- chrome.alarms.clear(cardHidePrefix + card.notificationId);
+ chrome.alarms.clear(cardHidePrefix + cardId);
- var timeHide = card.trigger && card.trigger.hideTimeSec !== undefined ?
- Date.now() + card.trigger.hideTimeSec * MS_IN_SECOND : undefined;
var cardCreateInfo = {
notification: card.notification,
- timeHide: timeHide,
+ hideTime: card.trigger.hideTime,
version: card.version,
previousVersion: previousVersion
};
- var cardShowAlarmName = cardShowPrefix + card.notificationId;
- if (card.trigger && card.trigger.showTimeSec) {
+ var cardShowAlarmName = cardShowPrefix + cardId;
+ if (card.trigger.showTime && card.trigger.showTime > Date.now()) {
// Card needs to be shown later.
- console.log('cardManager.register: postponed');
+ console.log('cardManager.update: postponed');
var alarmInfo = {
- when: Date.now() + card.trigger.showTimeSec * MS_IN_SECOND
+ when: card.trigger.showTime
};
chrome.alarms.create(cardShowAlarmName, alarmInfo);
} else {
// Card needs to be shown immediately.
- console.log('cardManager.register: immediate');
+ console.log('cardManager.update: immediate');
chrome.alarms.clear(cardShowAlarmName);
- showNotification(card.notificationId, cardCreateInfo);
+ showNotification(cardId, cardCreateInfo);
}
return {
actionUrls: card.actionUrls,
cardCreateInfo: cardCreateInfo,
- dismissalParameters: card.dismissal
+ dismissals: card.dismissals
};
}
@@ -132,7 +170,7 @@ function buildCardSet() {
* @param {string} cardId Card ID.
*/
function clear(cardId) {
- console.log('cardManager.unregister ' + cardId);
+ console.log('cardManager.clear ' + cardId);
chrome.notifications.clear(cardId, function() {});
chrome.alarms.clear(cardShowPrefix + cardId);
@@ -158,7 +196,7 @@ function buildCardSet() {
} else if (alarm.name.indexOf(cardHidePrefix) == 0) {
// Alarm to hide the card.
var cardId = alarm.name.substring(cardHidePrefix.length);
- chrome.notifications.clear(cardId, function() {});
+ clear(cardId);
}
});

Powered by Google App Engine
This is Rietveld 408576698