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

Side by Side Diff: chrome/browser/resources/file_manager/js/metadata/function_sequence.js

Issue 12255028: Revert 182402 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 7 years, 10 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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 /** 5 /**
6 * @constructor 6 * @constructor
7 * @class FunctionSequence to invoke steps in sequence 7 * @class FunctionSequence to invoke steps in sequence
8 * 8 *
9 * @param {string} name //TODO(JSDOC).
10 * @param {Array} steps array of functions to invoke in sequence. 9 * @param {Array} steps array of functions to invoke in sequence.
11 * @param {Object} logger logger. 10 * @param {Object} logger logger.
12 * @param {Function} callback callback to invoke on success. 11 * @param {Function} callback callback to invoke on success.
13 * @param {Function} failureCallback callback to invoke on failure. 12 * @param {Function} failureCallback callback to invoke on failure.
14 */ 13 */
15 function FunctionSequence(name, steps, logger, callback, failureCallback) { 14 function FunctionSequence(name, steps, logger, callback, failureCallback) {
16 // Private variables hidden in closure 15 // Private variables hidden in closure
17 this.currentStepIdx_ = -1; 16 this.currentStepIdx_ = -1;
18 this.failed_ = false; 17 this.failed_ = false;
19 this.steps_ = steps; 18 this.steps_ = steps;
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 this.callback_(); 75 this.callback_();
77 } 76 }
78 }; 77 };
79 78
80 /** 79 /**
81 * Advances to next step. 80 * Advances to next step.
82 * This method should not be used externally. In external 81 * This method should not be used externally. In external
83 * cases should be used nextStep function, which is defined in closure and thus 82 * cases should be used nextStep function, which is defined in closure and thus
84 * has access to internal variables of functionsequence. 83 * has access to internal variables of functionsequence.
85 * @private 84 * @private
86 * @param {...} var_args //TODO(JSDOC).
87 */ 85 */
88 FunctionSequence.prototype.nextStep_ = function(var_args) { 86 FunctionSequence.prototype.nextStep_ = function(var_args) {
89 if (this.failed_) { 87 if (this.failed_) {
90 return; 88 return;
91 } 89 }
92 90
93 if (++this.currentStepIdx_ >= this.steps_.length) { 91 if (++this.currentStepIdx_ >= this.steps_.length) {
94 this.logger.vlog('Sequence ended'); 92 this.logger.vlog('Sequence ended');
95 this.callback_.apply(this, arguments); 93 this.callback_.apply(this, arguments);
96 } else { 94 } else {
97 this.logger.vlog('Attempting to start step [' + 95 this.logger.vlog('Attempting to start step [' +
98 this.steps_[this.currentStepIdx_].name + 96 this.steps_[this.currentStepIdx_].name +
99 ']'); 97 ']');
100 try { 98 try {
101 this.steps_[this.currentStepIdx_].apply(this, arguments); 99 this.steps_[this.currentStepIdx_].apply(this, arguments);
102 } catch (e) { 100 } catch (e) {
103 this.onError(e.toString()); 101 this.onError(e.toString());
104 } 102 }
105 } 103 }
106 }; 104 };
107 105
108 /** 106 /**
109 * This function should be called only once on start, so start sequence pipeline 107 * This function should be called only once on start, so start sequence pipeline
110 * @param {...} var_args //TODO(JSDOC).
111 */
112 */ 108 */
113 FunctionSequence.prototype.start = function(var_args) { 109 FunctionSequence.prototype.start = function(var_args) {
114 if (this.started) { 110 if (this.started) {
115 throw new Error('"Start" method of FunctionSequence was called twice'); 111 throw new Error('"Start" method of FunctionSequence was called twice');
116 } 112 }
117 113
118 this.logger.log('Starting sequence with ' + arguments.length + ' arguments'); 114 this.logger.log('Starting sequence with ' + arguments.length + ' arguments');
119 115
120 this.started = true; 116 this.started = true;
121 this.nextStep.apply(this, arguments); 117 this.nextStep.apply(this, arguments);
122 }; 118 };
123 119
124 /** 120 /**
125 * Add Function object mimics to FunctionSequence 121 * Add Function object mimics to FunctionSequence
126 * @private 122 * @private
127 * @param {*} obj //TODO(JSDOC).
128 * @param {Array.*} args /TODO(JSDOC).
129 */ 123 */
130 FunctionSequence.prototype.apply_ = function(obj, args) { 124 FunctionSequence.prototype.apply_ = function(obj, args) {
131 this.start.apply(this, args); 125 this.start.apply(this, args);
132 }; 126 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698