mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 985537: add runEmulatorShell to Marionette. r=mdas
This commit is contained in:
parent
6112be1a5c
commit
9c9126f41e
@ -225,6 +225,10 @@ class Emulator(object):
|
|||||||
self._get_telnet_response()
|
self._get_telnet_response()
|
||||||
return self._get_telnet_response(command)
|
return self._get_telnet_response(command)
|
||||||
|
|
||||||
|
def _run_shell(self, args):
|
||||||
|
args.insert(0, 'shell')
|
||||||
|
return self._run_adb(args).split('\r\n')
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
if self.is_running and self._emulator_launched:
|
if self.is_running and self._emulator_launched:
|
||||||
self.proc.kill()
|
self.proc.kill()
|
||||||
|
@ -608,8 +608,16 @@ class Marionette(object):
|
|||||||
|
|
||||||
# Process any emulator commands that are sent from a script
|
# Process any emulator commands that are sent from a script
|
||||||
# while it's executing.
|
# while it's executing.
|
||||||
while response.get("emulator_cmd"):
|
while True:
|
||||||
response = self._handle_emulator_cmd(response)
|
if response.get("emulator_cmd"):
|
||||||
|
response = self._handle_emulator_cmd(response)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if response.get("emulator_shell"):
|
||||||
|
response = self._handle_emulator_shell(response)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
if response_key in response:
|
if response_key in response:
|
||||||
return response[response_key]
|
return response[response_key]
|
||||||
@ -626,6 +634,16 @@ class Marionette(object):
|
|||||||
"id": response.get("id"),
|
"id": response.get("id"),
|
||||||
"result": result})
|
"result": result})
|
||||||
|
|
||||||
|
def _handle_emulator_shell(self, response):
|
||||||
|
args = response.get("emulator_shell")
|
||||||
|
if not isinstance(args, list) or not self.emulator:
|
||||||
|
raise MarionetteException(
|
||||||
|
"No emulator in this test to run shell command against")
|
||||||
|
result = self.emulator._run_shell(args)
|
||||||
|
return self.client.send({"name": "emulatorCmdResult",
|
||||||
|
"id": response.get("id"),
|
||||||
|
"result": result})
|
||||||
|
|
||||||
def _handle_error(self, response):
|
def _handle_error(self, response):
|
||||||
if 'error' in response and isinstance(response['error'], dict):
|
if 'error' in response and isinstance(response['error'], dict):
|
||||||
status = response['error'].get('status', 500)
|
status = response['error'].get('status', 500)
|
||||||
|
@ -17,6 +17,14 @@ class TestEmulatorContent(MarionetteTestCase):
|
|||||||
""");
|
""");
|
||||||
self.assertEqual(result, expected)
|
self.assertEqual(result, expected)
|
||||||
|
|
||||||
|
def test_emulator_shell(self):
|
||||||
|
self.marionette.set_script_timeout(10000)
|
||||||
|
expected = ["Hello World!", ""]
|
||||||
|
result = self.marionette.execute_async_script("""
|
||||||
|
runEmulatorShell(["echo", "Hello World!"], marionetteScriptFinished)
|
||||||
|
""");
|
||||||
|
self.assertEqual(result, expected)
|
||||||
|
|
||||||
def test_emulator_order(self):
|
def test_emulator_order(self):
|
||||||
self.marionette.set_script_timeout(10000)
|
self.marionette.set_script_timeout(10000)
|
||||||
self.assertRaises(MarionetteException,
|
self.assertRaises(MarionetteException,
|
||||||
|
@ -163,6 +163,7 @@ FrameManager.prototype = {
|
|||||||
messageManager.addWeakMessageListener("Marionette:shareData", this.server);
|
messageManager.addWeakMessageListener("Marionette:shareData", this.server);
|
||||||
messageManager.addWeakMessageListener("Marionette:register", this.server);
|
messageManager.addWeakMessageListener("Marionette:register", this.server);
|
||||||
messageManager.addWeakMessageListener("Marionette:runEmulatorCmd", this.server);
|
messageManager.addWeakMessageListener("Marionette:runEmulatorCmd", this.server);
|
||||||
|
messageManager.addWeakMessageListener("Marionette:runEmulatorShell", this.server);
|
||||||
messageManager.addWeakMessageListener("Marionette:switchToModalOrigin", this.server);
|
messageManager.addWeakMessageListener("Marionette:switchToModalOrigin", this.server);
|
||||||
messageManager.addWeakMessageListener("Marionette:switchToFrame", this.server);
|
messageManager.addWeakMessageListener("Marionette:switchToFrame", this.server);
|
||||||
messageManager.addWeakMessageListener("Marionette:switchedToFrame", this.server);
|
messageManager.addWeakMessageListener("Marionette:switchedToFrame", this.server);
|
||||||
@ -190,6 +191,7 @@ FrameManager.prototype = {
|
|||||||
messageManager.removeWeakMessageListener("Marionette:shareData", this.server);
|
messageManager.removeWeakMessageListener("Marionette:shareData", this.server);
|
||||||
messageManager.removeWeakMessageListener("Marionette:register", this.server);
|
messageManager.removeWeakMessageListener("Marionette:register", this.server);
|
||||||
messageManager.removeWeakMessageListener("Marionette:runEmulatorCmd", this.server);
|
messageManager.removeWeakMessageListener("Marionette:runEmulatorCmd", this.server);
|
||||||
|
messageManager.removeWeakMessageListener("Marionette:runEmulatorShell", this.server);
|
||||||
messageManager.removeWeakMessageListener("Marionette:switchToFrame", this.server);
|
messageManager.removeWeakMessageListener("Marionette:switchToFrame", this.server);
|
||||||
messageManager.removeWeakMessageListener("Marionette:switchedToFrame", this.server);
|
messageManager.removeWeakMessageListener("Marionette:switchedToFrame", this.server);
|
||||||
messageManager.removeWeakMessageListener("MarionetteFrame:handleModal", this);
|
messageManager.removeWeakMessageListener("MarionetteFrame:handleModal", this);
|
||||||
|
@ -2019,6 +2019,14 @@ function runEmulatorCmd(cmd, callback) {
|
|||||||
_emu_cb_id += 1;
|
_emu_cb_id += 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function runEmulatorShell(args, callback) {
|
||||||
|
if (callback) {
|
||||||
|
_emu_cbs[_emu_cb_id] = callback;
|
||||||
|
}
|
||||||
|
sendAsyncMessage("Marionette:runEmulatorShell", {emulator_shell: args, id: _emu_cb_id});
|
||||||
|
_emu_cb_id += 1;
|
||||||
|
}
|
||||||
|
|
||||||
function emulatorCmdResult(msg) {
|
function emulatorCmdResult(msg) {
|
||||||
let message = msg.json;
|
let message = msg.json;
|
||||||
if (!sandbox) {
|
if (!sandbox) {
|
||||||
|
@ -2128,6 +2128,17 @@ MarionetteServerConnection.prototype = {
|
|||||||
this._emu_cb_id += 1;
|
this._emu_cb_id += 1;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
runEmulatorShell: function runEmulatorShell(args, callback) {
|
||||||
|
if (callback) {
|
||||||
|
if (!this._emu_cbs) {
|
||||||
|
this._emu_cbs = {};
|
||||||
|
}
|
||||||
|
this._emu_cbs[this._emu_cb_id] = callback;
|
||||||
|
}
|
||||||
|
this.sendToClient({emulator_shell: args, id: this._emu_cb_id}, -1);
|
||||||
|
this._emu_cb_id += 1;
|
||||||
|
},
|
||||||
|
|
||||||
emulatorCmdResult: function emulatorCmdResult(message) {
|
emulatorCmdResult: function emulatorCmdResult(message) {
|
||||||
if (this.context != "chrome") {
|
if (this.context != "chrome") {
|
||||||
this.sendAsync("emulatorCmdResult", message, -1);
|
this.sendAsync("emulatorCmdResult", message, -1);
|
||||||
@ -2325,6 +2336,7 @@ MarionetteServerConnection.prototype = {
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case "Marionette:runEmulatorCmd":
|
case "Marionette:runEmulatorCmd":
|
||||||
|
case "Marionette:runEmulatorShell":
|
||||||
this.sendToClient(message.json, -1);
|
this.sendToClient(message.json, -1);
|
||||||
break;
|
break;
|
||||||
case "Marionette:switchToFrame":
|
case "Marionette:switchToFrame":
|
||||||
|
@ -22,7 +22,7 @@ this.Marionette = function Marionette(scope, window, context, logObj, timeout,
|
|||||||
|
|
||||||
Marionette.prototype = {
|
Marionette.prototype = {
|
||||||
exports: ['ok', 'is', 'isnot', 'log', 'getLogs', 'generate_results', 'waitFor',
|
exports: ['ok', 'is', 'isnot', 'log', 'getLogs', 'generate_results', 'waitFor',
|
||||||
'runEmulatorCmd', 'TEST_PASS', 'TEST_KNOWN_FAIL',
|
'runEmulatorCmd', 'runEmulatorShell', 'TEST_PASS', 'TEST_KNOWN_FAIL',
|
||||||
'TEST_UNEXPECTED_FAIL'],
|
'TEST_UNEXPECTED_FAIL'],
|
||||||
|
|
||||||
ok: function Marionette__ok(condition, name, passString, failString, diag) {
|
ok: function Marionette__ok(condition, name, passString, failString, diag) {
|
||||||
@ -163,5 +163,10 @@ Marionette.prototype = {
|
|||||||
this.scope.runEmulatorCmd(cmd, callback);
|
this.scope.runEmulatorCmd(cmd, callback);
|
||||||
},
|
},
|
||||||
|
|
||||||
|
runEmulatorShell: function runEmulatorShell(args, callback) {
|
||||||
|
this.heartbeatCallback();
|
||||||
|
this.scope.runEmulatorShell(args, callback);
|
||||||
|
},
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user