Workaround until we have a sane dynamic user prompt implementation
(see bug 1477977). At least for now this patch will give us the
opportunity to handle multiple open user prompts.
--HG--
extra : rebase_source : 4a242daef46287051fc6be4c4d9353046d0f6559
Both "WebDriver:AcceptAlert" and "WebDriver:DismissAlert" have to
wait until the tab modal dialog has been closed.
--HG--
extra : rebase_source : 64742b03faa900fe301a684a17666e3366322f5b
WebDriver:{ExecuteScript,ExecuteAsyncScript} were missing user
prompt checks.
MozReview-Commit-ID: KL8gTBfSTrU
--HG--
extra : rebase_source : 7660e57079e82beb1aeb95d1673d69e82fef0394
The handling of user prompts for each of the commands is set by the
current sessions user prompt handler. To fully support this feature
this patch adds support for it including all available options which
are "accept", "accept and notify", "dismiss", "dismiss and notify",
and "ignore".
MozReview-Commit-ID: IWuYM7QfZUv
--HG--
extra : rebase_source : 56726bab5aaa29ad629d22247ab2b5409ca83bb8
This removes the "session." prefixed global export type in favour
of individually exported types.
MozReview-Commit-ID: 3DHTrJsy2IN
--HG--
extra : rebase_source : 74674f2cc549a245472304c55a14dd2eca1ee235
This removes the "session." prefixed global export type in favour
of individually exported types.
MozReview-Commit-ID: 3DHTrJsy2IN
--HG--
extra : rebase_source : eb2c05c1970c67b5752ece4b916145f053109f69
Replace direct invocations of Log.jsm with the new Marionette-specific
logger.
The patch also moves the Log.get() call to a lazy getter.
MozReview-Commit-ID: H1HoAgL2Cvs
--HG--
extra : rebase_source : 0e20a5c0100a359c8d8b627457fc178293387078
Calling Cu.importGlobalProperties immediately defines the import
properties and any prototypes that they require. Aside from CPU
overhead, this also tends to consume a lot of memory, especially
for objects with complex prototypes. And it does this once for
every global you call it in. This is especially a problem for
content processes, since we get this memory overhead in each and
every content process.
This patch moves Marionette to use the new
XPCOMUtils.defineLazyGlobalGetters so that symbols are constructed
only when actually needed.
MozReview-Commit-ID: 3RYWTcdO7FM
--HG--
extra : rebase_source : 0c450c8900e5de5446796b34ae4ab6bdf0fe9118
When evaluating if an object can be null, which would mean that we would
not be able to pass through IPC as, the commandId could not be added to null.
This patch makes sure that we can still send commands via IPC if the object is
evaluated to null.
MozReview-Commit-ID: Fl3Ionj08Sk
--HG--
extra : rebase_source : 33d015ac235ee74e903e13e234c55fda298f8e66
WebDriver commands which do not return a value have to send null.
But currently Marionette returns an empty object.
MozReview-Commit-ID: FILv9IkojIj
--HG--
extra : rebase_source : d3a59c5bd3ce2a33c0a52e2a413364b5e54f9140
As a workaround for bug 1411513, about Log.jsm not supporting E10s,
testing/marionette/listener.js makes a synchronous call (sendSyncMessage)
to the main process asking for the Marionette logger repository's level.
We can avoid this blocking operation by using initialProcessData,
which is new since the workaround was implemented.
initialProcessData is a dictionary structured clone serialisable
that gets copied to the content process when it starts. Because the
Marionette log level cannot be changed at runtime it should be fine
to only send this data once per child process.
MozReview-Commit-ID: 3czydqGZpZH
--HG--
extra : rebase_source : 1aaae676d2b56c609844238e8173b64d300e3e00
This also removes any redundant Ci.nsISupports elements in the interface
lists.
This was done using the following script:
acecb401b7/processors/chromeutils-generateQI.jsm
MozReview-Commit-ID: AIx10P8GpZY
--HG--
extra : rebase_source : a29c07530586dc18ba040f19215475ac20fcfb3b
In addition to the way symbols are exposed, this patch makes a few
changes to what is exposed. Unexposing currentOverride and the
error override bitmasks should not cause any problems.
MozReview-Commit-ID: 9CWZHVyAKbg
--HG--
extra : rebase_source : 6411f842c1eec26661cbe6f4d9e821904ffc4811
This does not really functionally change anything, but it prevents
us from polluting the global space in testing/marionette/driver.js.
MozReview-Commit-ID: Guwt3g0lS8q
--HG--
extra : rebase_source : ad2c38e51d54b7c4ead6b8d6a49d05a0dfef7c6c
The WebDriver:ExecuteScript and WebDriver:ExecuteAsyncScript commands
accepts a "debug_script" parameter that attaches an error handler
on the WindowProxy in the sandbox.
This used to be necessary because the error handler used to be
attached to the content window instead of the sandbox.
MozReview-Commit-ID: ImRVkC5T75O
--HG--
extra : rebase_source : c13c33b4d708879f66bd906f431157720842690c
The evaluate.sandbox function accepts a directInject argument,
which is a relic from Marionette's B2G past when it did not support
evaluating scripts with lasting side-effects.
The API documentation in GeckoDriver#execute_ mentions directInject as a
valid parameter, but it is not picked up or passed on to evaluate.sandbox.
This effectively means the directInject functionality is unused.
MozReview-Commit-ID: 3rYjRQ2R5GV
--HG--
extra : rebase_source : b0c58077de0d7320d2bd1cc55d1af1b959ecaccf
All chrome context related commands have to use the "Marionette"
prefix. For those commands which accidentally have been put under
the "WebDriver" prefix a fallback to the old command is needed
in the Marionette client.
Also update related comments about possible removal dates.
MozReview-Commit-ID: IZLL6pineSO
--HG--
extra : rebase_source : 7e4cbe604d1f0b35cce01173a438b898658018b3
To be consistent with the spec the command should be named
"WebDriver:AcceptAlert".
MozReview-Commit-ID: HGB9hJPAvcU
--HG--
extra : rebase_source : bbf3d657901784e1ab6e096edf1b20a5c43b0176
Adds type checks for the WebDriver:ExecuteScript and
WebDriver:ExecuteAsyncScript commands. This should help prevent
accidental programming mistakes with the Marionette Python client.
MozReview-Commit-ID: JjKgG9OWrdL
--HG--
extra : rebase_source : cd652717f6d4b98d396386e2b971d51a7e737725
To match the WebDriver specification error code names, this patch
renames the NoAlertOpenError type to NoSuchAlertError.
Its string error code (the status property) is still correct.
MozReview-Commit-ID: DhWz1tn6DsT
--HG--
extra : rebase_source : dd45387a5869a8df53f20baafe1c683c3af32b25
To match the WebDriver specification error code names, this patch
renames the NoAlertOpenError type to NoSuchAlertError.
Its string error code (the status property) is still correct.
MozReview-Commit-ID: DhWz1tn6DsT
--HG--
extra : rebase_source : b3da69e566f190c1a016dad7fccf655966779ab1
This flag is used to turn off the WebDriver spec conforming pointer origin
calculation. It has to be kept until all Selenium bindings can successfully
handle the WebDriver spec conforming Pointer Origin calculation.
MozReview-Commit-ID: 3YknXlWoyi1
--HG--
extra : rebase_source : 6df2af027e7458fd29658d7a3bbe99634b6f58f9
This patch was autogenerated by my decomponents.py
It covers almost every file with the extension js, jsm, html, py,
xhtml, or xul.
It removes blank lines after removed lines, when the removed lines are
preceded by either blank lines or the start of a new block. The "start
of a new block" is defined fairly hackily: either the line starts with
//, ends with */, ends with {, <![CDATA[, """ or '''. The first two
cover comments, the third one covers JS, the fourth covers JS embedded
in XUL, and the final two cover JS embedded in Python. This also
applies if the removed line was the first line of the file.
It covers the pattern matching cases like "var {classes: Cc,
interfaces: Ci, utils: Cu, results: Cr} = Components;". It'll remove
the entire thing if they are all either Ci, Cr, Cc or Cu, or it will
remove the appropriate ones and leave the residue behind. If there's
only one behind, then it will turn it into a normal, non-pattern
matching variable definition. (For instance, "const { classes: Cc,
Constructor: CC, interfaces: Ci, utils: Cu } = Components" becomes
"const CC = Components.Constructor".)
MozReview-Commit-ID: DeSHcClQ7cG
--HG--
extra : rebase_source : d9c41878036c1ef7766ef5e91a7005025bc1d72b
This was done using the following script:
37e3803c7a/processors/chromeutils-import.jsm
MozReview-Commit-ID: 1Nc3XDu0wGl
--HG--
extra : source : 12fc4dee861c812fd2bd032c63ef17af61800c70
extra : intermediate-source : 34c999fa006bffe8705cf50c54708aa21a962e62
extra : histedit_source : b2be2c5e5d226e6c347312456a6ae339c1e634b0
This was done using the following script:
37e3803c7a/processors/chromeutils-import.jsm
MozReview-Commit-ID: 1Nc3XDu0wGl
--HG--
extra : source : 12fc4dee861c812fd2bd032c63ef17af61800c70
This was done using the following script:
37e3803c7a/processors/chromeutils-import.jsm
MozReview-Commit-ID: 1Nc3XDu0wGl
--HG--
extra : rebase_source : c004a023389f1f6bf3d2f3efe93c13d423b23ccd
The Marionette:getVisibleCookies IPC message listener is not used.
MozReview-Commit-ID: G1N0F8jdLHH
--HG--
extra : rebase_source : 08e40fceae3d2a88c2ae88760d37c00bd8aecbca
This moves the WindowState enum from testing/marionette/wm.js to
testing/marionette/browser.js in order to make it easier to apply
the forthcoming Marionette window tracking refactoring patches.
In other words, this patch functionally does not change anything.
MozReview-Commit-ID: 53MKIRHl11p
--HG--
extra : rebase_source : d048086ab48449ba02853076451e6dd1909bafa6
This moves the WindowState enum from testing/marionette/wm.js to
testing/marionette/browser.js in order to make it easier to apply
the forthcoming Marionette window tracking refactoring patches.
In other words, this patch functionally does not change anything.
MozReview-Commit-ID: 53MKIRHl11p
--HG--
extra : rebase_source : 1d0dcbac2c5089a0b9249794548dee7506b6b568
With the forthcoming window tracking changes the message listeners of
the content frame script are left listening for the duration of the
Marionette lifetime, and not for the duration of the Marionette session.
To prepare for the window tracking refactoring, we will want to
remove message listeners separately from clearing the session state.
Functionally, this patch changes nothing in Marionette for the moment,
except we send two IPC messages to the frame script instead of one.
MozReview-Commit-ID: DwVBCpvk9V9
--HG--
extra : rebase_source : d473a51209eeaf20967303af5aec7376e38fd283
The global message manager reaches all browsers and all frames.
If Marionette was _not_ using the global message manager, this
would have been the correct approach.
MozReview-Commit-ID: HKrlfd9pzK2
--HG--
extra : rebase_source : 8a63a0928af574f27d5612d0cef88e4f3a80481b