gecko-dev/testing/marionette
Andreas Tolfsen 3421774080 Bug 1211489: Provide message sequencing in Marionette
Message sequencing allows Marionette to provide an asynchronous,
parallel pipelining user-facing interface, limit chances of payload
race conditions, and remove stylistic inconsistencies in how commands
and responses are dispatched internally.

Clients that deliver a blocking WebDriver interface are still be expected
to not send further command requests before the response from the last
command has come back, but if they still happen to do so because of
programming error or otherwise, no harm will be done.  This will guard
against bugs such as bug 1207125.

This patch formalises the command and response concepts, and applies
these concepts to emulator callbacks. Through the new message format,
Marionette is able to provide two-way parallel communication.  In other
words, the server will be able to instruct the client to perform a
command in a non ad-hoc way.

runEmulatorCmd and runEmulatorShell are both turned into command
instructions originating from the server.  This resolves a lot of
technical debt in the server code because they are no longer special-cased
to circumvent the dispatching technique used for all other commands;
commands may originate from either the client or the server providing
parallel pipelining enforced through message sequencing:

             client      server
               |            |
    msgid=1    |----------->|
               |  command   |
               |            |
    msgid=2    |<-----------|
               |  command   |
               |            |
    msgid=2    |----------->|
               |  response  |
               |            |
    msgid=1    |<-----------|
               |  response  |
               |            |

The protocol now consists of a "Command" message and the corresponding
"Response" message.  A "Response" message must always be sent in reply
to a "Command" message.

This bumps the Marionette protocol level to 3.

r=dburns
r=jgriffin

--HG--
extra : commitid : 1kz4Oa2q3Un
2015-09-26 17:12:01 +01:00
..
atoms
client merge mozilla-inbound to mozilla-central a=merge 2015-11-30 13:19:02 +01:00
components Bug 1107706: Part 13: Style fixes 2015-03-23 20:43:18 +00:00
driver Bug 1223517 - Release marionette-client 2.0.0 and marionette-driver 1.1.1; r=automatedtester 2015-11-10 14:51:44 -05:00
transport Bug 1216967: Bump Marionette Python packages 2015-10-21 14:21:27 +01:00
actions.js Bug 1201050: Part 4: Pass value directly back to chrome space 2015-11-26 14:31:45 +00:00
capture.js Bug 1213797: Refactor screen capture and SVG document support 2015-10-13 16:52:26 +01:00
ChromeUtils.js
common.js Bug 1107706: Part 13: Style fixes 2015-03-23 20:43:18 +00:00
cookies.js Bug 1223907: Refactor cookies in Marionette 2015-11-13 13:35:22 +00:00
dispatcher.js Bug 1211489: Provide message sequencing in Marionette 2015-09-26 17:12:01 +01:00
driver.js Bug 1211489: Provide message sequencing in Marionette 2015-09-26 17:12:01 +01:00
elements.js Bug 1224339 - making sure a11y and DOM trees are in sync when performing a11y checks with marionette. r=automatedtester 2015-11-13 09:58:08 -05:00
emulator.js Bug 1211489: Provide message sequencing in Marionette 2015-09-26 17:12:01 +01:00
error.js Bug 1211489: Provide message sequencing in Marionette 2015-09-26 17:12:01 +01:00
EventUtils.js
frame-manager.js Bug 1211489: Provide message sequencing in Marionette 2015-09-26 17:12:01 +01:00
jar.mn Bug 1211489: Provide message sequencing in Marionette 2015-09-26 17:12:01 +01:00
listener.js Bug 1211489: Provide message sequencing in Marionette 2015-09-26 17:12:01 +01:00
mach_commands.py Bug 1223429 - Return exit code 10 when Marionette harness has failing tests; r=automatedtester 2015-11-10 13:09:13 -05:00
message.js Bug 1211489: Provide message sequencing in Marionette 2015-09-26 17:12:01 +01:00
modal.js Backed out 2 changesets (bug 1202902) to recking bug 1202902 to be able to reopen inbound on a CLOSED TREE 2015-10-07 14:03:21 +02:00
moz.build
proxy.js Bug 1223907: Refactor cookies in Marionette 2015-11-13 13:35:22 +00:00
sendkeys.js Bug 1203074: Move caret to end of textual input field before sending keys 2015-09-09 14:53:53 +01:00
server.js Bug 1211489: Provide message sequencing in Marionette 2015-09-26 17:12:01 +01:00
simpletest.js Bug 1202902 - Mass replace toplevel 'let' with 'var' in preparation for global lexical scope. (rs=jorendorff) 2015-09-15 11:19:45 -07:00