WebInspector.WorkerManager = function()
{
}
WebInspector.WorkerManager.isWorkerFrontend = function()
{
return !!WebInspector.queryParamsObject["workerId"];
}
WebInspector.WorkerManager.loaded = function()
{
var workerId = WebInspector.queryParamsObject["workerId"];
if (!workerId) {
InspectorBackend.registerDomainDispatcher("Worker", new WebInspector.WorkerMessageForwarder());
return;
}
function receiveMessage(event)
{
var message = event.data;
InspectorBackend.dispatch(message);
}
window.addEventListener("message", receiveMessage, true);
InspectorBackend.sendMessageObjectToBackend = function(message)
{
window.opener.postMessage({workerId: workerId, command: "sendMessageToBackend", message: message}, "*");
}
InspectorFrontendHost.loaded = function()
{
window.opener.postMessage({workerId: workerId, command: "loaded"}, "*");
}
}
WebInspector.WorkerMessageForwarder = function()
{
window.addEventListener("message", this._receiveMessage.bind(this), true);
this._workerIdToWindow = {};
}
WebInspector.WorkerMessageForwarder.prototype = {
_receiveMessage: function(event)
{
var workerId = event.data.workerId;
workerId = parseInt(workerId);
var command = event.data.command;
var message = event.data.message;
if (command == "sendMessageToBackend")
WorkerAgent.sendMessageToWorker(workerId, message);
},
workerCreated: function(workerId)
{
var url = location.href + "&workerId=" + workerId;
url = url.replace("docked=true&", "");
this._workerIdToWindow[workerId] = window.open(url);
},
dispatchMessageFromWorker: function(workerId, message)
{
var win = this._workerIdToWindow[workerId];
if (win)
win.postMessage(message, "*");
}
}