Throw unsupported operation errors the same way throughout Marionette.
MozReview-Commit-ID: D63gVIeX2qK
--HG--
extra : rebase_source : 2f93a7a847c599234a1303a27a59a64f74e8f3f6
Throw unsupported operation errors the same way throughout Marionette.
MozReview-Commit-ID: D63gVIeX2qK
--HG--
extra : rebase_source : 89c7d99027add7df3b38797b9df041e3e38a4939
Marionette is not yet compatible with the WebDriver specification, and
we indicate this by lowering the specificationLevel capability to 0.
This lets us "gate" specification-compatible features, such as the new
element interactability algorithm.
The new interactability algorithm can be enabled by requesting the
capability specificationLevel 1.
MozReview-Commit-ID: 6wsEAsBtR6P
--HG--
extra : rebase_source : f37444470987bb782f32e190e3b5476eb139f142
Marionette is not yet compatible with the WebDriver specification, and
we indicate this by lowering the specificationLevel capability to 0.
This lets us "gate" specification-compatible features, such as the new
element interactability algorithm.
The new interactability algorithm can be enabled by requesting the
capability specificationLevel 1.
MozReview-Commit-ID: 6wsEAsBtR6P
--HG--
extra : rebase_source : 3109e0925178ffca5d807a56feabfe66783b38f6
Removes the exported constants from testing/marionette/element.js and
introduces the migrates to using the element.Strategy enum consistently
throughout Marionette.
The supported strategies array passed into ElementManager's ctor has
also received some much needed attention and now actually works.
MozReview-Commit-ID: LPuDX0aishM
--HG--
extra : rebase_source : bb06ea5a25d9a0dbcd6f3e1311d31df95cd4e26d
This bug is also a dependency for scheduling Mn-e10s tests on Windows 7
(bug 1251351).
MozReview-Commit-ID: 2jE4C99d1MX
--HG--
extra : rebase_source : 96c9fad49538fdadcc8f001aeef5926e82419001
This change removes almost all the remaining uses of loadSubScript and
global scope pollution. The only remaining use is for common.js, which
is resolved by a later bug for evaluating scripts.
MozReview-Commit-ID: 96h0yLElauq
--HG--
extra : histedit_source : 70f70a8aeffef3fca18addfa3fca575a9128e11a
extra : rebase_source : c251c58a7a086c606d3d3941adfeee26ecc49504
extra : commitid : 8XlX4zVZQUN
extra : source : 6bb93562a57656e6cc744c3c901a5ec80f9ec4d8
extra : intermediate-source : ad5bf32d8fef351a0bc4d6249bd16a34aa83f548
This change removes almost all the remaining uses of loadSubScript and
global scope pollution. The only remaining use is for common.js, which
is resolved by a later bug for evaluating scripts.
MozReview-Commit-ID: 96h0yLElauq
--HG--
extra : commitid : 8XlX4zVZQUN
extra : rebase_source : a5c8057c7ce0f52dc319f2e9d0937d6a4aab84d4
extra : source : 6bb93562a57656e6cc744c3c901a5ec80f9ec4d8
extra : histedit_source : 70f70a8aeffef3fca18addfa3fca575a9128e11a
This change removes almost all the remaining uses of loadSubScript and
global scope pollution. The only remaining use is for common.js, which
is resolved by a later bug for evaluating scripts.
--HG--
extra : commitid : 8XlX4zVZQUN
extra : rebase_source : b5420c4ba5298a7e972e7b14a13325bb8ea1a540
extra : histedit_source : 70f70a8aeffef3fca18addfa3fca575a9128e11a
This fixes an instance of passing an Error prototype over the message
manager as a CPOW. We solve this by marshaling the error, which is
now done automatically by the new AsyncMessageChannel. It allows us to
create an (almost) transparent promise-based interface between chrome-
and content contexts.
The patch also makes AsyncMessageChannel reusable on both sides of the
message listener, but it's currently not used at its maximum potential
because of the way the listener is architected.
--HG--
extra : commitid : EQd5E4Digdv
extra : rebase_source : 8e0c36960759d25c73bbbc0f4f0bcb453c1028f4
extra : amend_source : 6bb6a76a8b30a5524639f8236291980b16402e6a
A <window> object may not exist in popup windows that are spawned from
a <window>. document.documentElement is equivalent to <window> in
the case of the primary window, but lets us support the ChromeWindow's
document when it isn't.
--HG--
extra : commitid : GVJfQ7yGGdV
extra : rebase_source : af351c5bd91eb865c657a2f45479c5b360c50fc6
extra : amend_source : f3ddef37a7f663fcf4f049f13eac3cf94df2ad29
Turns testing/marionette/actions.js into a JS module.
--HG--
extra : commitid : 9H79Czlo1bR
extra : rebase_source : 361ba48bf1e25aff74f919b3f8d6999e3ef76209
extra : amend_source : e3d437eff976a4fd1381d5048e160c0359763d7d
This change reduces the number of content frame script message senders
from three to one by imposing a message format.
--HG--
extra : rebase_source : 2e2940eb7d095e22a60d3e6f3af44446bb425c93
A distinct advantage is that try...catch statements are no longer used
to control the flow of code.
--HG--
extra : rebase_source : e3dcadcf9fdfcfe9d227b571b5a830437428762c
extra : source : 2b6d148fd941363e4580137e5d6efc0eebdaf7bd
A distinct advantage is that try...catch statements are no longer used
to control the flow of code.
--HG--
extra : rebase_source : 402890020719b04245aa7c601f52752cb43c0666
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
The Python client sends a `max_length' command parameter to multiAction,
but the Marionette server looks for `max_len'. This likely a regression
from a refactor.
r=dburns
--HG--
extra : commitid : JoOg9ZjpkhB
extra : rebase_source : 3cc23bcc9934dfcbf4e3029e4876eb573d42296b
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 : 2upWRuXyqPF
extra : rebase_source : f384801e209e4b49ef57055fd550c3c435ece4ef
Moves most of the cookie implementation to a new file,
testing/marionette/cookies.js. The new Cookies class encapsulates all
APIs for manipulating and querying cookies from content space.
It communicates with chrome space, where the cookie manager lives, through
a new SyncContentSender provided by testing/marionette/proxy.js. This new
interface provides synchronous and transparent communication from content
to chrome, not dissimilar from how the original listener proxy works.
r=dburns
--HG--
extra : commitid : 7jF7OFSx4Yk
extra : rebase_source : 8fc73fb59196f8076e85673d002c42e2ae458ad0
Services.appinfo is populated by the target compile system's OS name,
taken from the OS_TARGET configure variable.
By using Services.sysinfo instead, we are returning the effective current
local system's operating system, which is similar to what is found in
Gecko's UA string.
r=dburns
--HG--
extra : commitid : 2ap54ga0CLq
extra : rebase_source : 803baa9d40dee8630e58b8ccf6d68ef7ca6f0e3b
Services.appinfo is populated by the target compile system's OS name,
taken from the OS_TARGET configure variable.
By using Services.sysinfo instead, we are returning the effective current
local system's operating system, which is similar to what is found in
Gecko's UA string.
r=dburns
--HG--
extra : commitid : 2UVeU9zzO6p
extra : rebase_source : cea1d6f8bc00173a68a28b51df33d59320be8093
Corrects type checks on parameters passed to command, indentation level,
and clarifies when the code leaps into content space.
Thanks to Stanislas Daniel Claude Dolcini for doing the first iteration
fix for this.
r=dburns
--HG--
extra : commitid : 3HeTTEsvvBx
extra : rebase_source : 7088760ae24d695a2f9fa20b14a16cdec2e125d7
This allows us from a child frame to go up one level. This is documented
at http://w3c.github.io/webdriver/webdriver-spec.html#switch-to-parent-frame
--HG--
extra : commitid : GtXAxWLM61v
extra : rebase_source : 9b18d51a5dbefb4dad1cb39b229dc3d55cfae26a
extra : histedit_source : d0a0479e0c9946f242efd71e722685447ae48fd1
Errors thrown by takeScreenshot used to be silently ignored. When the
command started using the new dispatching technique in bug 1202663,
it was surfaced we do not support taking screen captures of SVG documents.
Since this is a requirement for Web Platform Tests, this patch corrects
the wrong assumptions about document body and document element.
This patch also significantly refactors the screen capture code, but
only uses the new implementation in contnent space, since some further
modifications are required to use it in chrome.
r=dburns
r=jgriffin
--HG--
extra : commitid : DdCIEpd5PEJ
extra : rebase_source : 7357010f992d7f995765c685000892cc59d9ec9a
In a following patch, all DevTools moz.build files will use DevToolsModules to
install JS modules at a path that corresponds directly to their source tree
location. Here we rewrite all require and import calls to match the new
location that these files are installed to.
--HG--
extra : commitid : F2ItGm8ptRz
extra : rebase_source : b082fe4bf77e22e297e303fc601165ceff1c4cbc
The findChildElement and findChildElements commands were originally
added to provide Selenium compatibility because it sends an "id" field
in the body.
They are both unneeded now that we have wires which extracts the element
ID from the URI template and sets the "element" field that the normal
findElement and findElements commands use.
r=dburns
--HG--
extra : commitid : 9UOUJoukHH1
extra : rebase_source : 2f848ebbfa69b82b03d718340b8203d9183083d6