blob: 3b5a6c7091a59eaa82b8630d4a3eaf30984e9c81 [file] [log] [blame]
/*
* weinre is available under *either* the terms of the modified BSD license *or* the
* MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
*
* Copyright (c) 2010, 2011 IBM Corporation
*/
require ../common/Binding
require ../common/Callback
require ../common/Socket
require ../common/Weinre
require ./NodeStore
require ./CSSStore
require ./ElementHighlighter
require ./InjectedScriptHostImpl
require ./WebInspectorApplicationCacheHandlerImpl
require ./WebInspectorBackendHandlerImpl
require ./WebInspectorControllerHandlerImpl
require ./WebInspectorDOMHandlerImpl
require ./WebInspectorDebugHandlerImpl
require ./WebInspectorProfilerHandlerImpl
require ./WebInspectorResourceHandlerImpl
require ./WeinreTargetEventsImpl
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
class Target
this.initialize()
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
static method main
Weinre.target = new Target()
Weinre.addCSSProperties = function addCSSProperties(properties) {
CSSStore.addCSSProperties(properties)
}
//------------------------------------------------------------------------------
//
//------------------------------------------------------------------------------
method setWeinreServerURLFromScriptSrc()
if (window.WeinreServerURL) return
var elements = document.getElementsByTagName("script")
var scripts = ["Target.", "target-script.", "target-script-min."]
for (var i=0; i<elements.length; i++) {
var element = elements[i]
for (j=0; j<scripts.length; j++) {
if (-1 != element.src.indexOf("/" + scripts[j])) {
var pattern = /(http:\/\/(.*?)\/)/
var match = pattern.exec(element.src)
if (match) {
window.WeinreServerURL = match[1]
return
}
}
}
}
var message = "unable to calculate the weinre server url; explicity set the variable window.WeinreServerURL instead"
alert(message)
throw new Error(message)
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
method initialize()
this.setWeinreServerURLFromScriptSrc()
if (window.WeinreServerURL[window.WeinreServerURL.length-1] != "/") {
window.WeinreServerURL += "/"
}
var injectedScriptHost = new InjectedScriptHostImpl()
Weinre.injectedScript = injectedScriptConstructor(injectedScriptHost, window, 0, "?")
window.addEventListener("load", Binding(this, "onLoaded"), false)
var webSocket = new Socket(window.WeinreServerURL + "ws/target")
Weinre.webSocket = webSocket
Weinre.WebInspectorApplicationCacheHandler = new WebInspectorApplicationCacheHandlerImpl()
Weinre.WebInspectorBackendHandler = new WebInspectorBackendHandlerImpl()
Weinre.WebInspectorControllerHandler = new WebInspectorControllerHandlerImpl()
Weinre.WebInspectorDOMHandler = new WebInspectorDOMHandlerImpl()
Weinre.WebInspectorDebugHandler = new WebInspectorDebugHandlerImpl()
Weinre.WebInspectorProfilerHandler = new WebInspectorProfilerHandlerImpl()
Weinre.WebInspectorResourceHandler = new WebInspectorResourceHandlerImpl()
webSocket.registerInterface("WebInspectorApplicationCacheHandler", Weinre.WebInspectorApplicationCacheHandler, true)
webSocket.registerInterface("WebInspectorBackendHandler", Weinre.WebInspectorBackendHandler, true)
webSocket.registerInterface("WebInspectorControllerHandler", Weinre.WebInspectorControllerHandler, true)
webSocket.registerInterface("WebInspectorDOMHandler", Weinre.WebInspectorDOMHandler, true)
webSocket.registerInterface("WebInspectorDebugHandler", Weinre.WebInspectorDebugHandler, true)
webSocket.registerInterface("WebInspectorProfilerHandler", Weinre.WebInspectorProfilerHandler, true)
webSocket.registerInterface("WebInspectorResourceHandler", Weinre.WebInspectorResourceHandler, true)
webSocket.registerInterface("WeinreTargetEvents", new WeinreTargetEventsImpl(), true)
Weinre.WeinreTargetCommands = webSocket.createProxy("WeinreTargetCommands")
window.WebInspector = webSocket.createProxy("WebInspector")
// Weinre.Socket.verbose(true)
webSocket.open()
webSocket._socket.addEventListener("open", Binding(this, this.cb_webSocketOpened))
Weinre.nodeStore = new NodeStore()
Weinre.cssStore = new CSSStore()
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
method cb_webSocketOpened()
Weinre.WeinreTargetCommands.registerTarget(window.location.href, Binding(this, this.cb_registerTarget))
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
method cb_registerTarget(targetId)
Weinre.targetId = targetId
Weinre.connectorId = targetId
Callback.setConnectorId(targetId)
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
method onLoaded()
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
method setDocument()
Weinre.elementHighlighter = new ElementHighlighter()
var nodeId = Weinre.nodeStore.getNodeId(document)
var nodeData = Weinre.nodeStore.getNodeData(nodeId, 2)
WebInspector.setDocument(nodeData)