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

Side by Side Diff: chrome/browser/resources/google_now/background.js

Issue 17894010: Receiving and sending dismissal parameters (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 6 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
265 ', ERROR=' + errorMessage); 265 ', ERROR=' + errorMessage);
266 } 266 }
267 }); 267 });
268 } catch (error) { 268 } catch (error) {
269 console.error('Error in notifications.update: ' + error); 269 console.error('Error in notifications.update: ' + error);
270 } 270 }
271 } 271 }
272 272
273 notificationsData[card.notificationId] = { 273 notificationsData[card.notificationId] = {
274 actionUrls: card.actionUrls, 274 actionUrls: card.actionUrls,
275 version: card.version 275 version: card.version,
276 dismissalParameters: card.dismissal
276 }; 277 };
277 } 278 }
278 279
279 /** 280 /**
280 * Parses JSON response from the notification server, show notifications and 281 * Parses JSON response from the notification server, show notifications and
281 * schedule next update. 282 * schedule next update.
282 * @param {string} response Server response. 283 * @param {string} response Server response.
283 * @param {function()} callback Completion callback. 284 * @param {function()} callback Completion callback.
284 */ 285 */
285 function parseAndShowNotificationCards(response, callback) { 286 function parseAndShowNotificationCards(response, callback) {
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 }); 458 });
458 }); 459 });
459 }); 460 });
460 } 461 }
461 462
462 /** 463 /**
463 * Sends a server request to dismiss a card. 464 * Sends a server request to dismiss a card.
464 * @param {string} notificationId Unique identifier of the card. 465 * @param {string} notificationId Unique identifier of the card.
465 * @param {number} dismissalTimeMs Time of the user's dismissal of the card in 466 * @param {number} dismissalTimeMs Time of the user's dismissal of the card in
466 * milliseconds since epoch. 467 * milliseconds since epoch.
468 * @param {Object} dismissalParameters Dismissal parameters.
467 * @param {function(boolean)} callbackBoolean Completion callback with 'success' 469 * @param {function(boolean)} callbackBoolean Completion callback with 'success'
468 * parameter. 470 * parameter.
469 */ 471 */
470 function requestCardDismissal( 472 function requestCardDismissal(
471 notificationId, dismissalTimeMs, callbackBoolean) { 473 notificationId, dismissalTimeMs, dismissalParameters, callbackBoolean) {
472 console.log('requestDismissingCard ' + notificationId + ' from ' + 474 console.log('requestDismissingCard ' + notificationId + ' from ' +
473 NOTIFICATION_CARDS_URL); 475 NOTIFICATION_CARDS_URL);
474 recordEvent(DiagnosticEvent.DISMISS_REQUEST_TOTAL); 476 recordEvent(DiagnosticEvent.DISMISS_REQUEST_TOTAL);
475 // Send a dismiss request to the server. 477 // Send a dismiss request to the server.
476 var requestParameters = 'id=' + notificationId + 478 var requestParameters =
rgustafson 2013/06/27 02:32:40 I wanted to just send a json object in the post bo
vadimt 2013/06/27 19:52:56 Done.
477 '&dismissalAge=' + (Date.now() - dismissalTimeMs); 479 'id=' + notificationId +
480 '&age=' + (Date.now() - dismissalTimeMs) +
481 '&dismissal=' + escape(JSON.stringify(dismissalParameters));
478 var request = buildServerRequest('dismiss'); 482 var request = buildServerRequest('dismiss');
479 request.onloadend = function(event) { 483 request.onloadend = function(event) {
480 console.log('requestDismissingCard-onloadend ' + request.status); 484 console.log('requestDismissingCard-onloadend ' + request.status);
481 if (request.status == HTTP_OK) 485 if (request.status == HTTP_OK)
482 recordEvent(DiagnosticEvent.DISMISS_REQUEST_SUCCESS); 486 recordEvent(DiagnosticEvent.DISMISS_REQUEST_SUCCESS);
483 487
484 callbackBoolean(request.status == HTTP_OK); 488 callbackBoolean(request.status == HTTP_OK);
485 }; 489 };
486 490
487 setAuthorization(request, function(success) { 491 setAuthorization(request, function(success) {
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
522 function doProcessDismissals() { 526 function doProcessDismissals() {
523 if (items.pendingDismissals.length == 0) { 527 if (items.pendingDismissals.length == 0) {
524 dismissalAttempts.stop(); 528 dismissalAttempts.stop();
525 onFinish(true); 529 onFinish(true);
526 return; 530 return;
527 } 531 }
528 532
529 // Send dismissal for the first card, and if successful, repeat 533 // Send dismissal for the first card, and if successful, repeat
530 // recursively with the rest. 534 // recursively with the rest.
531 var dismissal = items.pendingDismissals[0]; 535 var dismissal = items.pendingDismissals[0];
532 requestCardDismissal( 536 requestCardDismissal(dismissal.notificationId,
533 dismissal.notificationId, dismissal.time, function(success) { 537 dismissal.time,
538 dismissal.parameters,
539 function(success) {
534 if (success) { 540 if (success) {
535 dismissalsChanged = true; 541 dismissalsChanged = true;
536 items.pendingDismissals.splice(0, 1); 542 items.pendingDismissals.splice(0, 1);
537 items.recentDismissals[dismissal.notificationId] = Date.now(); 543 items.recentDismissals[dismissal.notificationId] = Date.now();
538 doProcessDismissals(); 544 doProcessDismissals();
539 } else { 545 } else {
540 onFinish(false); 546 onFinish(false);
541 } 547 }
542 }); 548 });
543 } 549 }
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
636 642
637 tasks.add(DISMISS_CARD_TASK_NAME, function(callback) { 643 tasks.add(DISMISS_CARD_TASK_NAME, function(callback) {
638 dismissalAttempts.start(); 644 dismissalAttempts.start();
639 645
640 // Deleting the notification in case it was re-added while this task was 646 // Deleting the notification in case it was re-added while this task was
641 // scheduled, waiting for execution. 647 // scheduled, waiting for execution.
642 chrome.notifications.clear( 648 chrome.notifications.clear(
643 notificationId, 649 notificationId,
644 function() {}); 650 function() {});
645 651
646 tasks.debugSetStepName('onNotificationClosed-get-pendingDismissals'); 652 tasks.debugSetStepName('onNotificationClosed-storage-get');
647 storage.get('pendingDismissals', function(items) { 653 storage.get(['pendingDismissals', 'notificationsData'], function(items) {
648 items.pendingDismissals = items.pendingDismissals || []; 654 items.pendingDismissals = items.pendingDismissals || [];
655 items.notificationsData = items.notificationsData || {};
656
657 var notificationData = items.notificationsData[notificationId];
649 658
650 var dismissal = { 659 var dismissal = {
651 notificationId: notificationId, 660 notificationId: notificationId,
652 time: Date.now() 661 time: Date.now(),
662 parameters: notificationData && notificationData.dismissalParameters
653 }; 663 };
654 items.pendingDismissals.push(dismissal); 664 items.pendingDismissals.push(dismissal);
655 storage.set({pendingDismissals: items.pendingDismissals}); 665 storage.set({pendingDismissals: items.pendingDismissals});
656 processPendingDismissals(function(success) { callback(); }); 666 processPendingDismissals(function(success) { callback(); });
657 }); 667 });
658 }); 668 });
659 } 669 }
660 670
661 /** 671 /**
662 * Initializes the polling system to start monitoring location and fetching 672 * Initializes the polling system to start monitoring location and fetching
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
749 759
750 chrome.location.onLocationUpdate.addListener(function(position) { 760 chrome.location.onLocationUpdate.addListener(function(position) {
751 recordEvent(DiagnosticEvent.LOCATION_UPDATE); 761 recordEvent(DiagnosticEvent.LOCATION_UPDATE);
752 updateNotificationsCards(position); 762 updateNotificationsCards(position);
753 }); 763 });
754 764
755 chrome.omnibox.onInputEntered.addListener(function(text) { 765 chrome.omnibox.onInputEntered.addListener(function(text) {
756 localStorage['server_url'] = NOTIFICATION_CARDS_URL = text; 766 localStorage['server_url'] = NOTIFICATION_CARDS_URL = text;
757 initialize(); 767 initialize();
758 }); 768 });
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698