from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
import SocketServer
from optparse import OptionParser
-from urlparse import urlparse
+from urlparse import urlparse, parse_qs
USAGE_EXAMPLE = "%prog"
self.sendFile(path, ext)
- def do_POST(self):
+ def do_POST(self):
numBytes = int(self.headers['Content-Length'])
self.send_response(200)
self.send_header('Content-Type', 'text/plain')
self.end_headers()
+ url = urlparse(self.path)
+ if url.path == "/tellMeToQuit":
+ tellAppToQuit(url.path, url.query)
+ return
+
result = json.loads(self.rfile.read(numBytes))
browser, id, failure, round, page, snapshot = result['browser'], result['id'], result['failure'], result['round'], result['page'], result['snapshot']
taskResults = State.taskResults[browser][id]
State.done = (0 == State.remaining)
+# Applescript hack to quit Chrome on Mac
+def tellAppToQuit(path, query):
+ if platform.system() != "Darwin":
+ return
+ d = parse_qs(query)
+ path = d['path'][0]
+ cmd = """osascript<<END
+tell application "%s"
+quit
+end tell
+END""" % path
+ os.system(cmd)
+
class BaseBrowserCommand(object):
def __init__(self, browserRecord):
self.name = browserRecord["name"]
b.setup()
print 'Launching', b.name
qs = 'browser='+ urllib.quote(b.name) +'&manifestFile='+ urllib.quote(options.manifestFile)
+ qs += '&path=' + b.path
b.start('http://localhost:8080/test/test_slave.html?'+ qs)
def teardownBrowsers(browsers):
<script type="text/javascript" src="/fonts.js"></script>
<script type="text/javascript" src="/glyphlist.js"></script>
<script type="application/javascript">
-var browser, canvas, currentTask, currentTaskIdx, failure, manifest, numPages, pdfDoc, stdout;
+var appPath, browser, canvas, currentTask, currentTaskIdx, failure, manifest, numPages, pdfDoc, stdout;
function queryParams() {
var qs = window.location.search.substring(1);
var params = queryParams();
browser = params.browser;
manifestFile = params.manifestFile;
+ appPath = params.path;
canvas = document.createElement("canvas");
canvas.mozOpaque = true;
stdout = document.getElementById("stdout");
- log("Harness thinks this browser is '"+ browser +"'\n");
+ log("Harness thinks this browser is '"+ browser + "' with path " + appPath + "\n");
log("Fetching manifest "+ manifestFile +"...");
var r = new XMLHttpRequest();
);
}
+function sendQuitRequest() {
+ var r = new XMLHttpRequest();
+ r.open("POST", "/tellMeToQuit?path=" + escape(appPath), false);
+ r.send("");
+}
+
function quitApp() {
log("Done!");
document.body.innerHTML = "Tests are finished. <h1>CLOSE ME!</h1>";
- if (window.SpecialPowers)
+ if (window.SpecialPowers) {
SpecialPowers.quitApplication();
- else
+ } else {
+ sendQuitRequest();
window.close();
+ }
}
function done() {