| 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 7dca5fef50d265b0c500000c0cd5d382edc207e0..a51f4326b0df9274383a4e02280cd7e862da4efc 100644
|
| --- a/chrome/browser/resources/google_now/background.js
|
| +++ b/chrome/browser/resources/google_now/background.js
|
| @@ -650,12 +650,8 @@ function requestCards() {
|
| updateCardsAttempts.isRunning(function(running) {
|
| if (running) {
|
| updateCardsAttempts.planForNext(function() {
|
| - processPendingDismissals(function(success) {
|
| - if (success) {
|
| - // The cards are requested only if there are no unsent dismissals.
|
| - requestNotificationCards();
|
| - }
|
| - });
|
| + // The cards are requested only if there are no unsent dismissals.
|
| + processPendingDismissals().then(requestNotificationCards);
|
| });
|
| }
|
| });
|
| @@ -669,11 +665,10 @@ function requestCards() {
|
| * @param {number} dismissalTimeMs Time of the user's dismissal of the card in
|
| * milliseconds since epoch.
|
| * @param {DismissalData} dismissalData Data to build a dismissal request.
|
| - * @param {function(boolean)} callbackBoolean Completion callback with 'done'
|
| - * parameter.
|
| + * @return {Promise} A promise to request the card dismissal, rejects on error.
|
| */
|
| function requestCardDismissal(
|
| - chromeNotificationId, dismissalTimeMs, dismissalData, callbackBoolean) {
|
| + chromeNotificationId, dismissalTimeMs, dismissalData) {
|
| console.log('requestDismissingCard ' + chromeNotificationId +
|
| ' from ' + NOTIFICATION_CARDS_URL +
|
| ', dismissalData=' + JSON.stringify(dismissalData));
|
| @@ -697,7 +692,7 @@ function requestCardDismissal(
|
|
|
| console.log('requestCardDismissal: requestParameters=' + requestParameters);
|
|
|
| - requestFromServer('DELETE', requestParameters).then(function(request) {
|
| + return requestFromServer('DELETE', requestParameters).then(function(request) {
|
| console.log('requestDismissingCard-onloadend ' + request.status);
|
| if (request.status == HTTP_NOCONTENT)
|
| recordEvent(GoogleNowEvent.DISMISS_REQUEST_SUCCESS);
|
| @@ -707,19 +702,17 @@ function requestCardDismissal(
|
| var done = request.status == HTTP_NOCONTENT ||
|
| request.status == HTTP_BAD_REQUEST ||
|
| request.status == HTTP_METHOD_NOT_ALLOWED;
|
| - callbackBoolean(done);
|
| - }).catch(function() {
|
| - callbackBoolean(false);
|
| + return done ? Promise.resolve() : Promise.reject();
|
| });
|
| }
|
|
|
| /**
|
| * Tries to send dismiss requests for all pending dismissals.
|
| - * @param {function(boolean)} callbackBoolean Completion callback with 'success'
|
| - * parameter. Success means that no pending dismissals are left.
|
| + * @return {Promise} A promise to process the pending dismissals.
|
| + * The promise is rejected if a problem was encountered.
|
| */
|
| -function processPendingDismissals(callbackBoolean) {
|
| - fillFromChromeLocalStorage({
|
| +function processPendingDismissals() {
|
| + return fillFromChromeLocalStorage({
|
| /** @type {Array.<PendingDismissal>} */
|
| pendingDismissals: [],
|
| /** @type {Object.<NotificationId, number>} */
|
| @@ -737,39 +730,34 @@ function processPendingDismissals(callbackBoolean) {
|
| recentDismissals: items.recentDismissals
|
| });
|
| }
|
| - callbackBoolean(success);
|
| + return success ? Promise.resolve() : Promise.reject();
|
| }
|
|
|
| function doProcessDismissals() {
|
| if (items.pendingDismissals.length == 0) {
|
| dismissalAttempts.stop();
|
| - onFinish(true);
|
| - return;
|
| + return onFinish(true);
|
| }
|
|
|
| // Send dismissal for the first card, and if successful, repeat
|
| // recursively with the rest.
|
| /** @type {PendingDismissal} */
|
| var dismissal = items.pendingDismissals[0];
|
| - requestCardDismissal(
|
| + return requestCardDismissal(
|
| dismissal.chromeNotificationId,
|
| dismissal.time,
|
| - dismissal.dismissalData,
|
| - function(done) {
|
| - if (done) {
|
| - dismissalsChanged = true;
|
| - items.pendingDismissals.splice(0, 1);
|
| - items.recentDismissals[
|
| - dismissal.dismissalData.notificationId] =
|
| - Date.now();
|
| - doProcessDismissals();
|
| - } else {
|
| - onFinish(false);
|
| - }
|
| + dismissal.dismissalData).then(function() {
|
| + dismissalsChanged = true;
|
| + items.pendingDismissals.splice(0, 1);
|
| + items.recentDismissals[dismissal.dismissalData.notificationId] =
|
| + Date.now();
|
| + return doProcessDismissals();
|
| + }).catch(function() {
|
| + return onFinish(false);
|
| });
|
| }
|
|
|
| - doProcessDismissals();
|
| + return doProcessDismissals();
|
| });
|
| }
|
|
|
| @@ -779,7 +767,7 @@ function processPendingDismissals(callbackBoolean) {
|
| function retryPendingDismissals() {
|
| tasks.add(RETRY_DISMISS_TASK_NAME, function() {
|
| dismissalAttempts.planForNext(function() {
|
| - processPendingDismissals(function(success) {});
|
| + processPendingDismissals();
|
| });
|
| });
|
| }
|
| @@ -876,7 +864,7 @@ function onNotificationClosed(chromeNotificationId, byUser) {
|
|
|
| chrome.storage.local.set(items);
|
|
|
| - processPendingDismissals(function(success) {});
|
| + processPendingDismissals();
|
| });
|
| });
|
| }
|
|
|