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()
|
||||
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):
|
||||
if self.is_running and self._emulator_launched:
|
||||
self.proc.kill()
|
||||
|
@ -608,8 +608,16 @@ class Marionette(object):
|
||||
|
||||
# Process any emulator commands that are sent from a script
|
||||
# while it's executing.
|
||||
while response.get("emulator_cmd"):
|
||||
response = self._handle_emulator_cmd(response)
|
||||
while True:
|
||||
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:
|
||||
return response[response_key]
|
||||
@ -626,6 +634,16 @@ class Marionette(object):
|
||||
"id": response.get("id"),
|
||||
"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):
|
||||
if 'error' in response and isinstance(response['error'], dict):
|
||||
status = response['error'].get('status', 500)
|
||||
|
@ -17,6 +17,14 @@ class TestEmulatorContent(MarionetteTestCase):
|
||||
""");
|
||||
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):
|
||||
self.marionette.set_script_timeout(10000)
|
||||
self.assertRaises(MarionetteException,
|
||||
|
@ -163,6 +163,7 @@ FrameManager.prototype = {
|
||||
messageManager.addWeakMessageListener("Marionette:shareData", this.server);
|
||||
messageManager.addWeakMessageListener("Marionette:register", this.server);
|
||||
messageManager.addWeakMessageListener("Marionette:runEmulatorCmd", this.server);
|
||||
messageManager.addWeakMessageListener("Marionette:runEmulatorShell", this.server);
|
||||
messageManager.addWeakMessageListener("Marionette:switchToModalOrigin", this.server);
|
||||
messageManager.addWeakMessageListener("Marionette:switchToFrame", this.server);
|
||||
messageManager.addWeakMessageListener("Marionette:switchedToFrame", this.server);
|
||||
@ -190,6 +191,7 @@ FrameManager.prototype = {
|
||||
messageManager.removeWeakMessageListener("Marionette:shareData", this.server);
|
||||
messageManager.removeWeakMessageListener("Marionette:register", this.server);
|
||||
messageManager.removeWeakMessageListener("Marionette:runEmulatorCmd", this.server);
|
||||
messageManager.removeWeakMessageListener("Marionette:runEmulatorShell", this.server);
|
||||
messageManager.removeWeakMessageListener("Marionette:switchToFrame", this.server);
|
||||
messageManager.removeWeakMessageListener("Marionette:switchedToFrame", this.server);
|
||||
messageManager.removeWeakMessageListener("MarionetteFrame:handleModal", this);
|
||||
|
@ -2019,6 +2019,14 @@ function runEmulatorCmd(cmd, callback) {
|
||||
_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) {
|
||||
let message = msg.json;
|
||||
if (!sandbox) {
|
||||
|
@ -2128,6 +2128,17 @@ MarionetteServerConnection.prototype = {
|
||||
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) {
|
||||
if (this.context != "chrome") {
|
||||
this.sendAsync("emulatorCmdResult", message, -1);
|
||||
@ -2325,6 +2336,7 @@ MarionetteServerConnection.prototype = {
|
||||
}
|
||||
break;
|
||||
case "Marionette:runEmulatorCmd":
|
||||
case "Marionette:runEmulatorShell":
|
||||
this.sendToClient(message.json, -1);
|
||||
break;
|
||||
case "Marionette:switchToFrame":
|
||||
|
@ -22,7 +22,7 @@ this.Marionette = function Marionette(scope, window, context, logObj, timeout,
|
||||
|
||||
Marionette.prototype = {
|
||||
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'],
|
||||
|
||||
ok: function Marionette__ok(condition, name, passString, failString, diag) {
|
||||
@ -163,5 +163,10 @@ Marionette.prototype = {
|
||||
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