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

Unified Diff: third_party/google_input_tools/third_party/closure_library/closure/goog/timer/timer.js

Issue 1257313003: Update Google Input Tools (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Free up grd resources. Created 5 years, 5 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
Index: third_party/google_input_tools/third_party/closure_library/closure/goog/timer/timer.js
diff --git a/third_party/google_input_tools/third_party/closure_library/closure/goog/timer/timer.js b/third_party/google_input_tools/third_party/closure_library/closure/goog/timer/timer.js
index ccee170d00cc3cc79bbf58d1836e2517bf0e7cc1..19a26b680705ae8e832afc5e77d591f917cb17ab 100644
--- a/third_party/google_input_tools/third_party/closure_library/closure/goog/timer/timer.js
+++ b/third_party/google_input_tools/third_party/closure_library/closure/goog/timer/timer.js
@@ -21,6 +21,7 @@
goog.provide('goog.Timer');
+goog.require('goog.Promise');
goog.require('goog.events.EventTarget');
@@ -91,6 +92,17 @@ goog.Timer.MAX_TIMEOUT_ = 2147483647;
/**
+ * A timer ID that cannot be returned by any known implmentation of
+ * Window.setTimeout. Passing this value to window.clearTimeout should
+ * therefore be a no-op.
+ *
+ * @const {number}
+ * @private
+ */
+goog.Timer.INVALID_TIMEOUT_ID_ = -1;
+
+
+/**
* Whether this timer is enabled
* @type {boolean}
*/
@@ -275,7 +287,7 @@ goog.Timer.callOnce = function(listener, opt_delay, opt_handler) {
// Timeouts greater than MAX_INT return immediately due to integer
// overflow in many browsers. Since MAX_INT is 24.8 days, just don't
// schedule anything at all.
- return -1;
+ return goog.Timer.INVALID_TIMEOUT_ID_;
} else {
return goog.Timer.defaultTimerObject.setTimeout(
listener, opt_delay || 0);
@@ -290,3 +302,28 @@ goog.Timer.callOnce = function(listener, opt_delay, opt_handler) {
goog.Timer.clear = function(timerId) {
goog.Timer.defaultTimerObject.clearTimeout(timerId);
};
+
+
+/**
+ * @param {number} delay Milliseconds to wait.
+ * @param {(RESULT|goog.Thenable<RESULT>|Thenable)=} opt_result The value
+ * with which the promise will be resolved.
+ * @return {!goog.Promise<RESULT>} A promise that will be resolved after
+ * the specified delay, unless it is canceled first.
+ * @template RESULT
+ */
+goog.Timer.promise = function(delay, opt_result) {
+ var timerKey = null;
+ return new goog.Promise(function(resolve, reject) {
+ timerKey = goog.Timer.callOnce(function() {
+ resolve(opt_result);
+ }, delay);
+ if (timerKey == goog.Timer.INVALID_TIMEOUT_ID_) {
+ reject(new Error('Failed to schedule timer.'));
+ }
+ }).thenCatch(function(error) {
+ // Clear the timer. The most likely reason is "cancel" signal.
+ goog.Timer.clear(timerKey);
+ throw error;
+ });
+};

Powered by Google App Engine
This is Rietveld 408576698