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

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

Issue 25114002: Finishing API error processing, and cleanup (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 2 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
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 Utility objects and functions for Google Now extension. 8 * @fileoverview Utility objects and functions for Google Now extension.
9 * Most important entities here: 9 * Most important entities here:
10 * (1) 'wrapper' is a module used to add error handling and other services to 10 * (1) 'wrapper' is a module used to add error handling and other services to
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after
389 * Builds the object to manage tasks (mutually exclusive chains of events). 389 * Builds the object to manage tasks (mutually exclusive chains of events).
390 * @param {function(string, string): boolean} areConflicting Function that 390 * @param {function(string, string): boolean} areConflicting Function that
391 * checks if a new task can't be added to a task queue that contains an 391 * checks if a new task can't be added to a task queue that contains an
392 * existing task. 392 * existing task.
393 * @return {Object} Task manager interface. 393 * @return {Object} Task manager interface.
394 */ 394 */
395 function buildTaskManager(areConflicting) { 395 function buildTaskManager(areConflicting) {
396 /** 396 /**
397 * Queue of scheduled tasks. The first element, if present, corresponds to the 397 * Queue of scheduled tasks. The first element, if present, corresponds to the
398 * currently running task. 398 * currently running task.
399 * @type {Array.<Object.<string, function(function())>>} 399 * @type {Array.<Object.<string, function()>>}
400 */ 400 */
401 var queue = []; 401 var queue = [];
402 402
403 /** 403 /**
404 * Count of unfinished callbacks of the current task. 404 * Count of unfinished callbacks of the current task.
405 * @type {number} 405 * @type {number}
406 */ 406 */
407 var taskPendingCallbackCount = 0; 407 var taskPendingCallbackCount = 0;
408 408
409 /** 409 /**
(...skipping 13 matching lines...) Expand all
423 // Start the oldest queued task, but don't remove it from the queue. 423 // Start the oldest queued task, but don't remove it from the queue.
424 verify( 424 verify(
425 taskPendingCallbackCount == 0, 425 taskPendingCallbackCount == 0,
426 'tasks.startFirst: still have pending task callbacks: ' + 426 'tasks.startFirst: still have pending task callbacks: ' +
427 taskPendingCallbackCount + 427 taskPendingCallbackCount +
428 ', queue = ' + JSON.stringify(queue) + ', ' + 428 ', queue = ' + JSON.stringify(queue) + ', ' +
429 wrapper.debugGetStateString()); 429 wrapper.debugGetStateString());
430 var entry = queue[0]; 430 var entry = queue[0];
431 console.log('Starting task ' + entry.name); 431 console.log('Starting task ' + entry.name);
432 432
433 entry.task(function() {}); // TODO(vadimt): Don't pass parameter. 433 entry.task();
434 434
435 verify(isInTask, 'startFirst: not in task at exit'); 435 verify(isInTask, 'startFirst: not in task at exit');
436 isInTask = false; 436 isInTask = false;
437 if (taskPendingCallbackCount == 0) 437 if (taskPendingCallbackCount == 0)
438 finish(); 438 finish();
439 } 439 }
440 440
441 /** 441 /**
442 * Checks if a new task can be added to the task queue. 442 * Checks if a new task can be added to the task queue.
443 * @param {string} taskName Name of the new task. 443 * @param {string} taskName Name of the new task.
444 * @return {boolean} Whether the new task can be added. 444 * @return {boolean} Whether the new task can be added.
445 */ 445 */
446 function canQueue(taskName) { 446 function canQueue(taskName) {
447 for (var i = 0; i < queue.length; ++i) { 447 for (var i = 0; i < queue.length; ++i) {
448 if (areConflicting(taskName, queue[i].name)) { 448 if (areConflicting(taskName, queue[i].name)) {
449 console.log('Conflict: new=' + taskName + 449 console.log('Conflict: new=' + taskName +
450 ', scheduled=' + queue[i].name); 450 ', scheduled=' + queue[i].name);
451 return false; 451 return false;
452 } 452 }
453 } 453 }
454 454
455 return true; 455 return true;
456 } 456 }
457 457
458 /** 458 /**
459 * Adds a new task. If another task is not running, runs the task immediately. 459 * Adds a new task. If another task is not running, runs the task immediately.
460 * If any task in the queue is not compatible with the task, ignores the new 460 * If any task in the queue is not compatible with the task, ignores the new
461 * task. Otherwise, stores the task for future execution. 461 * task. Otherwise, stores the task for future execution.
462 * @param {string} taskName Name of the task. 462 * @param {string} taskName Name of the task.
463 * @param {function(function())} task Function to run. Takes a callback 463 * @param {function()} task Function to run.
464 * parameter. Call this callback on completion.
465 */ 464 */
466 function add(taskName, task) { 465 function add(taskName, task) {
467 wrapper.checkInWrappedCallback(); 466 wrapper.checkInWrappedCallback();
468 console.log('Adding task ' + taskName); 467 console.log('Adding task ' + taskName);
469 if (!canQueue(taskName)) 468 if (!canQueue(taskName))
470 return; 469 return;
471 470
472 queue.push({name: taskName, task: task}); 471 queue.push({name: taskName, task: task});
473 472
474 if (queue.length == 1) { 473 if (queue.length == 1) {
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
530 finish(); 529 finish();
531 } 530 }
532 } 531 }
533 }; 532 };
534 533
535 wrapper.registerWrapperPluginFactory(function() { 534 wrapper.registerWrapperPluginFactory(function() {
536 return new TasksWrapperPlugin(); 535 return new TasksWrapperPlugin();
537 }); 536 });
538 537
539 return { 538 return {
540 add: add, 539 add: add
541 debugSetStepName: function() {} // TODO(vadimt): remove
542 }; 540 };
543 } 541 }
544 542
545 /** 543 /**
546 * Builds an object to manage retrying activities with exponential backoff. 544 * Builds an object to manage retrying activities with exponential backoff.
547 * @param {string} name Name of this attempt manager. 545 * @param {string} name Name of this attempt manager.
548 * @param {function()} attempt Activity that the manager retries until it 546 * @param {function()} attempt Activity that the manager retries until it
549 * calls 'stop' method. 547 * calls 'stop' method.
550 * @param {number} initialDelaySeconds Default first delay until first retry. 548 * @param {number} initialDelaySeconds Default first delay until first retry.
551 * @param {number} maximumDelaySeconds Maximum delay between retries. 549 * @param {number} maximumDelaySeconds Maximum delay between retries.
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
734 // Poll for the sign in state every hour. 732 // Poll for the sign in state every hour.
735 // One hour is just an arbitrary amount of time chosen. 733 // One hour is just an arbitrary amount of time chosen.
736 chrome.alarms.create(alarmName, {periodInMinutes: 60}); 734 chrome.alarms.create(alarmName, {periodInMinutes: 60});
737 735
738 return { 736 return {
739 addListener: addListener, 737 addListener: addListener,
740 isSignedIn: isSignedIn, 738 isSignedIn: isSignedIn,
741 removeToken: removeToken 739 removeToken: removeToken
742 }; 740 };
743 } 741 }
OLDNEW
« no previous file with comments | « chrome/browser/resources/google_now/cards.js ('k') | chrome/browser/resources/google_now/utility_unittest.gtestjs » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698