Chromium Code Reviews| 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 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 45 */ | 45 */ |
| 46 var MINIMUM_POLLING_PERIOD_SECONDS = 5 * 60; // 5 minutes | 46 var MINIMUM_POLLING_PERIOD_SECONDS = 5 * 60; // 5 minutes |
| 47 | 47 |
| 48 /** | 48 /** |
| 49 * Maximal period for polling for Google Now Notifications cards to use when the | 49 * Maximal period for polling for Google Now Notifications cards to use when the |
| 50 * period from the server is not available. | 50 * period from the server is not available. |
| 51 */ | 51 */ |
| 52 var MAXIMUM_POLLING_PERIOD_SECONDS = 60 * 60; // 1 hour | 52 var MAXIMUM_POLLING_PERIOD_SECONDS = 60 * 60; // 1 hour |
| 53 | 53 |
| 54 /** | 54 /** |
| 55 * Initial period for polling for Google Now optin notification after push | |
| 56 * messaging indicates Google Now is enabled. | |
| 57 */ | |
| 58 var INITIAL_OPTIN_POLLING_PERIOD_SECONDS = 60; // 1 minute | |
| 59 | |
| 60 /** | |
| 61 * Maximum period for polling for Google Now optin notification after push | |
| 62 * messaging indicates Google Now is enabled. It is expected that the alarm | |
| 63 * will be stopped after this. | |
| 64 */ | |
| 65 var MAXIMUM_OPTIN_POLLING_PERIOD_SECONDS = 16 * 60; // 16 minutes | |
| 66 | |
| 67 /** | |
| 55 * Initial period for retrying the server request for dismissing cards. | 68 * Initial period for retrying the server request for dismissing cards. |
| 56 */ | 69 */ |
| 57 var INITIAL_RETRY_DISMISS_PERIOD_SECONDS = 60; // 1 minute | 70 var INITIAL_RETRY_DISMISS_PERIOD_SECONDS = 60; // 1 minute |
| 58 | 71 |
| 59 /** | 72 /** |
| 60 * Maximum period for retrying the server request for dismissing cards. | 73 * Maximum period for retrying the server request for dismissing cards. |
| 61 */ | 74 */ |
| 62 var MAXIMUM_RETRY_DISMISS_PERIOD_SECONDS = 60 * 60; // 1 hour | 75 var MAXIMUM_RETRY_DISMISS_PERIOD_SECONDS = 60 * 60; // 1 hour |
| 63 | 76 |
| 64 /** | 77 /** |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 195 wrapper.instrumentChromeApiFunction('pushMessaging.onMessage.addListener', 0); | 208 wrapper.instrumentChromeApiFunction('pushMessaging.onMessage.addListener', 0); |
| 196 wrapper.instrumentChromeApiFunction('runtime.onInstalled.addListener', 0); | 209 wrapper.instrumentChromeApiFunction('runtime.onInstalled.addListener', 0); |
| 197 wrapper.instrumentChromeApiFunction('runtime.onStartup.addListener', 0); | 210 wrapper.instrumentChromeApiFunction('runtime.onStartup.addListener', 0); |
| 198 wrapper.instrumentChromeApiFunction('tabs.create', 1); | 211 wrapper.instrumentChromeApiFunction('tabs.create', 1); |
| 199 | 212 |
| 200 var updateCardsAttempts = buildAttemptManager( | 213 var updateCardsAttempts = buildAttemptManager( |
| 201 'cards-update', | 214 'cards-update', |
| 202 requestCards, | 215 requestCards, |
| 203 INITIAL_POLLING_PERIOD_SECONDS, | 216 INITIAL_POLLING_PERIOD_SECONDS, |
| 204 MAXIMUM_POLLING_PERIOD_SECONDS); | 217 MAXIMUM_POLLING_PERIOD_SECONDS); |
| 218 var optInCheckAttempts = buildAttemptManager( | |
| 219 'optin', | |
| 220 pollOptedIn, | |
| 221 INITIAL_OPTIN_POLLING_PERIOD_SECONDS, | |
| 222 MAXIMUM_OPTIN_POLLING_PERIOD_SECONDS); | |
| 205 var dismissalAttempts = buildAttemptManager( | 223 var dismissalAttempts = buildAttemptManager( |
| 206 'dismiss', | 224 'dismiss', |
| 207 retryPendingDismissals, | 225 retryPendingDismissals, |
| 208 INITIAL_RETRY_DISMISS_PERIOD_SECONDS, | 226 INITIAL_RETRY_DISMISS_PERIOD_SECONDS, |
| 209 MAXIMUM_RETRY_DISMISS_PERIOD_SECONDS); | 227 MAXIMUM_RETRY_DISMISS_PERIOD_SECONDS); |
| 210 var cardSet = buildCardSet(); | 228 var cardSet = buildCardSet(); |
| 211 | 229 |
| 212 var authenticationManager = buildAuthenticationManager(); | 230 var authenticationManager = buildAuthenticationManager(); |
| 213 | 231 |
| 214 /** | 232 /** |
| (...skipping 874 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1089 * @return {Promise} A promise to determine the previous Google Now | 1107 * @return {Promise} A promise to determine the previous Google Now |
| 1090 * opt-in state. | 1108 * opt-in state. |
| 1091 */ | 1109 */ |
| 1092 function isGoogleNowEnabled() { | 1110 function isGoogleNowEnabled() { |
| 1093 return fillFromChromeLocalStorage({googleNowEnabled: false}) | 1111 return fillFromChromeLocalStorage({googleNowEnabled: false}) |
| 1094 .then(function(items) { | 1112 .then(function(items) { |
| 1095 return items.googleNowEnabled; | 1113 return items.googleNowEnabled; |
| 1096 }); | 1114 }); |
| 1097 } | 1115 } |
| 1098 | 1116 |
| 1117 /** | |
| 1118 * Sometimes we get the response to the opted in result too soon during | |
|
rgustafson
2014/03/28 20:59:48
Match the other function comment format. Start wit
robliao
2014/03/28 21:03:06
Done. checkOptedIn does start with a verb...
On 20
| |
| 1119 * push messaging. We'll recheck the optin state a few times before giving up. | |
| 1120 */ | |
| 1121 function pollOptedIn() { | |
| 1122 /** | |
| 1123 * Cleans up any state used to recheck the opt-in poll. | |
| 1124 */ | |
| 1125 function clearPollingState() { | |
| 1126 localStorage.removeItem('optedInCheckCount'); | |
| 1127 optInCheckAttempts.stop(); | |
| 1128 } | |
| 1129 | |
| 1130 /** | |
| 1131 * Does the actual work for checking the opt-in state and requesting cards | |
| 1132 * on opted-in. | |
| 1133 */ | |
| 1134 function checkOptedIn() { | |
| 1135 // Limit retries to 5. | |
| 1136 if (localStorage.optedInCheckCount < 5) { | |
| 1137 console.log(new Date() + | |
| 1138 'checkOptedIn Attempt ' + localStorage.optedInCheckCount); | |
| 1139 localStorage.optedInCheckCount++; | |
| 1140 requestOptedIn(function() { | |
| 1141 clearPollingState(); | |
| 1142 requestCards(); | |
| 1143 }); | |
| 1144 } else { | |
| 1145 clearPollingState(); | |
| 1146 } | |
| 1147 } | |
| 1148 | |
| 1149 if (localStorage.optedInCheckCount === undefined) { | |
| 1150 localStorage.optedInCheckCount = 0; | |
| 1151 optInCheckAttempts.start(); | |
| 1152 checkOptedIn(); | |
| 1153 } else { | |
| 1154 optInCheckAttempts.planForNext(checkOptedIn); | |
| 1155 } | |
| 1156 } | |
| 1157 | |
| 1099 instrumented.runtime.onInstalled.addListener(function(details) { | 1158 instrumented.runtime.onInstalled.addListener(function(details) { |
| 1100 console.log('onInstalled ' + JSON.stringify(details)); | 1159 console.log('onInstalled ' + JSON.stringify(details)); |
| 1101 if (details.reason != 'chrome_update') { | 1160 if (details.reason != 'chrome_update') { |
| 1102 initialize(); | 1161 initialize(); |
| 1103 } | 1162 } |
| 1104 }); | 1163 }); |
| 1105 | 1164 |
| 1106 instrumented.runtime.onStartup.addListener(function() { | 1165 instrumented.runtime.onStartup.addListener(function() { |
| 1107 console.log('onStartup'); | 1166 console.log('onStartup'); |
| 1108 | 1167 |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1195 items.notificationGroups['PUSH' + message.subchannelId] = { | 1254 items.notificationGroups['PUSH' + message.subchannelId] = { |
| 1196 cards: [], | 1255 cards: [], |
| 1197 nextPollTime: Date.now() | 1256 nextPollTime: Date.now() |
| 1198 }; | 1257 }; |
| 1199 | 1258 |
| 1200 chrome.storage.local.set({ | 1259 chrome.storage.local.set({ |
| 1201 lastPollNowPayloads: items.lastPollNowPayloads, | 1260 lastPollNowPayloads: items.lastPollNowPayloads, |
| 1202 notificationGroups: items.notificationGroups | 1261 notificationGroups: items.notificationGroups |
| 1203 }); | 1262 }); |
| 1204 | 1263 |
| 1205 requestCards(); | 1264 pollOptedIn(); |
| 1206 } | 1265 } |
| 1207 }); | 1266 }); |
| 1208 }); | 1267 }); |
| 1209 } | 1268 } |
| 1210 }); | 1269 }); |
| OLD | NEW |