antimony

drive firefox from node.js
git clone https://wehaveforgeathome.hates.computer/antimony.git
Log | Files | Refs | Submodules | LICENSE

commit 6c4401a33233ed1be2dc5012dd7ca6f43e58e76d
parent 2206bac770d0e77c89dacef95fa2bc8847e7d68f
Author: Ryan Wolf <rwolf@borderstylo.com>
Date:   Mon, 13 Dec 2010 13:17:33 -0800

cut out the middleman, drive the browser from inside the iframe

Diffstat:
Maddon/chrome/content/browser.xul | 3+--
Daddon/chrome/content/content.js | 26--------------------------
Mpublic/javascripts/runner.js | 35++++++++++-------------------------
3 files changed, 11 insertions(+), 53 deletions(-)

diff --git a/addon/chrome/content/browser.xul b/addon/chrome/content/browser.xul @@ -3,8 +3,7 @@ href="chrome://antimony/skin/stylesheets/stylesheet.css" ?> <!DOCTYPE overlay SYSTEM "chrome://antimony/locale/stringbundle.dtd"> <overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> - <iframe id="antimony" name="antimony" style="display: none" src="http://localhost:1234/runner.html"></iframe> - <script type="text/javascript" src="chrome://antimony/content/content.js" /> + <iframe name="antimony" style="display: none" src="http://localhost:1234/runner.html"></iframe> <menubar id="main-menubar"> <menu label="&antimony.menu.title;" insertbefore="tools-menu"> <menupopup> diff --git a/addon/chrome/content/content.js b/addon/chrome/content/content.js @@ -1,26 +0,0 @@ -var Server; -document.getElementById('antimony').addEventListener("load", function () { -Server = function () { - var that = this; - this.requestHandler = function () {}; - this.frame = window.frames['antimony']; - window.addEventListener( - 'message', - function (e) { that.readMessage(e.data); }, - false - ); -}; -Server.prototype.sendMessage = function (data) { - var json = JSON.stringify(data); - this.frame.postMessage(json, '*'); -}; -Server.prototype.readMessage = function (json) { - var request = JSON.parse(json); - this.requestHandler(request); -}; - -var server = new Server(); -server.requestHandler(function (request) { - alert(JSON.stringify(request)); -}); -}, false); diff --git a/public/javascripts/runner.js b/public/javascripts/runner.js @@ -1,39 +1,24 @@ -// handle communication with the browser -var Browser = function () { - var that = this; - this.requestHandler = function () {}; - window.addEventListener( - 'message', - function (e) { that.readMessage(e.data); }, - false - ); -}; -Browser.prototype.sendMessage = function (json) { - window.parent.postMessage(json, '*'); -}; -Browser.prototype.readMessage = function (json) { - this.requestHandler(json); -}; +netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); // handle communication with the server -var Server = function () { +var Server = function (requestHandler) { var that = this; - this.requestHandler = function () {}; + this.requestHandler = requestHandler; var socket = this.socket = new io.Socket('localhost', { transports: ['websocket', 'htmlfile', 'xhr-multipart', 'xhr-polling'] }); socket.connect(); socket.on('message', function (data) { that.readMessage(data); }); }; -Server.prototype.sendMessage = function (json) { +Server.prototype.sendMessage = function (obj) { + var json = JSON.stringify(obj); this.socket.send(json); }; Server.prototype.readMessage = function (json) { - this.requestHandler(json); + var obj = JSON.parse(json); + this.requestHandler(obj); }; -var browser = new Browser(); -var server = new Server(); - -browser.requestHandler(server.sendMessage); -server.requestHandler(browser.sendMessage); +var server = new Server(function (request) { + alert(JSON.stringify(request)); +});