blob: a39ee096686759602f1c656f934f1897093b5a05 [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
*/
requireClass ../common/Ex
requireClass ../common/IDLTools
requireClass ../common/MessageDispatcher
requireClass ../common/Weinre
//-----------------------------------------------------------------------------
class InspectorBackendImpl
this.registeredDomainDispatchers = {}
MessageDispatcher.setInspectorBackend(this)
//-----------------------------------------------------------------------------
static method setupProxies
var intfNames = [
"ApplicationCache",
"BrowserDebugger",
"CSS",
"Console",
"DOM",
"DOMStorage",
"Database",
"Debugger",
"InjectedScript",
"Inspector",
"Network",
"Profiler",
"Runtime"
]
intfNames.forEach(function(intfName) {
var proxy = Weinre.messageDispatcher.createProxy(intfName)
if (window[intfName]) {
throw new Ex(arguments, "backend interface '" + intfName + "' already created")
}
var intf = IDLTools.getIDL(intfName)
if (!intf) {
throw new Ex(arguments, "interface not registered: '" + intfName + "'")
}
window[intfName] = {}
intf.methods.forEach(function(method) {
var proxyMethod = InspectorBackendImpl.getProxyMethod(proxy, method)
InspectorBackendImpl.prototype[method.name] = proxyMethod
window[intfName][method.name] = proxyMethod
})
})
//-----------------------------------------------------------------------------
static method getProxyMethod(proxy, method)
return function() {
return proxy[method.name].apply(proxy, arguments)
}
//-----------------------------------------------------------------------------
method registerDomainDispatcher(name, intf)
this.registeredDomainDispatchers[name] = intf
//-----------------------------------------------------------------------------
method getRegisteredDomainDispatcher(name)
if (!this.registeredDomainDispatchers.hasOwnProperty(name)) return null
return this.registeredDomainDispatchers[name]