From 53f2b320033668644eae58a8f3af5c94f0efc0f5 Mon Sep 17 00:00:00 2001 From: Henrik Skupin Date: Tue, 6 Aug 2024 13:59:29 +0200 Subject: [PATCH] Import of v0.35.0 (#2188) --- .cargo/{config => config.toml} | 0 CHANGES.md | 57 ++- Cargo.lock | 911 ++++++++++++++++++++++----------- Cargo.toml | 21 +- README.md | 2 +- doc/ARM.md | 4 +- doc/Capabilities.md | 15 - doc/CrashReports.md | 70 ++- doc/Support.md | 5 + marionette/Cargo.toml | 2 +- marionette/src/common.rs | 8 +- marionette/src/error.rs | 50 -- marionette/src/webdriver.rs | 23 +- src/android.rs | 30 +- src/browser.rs | 19 +- src/capabilities.rs | 11 +- src/command.rs | 2 +- src/logging.rs | 12 +- src/main.rs | 7 + src/marionette.rs | 63 ++- src/prefs.rs | 1 + 21 files changed, 871 insertions(+), 442 deletions(-) rename .cargo/{config => config.toml} (100%) diff --git a/.cargo/config b/.cargo/config.toml similarity index 100% rename from .cargo/config rename to .cargo/config.toml diff --git a/CHANGES.md b/CHANGES.md index 5e0de6f6..1c33e0c0 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,50 @@ All notable changes to this program are documented in this file. +## 0.35.0 (2024-08-06, `9f0a0036bea4`) + +### Known problems + +- _Startup hang with Firefox running in a container (e.g. snap, flatpak):_ + + When Firefox is packaged inside a container (like the default Firefox browser + shipped with Ubuntu 22.04), it may see a different filesystem to the host. + This can affect access to the generated profile directory, which may result + in a hang when starting Firefox. Workarounds are listed in the geckodriver + [usage documentation]. + +### Added + +- Support for [Permissions] that allow controlling permission prompts + within the browser. This enables automated tests to handle scenarios + involving permissions like `geolocation`, `notifications`, and more. + +- The command line flag `--enable-crash-reporter` has been added, to allow + the crash reporter in Firefox to automatically submit crash reports to + Mozilla's crash reporting system if a tab or the browser itself crashes. + + Note that this feature is disabled by default and should only be used when a + crash situation needs to be investigated. See our documentation for + [crash reports] in how to share these with us. + +### Changed + +- The validation of the `unhandledPromptBehavior` capability has been enhanced + to support finer configuration options for the [User Prompt Handler] which + are particularly used by [WebDriver BiDi]. + +### Fixed + +- The [Switch To Frame] command now correctly raises an "invalid argument" + error when the `id` parameter is missing. + +### Removed + +- Removed support for session negotiation using the deprecated + `desiredCapabilities` and `requiredCapabilities`. +- Removed support for the `moz:useNonSpecCompliantPointerOrigin` capability, + which has not bee supported since Firefox 116. + ## 0.34.0 (2024-01-03, `c44f0d09630a`) ### Known problems @@ -343,7 +387,7 @@ All notable changes to this program are documented in this file. ### Added -- Support for WebDriver clients to opt in to WebDriver BiDi. +- Support for WebDriver clients to opt in to [WebDriver BiDi]. Introduced the new boolean capability [`webSocketUrl`] that can be used by WebDriver clients to opt in to a bidirectional connection. A string capability @@ -382,7 +426,7 @@ All notable changes to this program are documented in this file. - Arguments as specified in [`moz:firefoxOptions`] are now used when starting Firefox. - - Port forwards set for Marionette and the WebSocket server (WebDriver BiDi) + - Port forwards set for Marionette and the WebSocket server ([WebDriver BiDi]) are now correctly removed when geckodriver exits. - The test root folder is now removed when geckodriver exists. @@ -1792,7 +1836,7 @@ and greater. - Fix Get Element Rect command to return floats instead of integers -- Fix passing of web elements to Switch To Frame command +- Fix passing of web elements to [Switch To Frame] command - Fix serialisation of script commands @@ -1806,6 +1850,7 @@ and greater. - Squash compile warnings [README]: https://github.com/mozilla/geckodriver/blob/master/README.md +[crash reports]: [usage documentation]: [Browser Toolbox]: https://developer.mozilla.org/en-US/docs/Tools/Browser_Toolbox [WebDriver conformance]: https://wpt.fyi/results/webdriver/tests?label=experimental @@ -1879,9 +1924,15 @@ and greater. [Set Timeouts]: https://w3c.github.io/webdriver/webdriver-spec.html#set-timeouts [Set Window Rect]: https://w3c.github.io/webdriver/webdriver-spec.html#set-window-rect [Status]: https://w3c.github.io/webdriver/webdriver-spec.html#status +[Switch to Frame]: https://w3c.github.io/webdriver/#dfn-switch-to-frame [Take Element Screenshot]: https://w3c.github.io/webdriver/webdriver-spec.html#take-element-screenshot +[User Prompt Handler]: https://w3c.github.io/webdriver/#user-prompt-handler [WebDriver errors]: https://w3c.github.io/webdriver/webdriver-spec.html#handling-errors +[WebDriver BiDi]: https://w3c.github.io/webdriver-bidi/ + +[Permissions]: https://www.w3.org/TR/permissions/#automation-webdriver-bidi + [Virtual Authenticators]: https://www.w3.org/TR/webauthn-2/#sctn-automation [Add Credential]: https://www.w3.org/TR/webauthn-2/#add-credential [Add Virtual Authenticator]: https://www.w3.org/TR/webauthn-2/#add-virtual-authenticator diff --git a/Cargo.lock b/Cargo.lock index b2ad25a8..f12b82ac 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "6e4503c46a5c0c7844e948c9a4d6acd9f50cccb4de1c48eb9e291ea17470c678" dependencies = [ "gimli", ] @@ -17,11 +17,22 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "ahash" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +dependencies = [ + "getrandom", + "once_cell", + "version_check", +] + [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -43,27 +54,36 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.4" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anyhow" -version = "1.0.79" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" +checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" + +[[package]] +name = "arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +dependencies = [ + "derive_arbitrary", +] [[package]] name = "autocfg" -version = "1.1.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "backtrace" -version = "0.3.69" +version = "0.3.73" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "5cc23269a4f8976d0a4d2e7109211a419fe30e8d88d677cd60b6bc79c5732e0a" dependencies = [ "addr2line", "cc", @@ -76,21 +96,21 @@ dependencies = [ [[package]] name = "base64" -version = "0.21.5" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] -name = "bitflags" -version = "1.3.2" +name = "base64" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "block-buffer" @@ -103,30 +123,21 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" - -[[package]] -name = "byteorder" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytes" -version = "1.5.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "8318a53db07bb3f8dca91a600466bdb3f2eaadeedfdbcf02e1accbad9271ba50" [[package]] name = "cc" -version = "1.0.83" +version = "1.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" -dependencies = [ - "libc", -] +checksum = "26a5c3fd7bfa1ce3897a3a3501d362b2d87b7f2583ebcb4a949ec25911025cbc" [[package]] name = "cfg-if" @@ -136,32 +147,33 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.31" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f2c685bad3eb3d45a01354cedb7d5faa66194d1d58ba6e267a8de788f79db38" +checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" dependencies = [ "android-tzdata", "iana-time-zone", "js-sys", "num-traits", + "serde", "wasm-bindgen", - "windows-targets 0.48.5", + "windows-targets 0.52.6", ] [[package]] name = "clap" -version = "4.4.12" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcfab8ba68f3668e89f6ff60f5b205cea56aa7b769451a59f34b8682f51c056d" +checksum = "0fbb260a053428790f3de475e304ff84cdbc4face759ea7a3e64c1edd938a7fc" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.4.12" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb7fb5e4e979aec3be7791562fcba452f94ad85e954da024396433e0e25a79e9" +checksum = "64b17d7ea74e9f833c7dbf2cbe4fb12ff26783eda4782a8975b72f895c9b4d99" dependencies = [ "anstyle", "clap_lex", @@ -171,9 +183,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.6.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "cookie" @@ -191,32 +203,38 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +[[package]] +name = "core_maths" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3b02505ccb8c50b0aa21ace0fc08c3e53adebd4e58caa18a36152803c7709a3" +dependencies = [ + "libm", +] + [[package]] name = "cpufeatures" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" +checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" dependencies = [ "libc", ] [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if", ] [[package]] name = "crossbeam-utils" -version = "0.8.18" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3a430a770ebd84726f584a90ee7f020d28db52c6d02138900f22341f866d39c" -dependencies = [ - "cfg-if", -] +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crypto-common" @@ -237,6 +255,17 @@ dependencies = [ "powerfmt", ] +[[package]] +name = "derive_arbitrary" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "digest" version = "0.10.7" @@ -267,6 +296,17 @@ dependencies = [ "winapi", ] +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "equivalent" version = "1.0.1" @@ -275,9 +315,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys 0.52.0", @@ -285,15 +325,15 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.1" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" [[package]] name = "flate2" -version = "1.0.28" +version = "1.0.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46303f565772937ffe1d394a4fac6f411c6013172fadde9dcdb1e147a086940e" +checksum = "7f211bbe8e69bbd0cfdea405084f128ae8b4aaa6b0b522fc8f2b009084797920" dependencies = [ "crc32fast", "miniz_oxide", @@ -330,6 +370,23 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +[[package]] +name = "futures-io" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" + +[[package]] +name = "futures-macro" +version = "0.3.30" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "futures-sink" version = "0.3.30" @@ -348,26 +405,34 @@ version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ + "futures-channel", "futures-core", + "futures-io", + "futures-macro", "futures-sink", "futures-task", + "memchr", "pin-project-lite", "pin-utils", + "slab", ] [[package]] name = "geckodriver" -version = "0.34.0" +version = "0.35.0" dependencies = [ "anyhow", - "base64", + "base64 0.21.7", "chrono", "clap", + "flate2", "hyper", + "icu_segmenter", "lazy_static", "log", "marionette", "mozdevice", + "mozilla-central-workspace-hack", "mozprofile", "mozrunner", "mozversion", @@ -378,7 +443,6 @@ dependencies = [ "serde_yaml", "tempfile", "thiserror", - "unicode-segmentation", "url", "uuid", "webdriver", @@ -397,9 +461,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.11" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", @@ -408,15 +472,15 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.1" +version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +checksum = "40ecd4077b5ae9fd2e9e169b102c6c330d0605168eb0e8bf79952b256dbefffd" [[package]] name = "h2" -version = "0.3.22" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" dependencies = [ "bytes", "fnv", @@ -424,7 +488,7 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 2.1.0", + "indexmap 2.3.0", "slab", "tokio", "tokio-util", @@ -436,12 +500,15 @@ name = "hashbrown" version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash", +] [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "headers" @@ -449,7 +516,7 @@ version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270" dependencies = [ - "base64", + "base64 0.21.7", "bytes", "headers-core", "http", @@ -467,11 +534,17 @@ dependencies = [ "http", ] +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + [[package]] name = "http" -version = "0.2.11" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ "bytes", "fnv", @@ -491,9 +564,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.8.0" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "0fcc0b4a115bf80b728eb8ea024ad5bd707b615bfed49e0665b6e0f86fd082d9" [[package]] name = "httpdate" @@ -503,9 +576,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.28" +version = "0.14.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" +checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" dependencies = [ "bytes", "futures-channel", @@ -527,9 +600,9 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.59" +version = "0.1.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6a67363e2aa4443928ce15e57ebae94fd8949958fd1223c4cfc0cd473ad7539" +checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -548,6 +621,80 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", +] + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "icu_segmenter" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a717725612346ffc2d7b42c94b820db6908048f39434504cb130e8b46256b0de" +dependencies = [ + "core_maths", + "displaydoc", + "icu_collections", + "icu_locid", + "icu_provider", + "icu_segmenter_data", + "utf8_iter", + "zerovec", +] + +[[package]] +name = "icu_segmenter_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f739ee737260d955e330bc83fdeaaf1631f7fb7ed218761d3c04bb13bb7d79df" + [[package]] name = "idna" version = "0.5.0" @@ -566,63 +713,60 @@ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", + "serde", ] [[package]] name = "indexmap" -version = "2.1.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" +checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown 0.14.5", ] [[package]] name = "itoa" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "js-sys" -version = "0.3.66" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.151" +version = "0.2.155" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4" +checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" [[package]] -name = "libredox" -version = "0.0.1" +name = "libm" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" -dependencies = [ - "bitflags 2.4.1", - "libc", - "redox_syscall", -] +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] -name = "line-wrap" -version = "0.1.1" +name = "libredox" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30344350a2a51da54c1d53be93fade8a237e545dbcc4bdbe635413f2117cab9" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "safemem", + "bitflags", + "libc", ] [[package]] @@ -633,21 +777,27 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linux-raw-sys" -version = "0.4.12" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "litemap" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" [[package]] name = "log" -version = "0.4.20" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "marionette" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "733dcd1bbd2820c7f326cbc677c0d2efd385e2a6200c85693de421c3dbeb47fb" +checksum = "5140659b61caf35acc6dad0e58d336506b788b945d3c5f1c4f3a1c30aa82ea50" dependencies = [ "serde", "serde_json", @@ -656,9 +806,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.1" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "523dc4f511e55ab87b694dc30d0f820d60906ef06413f93d4d7a1385599cc149" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "mime" @@ -668,9 +818,9 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mime_guess" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" dependencies = [ "mime", "unicase", @@ -678,18 +828,18 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" dependencies = [ "adler", ] [[package]] name = "mio" -version = "0.8.10" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "wasi", @@ -698,9 +848,9 @@ dependencies = [ [[package]] name = "mozdevice" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4c7b718013ae9c8ca6d274cd4fb287327039229ece926aa351673a627620bd" +checksum = "3fae5d4b60deaae101beb19f35af0e178344f3d6a28ba2502ff3f29253895ad3" dependencies = [ "log", "once_cell", @@ -712,11 +862,50 @@ dependencies = [ "walkdir", ] +[[package]] +name = "mozilla-central-workspace-hack" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ae74fdbd09f37badd19e6e7be7eb8caa44339d4cac405fbddc1b3518d5fcbc" +dependencies = [ + "bytes", + "chrono", + "flate2", + "futures-channel", + "futures-core", + "futures-sink", + "futures-util", + "getrandom", + "hashbrown 0.12.3", + "hyper", + "indexmap 1.9.3", + "libc", + "log", + "memchr", + "num-integer", + "num-traits", + "once_cell", + "proc-macro2", + "quote", + "regex", + "semver", + "serde", + "serde_json", + "smallvec", + "syn", + "tokio", + "tokio-util", + "tracing", + "url", + "uuid", + "winapi", +] + [[package]] name = "mozprofile" -version = "0.9.2" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ff70d953bb598e9ce5f6576eab6bf727c88b6c8f5c9c92c799bd2f2d4945b5d" +checksum = "affcb0b450f1f2423fc363991fb4b0e39405458de12a858618409702927a5149" dependencies = [ "tempfile", "thiserror", @@ -724,9 +913,9 @@ dependencies = [ [[package]] name = "mozrunner" -version = "0.15.2" +version = "0.15.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78774370d80364c4c6a9399ce404a01a6010f40de9322c4c78a072fd709ffcf0" +checksum = "01e43b4906e44e4663fa60721b2256caa833965cd2b95477e00b2e7c4619cd2d" dependencies = [ "dirs", "log", @@ -738,9 +927,9 @@ dependencies = [ [[package]] name = "mozversion" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abf0a8b4413116046eda692b369b29d7257064534d4d9c8541802dc68f2a918e" +checksum = "fc001b02ead9e0824edc6753e3f84a27720a01a4f7d7be35cf6142b690811f60" dependencies = [ "regex", "rust-ini", @@ -748,20 +937,45 @@ dependencies = [ "thiserror", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + +[[package]] +name = "num-integer" +version = "0.1.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +dependencies = [ + "num-traits", +] + [[package]] name = "num-traits" -version = "0.2.17" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] +[[package]] +name = "num_cpus" +version = "1.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +dependencies = [ + "hermit-abi", + "libc", +] + [[package]] name = "object" -version = "0.32.2" +version = "0.36.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +checksum = "3f203fa8daa7bb185f760ae12bd8e097f63d17041dcdcaf675ac54cdf863170e" dependencies = [ "memchr", ] @@ -780,18 +994,18 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project" -version = "1.1.3" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda4ed1c6c173e3fc7a83629421152e01d7b1f9b7f65fb301e490e8cfc656422" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.3" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", @@ -800,9 +1014,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -812,13 +1026,12 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "plist" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5699cc8a63d1aa2b1ee8e12b9ad70ac790d65788cd36101fa37f87ea46c4cef" +checksum = "42cf17e9a1800f5f396bc67d193dc9411b59012a5876445ef450d449881e1016" dependencies = [ - "base64", - "indexmap 2.1.0", - "line-wrap", + "base64 0.22.1", + "indexmap 2.3.0", "quick-xml", "serde", "time", @@ -832,45 +1045,36 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "proc-macro2" -version = "1.0.74" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2de98502f212cfcea8d0bb305bd0f49d7ebdd75b64ba0a68f937d888f4e0d6db" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "quick-xml" -version = "0.31.0" +version = "0.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" +checksum = "1d3a6e5838b60e0e8fa7a43f22ade549a37d61f8bdbe636d0d7816191de969c2" dependencies = [ "memchr", ] [[package]] name = "quote" -version = "1.0.35" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] -[[package]] -name = "redox_syscall" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "redox_users" -version = "0.4.4" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ "getrandom", "libredox", @@ -879,9 +1083,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.2" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", @@ -891,9 +1095,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.3" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ "aho-corasick", "memchr", @@ -902,9 +1106,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "rust-ini" @@ -914,43 +1118,28 @@ checksum = "8a654c5bda722c699be6b0fe4c0d90de218928da5b724c3e467fc48865c37263" [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustix" -version = "0.38.28" +version = "0.38.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72e572a5e8ca657d7366229cdde4bd14c4eb5499a9573d4d366fe1b599daa316" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" dependencies = [ - "bitflags 2.4.1", + "bitflags", "errno", "libc", "linux-raw-sys", "windows-sys 0.52.0", ] -[[package]] -name = "rustls-pemfile" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" -dependencies = [ - "base64", -] - [[package]] name = "ryu" -version = "1.0.16" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" - -[[package]] -name = "safemem" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "same-file" @@ -969,24 +1158,27 @@ checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" [[package]] name = "semver" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97ed7a9823b74f99c7742f5336af7be5ecd3eeafcb1507d1fa93347b1d589b0" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +dependencies = [ + "serde", +] [[package]] name = "serde" -version = "1.0.194" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b114498256798c94a0689e1a15fec6005dee8ac1f41de56404b67afc2a4b773" +checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.194" +version = "1.0.204" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3385e45322e8f9931410f01b3031ec534c3947d0e94c18049af4d9f9907d4e0" +checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" dependencies = [ "proc-macro2", "quote", @@ -995,20 +1187,22 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.110" +version = "1.0.122" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fbd975230bada99c8bb618e0c365c2eefa219158d5c6c29610fd09ff1833257" +checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da" dependencies = [ + "indexmap 2.3.0", "itoa", + "memchr", "ryu", "serde", ] [[package]] name = "serde_repr" -version = "0.1.18" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b2e6b945e9d3df726b65d6ee24060aff8e3533d431f677a9695db04eff9dfdb" +checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", @@ -1059,42 +1253,68 @@ dependencies = [ "autocfg", ] +[[package]] +name = "smallvec" +version = "1.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +dependencies = [ + "serde", +] + [[package]] name = "socket2" -version = "0.5.5" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + [[package]] name = "strsim" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" -version = "2.0.46" +version = "2.0.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89456b690ff72fddcecf231caedbe615c59480c93358a93dfae7fc29e3ebbf0e" +checksum = "dc4b9b9bf2add8093d3f2c0204471e951b2285580335de42f9d2534f3ae7a8af" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "tempfile" -version = "3.9.0" +version = "3.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa" +checksum = "b8fcd239983515c23a32fb82099f97d0b11b8c72f654ed659363a95c3dad7a53" dependencies = [ "cfg-if", "fastrand", - "redox_syscall", + "once_cell", "rustix", "windows-sys 0.52.0", ] @@ -1111,18 +1331,18 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.56" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.56" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", @@ -1131,12 +1351,13 @@ dependencies = [ [[package]] name = "time" -version = "0.3.31" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f657ba42c3f86e7680e53c8cd3af8abbe56b5491790b46e22e19c0d57463583e" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ "deranged", "itoa", + "num-conv", "powerfmt", "serde", "time-core", @@ -1151,18 +1372,28 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.16" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26197e33420244aeb70c3e8c78376ca46571bc4e701e4791c2cd9f57dcb3a43f" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" dependencies = [ + "num-conv", "time-core", ] +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", +] + [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -1175,14 +1406,15 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.35.1" +version = "1.38.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c89b4efa943be685f629b149f53829423f8f5531ea21249408e8e2f8671ec104" +checksum = "eb2caba9f80616f438e09748d5acda951967e1ea58508ef53d9c6402485a46df" dependencies = [ "backtrace", "bytes", "libc", "mio", + "num_cpus", "pin-project-lite", "socket2", "windows-sys 0.48.0", @@ -1190,9 +1422,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.14" +version = "0.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" +checksum = "267ac89e0bec6e691e5813911606935d77c476ff49024f98abcea3e7b15e37af" dependencies = [ "futures-core", "pin-project-lite", @@ -1201,16 +1433,15 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.10" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" dependencies = [ "bytes", "futures-core", "futures-sink", "pin-project-lite", "tokio", - "tracing", ] [[package]] @@ -1227,9 +1458,21 @@ checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ "log", "pin-project-lite", + "tracing-attributes", "tracing-core", ] +[[package]] +name = "tracing-attributes" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "tracing-core" version = "0.1.32" @@ -1262,9 +1505,9 @@ dependencies = [ [[package]] name = "unicode-bidi" -version = "0.3.14" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" @@ -1274,19 +1517,13 @@ checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" dependencies = [ "tinyvec", ] -[[package]] -name = "unicode-segmentation" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" - [[package]] name = "unix_path" version = "1.0.1" @@ -1304,20 +1541,27 @@ checksum = "2ace0b4755d0a2959962769239d56267f8a024fef2d9b32666b3dcd0946b0906" [[package]] name = "url" -version = "2.5.0" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", "percent-encoding", + "serde", ] +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "uuid" -version = "1.6.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" +checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" dependencies = [ "getrandom", "serde", @@ -1325,15 +1569,15 @@ dependencies = [ [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "walkdir" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", "winapi-util", @@ -1350,9 +1594,9 @@ dependencies = [ [[package]] name = "warp" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1e92e22e03ff1230c03a1a8ee37d2f89cd489e2e541b7550d6afad96faed169" +checksum = "4378d202ff965b011c64817db11d5829506d3404edeadb61f190d111da3f231c" dependencies = [ "bytes", "futures-channel", @@ -1365,13 +1609,11 @@ dependencies = [ "mime_guess", "percent-encoding", "pin-project", - "rustls-pemfile", "scoped-tls", "serde", "serde_json", "serde_urlencoded", "tokio", - "tokio-stream", "tokio-util", "tower-service", "tracing", @@ -1385,9 +1627,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -1395,9 +1637,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", @@ -1410,9 +1652,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1420,9 +1662,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", @@ -1433,20 +1675,21 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.89" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "webdriver" -version = "0.50.0" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "144ab979b12d36d65065635e646549925de229954de2eb3b47459b432a42db71" +checksum = "310ce9d3648c5ff1915ca7dd09c44eabb7eb17f9ff4a6e7e5f4a902c8d1e269f" dependencies = [ - "base64", + "base64 0.21.7", "bytes", "cookie", "http", + "icu_segmenter", "log", "serde", "serde_derive", @@ -1455,7 +1698,6 @@ dependencies = [ "time", "tokio", "tokio-stream", - "unicode-segmentation", "url", "warp", ] @@ -1478,11 +1720,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -1497,7 +1739,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.6", ] [[package]] @@ -1515,7 +1757,16 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -1535,17 +1786,18 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm 0.52.6", + "windows_aarch64_msvc 0.52.6", + "windows_i686_gnu 0.52.6", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.6", + "windows_x86_64_gnu 0.52.6", + "windows_x86_64_gnullvm 0.52.6", + "windows_x86_64_msvc 0.52.6", ] [[package]] @@ -1556,9 +1808,9 @@ checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" @@ -1568,9 +1820,9 @@ checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_aarch64_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" @@ -1580,9 +1832,15 @@ checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_gnu" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" @@ -1592,9 +1850,9 @@ checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_i686_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" @@ -1604,9 +1862,9 @@ checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnu" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" @@ -1616,9 +1874,9 @@ checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" @@ -1628,9 +1886,9 @@ checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "windows_x86_64_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winreg" @@ -1641,6 +1899,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + [[package]] name = "yaml-rust" version = "0.4.5" @@ -1650,14 +1914,85 @@ dependencies = [ "linked-hash-map", ] +[[package]] +name = "yoke" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerofrom" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "synstructure", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "zip" -version = "0.6.6" +version = "2.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" +checksum = "40dd8c92efc296286ce1fbd16657c5dbefff44f1b4ca01cc5f517d8b7b3d3e2e" dependencies = [ - "byteorder", + "arbitrary", "crc32fast", "crossbeam-utils", + "displaydoc", "flate2", + "indexmap 2.3.0", + "memchr", + "thiserror", ] diff --git a/Cargo.toml b/Cargo.toml index 53ecfd09..15327bb1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] edition = "2021" name = "geckodriver" -version = "0.34.0" +version = "0.35.0" authors = ["Mozilla"] include = [ "/.cargo", @@ -25,14 +25,17 @@ anyhow = "1" base64 = "0.21" chrono = "0.4.6" clap = { version = "4", default-features = false, features = ["cargo", "std", "suggestions", "wrap_help", "string"] } +# Depend on flate2 to enable the rust backend (the default) for flate2 used by the zip crate. +flate2 = "1" hyper = "0.14" +icu_segmenter = { version = "1.5", default-features = false, features = ["auto", "compiled_data"] } lazy_static = "1.0" log = { version = "0.4", features = ["std"] } -marionette = "0.5.0" -mozdevice = "0.5.2" -mozprofile = "0.9.2" -mozrunner = "0.15.2" -mozversion = "0.5.2" +marionette = "0.6.0" +mozdevice = "0.5.3" +mozprofile = "0.9.3" +mozrunner = "0.15.3" +mozversion = "0.5.3" regex = { version="1.0", default-features = false, features = ["perf", "std"] } serde = "1.0" serde_derive = "1.0" @@ -40,11 +43,11 @@ serde_json = "1.0" serde_yaml = "0.8" tempfile = "3" thiserror = "1" -unicode-segmentation = "1.9" url = "2.4" uuid = { version = "1.0", features = ["v4"] } -webdriver = "0.50.0" -zip = { version = "0.6", default-features = false, features = ["deflate"] } +webdriver = "0.51.0" +zip = { version = "2.1.2", default-features = false, features = ["deflate-flate2", "flate2"] } +mozilla-central-workspace-hack = { version = "0.1", features = ["geckodriver"], optional = true } [dev-dependencies] tempfile = "3" diff --git a/README.md b/README.md index ec43117a..7d117e78 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ For a detailed list of changes included in each release, please refer to the [ch * [Cross browser testing](https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing) -* [Selenium](https://seleniumhq.github.io/docs/) (work in progress) +* [Selenium](https://www.selenium.dev/documentation/) * [C# API](https://seleniumhq.github.io/selenium/docs/api/dotnet/) * [JavaScript API](https://seleniumhq.github.io/selenium/docs/api/javascript/) * [Java API](https://seleniumhq.github.io/selenium/docs/api/java/) diff --git a/doc/ARM.md b/doc/ARM.md index 8ae9afae..1b93f8f1 100644 --- a/doc/ARM.md +++ b/doc/ARM.md @@ -32,7 +32,7 @@ cross-compile ARMv7 from a Linux host system is as follows: % rustup target install armv7-unknown-linux-gnueabihf ``` - 5. Put this in [testing/geckodriver/.cargo/config]: + 5. Put this in [testing/geckodriver/.cargo/config.toml]: ```rust [target.armv7-unknown-linux-gnueabihf] @@ -47,4 +47,4 @@ cross-compile ARMv7 from a Linux host system is as follows: ``` [central]: https://hg.mozilla.org/mozilla-central/ -[testing/geckodriver/.cargo/config]: https://searchfox.org/mozilla-central/source/testing/geckodriver/.cargo/config +[testing/geckodriver/.cargo/config.toml]: https://searchfox.org/mozilla-central/source/testing/geckodriver/.cargo/config.toml diff --git a/doc/Capabilities.md b/doc/Capabilities.md index f33bbc4f..807d2b4b 100644 --- a/doc/Capabilities.md +++ b/doc/Capabilities.md @@ -54,21 +54,6 @@ websocket and interact with the browser by using the CDP protocol. [Remote Protocol]: /remote/index.rst [Chrome DevTools Protocol]: https://chromedevtools.github.io/devtools-protocol/ -## `moz:useNonSpecCompliantPointerOrigin` - -Note: This capability is no longer supported in Firefox 116 and later. - -A boolean value to indicate how the pointer origin for an action -command will be calculated. - -With Firefox 59 the calculation will be based on the requirements -by the [WebDriver] specification. This means that the pointer origin -is no longer computed based on the top and left position of the -referenced element, but on the in-view center point. - -To temporarily disable the WebDriver conformant behavior use `false` -as value for this capability. - ## `moz:webdriverClick` A boolean value to indicate which kind of interactability checks diff --git a/doc/CrashReports.md b/doc/CrashReports.md index 640b50f7..23df1c2e 100644 --- a/doc/CrashReports.md +++ b/doc/CrashReports.md @@ -1,35 +1,48 @@ # Analyzing crash data of Firefox -It's not uncommon that under some special platform configurations and while -running automated tests via Selenium and geckodriver Firefox could crash. In -those cases it is very helpful to retrieve the generated crash data aka -minidump files, and report these to us. +If Firefox crashes whilst under automation, it's helpful to retrieve the +generated crash data aka minidump files, and report these to us. -## Retrieve the crash information +## Retrieve the crash data Because geckodriver creates a temporary user profile for Firefox, it also automatically removes all its folders once the tests have been finished. That -also means that if Firefox or just a tab crashed the created minidump files -cannot be retrieved. To prevent that the `MINIDUMP_SAVE_PATH` environment -variable can be used. It needs to be forwarded to geckodriver and has to point -to an existing folder on the local machine. Then, whenever a crash occurs the -related crash information will then be written to the `.dmp` and -`.extra` files within the given folder. - -```bash -MINIDUMP_SAVE_PATH="/home/test/crashes" pytest path/to/test.py -``` +also means that if Firefox crashed the created minidump files are lost. To +prevent that a custom profile has to be used instead. The following code +shows an example by using the Python Selenium bindings on Mac OS: + +```python +import tempfile + +from selenium import webdriver +from selenium.webdriver.firefox.options import Options + +# Custom profile folder to keep the minidump files +profile = tempfile.mkdtemp(".selenium") +print("*** Using profile: {}".format(profile)) + +# Use the above folder as custom profile +opts = Options() +opts.add_argument("-profile") +opts.add_argument(profile) +opts.binary = "/Applications/Firefox.app/Contents/MacOS/firefox" -By running this command Firefox will now write minidump files to that folder: +driver = webdriver.Firefox( + options=opts, + # hard-code the Marionette port so geckodriver can connect + service_args=["--marionette-port", "2828"] +) -```bash -$ ls /home/test/crashes -4ad24258-ec0f-87bd-fd78-496d9170bd35.dmp -4ad24258-ec0f-87bd-fd78-496d9170bd35.extra +# Your test code which crashes Firefox ``` -Note that both of those files are needed when you want to file an issue for -geckodriver. If more files are present grab them all. +Executing the test with Selenium now, which triggers the crash of Firefox +will leave all the files from the user profile around in the above path. + +To retrieve the minidump files navigate to that folder and look for a sub +folder with the name `minidumps`. It should contain at least one series of +files. One file with the `.dmp` extension and another one with `.extra`. +Both of those files are needed. If more crash files are present grab them all. Attach the files as best archived as zip file to the created [geckodriver issue] on Github. @@ -50,3 +63,16 @@ crash report to the geckodriver issue. [crash reporter]: https://support.mozilla.org/kb/mozillacrashreporter#w_viewing-reports-outside-of-firefox [view the crash reports]: https://support.mozilla.orgkb/mozillacrashreporter#w_viewing-crash-reports + +## Enabling the crash reporter + +By default geckodriver disables the crash reporter so it doesn't submit crash +reports to Mozilla's crash reporting system, and also doesn't interfere with +testing. + +This behaviour can be overridden by using the command line argument +`--enable-crash-reporter`. You can [view the crash reports] and share it with +us after submission. + +**Important**: Please only enable the crash reporter if the above mentioned +solution does not work. diff --git a/doc/Support.md b/doc/Support.md index 731de147..4125d380 100644 --- a/doc/Support.md +++ b/doc/Support.md @@ -23,6 +23,11 @@ and required versions of Selenium and Firefox: + + 0.35.0 + ≥ 3.11 (3.14 Python) + 115 ESR + n/a 0.34.0 ≥ 3.11 (3.14 Python) diff --git a/marionette/Cargo.toml b/marionette/Cargo.toml index 13ed9955..0e496284 100644 --- a/marionette/Cargo.toml +++ b/marionette/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "marionette" -version = "0.5.0" +version = "0.6.0" authors = ["Mozilla"] description = "Library implementing the client side of Gecko's Marionette remote automation protocol." edition = "2018" diff --git a/marionette/src/common.rs b/marionette/src/common.rs index e819757e..248edaf3 100644 --- a/marionette/src/common.rs +++ b/marionette/src/common.rs @@ -70,7 +70,7 @@ pub struct Date(pub u64); pub enum Frame { Index(u16), Element(String), - Parent, + Top, } impl Serialize for Frame { @@ -82,7 +82,7 @@ impl Serialize for Frame { match self { Frame::Index(nth) => map.serialize_entry("id", nth)?, Frame::Element(el) => map.serialize_entry("element", el)?, - Frame::Parent => map.serialize_entry("id", &Value::Null)?, + Frame::Top => map.serialize_entry("id", &Value::Null)?, } map.end() } @@ -105,7 +105,7 @@ impl<'de> Deserialize<'de> for Frame { (Some(_id), Some(_element)) => Err(de::Error::custom("conflicting frame identifiers")), (Some(id), None) => Ok(Frame::Index(id)), (None, Some(element)) => Ok(Frame::Element(element)), - (None, None) => Ok(Frame::Parent), + (None, None) => Ok(Frame::Top), } } } @@ -194,7 +194,7 @@ mod tests { #[test] fn test_json_frame_parent() { - assert_ser_de(&Frame::Parent, json!({ "id": null })); + assert_ser_de(&Frame::Top, json!({ "id": null })); } #[test] diff --git a/marionette/src/error.rs b/marionette/src/error.rs index 6b054100..62e60d9b 100644 --- a/marionette/src/error.rs +++ b/marionette/src/error.rs @@ -2,54 +2,10 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -use std::error; use std::fmt; use serde::{Deserialize, Serialize}; -#[derive(Clone, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize, Deserialize)] -#[serde(untagged)] -pub(crate) enum Error { - Marionette(MarionetteError), -} - -impl Error { - pub fn kind(&self) -> ErrorKind { - match *self { - Error::Marionette(ref err) => err.kind, - } - } -} - -impl fmt::Debug for Error { - fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { - match self { - Error::Marionette(ref err) => fmt - .debug_struct("Marionette") - .field("kind", &err.kind) - .field("message", &err.message) - .field("stacktrace", &err.stack.clone()) - .finish(), - } - } -} - -impl fmt::Display for Error { - fn fmt(&self, fmt: &mut fmt::Formatter) -> fmt::Result { - match self { - Error::Marionette(ref err) => write!(fmt, "{}: {}", err.kind, err.message), - } - } -} - -impl error::Error for Error { - fn description(&self) -> &str { - match self { - Error::Marionette(_) => self.kind().as_str(), - } - } -} - #[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize, Deserialize)] pub struct MarionetteError { #[serde(rename = "error")] @@ -64,12 +20,6 @@ fn empty_string() -> String { "".to_owned() } -impl From for Error { - fn from(error: MarionetteError) -> Error { - Error::Marionette(error) - } -} - #[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd, Serialize, Deserialize)] pub enum ErrorKind { #[serde(rename = "element click intercepted")] diff --git a/marionette/src/webdriver.rs b/marionette/src/webdriver.rs index a3046e72..86b6dcde 100644 --- a/marionette/src/webdriver.rs +++ b/marionette/src/webdriver.rs @@ -97,8 +97,6 @@ pub enum PrintOrientation { Portrait, } - - #[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] pub struct PrintPage { pub width: f64, @@ -133,6 +131,25 @@ impl Default for PrintMargins { } } +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +pub struct SetPermissionParameters { + pub descriptor: SetPermissionDescriptor, + pub state: SetPermissionState, +} + +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +pub struct SetPermissionDescriptor { + pub name: String, +} + +#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)] +#[serde(rename_all = "lowercase")] +pub enum SetPermissionState { + Denied, + Granted, + Prompt, +} + #[derive(Clone, Debug, Serialize, Deserialize, PartialEq)] pub enum WebAuthnProtocol { #[serde(rename = "ctap1/u2f")] @@ -330,6 +347,8 @@ pub enum Command { ReleaseActions, #[serde(rename = "WebDriver:SendAlertText")] SendAlertText(Keys), + #[serde(rename = "WebDriver:SetPermission")] + SetPermission(SetPermissionParameters), #[serde(rename = "WebDriver:SetTimeouts")] SetTimeouts(Timeouts), #[serde(rename = "WebDriver:SetWindowRect")] diff --git a/src/android.rs b/src/android.rs index 763639c8..ce712a01 100644 --- a/src/android.rs +++ b/src/android.rs @@ -258,6 +258,7 @@ impl AndroidHandler { &self, args: Option>, envs: I, + enable_crash_reporter: bool, ) -> Result where I: IntoIterator, @@ -290,18 +291,20 @@ impl AndroidHandler { ); } - config.env.insert( - Value::String("MOZ_CRASHREPORTER".to_owned()), - Value::String("1".to_owned()), - ); - config.env.insert( - Value::String("MOZ_CRASHREPORTER_NO_REPORT".to_owned()), - Value::String("1".to_owned()), - ); - config.env.insert( - Value::String("MOZ_CRASHREPORTER_SHUTDOWN".to_owned()), - Value::String("1".to_owned()), - ); + if !enable_crash_reporter { + config.env.insert( + Value::String("MOZ_CRASHREPORTER".to_owned()), + Value::String("1".to_owned()), + ); + config.env.insert( + Value::String("MOZ_CRASHREPORTER_NO_REPORT".to_owned()), + Value::String("1".to_owned()), + ); + config.env.insert( + Value::String("MOZ_CRASHREPORTER_SHUTDOWN".to_owned()), + Value::String("1".to_owned()), + ); + } let mut contents: Vec = vec![CONFIG_FILE_HEADING.to_owned()]; contents.push(serde_yaml::to_string(&config)?); @@ -314,6 +317,7 @@ impl AndroidHandler { profile: &Profile, args: Option>, env: I, + enable_crash_reporter: bool, ) -> Result<()> where I: IntoIterator, @@ -340,7 +344,7 @@ impl AndroidHandler { .device .push_dir(&profile.path, &self.profile, 0o777)?; - let contents = self.generate_config_file(args, env)?; + let contents = self.generate_config_file(args, env, enable_crash_reporter)?; debug!("Content of generated GeckoView config file:\n{}", contents); let reader = &mut io::BufReader::new(contents.as_bytes()); diff --git a/src/browser.rs b/src/browser.rs index a33a755f..2f7fe2a9 100644 --- a/src/browser.rs +++ b/src/browser.rs @@ -73,6 +73,7 @@ impl LocalBrowser { marionette_port: u16, jsdebugger: bool, profile_root: Option<&Path>, + enable_crash_reporter: bool, ) -> WebDriverResult { let binary = options.binary.ok_or_else(|| { WebDriverError::new( @@ -124,10 +125,12 @@ impl LocalBrowser { } // https://developer.mozilla.org/docs/Environment_variables_affecting_crash_reporting - runner - .env("MOZ_CRASHREPORTER", "1") - .env("MOZ_CRASHREPORTER_NO_REPORT", "1") - .env("MOZ_CRASHREPORTER_SHUTDOWN", "1"); + if !enable_crash_reporter { + runner + .env("MOZ_CRASHREPORTER", "1") + .env("MOZ_CRASHREPORTER_NO_REPORT", "1") + .env("MOZ_CRASHREPORTER_SHUTDOWN", "1"); + } let process = match runner.start() { Ok(process) => process, @@ -240,6 +243,7 @@ impl RemoteBrowser { marionette_port: u16, websocket_port: Option, profile_root: Option<&Path>, + enable_crash_reporter: bool, ) -> WebDriverResult { let android_options = options.android.unwrap(); @@ -271,7 +275,12 @@ impl RemoteBrowser { ) })?; - handler.prepare(&profile, options.args, options.env.unwrap_or_default())?; + handler.prepare( + &profile, + options.args, + options.env.unwrap_or_default(), + enable_crash_reporter, + )?; handler.launch()?; diff --git a/src/capabilities.rs b/src/capabilities.rs index bd58741e..5d9bc5b9 100644 --- a/src/capabilities.rs +++ b/src/capabilities.rs @@ -12,7 +12,7 @@ use mozprofile::preferences::Pref; use mozprofile::profile::Profile; use mozrunner::firefox_args::{get_arg_value, parse_args, Arg}; use mozrunner::runner::platform::firefox_default_path; -use mozversion::{self, firefox_binary_version, firefox_version, Version}; +use mozversion::{firefox_binary_version, firefox_version, Version}; use regex::bytes::Regex; use serde_json::{Map, Value}; use std::collections::BTreeMap; @@ -315,15 +315,6 @@ impl<'a> BrowserCapabilities for FirefoxCapabilities<'a> { } } } - "moz:useNonSpecCompliantPointerOrigin" => { - warn!("You are using the deprecated vendor specific capability 'moz:useNonSpecCompliantPointerOrigin', which will be removed in Firefox 116."); - if !value.is_boolean() { - return Err(WebDriverError::new( - ErrorStatus::InvalidArgument, - "moz:useNonSpecCompliantPointerOrigin is not a boolean", - )); - } - } "moz:webdriverClick" => { if !value.is_boolean() { return Err(WebDriverError::new( diff --git a/src/command.rs b/src/command.rs index c92eabf6..5a949a70 100644 --- a/src/command.rs +++ b/src/command.rs @@ -7,7 +7,7 @@ use base64::prelude::BASE64_STANDARD; use base64::Engine; use hyper::Method; use serde::de::{self, Deserialize, Deserializer}; -use serde_json::{self, Value}; +use serde_json::Value; use std::env; use std::fs::File; use std::io::prelude::*; diff --git a/src/logging.rs b/src/logging.rs index 073da956..b3417e61 100644 --- a/src/logging.rs +++ b/src/logging.rs @@ -31,12 +31,12 @@ //! [`init`]: fn.init.html //! [`init_with_level`]: fn.init_with_level.html +use icu_segmenter::GraphemeClusterSegmenter; use std::fmt; use std::io; use std::io::Write; use std::str; use std::sync::atomic::{AtomicBool, AtomicUsize, Ordering}; -use unicode_segmentation::UnicodeSegmentation; use mozprofile::preferences::Pref; @@ -246,7 +246,15 @@ fn truncate_message(args: &fmt::Arguments) -> Option<(String, String)> { } let message = format!("{}", args); - let chars = message.graphemes(true).collect::>(); + if message.is_empty() || message.len() < MAX_STRING_LENGTH { + return None; + } + let chars = GraphemeClusterSegmenter::new() + .segment_str(&message) + .collect::>() + .windows(2) + .map(|i| &message[i[0]..i[1]]) + .collect::>(); if chars.len() > MAX_STRING_LENGTH { let middle: usize = MAX_STRING_LENGTH / 2; diff --git a/src/main.rs b/src/main.rs index a5c34c5e..3d7cdf10 100644 --- a/src/main.rs +++ b/src/main.rs @@ -254,6 +254,7 @@ fn parse_args(args: &ArgMatches) -> ProgramResult { allow_hosts: allow_hosts.clone(), allow_origins: allow_origins.clone(), jsdebugger: args.get_flag("jsdebugger"), + enable_crash_reporter: args.get_flag("enable_crash_reporter"), android_storage, }; Ok(Operation::Server { @@ -379,6 +380,12 @@ fn make_command() -> Command { .action(ArgAction::SetTrue) .help("Connect to an existing Firefox instance"), ) + .arg( + Arg::new("enable_crash_reporter") + .long("enable-crash-reporter") + .action(ArgAction::SetTrue) + .help("Enable the Firefox crash reporter for diagnostic purposes"), + ) .arg( Arg::new("help") .short('h') diff --git a/src/marionette.rs b/src/marionette.rs index 063fcc21..ffd54ee6 100644 --- a/src/marionette.rs +++ b/src/marionette.rs @@ -24,14 +24,16 @@ use marionette_rs::webdriver::{ PrintMargins as MarionettePrintMargins, PrintOrientation as MarionettePrintOrientation, PrintPage as MarionettePrintPage, PrintPageRange as MarionettePrintPageRange, PrintParameters as MarionettePrintParameters, ScreenshotOptions, Script as MarionetteScript, - Selector as MarionetteSelector, Url as MarionetteUrl, + Selector as MarionetteSelector, SetPermissionDescriptor as MarionetteSetPermissionDescriptor, + SetPermissionParameters as MarionetteSetPermissionParameters, + SetPermissionState as MarionetteSetPermissionState, Url as MarionetteUrl, UserVerificationParameters as MarionetteUserVerificationParameters, WebAuthnProtocol as MarionetteWebAuthnProtocol, WindowRect as MarionetteWindowRect, }; use mozdevice::AndroidStorageInput; use serde::de::{self, Deserialize, Deserializer}; use serde::ser::{Serialize, Serializer}; -use serde_json::{self, Map, Value}; +use serde_json::{Map, Value}; use std::io::prelude::*; use std::io::Error as IoError; use std::io::ErrorKind; @@ -53,18 +55,19 @@ use webdriver::command::WebDriverCommand::{ GetPageSource, GetShadowRoot, GetTimeouts, GetTitle, GetWindowHandle, GetWindowHandles, GetWindowRect, GoBack, GoForward, IsDisplayed, IsEnabled, IsSelected, MaximizeWindow, MinimizeWindow, NewSession, NewWindow, PerformActions, Print, Refresh, ReleaseActions, - SendAlertText, SetTimeouts, SetWindowRect, Status, SwitchToFrame, SwitchToParentFrame, - SwitchToWindow, TakeElementScreenshot, TakeScreenshot, WebAuthnAddCredential, - WebAuthnAddVirtualAuthenticator, WebAuthnGetCredentials, WebAuthnRemoveAllCredentials, - WebAuthnRemoveCredential, WebAuthnRemoveVirtualAuthenticator, WebAuthnSetUserVerified, + SendAlertText, SetPermission, SetTimeouts, SetWindowRect, Status, SwitchToFrame, + SwitchToParentFrame, SwitchToWindow, TakeElementScreenshot, TakeScreenshot, + WebAuthnAddCredential, WebAuthnAddVirtualAuthenticator, WebAuthnGetCredentials, + WebAuthnRemoveAllCredentials, WebAuthnRemoveCredential, WebAuthnRemoveVirtualAuthenticator, + WebAuthnSetUserVerified, }; use webdriver::command::{ ActionsParameters, AddCookieParameters, AuthenticatorParameters, AuthenticatorTransport, GetNamedCookieParameters, GetParameters, JavascriptCommandParameters, LocatorParameters, NewSessionParameters, NewWindowParameters, PrintMargins, PrintOrientation, PrintPage, - PrintPageRange, PrintParameters, SendKeysParameters, SwitchToFrameParameters, - SwitchToWindowParameters, TimeoutsParameters, UserVerificationParameters, WebAuthnProtocol, - WindowRectParameters, + PrintPageRange, PrintParameters, SendKeysParameters, SetPermissionDescriptor, + SetPermissionParameters, SetPermissionState, SwitchToFrameParameters, SwitchToWindowParameters, + TimeoutsParameters, UserVerificationParameters, WebAuthnProtocol, WindowRectParameters, }; use webdriver::command::{WebDriverCommand, WebDriverMessage}; use webdriver::common::{ @@ -102,6 +105,7 @@ pub(crate) struct MarionetteSettings { /// letting you debug internals. pub(crate) jsdebugger: bool, + pub(crate) enable_crash_reporter: bool, pub(crate) android_storage: AndroidStorageInput, } @@ -199,6 +203,7 @@ impl MarionetteHandler { marionette_port, websocket_port, self.settings.profile_root.as_deref(), + self.settings.enable_crash_reporter, )?) } else if !self.settings.connect_existing { Browser::Local(LocalBrowser::new( @@ -206,6 +211,7 @@ impl MarionetteHandler { marionette_port, self.settings.jsdebugger, self.settings.profile_root.as_deref(), + self.settings.enable_crash_reporter, )?) } else { Browser::Existing(marionette_port) @@ -456,6 +462,7 @@ impl MarionetteSession { | GetAlertText | TakeScreenshot | Print(_) + | SetPermission(_) | TakeElementScreenshot(_) | WebAuthnAddVirtualAuthenticator(_) | WebAuthnRemoveVirtualAuthenticator @@ -993,6 +1000,9 @@ fn try_convert_to_marionette_message( SendAlertText(ref x) => Some(Command::WebDriver( MarionetteWebDriverCommand::SendAlertText(x.to_marionette()?), )), + SetPermission(ref x) => Some(Command::WebDriver( + MarionetteWebDriverCommand::SetPermission(x.to_marionette()?), + )), SetTimeouts(ref x) => Some(Command::WebDriver(MarionetteWebDriverCommand::SetTimeouts( x.to_marionette()?, ))), @@ -1517,6 +1527,33 @@ impl ToMarionette for PrintMargins { } } +impl ToMarionette for SetPermissionParameters { + fn to_marionette(&self) -> WebDriverResult { + Ok(MarionetteSetPermissionParameters { + descriptor: self.descriptor.to_marionette()?, + state: self.state.to_marionette()?, + }) + } +} + +impl ToMarionette for SetPermissionDescriptor { + fn to_marionette(&self) -> WebDriverResult { + Ok(MarionetteSetPermissionDescriptor { + name: self.name.clone(), + }) + } +} + +impl ToMarionette for SetPermissionState { + fn to_marionette(&self) -> WebDriverResult { + Ok(match self { + SetPermissionState::Denied => MarionetteSetPermissionState::Denied, + SetPermissionState::Granted => MarionetteSetPermissionState::Granted, + SetPermissionState::Prompt => MarionetteSetPermissionState::Prompt, + }) + } +} + impl ToMarionette for AuthenticatorParameters { fn to_marionette(&self) -> WebDriverResult { Ok(MarionetteAuthenticatorParameters { @@ -1683,11 +1720,9 @@ impl ToMarionette for SendKeysParameters { impl ToMarionette for SwitchToFrameParameters { fn to_marionette(&self) -> WebDriverResult { Ok(match &self.id { - Some(x) => match x { - FrameId::Short(n) => MarionetteFrame::Index(*n), - FrameId::Element(el) => MarionetteFrame::Element(el.0.clone()), - }, - None => MarionetteFrame::Parent, + FrameId::Short(n) => MarionetteFrame::Index(*n), + FrameId::Element(el) => MarionetteFrame::Element(el.0.clone()), + FrameId::Top => MarionetteFrame::Top, }) } } diff --git a/src/prefs.rs b/src/prefs.rs index 7e8f0dfd..f69a6118 100644 --- a/src/prefs.rs +++ b/src/prefs.rs @@ -130,6 +130,7 @@ lazy_static! { ("browser.newtabpage.activity-stream.asrouter.providers.snippets", Pref::new("null")), ("browser.newtabpage.activity-stream.asrouter.providers.message-groups", Pref::new("null")), + // TODO: Remove once minimum supported Firefox release is 126. ("browser.newtabpage.activity-stream.asrouter.providers.whats-new-panel", Pref::new("null")), ("browser.newtabpage.activity-stream.asrouter.providers.messaging-experiments", Pref::new("null")), ("browser.newtabpage.activity-stream.feeds.system.topstories", Pref::new(false)),