merge in Queue fixes

This commit is contained in:
Rajan Agaskar & Ryan Dy
2009-10-13 14:22:47 -07:00
parent 31bb686fd5
commit 3459697cb4
17 changed files with 724 additions and 694 deletions

View File

@@ -523,7 +523,7 @@ jasmine.version_= {
"major": 0,
"minor": 9,
"build": 0,
"revision": 1254807302
"revision": 1255468502
};
/**
* @namespace
@@ -1483,7 +1483,7 @@ jasmine.Queue = function(env) {
this.offset = 0;
};
jasmine.Queue.prototype.addBefore = function (block) {
jasmine.Queue.prototype.addBefore = function(block) {
this.blocks.unshift(block);
};
@@ -1491,59 +1491,74 @@ jasmine.Queue.prototype.add = function(block) {
this.blocks.push(block);
};
jasmine.Queue.prototype.insertNext = function (block) {
jasmine.Queue.prototype.insertNext = function(block) {
this.blocks.splice((this.index + this.offset + 1), 0, block);
this.offset++;
};
jasmine.Queue.prototype.start = function(onComplete) {
var self = this;
self.running = true;
self.onComplete = onComplete;
if (self.blocks[0]) {
self.blocks[0].execute(function () {
self._next();
});
} else {
self.finish();
}
this.running = true;
this.onComplete = onComplete;
this.next_();
};
jasmine.Queue.prototype.isRunning = function () {
jasmine.Queue.prototype.isRunning = function() {
return this.running;
};
jasmine.Queue.prototype._next = function () {
jasmine.Queue.LOOP_DONT_RECURSE = true;
jasmine.Queue.prototype.next_ = function() {
var self = this;
var doNext = function () {
self.offset = 0;
self.index++;
var goAgain = true;
while (goAgain) {
goAgain = false;
if (self.index < self.blocks.length) {
self.blocks[self.index].execute(function () {
self._next();
});
var calledSynchronously = true;
var completedSynchronously = false;
var onComplete = function () {
if (jasmine.Queue.LOOP_DONT_RECURSE && calledSynchronously) {
completedSynchronously = true;
return;
}
self.offset = 0;
self.index++;
var now = new Date().getTime();
if (self.env.updateInterval && now - self.env.lastUpdate > self.env.updateInterval) {
self.env.lastUpdate = now;
self.env.setTimeout(function() {
self.next_();
}, 0);
} else {
if (jasmine.Queue.LOOP_DONT_RECURSE && completedSynchronously) {
goAgain = true;
} else {
self.next_();
}
}
};
self.blocks[self.index].execute(onComplete);
calledSynchronously = false;
if (completedSynchronously) {
onComplete();
}
} else {
self.finish();
self.running = false;
if (self.onComplete) {
self.onComplete();
}
}
};
var now = new Date().getTime();
if (this.env.updateInterval && now - this.env.lastUpdate > this.env.updateInterval) {
this.env.lastUpdate = now;
this.env.setTimeout(doNext, 0);
} else {
doNext();
}
};
jasmine.Queue.prototype.finish = function () {
this.running = false;
if (this.onComplete) {
this.onComplete();
}
};
jasmine.Queue.prototype.results = function () {
jasmine.Queue.prototype.results = function() {
var results = new jasmine.NestedResults();
for (var i = 0; i < this.blocks.length; i++) {
if (this.blocks[i].results) {