mirror of https://github.com/axmolengine/axmol.git
204 lines
6.0 KiB
JavaScript
204 lines
6.0 KiB
JavaScript
/*
|
|
* Copyright (c) 2013-2014 Chukong Technologies Inc.
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
* of this software and associated documentation files (the "Software"), to deal
|
|
* in the Software without restriction, including without limitation the rights
|
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
* copies of the Software, and to permit persons to whom the Software is
|
|
* furnished to do so, subject to the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice shall be included in
|
|
* all copies or substantial portions of the Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
|
* THE SOFTWARE.
|
|
*/
|
|
|
|
let promise = null;
|
|
var globalDebuggee = null;
|
|
|
|
var gTestGlobals = [];
|
|
|
|
|
|
// A mock tab list, for use by tests. This simply presents each global in
|
|
// gTestGlobals as a tab, and the list is fixed: it never calls its
|
|
// onListChanged handler.
|
|
//
|
|
// As implemented now, we consult gTestGlobals when we're constructed, not
|
|
// when we're iterated over, so tests have to add their globals before the
|
|
// root actor is created.
|
|
function TestTabList(aConnection) {
|
|
this.conn = aConnection;
|
|
|
|
// An array of actors for each global added with
|
|
// DebuggerServer.addTestGlobal.
|
|
this._tabActors = [];
|
|
|
|
// A pool mapping those actors' names to the actors.
|
|
this._tabActorPool = new ActorPool(aConnection);
|
|
|
|
for (let global of gTestGlobals) {
|
|
let actor = new TestTabActor(aConnection, global);
|
|
actor.selected = false;
|
|
this._tabActors.push(actor);
|
|
this._tabActorPool.addActor(actor);
|
|
}
|
|
if (this._tabActors.length > 0) {
|
|
this._tabActors[0].selected = true;
|
|
}
|
|
|
|
aConnection.addActorPool(this._tabActorPool);
|
|
}
|
|
|
|
TestTabList.prototype = {
|
|
constructor: TestTabList,
|
|
getList: function () {
|
|
return promise.resolve([tabActor for (tabActor of this._tabActors)]);
|
|
}
|
|
};
|
|
|
|
function createRootActor(aConnection)
|
|
{
|
|
let root = new RootActor(aConnection,
|
|
{ tabList: new TestTabList(aConnection) });
|
|
root.applicationType = "xpcshell-tests";
|
|
return root;
|
|
}
|
|
|
|
function TestTabActor(aConnection, aGlobal)
|
|
{
|
|
this.conn = aConnection;
|
|
this._global = aGlobal;
|
|
this._threadActor = new ThreadActor(this, this._global);
|
|
this.conn.addActor(this._threadActor);
|
|
this._attached = false;
|
|
this._extraActors = {};
|
|
}
|
|
|
|
TestTabActor.prototype = {
|
|
constructor: TestTabActor,
|
|
actorPrefix: "TestTabActor",
|
|
|
|
get window() {
|
|
return { wrappedJSObject: this._global };
|
|
},
|
|
|
|
form: function() {
|
|
let response = { actor: this.actorID, title: "Hello Cocos2d-X JSB", url: "http://cocos2d-x.org" };
|
|
|
|
// Walk over tab actors added by extensions and add them to a new ActorPool.
|
|
let actorPool = new ActorPool(this.conn);
|
|
// this._createExtraActors(DebuggerServer.tabActorFactories, actorPool);
|
|
if (!actorPool.isEmpty()) {
|
|
this._tabActorPool = actorPool;
|
|
this.conn.addActorPool(this._tabActorPool);
|
|
}
|
|
|
|
// this._appendExtraActors(response);
|
|
|
|
return response;
|
|
},
|
|
|
|
onAttach: function(aRequest) {
|
|
this._attached = true;
|
|
|
|
let response = { type: "tabAttached", threadActor: this._threadActor.actorID };
|
|
// this._appendExtraActors(response);
|
|
|
|
return response;
|
|
},
|
|
|
|
onDetach: function(aRequest) {
|
|
if (!this._attached) {
|
|
return { "error":"wrongState" };
|
|
}
|
|
return { type: "detached" };
|
|
},
|
|
|
|
/* Support for DebuggerServer.addTabActor. */
|
|
// _createExtraActors: CommonCreateExtraActors,
|
|
// _appendExtraActors: CommonAppendExtraActors,
|
|
|
|
// Hooks for use by TestTabActors.
|
|
addToParentPool: function(aActor) {
|
|
this.conn.addActor(aActor);
|
|
},
|
|
|
|
removeFromParentPool: function(aActor) {
|
|
this.conn.removeActor(aActor);
|
|
}
|
|
};
|
|
|
|
TestTabActor.prototype.requestTypes = {
|
|
"attach": TestTabActor.prototype.onAttach,
|
|
"detach": TestTabActor.prototype.onDetach
|
|
};
|
|
|
|
this.processInput = function (inputstr) {
|
|
if (!inputstr) {
|
|
return;
|
|
}
|
|
|
|
if (inputstr === "connected")
|
|
{
|
|
DebuggerServer.createRootActor = (conn => {
|
|
return new RootActor(conn, { tabList: new TestTabList(conn) });
|
|
});
|
|
DebuggerServer.init(() => true);
|
|
DebuggerServer.openListener(5086);
|
|
if (debuggerServer && debuggerServer.onSocketAccepted)
|
|
{
|
|
var aTransport = {
|
|
host: "127.0.0.1",
|
|
port: 5086,
|
|
openInputStream: function() {
|
|
return {
|
|
close: function(){}
|
|
};
|
|
},
|
|
openOutputStream: function() {
|
|
return {
|
|
close: function(){},
|
|
write: function(){},
|
|
asyncWait: function(){}
|
|
};
|
|
},
|
|
};
|
|
debuggerServer.onSocketAccepted(null, aTransport);
|
|
}
|
|
return;
|
|
}
|
|
|
|
if (DebuggerServer && DebuggerServer._transport && DebuggerServer._transport.onDataAvailable)
|
|
{
|
|
DebuggerServer._transport.onDataAvailable(inputstr);
|
|
}
|
|
};
|
|
|
|
this._prepareDebugger = function (global) {
|
|
|
|
globalDebuggee = global;
|
|
require = global.require;
|
|
cc = global.cc;
|
|
|
|
require('script/debugger/DevToolsUtils.js', "debug");
|
|
require('script/debugger/core/promise.js', "debug");
|
|
require('script/debugger/transport.js', "debug");
|
|
require('script/debugger/actors/root.js', "debug");
|
|
require('script/debugger/actors/script.js', "debug");
|
|
require('script/debugger/main.js', "debug");
|
|
|
|
promise = exports;
|
|
//DebuggerServer.addTestGlobal = function(aGlobal) {
|
|
gTestGlobals.push(global);
|
|
//};
|
|
|
|
};
|
|
|