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:
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));
+});