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

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

Issue 22647003: Remove chrome.* Function Instrumentation Inlining and Use a Separate Instrumented Object (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@SMLog
Patch Set: Quick Spacing Fix Created 7 years, 4 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
« no previous file with comments | « no previous file | chrome/browser/resources/google_now/background_test_util.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/resources/google_now/background.js
diff --git a/chrome/browser/resources/google_now/background.js b/chrome/browser/resources/google_now/background.js
index e44707d96cc03ff4199078ca6f42cbe6234fe02c..d1d896aeac47868d8d22319306c5269cb8e01df8 100644
--- a/chrome/browser/resources/google_now/background.js
+++ b/chrome/browser/resources/google_now/background.js
@@ -114,33 +114,28 @@ function areTasksConflicting(newTaskName, scheduledTaskName) {
return false;
}
-var googleGeolocationAccessEnabledPref =
- chrome.preferencesPrivate.googleGeolocationAccessEnabled;
-
var tasks = buildTaskManager(areTasksConflicting);
// Add error processing to API calls.
-tasks.instrumentApiFunction(chrome.location.onLocationUpdate, 'addListener', 0);
-tasks.instrumentApiFunction(chrome.notifications, 'create', 2);
-tasks.instrumentApiFunction(chrome.notifications, 'update', 2);
-tasks.instrumentApiFunction(chrome.notifications, 'getAll', 0);
-tasks.instrumentApiFunction(
- chrome.notifications.onButtonClicked, 'addListener', 0);
-tasks.instrumentApiFunction(chrome.notifications.onClicked, 'addListener', 0);
-tasks.instrumentApiFunction(chrome.notifications.onClosed, 'addListener', 0);
-tasks.instrumentApiFunction(chrome.omnibox.onInputEntered, 'addListener', 0);
-tasks.instrumentApiFunction(
- googleGeolocationAccessEnabledPref,
- 'get',
+tasks.instrumentChromeApiFunction('location.onLocationUpdate.addListener', 0);
+tasks.instrumentChromeApiFunction('notifications.create', 2);
+tasks.instrumentChromeApiFunction('notifications.update', 2);
+tasks.instrumentChromeApiFunction('notifications.getAll', 0);
+tasks.instrumentChromeApiFunction(
+ 'notifications.onButtonClicked.addListener', 0);
+tasks.instrumentChromeApiFunction('notifications.onClicked.addListener', 0);
+tasks.instrumentChromeApiFunction('notifications.onClosed.addListener', 0);
+tasks.instrumentChromeApiFunction('omnibox.onInputEntered.addListener', 0);
+tasks.instrumentChromeApiFunction(
+ 'preferencesPrivate.googleGeolocationAccessEnabled.get',
1);
-tasks.instrumentApiFunction(
- googleGeolocationAccessEnabledPref.onChange,
- 'addListener',
+tasks.instrumentChromeApiFunction(
+ 'preferencesPrivate.googleGeolocationAccessEnabled.onChange.addListener',
0);
-tasks.instrumentApiFunction(chrome.runtime.onInstalled, 'addListener', 0);
-tasks.instrumentApiFunction(chrome.runtime.onStartup, 'addListener', 0);
-tasks.instrumentApiFunction(chrome.tabs, 'create', 1);
-tasks.instrumentApiFunction(storage, 'get', 1);
+tasks.instrumentChromeApiFunction('runtime.onInstalled.addListener', 0);
+tasks.instrumentChromeApiFunction('runtime.onStartup.addListener', 0);
+tasks.instrumentChromeApiFunction('tabs.create', 1);
+tasks.instrumentChromeApiFunction('storage.local.get', 1);
var updateCardsAttempts = buildAttemptManager(
'cards-update',
@@ -255,80 +250,84 @@ function parseAndShowNotificationCards(response, callback) {
}
tasks.debugSetStepName('parseAndShowNotificationCards-storage-get');
- storage.get(['notificationsData', 'recentDismissals'], function(items) {
- console.log('parseAndShowNotificationCards-get ' + JSON.stringify(items));
- items.notificationsData = items.notificationsData || {};
- items.recentDismissals = items.recentDismissals || {};
-
- tasks.debugSetStepName(
- 'parseAndShowNotificationCards-notifications-getAll');
- chrome.notifications.getAll(function(notifications) {
- console.log('parseAndShowNotificationCards-getAll ' +
- JSON.stringify(notifications));
- // TODO(vadimt): Figure out what to do when notifications are disabled for
- // our extension.
- notifications = notifications || {};
-
- // Build a set of non-expired recent dismissals. It will be used for
- // client-side filtering of cards.
- var updatedRecentDismissals = {};
- var currentTimeMs = Date.now();
- for (var notificationId in items.recentDismissals) {
- if (currentTimeMs - items.recentDismissals[notificationId] <
- DISMISS_RETENTION_TIME_MS) {
- updatedRecentDismissals[notificationId] =
- items.recentDismissals[notificationId];
- }
- }
-
- // Mark existing notifications that received an update in this server
- // response.
- var updatedNotifications = {};
+ instrumented.storage.local.get(['notificationsData', 'recentDismissals'],
+ function(items) {
+ console.log('parseAndShowNotificationCards-get ' +
+ JSON.stringify(items));
+ items.notificationsData = items.notificationsData || {};
+ items.recentDismissals = items.recentDismissals || {};
- for (var i = 0; i < cards.length; ++i) {
- var notificationId = cards[i].notificationId;
- if (!(notificationId in updatedRecentDismissals) &&
- notificationId in notifications) {
- updatedNotifications[notificationId] = true;
- }
- }
+ tasks.debugSetStepName(
+ 'parseAndShowNotificationCards-notifications-getAll');
+ instrumented.notifications.getAll(function(notifications) {
+ console.log('parseAndShowNotificationCards-getAll ' +
+ JSON.stringify(notifications));
+ // TODO(vadimt): Figure out what to do when notifications are
+ // disabled for our extension.
+ notifications = notifications || {};
+
+ // Build a set of non-expired recent dismissals. It will be used for
+ // client-side filtering of cards.
+ var updatedRecentDismissals = {};
+ var currentTimeMs = Date.now();
+ for (var notificationId in items.recentDismissals) {
+ if (currentTimeMs - items.recentDismissals[notificationId] <
+ DISMISS_RETENTION_TIME_MS) {
+ updatedRecentDismissals[notificationId] =
+ items.recentDismissals[notificationId];
+ }
+ }
- // Delete notifications that didn't receive an update.
- for (var notificationId in notifications) {
- console.log('parseAndShowNotificationCards-delete-check ' +
- notificationId);
- if (!(notificationId in updatedNotifications)) {
- console.log('parseAndShowNotificationCards-delete ' + notificationId);
- cardSet.clear(notificationId);
- }
- }
+ // Mark existing notifications that received an update in this server
+ // response.
+ var updatedNotifications = {};
- recordEvent(GoogleNowEvent.CARDS_PARSE_SUCCESS);
-
- // Create/update notifications and store their new properties.
- var newNotificationsData = {};
- for (var i = 0; i < cards.length; ++i) {
- var card = cards[i];
- if (!(card.notificationId in updatedRecentDismissals)) {
- var notificationData = items.notificationsData[card.notificationId];
- var previousVersion = notifications[card.notificationId] &&
- notificationData &&
- notificationData.cardCreateInfo &&
- notificationData.cardCreateInfo.version;
- newNotificationsData[card.notificationId] =
- cardSet.update(card, previousVersion);
- }
- }
+ for (var i = 0; i < cards.length; ++i) {
+ var notificationId = cards[i].notificationId;
+ if (!(notificationId in updatedRecentDismissals) &&
+ notificationId in notifications) {
+ updatedNotifications[notificationId] = true;
+ }
+ }
+
+ // Delete notifications that didn't receive an update.
+ for (var notificationId in notifications) {
+ console.log('parseAndShowNotificationCards-delete-check ' +
+ notificationId);
+ if (!(notificationId in updatedNotifications)) {
+ console.log('parseAndShowNotificationCards-delete ' +
+ notificationId);
+ cardSet.clear(notificationId);
+ }
+ }
+
+ recordEvent(GoogleNowEvent.CARDS_PARSE_SUCCESS);
+
+ // Create/update notifications and store their new properties.
+ var newNotificationsData = {};
+ for (var i = 0; i < cards.length; ++i) {
+ var card = cards[i];
+ if (!(card.notificationId in updatedRecentDismissals)) {
+ var notificationData =
+ items.notificationsData[card.notificationId];
+ var previousVersion = notifications[card.notificationId] &&
+ notificationData &&
+ notificationData.cardCreateInfo &&
+ notificationData.cardCreateInfo.version;
+ newNotificationsData[card.notificationId] =
+ cardSet.update(card, previousVersion);
+ }
+ }
- updateCardsAttempts.start(parsedResponse.next_poll_seconds);
+ updateCardsAttempts.start(parsedResponse.next_poll_seconds);
- storage.set({
- notificationsData: newNotificationsData,
- recentDismissals: updatedRecentDismissals
+ chrome.storage.local.set({
+ notificationsData: newNotificationsData,
+ recentDismissals: updatedRecentDismissals
+ });
+ callback();
+ });
});
- callback();
- });
- });
}
/**
@@ -342,11 +341,11 @@ function removeAllCards() {
// TODO(robliao): Once Google Now clears its own checkbox in the
// notifications center and bug 260376 is fixed, the below clearing
// code is no longer necessary.
- chrome.notifications.getAll(function(notifications) {
+ instrumented.notifications.getAll(function(notifications) {
for (var notificationId in notifications) {
chrome.notifications.clear(notificationId, function() {});
}
- storage.set({notificationsData: {}});
+ chrome.storage.local.set({notificationsData: {}});
});
}
@@ -503,52 +502,53 @@ function requestCardDismissal(
*/
function processPendingDismissals(callbackBoolean) {
tasks.debugSetStepName('processPendingDismissals-storage-get');
- storage.get(['pendingDismissals', 'recentDismissals'], function(items) {
- console.log('processPendingDismissals-storage-get ' +
- JSON.stringify(items));
- items.pendingDismissals = items.pendingDismissals || [];
- items.recentDismissals = items.recentDismissals || {};
-
- var dismissalsChanged = false;
-
- function onFinish(success) {
- if (dismissalsChanged) {
- storage.set({
- pendingDismissals: items.pendingDismissals,
- recentDismissals: items.recentDismissals
- });
- }
- callbackBoolean(success);
- }
-
- function doProcessDismissals() {
- if (items.pendingDismissals.length == 0) {
- dismissalAttempts.stop();
- onFinish(true);
- return;
- }
+ instrumented.storage.local.get(['pendingDismissals', 'recentDismissals'],
+ function(items) {
+ console.log('processPendingDismissals-storage-get ' +
+ JSON.stringify(items));
+ items.pendingDismissals = items.pendingDismissals || [];
+ items.recentDismissals = items.recentDismissals || {};
+
+ var dismissalsChanged = false;
+
+ function onFinish(success) {
+ if (dismissalsChanged) {
+ chrome.storage.local.set({
+ pendingDismissals: items.pendingDismissals,
+ recentDismissals: items.recentDismissals
+ });
+ }
+ callbackBoolean(success);
+ }
- // Send dismissal for the first card, and if successful, repeat
- // recursively with the rest.
- var dismissal = items.pendingDismissals[0];
- requestCardDismissal(
- dismissal.notificationId,
- dismissal.time,
- dismissal.parameters,
- function(done) {
- if (done) {
- dismissalsChanged = true;
- items.pendingDismissals.splice(0, 1);
- items.recentDismissals[dismissal.notificationId] = Date.now();
- doProcessDismissals();
- } else {
- onFinish(false);
- }
- });
- }
+ function doProcessDismissals() {
+ if (items.pendingDismissals.length == 0) {
+ dismissalAttempts.stop();
+ onFinish(true);
+ return;
+ }
+
+ // Send dismissal for the first card, and if successful, repeat
+ // recursively with the rest.
+ var dismissal = items.pendingDismissals[0];
+ requestCardDismissal(
+ dismissal.notificationId,
+ dismissal.time,
+ dismissal.parameters,
+ function(done) {
+ if (done) {
+ dismissalsChanged = true;
+ items.pendingDismissals.splice(0, 1);
+ items.recentDismissals[dismissal.notificationId] = Date.now();
+ doProcessDismissals();
+ } else {
+ onFinish(false);
+ }
+ });
+ }
- doProcessDismissals();
- });
+ doProcessDismissals();
+ });
}
/**
@@ -569,7 +569,7 @@ function retryPendingDismissals() {
* the clicked area from the button action URLs info.
*/
function onNotificationClicked(notificationId, selector) {
- storage.get('notificationsData', function(items) {
+ instrumented.storage.local.get('notificationsData', function(items) {
items.notificationsData = items.notificationsData || {};
var notificationData = items.notificationsData[notificationId];
@@ -590,7 +590,7 @@ function onNotificationClicked(notificationId, selector) {
if (typeof url != 'string')
return;
- chrome.tabs.create({url: url}, function(tab) {
+ instrumented.tabs.create({url: url}, function(tab) {
if (!tab)
chrome.windows.create({url: url});
});
@@ -602,11 +602,11 @@ function onNotificationClicked(notificationId, selector) {
* @param {number} buttonIndex The index of the button which was clicked.
*/
function onToastNotificationClicked(buttonIndex) {
- storage.set({userRespondedToToast: true});
+ chrome.storage.local.set({userRespondedToToast: true});
if (buttonIndex == ToastButtonIndex.YES) {
chrome.metricsPrivate.recordUserAction('GoogleNow.WelcomeToastClickedYes');
- googleGeolocationAccessEnabledPref.set({value: true});
+ chrome.preferencesPrivate.googleGeolocationAccessEnabled.set({value: true});
// The googlegeolocationaccessenabled preference change callback
// will take care of starting the poll for cards.
} else {
@@ -628,7 +628,7 @@ function onNotificationClosed(notificationId, byUser) {
// Even though they only closed the notification without clicking no, treat
// it as though they clicked No anwyay, and don't show the toast again.
chrome.metricsPrivate.recordUserAction('GoogleNow.WelcomeToastDismissed');
- storage.set({userRespondedToToast: true});
+ chrome.storage.local.set({userRespondedToToast: true});
return;
}
@@ -643,21 +643,23 @@ function onNotificationClosed(notificationId, byUser) {
cardSet.clear(notificationId);
tasks.debugSetStepName('onNotificationClosed-storage-get');
- storage.get(['pendingDismissals', 'notificationsData'], function(items) {
- items.pendingDismissals = items.pendingDismissals || [];
- items.notificationsData = items.notificationsData || {};
-
- var notificationData = items.notificationsData[notificationId];
-
- var dismissal = {
- notificationId: notificationId,
- time: Date.now(),
- parameters: notificationData && notificationData.dismissalParameters
- };
- items.pendingDismissals.push(dismissal);
- storage.set({pendingDismissals: items.pendingDismissals});
- processPendingDismissals(function(success) { callback(); });
- });
+ instrumented.storage.local.get(['pendingDismissals', 'notificationsData'],
+ function(items) {
+ items.pendingDismissals = items.pendingDismissals || [];
+ items.notificationsData = items.notificationsData || {};
+
+ var notificationData = items.notificationsData[notificationId];
+
+ var dismissal = {
+ notificationId: notificationId,
+ time: Date.now(),
+ parameters: notificationData && notificationData.dismissalParameters
+ };
+ items.pendingDismissals.push(dismissal);
+ chrome.storage.local.set(
+ {pendingDismissals: items.pendingDismissals});
+ processPendingDismissals(function(success) { callback(); });
+ });
});
}
@@ -731,7 +733,7 @@ function setShouldPollCards(shouldPollCardsRequest, callback) {
function setToastVisible(visibleRequest, callback) {
tasks.debugSetStepName(
'setToastVisible-shouldSetToastVisible-getAllNotifications');
- chrome.notifications.getAll(function(notifications) {
+ instrumented.notifications.getAll(function(notifications) {
// TODO(vadimt): Figure out what to do when notifications are disabled for
// our extension.
notifications = notifications || {};
@@ -780,7 +782,7 @@ function updateRunningState(
// If the user enabled geolocation independently of Google Now,
// the user has implicitly responded to the toast.
// We do not want to show it again.
- storage.set({userRespondedToToast: true});
+ chrome.storage.local.set({userRespondedToToast: true});
}
shouldPollCards = true;
@@ -815,19 +817,24 @@ function onStateChange() {
var signedIn = !!token && !!NOTIFICATION_CARDS_URL;
tasks.debugSetStepName(
'onStateChange-get-googleGeolocationAccessEnabledPref');
- googleGeolocationAccessEnabledPref.get({}, function(prefValue) {
- var geolocationEnabled = !!prefValue.value;
- tasks.debugSetStepName(
- 'onStateChange-get-userRespondedToToast');
- storage.get('userRespondedToToast', function(items) {
- var userRespondedToToast = !!items.userRespondedToToast;
- updateRunningState(
- signedIn,
- geolocationEnabled,
- userRespondedToToast,
- callback);
- });
- });
+ instrumented.
+ preferencesPrivate.
+ googleGeolocationAccessEnabled.
+ get({}, function(prefValue) {
+ var geolocationEnabled = !!prefValue.value;
+ tasks.debugSetStepName(
+ 'onStateChange-get-userRespondedToToast');
+ instrumented.storage.local.get(
+ 'userRespondedToToast',
+ function(items) {
+ var userRespondedToToast = !!items.userRespondedToToast;
+ updateRunningState(
+ signedIn,
+ geolocationEnabled,
+ userRespondedToToast,
+ callback);
+ });
+ });
});
});
}
@@ -850,7 +857,7 @@ function showWelcomeToast() {
priority: 2,
buttons: buttons
};
- chrome.notifications.create(WELCOME_TOAST_NOTIFICATION_ID, options,
+ instrumented.notifications.create(WELCOME_TOAST_NOTIFICATION_ID, options,
function(notificationId) {});
}
@@ -863,21 +870,26 @@ function hideWelcomeToast() {
function() {});
}
-chrome.runtime.onInstalled.addListener(function(details) {
+instrumented.runtime.onInstalled.addListener(function(details) {
console.log('onInstalled ' + JSON.stringify(details));
if (details.reason != 'chrome_update') {
initialize();
}
});
-chrome.runtime.onStartup.addListener(function() {
+instrumented.runtime.onStartup.addListener(function() {
console.log('onStartup');
initialize();
});
-googleGeolocationAccessEnabledPref.onChange.addListener(function(prefValue) {
- console.log('googleGeolocationAccessEnabledPref onChange ' + prefValue.value);
- onStateChange();
+instrumented.
+ preferencesPrivate.
+ googleGeolocationAccessEnabled.
+ onChange.
+ addListener(function(prefValue) {
+ console.log('googleGeolocationAccessEnabled Pref onChange ' +
+ prefValue.value);
+ onStateChange();
});
authenticationManager.addListener(function() {
@@ -885,7 +897,7 @@ authenticationManager.addListener(function() {
onStateChange();
});
-chrome.notifications.onClicked.addListener(
+instrumented.notifications.onClicked.addListener(
function(notificationId) {
chrome.metricsPrivate.recordUserAction('GoogleNow.MessageClicked');
onNotificationClicked(notificationId, function(actionUrls) {
@@ -893,7 +905,7 @@ chrome.notifications.onClicked.addListener(
});
});
-chrome.notifications.onButtonClicked.addListener(
+instrumented.notifications.onButtonClicked.addListener(
function(notificationId, buttonIndex) {
if (notificationId == WELCOME_TOAST_NOTIFICATION_ID) {
onToastNotificationClicked(buttonIndex);
@@ -909,14 +921,14 @@ chrome.notifications.onButtonClicked.addListener(
}
});
-chrome.notifications.onClosed.addListener(onNotificationClosed);
+instrumented.notifications.onClosed.addListener(onNotificationClosed);
-chrome.location.onLocationUpdate.addListener(function(position) {
+instrumented.location.onLocationUpdate.addListener(function(position) {
recordEvent(GoogleNowEvent.LOCATION_UPDATE);
updateNotificationsCards(position);
});
-chrome.omnibox.onInputEntered.addListener(function(text) {
+instrumented.omnibox.onInputEntered.addListener(function(text) {
localStorage['server_url'] = NOTIFICATION_CARDS_URL = text;
initialize();
});
« no previous file with comments | « no previous file | chrome/browser/resources/google_now/background_test_util.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698