@qooxdoo/framework
Version:
The JS Framework for Coders
106 lines (85 loc) • 2.09 kB
JavaScript
qx.Bootstrap.define("qx.test.io.part.MockPackage",
{
construct : function(id, delay, error, readyState, useClosure)
{
this.id = id;
this.delay = delay || 0;
this.error = !!error;
this.readyState = readyState || "initialized";
this.useClosure = !!useClosure;
},
members :
{
getReadyState : function() {
return this.readyState;
},
getId : function() {
return this.id;
},
load : function(notifyPackageResult, self)
{
var pkg = this;
this._loadWithClosure = false;
pkg.readyState = "loading";
setTimeout(function()
{
if (pkg.error)
{
pkg.readyState = "error";
}
else
{
if (pkg.useClosure)
{
qx.Part.$$notifyLoad(pkg.id, function() {
qx.test.Part.LOAD_ORDER.push(pkg.id);
});
}
else
{
qx.test.Part.LOAD_ORDER.push(pkg.id);
}
pkg.readyState = "complete";
}
notifyPackageResult.call(self, pkg);
}, pkg.delay);
},
saveClosure : function(closure)
{
if (this.readyState == "error") {
return;
}
if (!this._loadWithClosure) {
this.execute();
} else {
this.__readyState = "cached";
this.__notifyPackageResult(this);
}
},
execute : function() {
qx.test.Part.LOAD_ORDER.push(this.id);
},
loadClosure : function(notifyPackageResult, self)
{
var pkg = this;
this._loadWithClosure = true;
this.__notifyPackageResult = qx.Bootstrap.bind(notifyPackageResult, self);
pkg.readyState = "loading";
setTimeout(function()
{
if (pkg.error)
{
pkg.readyState = "error";
}
else
{
qx.Part.$$notifyLoad(pkg.id, function() {
qx.test.Part.LOAD_ORDER.push(pkg.id);
});
pkg.readyState = "cached";
}
notifyPackageResult.call(self, pkg);
}, pkg.delay);
}
}
});