| Index: sdk/lib/_internal/js_runtime/lib/preambles/d8.js
|
| diff --git a/sdk/lib/_internal/js_runtime/lib/preambles/d8.js b/sdk/lib/_internal/js_runtime/lib/preambles/d8.js
|
| index ca9093756e46bee93a6cdc15d041a9c7a6811376..00f2485248e46a10871650dad74ae93d801b0ae9 100644
|
| --- a/sdk/lib/_internal/js_runtime/lib/preambles/d8.js
|
| +++ b/sdk/lib/_internal/js_runtime/lib/preambles/d8.js
|
| @@ -15,7 +15,6 @@ if (typeof global != "undefined") self = global; // Node.js.
|
| "use strict"; // Should be first statement of this function.
|
|
|
| // Location (Uri.base)
|
| -
|
| var baseUri = 'org-dartlang-d8-preamble:///mock/uri/base/';
|
| if (typeof process != "undefined" &&
|
| typeof process.cwd == "function") {
|
| @@ -78,7 +77,7 @@ if (typeof global != "undefined") self = global; // Node.js.
|
| var id = timerIdCounter++;
|
| f.$timerId = id;
|
| timerIds[id] = f;
|
| - if (ms == 0) {
|
| + if (ms == 0 && !isNextTimerDue()) {
|
| zeroTimerQueue.push(f);
|
| } else {
|
| addDelayedTimer(f, ms);
|
| @@ -127,7 +126,10 @@ if (typeof global != "undefined") self = global; // Node.js.
|
| var originalDate = Date;
|
| var originalNow = originalDate.now;
|
| function advanceTimeTo(time) {
|
| - timeOffset = time - originalNow();
|
| + var now = originalNow();
|
| + if (timeOffset < time - now) {
|
| + timeOffset = time - now;
|
| + }
|
| }
|
| function installMockDate() {
|
| var NewDate = function Date(Y, M, D, h, m, s, ms) {
|
| @@ -172,6 +174,12 @@ if (typeof global != "undefined") self = global; // Node.js.
|
| }
|
| }
|
|
|
| + function isNextTimerDue() {
|
| + if (timerHeap.length == 0) return false;
|
| + var head = timerHeap[0];
|
| + return head[0] < originalNow() + timeOffset;
|
| + }
|
| +
|
| function nextDelayedTimerQueue() {
|
| if (timerHeap.length == 0) return null;
|
| var result = timerHeap[0];
|
| @@ -261,7 +269,7 @@ if (typeof global != "undefined") self = global; // Node.js.
|
|
|
| // Global properties. "self" refers to the global object, so adding a
|
| // property to "self" defines a global variable.
|
| - self.self = self
|
| + self.self = self;
|
| self.dartMainRunner = function(main, args) {
|
| // Initialize.
|
| var action = function() { main(args); }
|
|
|