FrameSendFailureError and FrameSendNotInitializedError are not compatible
with the W3C WebDriver specification and we should use NoSuchWindowError
instead.
Bug 1159674 has prepared Gaia for this change.
r=davehunt
--HG--
extra : rebase_source : 6fb5a2c0921d3fdbeb1749aee8296e7c40de4ead
extra : source : 02dfd2e12038460bb3c895c31951a85214e135e1
This makes us not rely on try…catch logic to export MarionetteObj
properties and functions on the sandbox.
The patch also cleans up a few more details on
createExecuteContentSandbox.
r=dburns
--HG--
extra : rebase_source : 920069f09328b57adad36827b4f67a28aedfdb1d
When native JavaScript errors are thrown because of internal errors,
this will include the Error prototype's name in the message.
This is useful since the WebDriver protocol doesn't allow for arbitrary
JS error marshaling.
r=chmanchester
--HG--
extra : rebase_source : d1bd290b1df1acf6c3f67a7fcd7d1f71b7006477
When the `frame' argument is None, which it is by default, we were setting
the `id' field of the packet regardless. This only works because of a
faulty == operator comparison in the server.
r=jgriffin
--HG--
extra : rebase_source : cd490db0c8c18f68d4a91803daa833bc2f08631e
getElementSize and getElementLocation are getting removed from the
Marionette server (bug 1153911) and this is in preparation for that.
Fortunately getElementRect is backwards compatible and we can extract
the properties we need from that dictionary.
r=chmanchester
--HG--
extra : rebase_source : 8d4d8c005c90f335f4c241e677973807cfca0cb4
Brings Marionette closer to compliance with the W3C WebDriver standard
which prescribes that errors should be identified by a string rather
than a magic number.
r=dburns
--HG--
extra : rebase_source : 2bdb28f3c05e56b17cc13ceacbf3167dabe89fd0
extra : source : 2b691bf191db1a83ae489116649602a74e64007a
Brings Marionette closer to compliance with the W3C WebDriver standard
which prescribes that errors should be identified by a string rather
than a magic number.
r=dburns
--HG--
extra : rebase_source : cde9ecded568fb17c46cd5940ec2241cd4446aaf
extra : source : 2b691bf191db1a83ae489116649602a74e64007a
Adds `invalid selector' and `invalid session id' errors to the server,
and aligns the exceptions in the Python client with those in the server.
Some of the exceptions are not in use yet and consequently do not carry
a `code` property. This is fine because it makes us future-proof when
the server starts using them.
r=dburns
--HG--
extra : source : cc8eb386f147893aaf867797eb9f3c6d8fd0925a
Takes advantage of the new dispatching technique introduced in bug
1107706 on the content side.
The patch introduces the framework to write simpler command handlers
in content space, but does not convert all commands in listener.js to
use this. This can be done gradually, as both techniques are still
compatible.
r=dburns
--HG--
extra : source : 043a824dd7b749192a8c7ec3f1a8d3ba4d2619d0
Fixes regression from bug 941085, and bumps marionette_client to 0.11.
r=davehunt
--HG--
extra : rebase_source : a38ef00252e3ef08d5b9422946779e182a69a2ac
Adds `invalid selector' and `invalid session id' errors to the server,
and aligns the exceptions in the Python client with those in the server.
Some of the exceptions are not in use yet and consequently do not carry
a `code` property. This is fine because it makes us future-proof when
the server starts using them.
r=dburns
--HG--
extra : source : cc8eb386f147893aaf867797eb9f3c6d8fd0925a
Adds `invalid selector' and `invalid session id' errors to the server,
and aligns the exceptions in the Python client with those in the server.
Some of the exceptions are not in use yet and consequently do not carry
a `code` property. This is fine because it makes us future-proof when
the server starts using them.
r=dburns
--HG--
extra : source : cc8eb386f147893aaf867797eb9f3c6d8fd0925a
Takes advantage of the new dispatching technique introduced in bug
1107706 on the content side.
The patch introduces the framework to write simpler command handlers
in content space, but does not convert all commands in listener.js to
use this. This can be done gradually, as both techniques are still
compatible.
r=dburns
--HG--
extra : rebase_source : 9ad8846754b86a1acc225c1a9b77a60530e8703b
extra : source : 043a824dd7b749192a8c7ec3f1a8d3ba4d2619d0
Takes advantage of the new dispatching technique introduced in bug
1107706 on the content side.
The patch introduces the framework to write simpler command handlers
in content space, but does not convert all commands in listener.js to
use this. This can be done gradually, as both techniques are still
compatible.
r=dburns
--HG--
extra : rebase_source : 2fac74a40d529f4a9112d4cd1e8d3f0681fd3499
extra : source : 043a824dd7b749192a8c7ec3f1a8d3ba4d2619d0
Adds `invalid selector' and `invalid session id' errors to the server,
and aligns the exceptions in the Python client with those in the server.
Some of the exceptions are not in use yet and consequently do not carry
a `code` property. This is fine because it makes us future-proof when
the server starts using them.
r=dburns
--HG--
extra : rebase_source : 5a39fe5749190acb2170025586e6bfdd82e5697c
Takes advantage of the new dispatching technique introduced in bug
1107706 on the content side.
The patch introduces the framework to write simpler command handlers
in content space, but does not convert all commands in listener.js to
use this. This can be done gradually, as both techniques are still
compatible.
r=dburns
--HG--
extra : rebase_source : 43ef240735099221cbbddb753eaf9e2802a4de1d
Cleans up navigation tests to use assertion routines that give us better
feedback if tests were to fail.
Also adds a test for setting location through executeScript, and a test
for getCurrentUrl returning the URL of the top-level browsing context
when inside an iframe.
r=dburns
--HG--
extra : rebase_source : 1844c906cc436ef378f07342051a44689fedba58
Adds support for W3C WebDriver compatible file uploads, where additional
calls to sendKeys on <input type=file multiple> will append files,
rather than reset the field.
r=dburns
--HG--
extra : source : 93166201fca032157ecb88923a62e8b2e8f9529d
extra : amend_source : a27f709de201063cc510af2f234d45344e90193b
Adds string based statuses as defined by the W3C WebDriver protocol
to the Marionette Python client. Importantly, it does not remove the
ability to look up errors by their Selenium protocol number for backwards
compatibility reasons.
r=dburns
--HG--
extra : rebase_source : 792e85d01ed6513370f448762c1c5bf8f13842a4
Adds support for W3C WebDriver compatible file uploads, where additional
calls to sendKeys on <input type=file multiple> will append files,
rather than reset the field.
r=dburns
--HG--
extra : amend_source : 093abcf640631778cda25cf800077dae5fa9b5f4
Adds support for W3C WebDriver compatible file uploads, where additional
calls to sendKeys on <input type=file multiple> will append files,
rather than reset the field.
r=dburns
--HG--
extra : rebase_source : 5f058fd1fcf767a5b45ebb6ba4c32994eb52212e
Rather than attempting to bind non-functions and catching the exception this
explicitly checks if it is a function. This helps reduce memory consumption
needed for the exception stack traces. Realistically that will go away when GC
is run, but it throws off memory measurments prior to that.
Fixes use of pinch() routine in gestures.py as part of Gaia UI tests.
Regressed as part of bug 1107706.
r=dburns
--HG--
extra : rebase_source : a22302712be7cf2eb8ac49fa2d221b8a2ea923f8
This patch has no functional changes, apart from correctly naming
InvalidElementStateError and exporting it. It's not currently in use.
r=dburns
--HG--
extra : rebase_source : 92b1ddca4cf73a48f7ddeb26e51881e23d63adce
Add a `tags` attribute to a test or DEFAULT section in a manifest:
[test_foo]
tags = foo
Then run all tests with a given tag by passing in `--tag foo` to a supported test harness. So far mochitest, xpcshell and marionette are supported.
--HG--
extra : rebase_source : d75905da1ca021a15a9538117d3866425f73d962
extra : source : 3c34fd480729e3b6684fba747ff61078f672ce16
Add a `tags` attribute to a test or DEFAULT section in a manifest:
[test_foo]
tags = foo
Then run all tests with a given tag by passing in `--tag foo` to a supported test harness. So far mochitest, xpcshell and marionette are supported.
--HG--
extra : rebase_source : 68a0931c6a8ee1df4f5c09d67c396490774aa856
Linting; no functional changes.
--HG--
extra : rebase_source : bf63a6d317af1cba44c6608437c0b0894e8231ce
extra : source : ec2b1317d3c6389826da0e8e8c12176ff2cf9eeb
It uses chrome context to test XUL related functionality that is not
necessary nor desirable to run on B2G.
--HG--
extra : rebase_source : bb82f0bd89d782b1427a872524a7c4fd0e0cdc66
extra : source : e3ddaf8aae394231f40db79ba38d7bd8e19f2d8c
Emulator callbacks are now created dynamically upon request, and uses
a nicer data structure in chrome context. Each emulator callback is
encapsulated in EmulatorCallback, and stored on Emulator.
Emulator is stored on Dispatcher (as opposed to in marionette-server.js)
which bypasses some of the problems with circumventing the Marionette
protocol in GeckoDriver because of CommandProcessor.
Emulator callbacks to the client should be considered transparent, hence
they do not use the ListenerProxy. They are explicitly meant _not_
to be blocking.
--HG--
extra : rebase_source : f9fa688f7ec2401dbe3b18713cef7a9c0a4ab0f5
extra : source : eeb3d39874b17e02888427afb9709f35abc95120
The Marionette server handles requests separately with a global sense
of state which makes it hard to introduce generalised behaviour to many
commands. This effectively slows down protocol implementation because
each command request individually needs to do heavy lifting.
This patch introduces a series of abstractions that separates out the
WebDriver implementation to a new class, GeckoDriver. It also features
a new interface to mediate messages between the chrome- and content
processes.
This allows the code living in the chrome context to make direct calls
on the listener through a promise-based API:
let listener = new ListenerProxy(mm, sendCallback);
let res = yield listener.functionOnListener("arg1", "arg2");
The MarionetteServer class that used to live in marionette-server.js
has now been moved to server.js, while the WebDriver implementation
has moved to driver.js. By introducing more stringent separation,
MarionetteServer now properly encapsulates the server process allowing
us to unit tests for it in the future.
The patch is a refactor in the truest sense, in the meaning that no
input or output should have changed.
--HG--
extra : rebase_source : c94b8cd6b4e61addd3fe42c4b94a26ee987fc34a
extra : source : 7f506cdb77b88994ba9f5b13cc936a99a403f1fb
The dispatcher is analogous to the client socket connection, and handles
receiving packets and closing connections.
It also encompasses some of the functionality needed to establish the
devtools and Marionette connection, that previously used to live in
MarionetteServerConnection in marionette-server.js.
For each connection, recognised commands will be forwarded to the command
processor (command.js) unless a handler is defined in Dispatcher.requests.
--HG--
extra : rebase_source : 13cc697ba45addb6191df7d2f7ea1133194177ce
extra : source : 7abef4010b3094d3f276fc16cfbae43b55da7b0d
The command processor receives messages, processes them, and wraps the
execution of the command implementations. This allows commands to throw
errors without worrying about the side effects.
This patch also introduces a Response object which correspondingly wraps
the replies to the client. This shifts the responsibility of managing
the correctness of the packets from the commands to this.
--HG--
extra : rebase_source : 92e0ee1b3f7034a548a8a36705504b307906cf23
extra : source : b0d00faceef4e348cc99c020f01d59c7933677b7
Adds the ability to throw error objects for WebDriver statuses, and an
error module with convenience functions for manipulation of these and
for handling other error related operations.
--HG--
extra : rebase_source : 5ee047fd7a8e0ecea918e422cd12273b78a78153
extra : source : 0c074cdc434e3c8ba412db44aece7b1840198fe5
Linting; no functional changes.
--HG--
extra : rebase_source : 773765e663871a46f6b280510b92f71638aff170
extra : source : ec2b1317d3c6389826da0e8e8c12176ff2cf9eeb
It uses chrome context to test XUL related functionality that is not
necessary nor desirable to run on B2G.
--HG--
extra : rebase_source : f247c8b40325b682adaedea7b0812ede57438cf4
extra : source : e3ddaf8aae394231f40db79ba38d7bd8e19f2d8c
Emulator callbacks are now created dynamically upon request, and uses
a nicer data structure in chrome context. Each emulator callback is
encapsulated in EmulatorCallback, and stored on Emulator.
Emulator is stored on Dispatcher (as opposed to in marionette-server.js)
which bypasses some of the problems with circumventing the Marionette
protocol in GeckoDriver because of CommandProcessor.
Emulator callbacks to the client should be considered transparent, hence
they do not use the ListenerProxy. They are explicitly meant _not_
to be blocking.
--HG--
extra : rebase_source : 9e887526af99c02036575e5c7b6790629d5f917d
extra : source : eeb3d39874b17e02888427afb9709f35abc95120
The Marionette server handles requests separately with a global sense
of state which makes it hard to introduce generalised behaviour to many
commands. This effectively slows down protocol implementation because
each command request individually needs to do heavy lifting.
This patch introduces a series of abstractions that separates out the
WebDriver implementation to a new class, GeckoDriver. It also features
a new interface to mediate messages between the chrome- and content
processes.
This allows the code living in the chrome context to make direct calls
on the listener through a promise-based API:
let listener = new ListenerProxy(mm, sendCallback);
let res = yield listener.functionOnListener("arg1", "arg2");
The MarionetteServer class that used to live in marionette-server.js
has now been moved to server.js, while the WebDriver implementation
has moved to driver.js. By introducing more stringent separation,
MarionetteServer now properly encapsulates the server process allowing
us to unit tests for it in the future.
The patch is a refactor in the truest sense, in the meaning that no
input or output should have changed.
--HG--
extra : rebase_source : 72c68105df19dc1e328f78c6bfb2282b61d82c8d
extra : source : 7f506cdb77b88994ba9f5b13cc936a99a403f1fb
The dispatcher is analogous to the client socket connection, and handles
receiving packets and closing connections.
It also encompasses some of the functionality needed to establish the
devtools and Marionette connection, that previously used to live in
MarionetteServerConnection in marionette-server.js.
For each connection, recognised commands will be forwarded to the command
processor (command.js) unless a handler is defined in Dispatcher.requests.
--HG--
extra : rebase_source : a86a768323f9cf9450bc17a3b105265440e2c861
extra : source : 7abef4010b3094d3f276fc16cfbae43b55da7b0d
The command processor receives messages, processes them, and wraps the
execution of the command implementations. This allows commands to throw
errors without worrying about the side effects.
This patch also introduces a Response object which correspondingly wraps
the replies to the client. This shifts the responsibility of managing
the correctness of the packets from the commands to this.
--HG--
extra : rebase_source : 9e66199b7977528345680eb8170a082156286b8b
extra : source : b0d00faceef4e348cc99c020f01d59c7933677b7
Adds the ability to throw error objects for WebDriver statuses, and an
error module with convenience functions for manipulation of these and
for handling other error related operations.
--HG--
extra : rebase_source : 9b03a17a9568c98c79461effa39da5d42aaf4d26
extra : source : 0c074cdc434e3c8ba412db44aece7b1840198fe5
It uses chrome context to test XUL related functionality that is not
necessary nor desirable to run on B2G.
--HG--
extra : rebase_source : 64b32ff15ff2fce0ba0356b49736a404ec8e5c5d
Emulator callbacks are now created dynamically upon request, and uses
a nicer data structure in chrome context. Each emulator callback is
encapsulated in EmulatorCallback, and stored on Emulator.
Emulator is stored on Dispatcher (as opposed to in marionette-server.js)
which bypasses some of the problems with circumventing the Marionette
protocol in GeckoDriver because of CommandProcessor.
Emulator callbacks to the client should be considered transparent, hence
they do not use the ListenerProxy. They are explicitly meant _not_
to be blocking.
--HG--
extra : rebase_source : cc936f6556b666ac68f7cc5040c1772b74a0dd66
The Marionette server handles requests separately with a global sense
of state which makes it hard to introduce generalised behaviour to many
commands. This effectively slows down protocol implementation because
each command request individually needs to do heavy lifting.
This patch introduces a series of abstractions that separates out the
WebDriver implementation to a new class, GeckoDriver. It also features
a new interface to mediate messages between the chrome- and content
processes.
This allows the code living in the chrome context to make direct calls
on the listener through a promise-based API:
let listener = new ListenerProxy(mm, sendCallback);
let res = yield listener.functionOnListener("arg1", "arg2");
The MarionetteServer class that used to live in marionette-server.js
has now been moved to server.js, while the WebDriver implementation
has moved to driver.js. By introducing more stringent separation,
MarionetteServer now properly encapsulates the server process allowing
us to unit tests for it in the future.
The patch is a refactor in the truest sense, in the meaning that no
input or output should have changed.
--HG--
extra : rebase_source : 2513f6e88b79b2420757e66890d5ca49d5266318
The dispatcher is analogous to the client socket connection, and handles
receiving packets and closing connections.
It also encompasses some of the functionality needed to establish the
devtools and Marionette connection, that previously used to live in
MarionetteServerConnection in marionette-server.js.
For each connection, recognised commands will be forwarded to the command
processor (command.js) unless a handler is defined in Dispatcher.requests.
--HG--
extra : rebase_source : 2cf2e3ab1ab8b1044aff798b461dfee9b08cf7a4
The command processor receives messages, processes them, and wraps the
execution of the command implementations. This allows commands to throw
errors without worrying about the side effects.
This patch also introduces a Response object which correspondingly wraps
the replies to the client. This shifts the responsibility of managing
the correctness of the packets from the commands to this.
--HG--
extra : rebase_source : cfab78a0919b0cc95db9dfdf47b2b5e29a15094b
Adds the ability to throw error objects for WebDriver statuses, and an
error module with convenience functions for manipulation of these and
for handling other error related operations.
--HG--
extra : rebase_source : 8095e97f974cdf157cb3100a4249a6ae1a6451dc
Bug to re-enable is bug 1131860.
--HG--
extra : rebase_source : e41e246925353e147bb5eedaad9eca877a33a5c2
extra : amend_source : 1732525425b525c0229946b0ca0e146899c87895
Workaround until bug 1096488 gets fixed. A newly opened e10s window has an
initial browser that is not remote, but that transitions to become remote
as soon as it attempts to load a document. Marionette, unfortunately, is
not prepared at this time to deal with transitions between remote and
non-remote browsers. We work around this by forcing the initial browser to
be remote when the window opens.
--HG--
extra : rebase_source : 437dba9a74b662c23aa3d8540221897277690be7
Some mochitests needs to behave differently when ran on B2G Desktop.
Currently, this is implemented using user agent string detection,
mostly relying on "Mobile" being present and "Android" being absent.
This is only true on B2G Desktop when ran on Try because the mozconfig
defined FXOS_SIMULATOR and that, per bug 1115935, this substring is only
added in this case, but not if just MOZ_B2G is defined. A better
approach is to expose 'isB2G' in SpecialPowers for this kind of
detection.