OLD | NEW |
---|---|
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 * @fileoverview The event page for Google Now for Chrome implementation. | 8 * @fileoverview The event page for Google Now for Chrome implementation. |
9 * The Google Now event page gets Google Now cards from the server and shows | 9 * The Google Now event page gets Google Now cards from the server and shows |
10 * them as Chrome notifications. | 10 * them as Chrome notifications. |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
73 }; | 73 }; |
74 | 74 |
75 // TODO(vadimt): Reorganize server response to avoid deleting fields. | 75 // TODO(vadimt): Reorganize server response to avoid deleting fields. |
76 delete card.notificationId; | 76 delete card.notificationId; |
77 delete card.messageUrl; | 77 delete card.messageUrl; |
78 delete card.buttonOneUrl; | 78 delete card.buttonOneUrl; |
79 delete card.buttonTwoUrl; | 79 delete card.buttonTwoUrl; |
80 | 80 |
81 // Create a notification or quietly update if it already exists. | 81 // Create a notification or quietly update if it already exists. |
82 // TODO(vadimt): Implement non-quiet updates. | 82 // TODO(vadimt): Implement non-quiet updates. |
83 chrome.experimental.notification.create( | 83 chrome.notification.create( |
dharcourt
2013/03/04 23:46:27
"chrome.notification.*" should be "chrome.notifica
| |
84 notificationId, | 84 notificationId, |
85 card, | 85 card, |
86 function(assignedNotificationId) {}); | 86 function(assignedNotificationId) {}); |
87 | 87 |
88 notificationsUrlInfo[notificationId] = actionUrls; | 88 notificationsUrlInfo[notificationId] = actionUrls; |
89 } | 89 } |
90 | 90 |
91 /** | 91 /** |
92 * Parse JSON response from the notification server, show notifications and | 92 * Parse JSON response from the notification server, show notifications and |
93 * schedule next update. | 93 * schedule next update. |
(...skipping 24 matching lines...) Expand all Loading... | |
118 // response. | 118 // response. |
119 for (var i = 0; i < cards.length; ++i) { | 119 for (var i = 0; i < cards.length; ++i) { |
120 var notificationId = cards[i].notificationId; | 120 var notificationId = cards[i].notificationId; |
121 if (notificationId in items.activeNotifications) | 121 if (notificationId in items.activeNotifications) |
122 items.activeNotifications[notificationId].hasUpdate = true; | 122 items.activeNotifications[notificationId].hasUpdate = true; |
123 } | 123 } |
124 | 124 |
125 // Delete notifications that didn't receive an update. | 125 // Delete notifications that didn't receive an update. |
126 for (var notificationId in items.activeNotifications) | 126 for (var notificationId in items.activeNotifications) |
127 if (!items.activeNotifications[notificationId].hasUpdate) { | 127 if (!items.activeNotifications[notificationId].hasUpdate) { |
128 chrome.experimental.notification.delete( | 128 chrome.notification.delete( |
129 notificationId, | 129 notificationId, |
130 function(wasDeleted) {}); | 130 function(wasDeleted) {}); |
131 } | 131 } |
132 | 132 |
133 // Create/update notifications and store their new properties. | 133 // Create/update notifications and store their new properties. |
134 var notificationsUrlInfo = {}; | 134 var notificationsUrlInfo = {}; |
135 | 135 |
136 for (var i = 0; i < cards.length; ++i) { | 136 for (var i = 0; i < cards.length; ++i) { |
137 try { | 137 try { |
138 createNotification(cards[i], notificationsUrlInfo); | 138 createNotification(cards[i], notificationsUrlInfo); |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
229 var notificationActions = items.activeNotifications[notificationId] || {}; | 229 var notificationActions = items.activeNotifications[notificationId] || {}; |
230 if (area in notificationActions) { | 230 if (area in notificationActions) { |
231 // Open URL specified for the clicked area. | 231 // Open URL specified for the clicked area. |
232 // TODO(vadimt): Figure out whether to open link in a new tab etc. | 232 // TODO(vadimt): Figure out whether to open link in a new tab etc. |
233 chrome.windows.create({url: notificationActions[area]}); | 233 chrome.windows.create({url: notificationActions[area]}); |
234 } | 234 } |
235 }); | 235 }); |
236 } | 236 } |
237 | 237 |
238 /** | 238 /** |
239 * Callback for chrome.experimental.notification.onClosed event. | 239 * Callback for chrome.notification.onClosed event. |
240 * @param {string} notificationId Unique identifier of the notification. | 240 * @param {string} notificationId Unique identifier of the notification. |
241 * @param {boolean} byUser Whether the notification was closed by the user. | 241 * @param {boolean} byUser Whether the notification was closed by the user. |
242 */ | 242 */ |
243 function onNotificationClosed(notificationId, byUser) { | 243 function onNotificationClosed(notificationId, byUser) { |
244 if (byUser) { | 244 if (byUser) { |
245 // TODO(vadimt): Analyze possible race conditions between request for cards | 245 // TODO(vadimt): Analyze possible race conditions between request for cards |
246 // and dismissal. | 246 // and dismissal. |
247 // Send a dismiss request to the server. | 247 // Send a dismiss request to the server. |
248 var requestParameters = '?id=' + notificationId; | 248 var requestParameters = '?id=' + notificationId; |
249 var request = new XMLHttpRequest(); | 249 var request = new XMLHttpRequest(); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
289 }); | 289 }); |
290 | 290 |
291 chrome.runtime.onStartup.addListener(function() { | 291 chrome.runtime.onStartup.addListener(function() { |
292 initialize(); | 292 initialize(); |
293 }); | 293 }); |
294 | 294 |
295 chrome.alarms.onAlarm.addListener(function(alarm) { | 295 chrome.alarms.onAlarm.addListener(function(alarm) { |
296 updateNotificationsCards(); | 296 updateNotificationsCards(); |
297 }); | 297 }); |
298 | 298 |
299 chrome.experimental.notification.onClicked.addListener( | 299 chrome.notification.onClicked.addListener( |
300 function(notificationId) { | 300 function(notificationId) { |
301 onNotificationClicked(notificationId, 'message'); | 301 onNotificationClicked(notificationId, 'message'); |
302 }); | 302 }); |
303 | 303 |
304 chrome.experimental.notification.onButtonClicked.addListener( | 304 chrome.notification.onButtonClicked.addListener( |
305 function(notificationId, buttonIndex) { | 305 function(notificationId, buttonIndex) { |
306 onNotificationClicked(notificationId, 'button' + buttonIndex); | 306 onNotificationClicked(notificationId, 'button' + buttonIndex); |
307 }); | 307 }); |
308 | 308 |
309 chrome.experimental.notification.onClosed.addListener(onNotificationClosed); | 309 chrome.notification.onClosed.addListener(onNotificationClosed); |
OLD | NEW |