From 62f6f69c64c210ebe0de4ba66e99753dcf7414ad Mon Sep 17 00:00:00 2001 From: Nikolay Borisenko <22616990+nvborisenko@users.noreply.github.com> Date: Fri, 18 Oct 2024 15:54:25 +0300 Subject: [PATCH 001/135] [dotnet] The prebuild scripts is already decommissioned (#14591) * [dotnet] The prebuild scripts is already decommissioned * And don't specify exact cdp version in csproj --- dotnet/src/webdriver/WebDriver.csproj | 2 +- dotnet/src/webdriver/cdp/README.md | 7 +------ 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/dotnet/src/webdriver/WebDriver.csproj b/dotnet/src/webdriver/WebDriver.csproj index 2b9c282cb22de..e9acf442d70c1 100644 --- a/dotnet/src/webdriver/WebDriver.csproj +++ b/dotnet/src/webdriver/WebDriver.csproj @@ -106,7 +106,7 @@ - + diff --git a/dotnet/src/webdriver/cdp/README.md b/dotnet/src/webdriver/cdp/README.md index 04fca71638762..f78d0b3d04ba4 100644 --- a/dotnet/src/webdriver/cdp/README.md +++ b/dotnet/src/webdriver/cdp/README.md @@ -52,9 +52,4 @@ perform the following steps, where `` is the major version of the protocol: remove the entry for version `` from the `SupportedDevToolsVersions` dictionary initialization. 3. Remove the version string (`v`) from the `SUPPORTED_DEVTOOLS_VERSIONS` list in [`//dotnet:selenium-dotnet-version.bzl`](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/selenium-dotnet-version.bzl). -4. In [`//dotnet/src/webdriver:WebDriver.csproj.prebuild.cmd`](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/src/webdriver/WebDriver.csproj.prebuild.cmd), -remove the `if not exist` block for version ``. -5. In [`//dotnet/src/webdriver:WebDriver.csproj.prebuild.sh`](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/src/webdriver/WebDriver.csproj.prebuild.sh), -remove the `if-fi` block for version ``. -6. Commit the changes. - +4. Commit the changes. From 1b647987bafcdf0297edbafa543c84caf5623201 Mon Sep 17 00:00:00 2001 From: Augustin Gottlieb <33221555+aguspe@users.noreply.github.com> Date: Fri, 18 Oct 2024 15:39:26 +0200 Subject: [PATCH 002/135] [rb] Add RBS type support for BiDi related classes (#14611) --- rb/sig/lib/selenium/webdriver/bidi.rbs | 6 ++++- .../selenium/webdriver/bidi/log_handler.rbs | 27 +++++++++++++++++++ rb/sig/lib/selenium/webdriver/bidi/struct.rbs | 11 ++++++++ .../selenium/webdriver/remote/bidi_bridge.rbs | 17 ++++++++++++ .../lib/selenium/webdriver/remote/bridge.rbs | 2 ++ .../remote/bridge/locator_converter.rbs | 19 +++++++++++++ 6 files changed, 81 insertions(+), 1 deletion(-) create mode 100644 rb/sig/lib/selenium/webdriver/bidi/log_handler.rbs create mode 100644 rb/sig/lib/selenium/webdriver/bidi/struct.rbs create mode 100644 rb/sig/lib/selenium/webdriver/remote/bidi_bridge.rbs create mode 100644 rb/sig/lib/selenium/webdriver/remote/bridge/locator_converter.rbs diff --git a/rb/sig/lib/selenium/webdriver/bidi.rbs b/rb/sig/lib/selenium/webdriver/bidi.rbs index 109b658bca24b..fa6b8757f6815 100644 --- a/rb/sig/lib/selenium/webdriver/bidi.rbs +++ b/rb/sig/lib/selenium/webdriver/bidi.rbs @@ -7,13 +7,17 @@ module Selenium def initialize: (url: String) -> void + def add_callback: -> Integer + def close: () -> nil def callbacks: () -> Hash[untyped, untyped] + def remove_callback: -> Array[Integer] + def session: () -> Session - def send_cmd: (untyped method, **untyped params) -> untyped + def send_cmd: (String method, **untyped params) -> untyped def error_message: (Hash[String,String] message) -> String end diff --git a/rb/sig/lib/selenium/webdriver/bidi/log_handler.rbs b/rb/sig/lib/selenium/webdriver/bidi/log_handler.rbs new file mode 100644 index 0000000000000..703729d9c74ec --- /dev/null +++ b/rb/sig/lib/selenium/webdriver/bidi/log_handler.rbs @@ -0,0 +1,27 @@ +module Selenium + module WebDriver + class BiDi + class LogHandler + @bidi: BiDi + + @log_entry_subscribed: bool + + ConsoleLogEntry: Struct + + JavaScriptLogEntry: Struct + + def initialize: (BiDi bidi) -> void + + def add_message_handler: (String type) { (untyped) -> untyped } -> Integer + + def remove_message_handler: (Integer id) -> false + + private + + def subscribe_log_entry: () -> false + + def unsubscribe_log_entry: () -> false + end + end + end +end diff --git a/rb/sig/lib/selenium/webdriver/bidi/struct.rbs b/rb/sig/lib/selenium/webdriver/bidi/struct.rbs new file mode 100644 index 0000000000000..6fb893dd7e46d --- /dev/null +++ b/rb/sig/lib/selenium/webdriver/bidi/struct.rbs @@ -0,0 +1,11 @@ +module Selenium + module WebDriver + class BiDi + class Struct < ::Struct + def self.new: (*untyped args) { (?) -> untyped } -> void + + def self.camel_to_snake: (String camel_str) -> String + end + end + end +end diff --git a/rb/sig/lib/selenium/webdriver/remote/bidi_bridge.rbs b/rb/sig/lib/selenium/webdriver/remote/bidi_bridge.rbs new file mode 100644 index 0000000000000..cbb4fc665eb09 --- /dev/null +++ b/rb/sig/lib/selenium/webdriver/remote/bidi_bridge.rbs @@ -0,0 +1,17 @@ +module Selenium + module WebDriver + module Remote + class BiDiBridge < Bridge + @bidi: untyped + + attr_reader bidi: untyped + + def create_session: (Hash[Symbol, String] capabilities) -> BiDi + + def quit: () -> nil + + def close: () -> nil + end + end + end +end diff --git a/rb/sig/lib/selenium/webdriver/remote/bridge.rbs b/rb/sig/lib/selenium/webdriver/remote/bridge.rbs index 4e06cbd61ed7e..70520fd5f3aa1 100644 --- a/rb/sig/lib/selenium/webdriver/remote/bridge.rbs +++ b/rb/sig/lib/selenium/webdriver/remote/bridge.rbs @@ -32,6 +32,8 @@ module Selenium def initialize: (url: String | URI, ?http_client: untyped?) -> void + def bidi: -> WebDriver::Error::WebDriverError + def cancel_fedcm_dialog: -> nil def click_fedcm_dialog_button: -> nil diff --git a/rb/sig/lib/selenium/webdriver/remote/bridge/locator_converter.rbs b/rb/sig/lib/selenium/webdriver/remote/bridge/locator_converter.rbs new file mode 100644 index 0000000000000..3e2b15b82b84a --- /dev/null +++ b/rb/sig/lib/selenium/webdriver/remote/bridge/locator_converter.rbs @@ -0,0 +1,19 @@ +module Selenium + module WebDriver + module Remote + class Bridge + class LocatorConverter + ESCAPE_CSS_REGEXP: Regexp + + UNICODE_CODE_POINT: Integer + + def convert: (String | Symbol how, String what) -> Array[String] + + private + + def escape_css: (String string) -> String + end + end + end + end +end From 9759c0933adb0ae5a36fb24e92539a69b8a7d376 Mon Sep 17 00:00:00 2001 From: Viet Nguyen Duc Date: Fri, 18 Oct 2024 18:57:12 +0000 Subject: [PATCH 003/135] Update sample extension for ChromeOptionsFunctionalTest Signed-off-by: Viet Nguyen Duc --- .../webextensions-selenium-example.crx | Bin 1192 -> 1281 bytes .../manifest.json | 8 ++++++++ 2 files changed, 8 insertions(+) diff --git a/common/extensions/webextensions-selenium-example.crx b/common/extensions/webextensions-selenium-example.crx index 38b38003b7ec30d3c654745fa64909bd2899d9c7..941114eb446e8f4621f70aa9945066908a397a5f 100644 GIT binary patch literal 1281 zcmZ=RGBROiU|?`%Vqg$j!@{+U$)Jf*$$*!QQ>)FR?K>|cBO@yVa}y&!15licsfm%1 z;X#p&OrGOG|JZo-wk{!E9?@%sXF%QAEzP+6=bWOQ5`Uh5mU!KHj47j1voON>)MX>bpuCr%MgoF9zA3?7LY?(% z*e(1{vdmw_*&cgt=?RU+5$Y=rah|(yZ|Ag{*yi|>3aj(>SMNx^V^A_YHS>z>lE)#x z_RWYFOMm{GO>Bp|hqm>PB6G1-I@K5d=t>`MZTZaFe#qrR^URe;%g#JWdNSEHZ^wk& za;hzh65iiF`AYK9^!~;D2Kl#Af8Kr}v!SW6W9_A*68o)kchFqORd&#H~#)FP4h#-HX)>(Qtd+rIz* z{yTS{|H!*M(KVtq$EQpuY-h`RgOVhxf}q>gIcq+eXf1x<_*QTJpN*HVCiU#ipK^Gz z;(h&d3BHoAjfGWo&L=QDT*I*_ z26!{G=rS;Ha4<0II7dd^c=K^GFnPTIVonAThRnRI)Z`MqtYSt60iX~nsP#Y1)odWJ z=ef3+z9-)==0~2t6b*MTjeg`-;yd+Hz5X<>{Jm#+4%^Jxy-sNAW{We0vYuBCUuKwM zz+BYG=eM`hn02Z5qGrqPm^JylGTYh&tv2vWWdu)Z-K_J~sk7z!#$~!a!AifsYUSQa z4-{(UTP3{dj;59(kM$q^Rd#EiuTgw_uO(CI;J;&>vPB=)R{p%NoPQ7D8^_GxNISvC z)6$F#49URE!VC0GZem_$T52)KKlypseAF6b>wnll;O=K_Kl899jHRcKFbNqmGdl&o zikX!yZT(5sGjQtvzDF}eL|MA+@9qBnZr;;kriR?iooW{ssq4SddA4EaOpfSnEtU@) zqOCMfwcwQUnoW0U5HHxy5>u!oTS#6y$=UMnc*_qAJ>w;&z`Y%7>+w9*J zG1Au`36=XCdm)FR?K>|cBO@yVa}y&!15licsfm%1 zVb()Sy_mZZ&c@#qeC-St2ff^>nW5)1B|p9JbI$Cq+ZC4lHn(8vCnkuReWwi#*vljV< z6*SA|t^c-tO1}NG3kehW)r<^-Ow5WqGWNTyRP8ovRCJi3|4gf5;f>_~ZYLKR6i)c` z>gAs6to6HYT5rDNv7lG;cZ6X0^YU{GUKb=Su)7;*Z)ktG(pT_@RJ-sr&jKF@8r z|BKtwe65?tj)5$Xei@a2t|^M&v^DD8bQg3ZY^4|)~H6t=v!N%%YIRvZ>AcZpS?~CD!+R# z_E+tTq6O;$Ev-MhZgiD5OIB{EGCckCuwF&eM;0M2fkP+Lc+W`GFO2Q*Ss5h7+Zy1_ z%p$_Tz`?2JE-{*a z_%0*BZpgSjUSY0K#p1`8`=#8>=QQfte0Eqn`_=WW(uz0#yB**C%Fg}LxnpIPPZAW1 z-hY&SFe@u6ro_GTfZvh!*x3A6ywf<>CdA)+vV6^xEm5Ku?F@_8c($DSJ#TAN-Ug4! z{B;xTc1w57nEl`X*N%Nt%hXBv^6P)MQYQ)b<V zTxXhf7r9Pf73;QBQN*BB`mcRRZOr$G*k@}$9%gv>O-eZW>xCHq@4rvT#szpY0!s$m r5ejrZ12Ar(03~|SwW50)qz9r^6iC4XA;6oJ4J5?`ghfF5JXj3?S108f diff --git a/common/extensions/webextensions-selenium-example/manifest.json b/common/extensions/webextensions-selenium-example/manifest.json index 60f2e5460c500..69e480dc60dda 100644 --- a/common/extensions/webextensions-selenium-example/manifest.json +++ b/common/extensions/webextensions-selenium-example/manifest.json @@ -14,6 +14,14 @@ ] } ], + "permissions": [ + "storage", + "scripting" + ], + "host_permissions": [ + "https://*/*", + "http://*/*" + ], "browser_specific_settings": { "gecko": { "id": "webextensions-selenium-example-v3@example.com" From d922168d801e5a468ae3edbc68cb1055f04c9f41 Mon Sep 17 00:00:00 2001 From: Viet Nguyen Duc Date: Sat, 19 Oct 2024 19:44:02 +0000 Subject: [PATCH 004/135] [grid] UI Overview add more sort options (#14625) Signed-off-by: Viet Nguyen Duc --- .../grid-ui/src/screens/Overview/Overview.tsx | 50 +++++++++++++++---- 1 file changed, 39 insertions(+), 11 deletions(-) diff --git a/javascript/grid-ui/src/screens/Overview/Overview.tsx b/javascript/grid-ui/src/screens/Overview/Overview.tsx index 4ff654adad294..0ccfdae7940ea 100644 --- a/javascript/grid-ui/src/screens/Overview/Overview.tsx +++ b/javascript/grid-ui/src/screens/Overview/Overview.tsx @@ -48,7 +48,39 @@ function Overview (): JSX.Element { fetchPolicy: 'network-only' }) - const [sortOption, setSortOption] = useState('osInfo.name') + function compareSlotStereotypes(a: NodeInfo, b: NodeInfo, attribute: string): number { + const joinA = a.slotStereotypes.length === 1 + ? a.slotStereotypes[0][attribute] + : a.slotStereotypes.slice().map(st => st[attribute]).reverse().join(',') + const joinB = b.slotStereotypes.length === 1 + ? b.slotStereotypes[0][attribute] + : b.slotStereotypes.slice().map(st => st[attribute]).reverse().join(',') + return joinA.localeCompare(joinB) + } + + const sortProperties = { + 'platformName': (a, b) => compareSlotStereotypes(a, b, 'platformName'), + 'status': (a, b) => a.status.localeCompare(b.status), + 'browserName': (a, b) => compareSlotStereotypes(a, b, 'browserName'), + 'browserVersion': (a, b) => compareSlotStereotypes(a, b, 'browserVersion'), + 'slotCount': (a, b) => { + const valueA = a.slotStereotypes.reduce((sum, st) => sum + st.slotCount, 0) + const valueB = b.slotStereotypes.reduce((sum, st) => sum + st.slotCount, 0) + return valueA < valueB ? -1 : 1 + }, + 'id': (a, b) => (a.id < b.id ? -1 : 1) + } + + const sortPropertiesLabel = { + 'platformName': 'Platform Name', + 'status': 'Status', + 'browserName': 'Browser Name', + 'browserVersion': 'Browser Version', + 'slotCount': 'Slot Count', + 'id': 'ID' + } + + const [sortOption, setSortOption] = useState(Object.keys(sortProperties)[0]) const [sortOrder, setSortOrder] = useState(1) const [sortedNodes, setSortedNodes] = useState([]) const [isDescending, setIsDescending] = useState(false) @@ -62,12 +94,6 @@ function Overview (): JSX.Element { setSortOrder(event.target.checked ? -1 : 1) } - const sortProperties = { - 'osInfo.name': (a, b) => a.osInfo.name.localeCompare(b.osInfo.name), - 'status': (a, b) => a.status.localeCompare(b.status), - 'id': (a, b) => (a.id < b.id ? -1 : 1) - } - const sortNodes = useMemo(() => { return (nodes: NodeInfo[], option: string, order: number) => { const sortFn = sortProperties[option] || (() => 0) @@ -156,10 +182,12 @@ function Overview (): JSX.Element { Sort By Date: Mon, 21 Oct 2024 05:02:22 +0000 Subject: [PATCH 005/135] [ci] Bazel run on Windows cannot shorten the path enough Signed-off-by: Viet Nguyen Duc --- .github/workflows/ci-java.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci-java.yml b/.github/workflows/ci-java.yml index 569d68d562440..1ebd054c05089 100644 --- a/.github/workflows/ci-java.yml +++ b/.github/workflows/ci-java.yml @@ -22,6 +22,7 @@ jobs: # https://github.com/bazelbuild/rules_jvm_external/issues/1046 java-version: 17 run: | + fsutil 8dot3name set 0 bazel test --flaky_test_attempts 3 //java/test/org/openqa/selenium/chrome:ChromeDriverFunctionalTest ` //java/test/org/openqa/selenium/federatedcredentialmanagement:FederatedCredentialManagementTest ` //java/test/org/openqa/selenium/firefox:FirefoxDriverBuilderTest ` From 1345193fc2fdc8dfdbf17fddd2f53678f9230082 Mon Sep 17 00:00:00 2001 From: Navin Chandra <98466550+navin772@users.noreply.github.com> Date: Mon, 21 Oct 2024 18:09:25 +0530 Subject: [PATCH 006/135] =?UTF-8?q?[=F0=9F=9A=80=20Feature]=20[py]:=20Bett?= =?UTF-8?q?er=20compatibility=20with=20Appium-python=20(#14587)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [py] override default locator converter for python * Support registering custom finders in py * Support registering extra HTTP commands and methods in python * Support overriding User-Agent in python * Support registering extra headers * [py] Support ignore certificates * Support using custom element classes * tests for custom element test * address review comments * close parenthesis Co-authored-by: Kazuaki Matsuo * pass `init_args_for_pool_manager` in constructor * use existing driver fixture in tests * convert `add_command` to instance method --------- Co-authored-by: Sri Harsha <12621691+harsha509@users.noreply.github.com> Co-authored-by: Kazuaki Matsuo --- py/selenium/webdriver/common/by.py | 16 ++++ .../webdriver/remote/locator_converter.py | 28 +++++++ .../webdriver/remote/remote_connection.py | 47 +++++++++-- py/selenium/webdriver/remote/webdriver.py | 31 +++----- py/selenium/webdriver/remote/webelement.py | 22 +----- .../common/driver_element_finding_tests.py | 18 +++++ .../webdriver/remote/custom_element_tests.py | 50 ++++++++++++ .../remote/remote_custom_locator_tests.py | 40 ++++++++++ .../remote/remote_connection_tests.py | 77 ++++++++++++++++++- 9 files changed, 280 insertions(+), 49 deletions(-) create mode 100644 py/selenium/webdriver/remote/locator_converter.py create mode 100644 py/test/selenium/webdriver/remote/custom_element_tests.py create mode 100644 py/test/selenium/webdriver/remote/remote_custom_locator_tests.py diff --git a/py/selenium/webdriver/common/by.py b/py/selenium/webdriver/common/by.py index 56a3f96d6fbb8..65a74649f070e 100644 --- a/py/selenium/webdriver/common/by.py +++ b/py/selenium/webdriver/common/by.py @@ -16,7 +16,9 @@ # under the License. """The By implementation.""" +from typing import Dict from typing import Literal +from typing import Optional class By: @@ -31,5 +33,19 @@ class By: CLASS_NAME = "class name" CSS_SELECTOR = "css selector" + _custom_finders: Dict[str, str] = {} + + @classmethod + def register_custom_finder(cls, name: str, strategy: str) -> None: + cls._custom_finders[name] = strategy + + @classmethod + def get_finder(cls, name: str) -> Optional[str]: + return cls._custom_finders.get(name) or getattr(cls, name.upper(), None) + + @classmethod + def clear_custom_finders(cls) -> None: + cls._custom_finders.clear() + ByType = Literal["id", "xpath", "link text", "partial link text", "name", "tag name", "class name", "css selector"] diff --git a/py/selenium/webdriver/remote/locator_converter.py b/py/selenium/webdriver/remote/locator_converter.py new file mode 100644 index 0000000000000..b43da73ef47cd --- /dev/null +++ b/py/selenium/webdriver/remote/locator_converter.py @@ -0,0 +1,28 @@ +# Licensed to the Software Freedom Conservancy (SFC) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The SFC licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + + +class LocatorConverter: + def convert(self, by, value): + # Default conversion logic + if by == "id": + return "css selector", f'[id="{value}"]' + elif by == "class name": + return "css selector", f".{value}" + elif by == "name": + return "css selector", f'[name="{value}"]' + return by, value diff --git a/py/selenium/webdriver/remote/remote_connection.py b/py/selenium/webdriver/remote/remote_connection.py index e409d2b9c104b..0a4bde22c40d2 100644 --- a/py/selenium/webdriver/remote/remote_connection.py +++ b/py/selenium/webdriver/remote/remote_connection.py @@ -143,6 +143,14 @@ class RemoteConnection: ) _ca_certs = os.getenv("REQUESTS_CA_BUNDLE") if "REQUESTS_CA_BUNDLE" in os.environ else certifi.where() + system = platform.system().lower() + if system == "darwin": + system = "mac" + + # Class variables for headers + extra_headers = None + user_agent = f"selenium/{__version__} (python {system})" + @classmethod def get_timeout(cls): """:Returns: @@ -196,14 +204,10 @@ def get_remote_connection_headers(cls, parsed_url, keep_alive=False): - keep_alive (Boolean) - Is this a keep-alive connection (default: False) """ - system = platform.system().lower() - if system == "darwin": - system = "mac" - headers = { "Accept": "application/json", "Content-Type": "application/json;charset=UTF-8", - "User-Agent": f"selenium/{__version__} (python {system})", + "User-Agent": cls.user_agent, } if parsed_url.username: @@ -213,6 +217,9 @@ def get_remote_connection_headers(cls, parsed_url, keep_alive=False): if keep_alive: headers.update({"Connection": "keep-alive"}) + if cls.extra_headers: + headers.update(cls.extra_headers) + return headers def _get_proxy_url(self): @@ -236,7 +243,12 @@ def _separate_http_proxy_auth(self): def _get_connection_manager(self): pool_manager_init_args = {"timeout": self.get_timeout()} - if self._ca_certs: + pool_manager_init_args.update(self._init_args_for_pool_manager.get("init_args_for_pool_manager", {})) + + if self._ignore_certificates: + pool_manager_init_args["cert_reqs"] = "CERT_NONE" + urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) + elif self._ca_certs: pool_manager_init_args["cert_reqs"] = "CERT_REQUIRED" pool_manager_init_args["ca_certs"] = self._ca_certs @@ -252,9 +264,18 @@ def _get_connection_manager(self): return urllib3.PoolManager(**pool_manager_init_args) - def __init__(self, remote_server_addr: str, keep_alive: bool = False, ignore_proxy: bool = False): + def __init__( + self, + remote_server_addr: str, + keep_alive: bool = False, + ignore_proxy: bool = False, + ignore_certificates: bool = False, + init_args_for_pool_manager: dict = None, + ): self.keep_alive = keep_alive self._url = remote_server_addr + self._ignore_certificates = ignore_certificates + self._init_args_for_pool_manager = init_args_for_pool_manager or {} # Env var NO_PROXY will override this part of the code _no_proxy = os.environ.get("no_proxy", os.environ.get("NO_PROXY")) @@ -280,6 +301,16 @@ def __init__(self, remote_server_addr: str, keep_alive: bool = False, ignore_pro self._conn = self._get_connection_manager() self._commands = remote_commands + extra_commands = {} + + def add_command(self, name, method, url): + """Register a new command.""" + self._commands[name] = (method, url) + + def get_command(self, name: str): + """Retrieve a command if it exists.""" + return self._commands.get(name) + def execute(self, command, params): """Send a command to the remote server. @@ -291,7 +322,7 @@ def execute(self, command, params): - params - A dictionary of named parameters to send with the command as its JSON payload. """ - command_info = self._commands[command] + command_info = self._commands.get(command) or self.extra_commands.get(command) assert command_info is not None, f"Unrecognised command {command}" path_string = command_info[1] path = string.Template(path_string).substitute(params) diff --git a/py/selenium/webdriver/remote/webdriver.py b/py/selenium/webdriver/remote/webdriver.py index 41c4645bdc686..8ef6292012089 100644 --- a/py/selenium/webdriver/remote/webdriver.py +++ b/py/selenium/webdriver/remote/webdriver.py @@ -58,6 +58,7 @@ from .errorhandler import ErrorHandler from .file_detector import FileDetector from .file_detector import LocalFileDetector +from .locator_converter import LocatorConverter from .mobile import Mobile from .remote_connection import RemoteConnection from .script_key import ScriptKey @@ -171,6 +172,8 @@ def __init__( keep_alive: bool = True, file_detector: Optional[FileDetector] = None, options: Optional[Union[BaseOptions, List[BaseOptions]]] = None, + locator_converter: Optional[LocatorConverter] = None, + web_element_cls: Optional[type] = None, ) -> None: """Create a new driver that will issue commands using the wire protocol. @@ -183,6 +186,8 @@ def __init__( - file_detector - Pass custom file detector object during instantiation. If None, then default LocalFileDetector() will be used. - options - instance of a driver options.Options class + - locator_converter - Custom locator converter to use. Defaults to None. + - web_element_cls - Custom class to use for web elements. Defaults to WebElement. """ if isinstance(options, list): @@ -207,6 +212,8 @@ def __init__( self._switch_to = SwitchTo(self) self._mobile = Mobile(self) self.file_detector = file_detector or LocalFileDetector() + self.locator_converter = locator_converter or LocatorConverter() + self._web_element_cls = web_element_cls or self._web_element_cls self._authenticator_id = None self.start_client() self.start_session(capabilities) @@ -729,22 +736,14 @@ def find_element(self, by=By.ID, value: Optional[str] = None) -> WebElement: :rtype: WebElement """ + by, value = self.locator_converter.convert(by, value) + if isinstance(by, RelativeBy): elements = self.find_elements(by=by, value=value) if not elements: raise NoSuchElementException(f"Cannot locate relative element with: {by.root}") return elements[0] - if by == By.ID: - by = By.CSS_SELECTOR - value = f'[id="{value}"]' - elif by == By.CLASS_NAME: - by = By.CSS_SELECTOR - value = f".{value}" - elif by == By.NAME: - by = By.CSS_SELECTOR - value = f'[name="{value}"]' - return self.execute(Command.FIND_ELEMENT, {"using": by, "value": value})["value"] def find_elements(self, by=By.ID, value: Optional[str] = None) -> List[WebElement]: @@ -757,22 +756,14 @@ def find_elements(self, by=By.ID, value: Optional[str] = None) -> List[WebElemen :rtype: list of WebElement """ + by, value = self.locator_converter.convert(by, value) + if isinstance(by, RelativeBy): _pkg = ".".join(__name__.split(".")[:-1]) raw_function = pkgutil.get_data(_pkg, "findElements.js").decode("utf8") find_element_js = f"/* findElements */return ({raw_function}).apply(null, arguments);" return self.execute_script(find_element_js, by.to_dict()) - if by == By.ID: - by = By.CSS_SELECTOR - value = f'[id="{value}"]' - elif by == By.CLASS_NAME: - by = By.CSS_SELECTOR - value = f".{value}" - elif by == By.NAME: - by = By.CSS_SELECTOR - value = f'[name="{value}"]' - # Return empty list if driver returns null # See https://github.com/SeleniumHQ/selenium/issues/4555 return self.execute(Command.FIND_ELEMENTS, {"using": by, "value": value})["value"] or [] diff --git a/py/selenium/webdriver/remote/webelement.py b/py/selenium/webdriver/remote/webelement.py index ef60757294caa..08c772eaad56e 100644 --- a/py/selenium/webdriver/remote/webelement.py +++ b/py/selenium/webdriver/remote/webelement.py @@ -404,16 +404,7 @@ def find_element(self, by=By.ID, value=None) -> WebElement: :rtype: WebElement """ - if by == By.ID: - by = By.CSS_SELECTOR - value = f'[id="{value}"]' - elif by == By.CLASS_NAME: - by = By.CSS_SELECTOR - value = f".{value}" - elif by == By.NAME: - by = By.CSS_SELECTOR - value = f'[name="{value}"]' - + by, value = self._parent.locator_converter.convert(by, value) return self._execute(Command.FIND_CHILD_ELEMENT, {"using": by, "value": value})["value"] def find_elements(self, by=By.ID, value=None) -> List[WebElement]: @@ -426,16 +417,7 @@ def find_elements(self, by=By.ID, value=None) -> List[WebElement]: :rtype: list of WebElement """ - if by == By.ID: - by = By.CSS_SELECTOR - value = f'[id="{value}"]' - elif by == By.CLASS_NAME: - by = By.CSS_SELECTOR - value = f".{value}" - elif by == By.NAME: - by = By.CSS_SELECTOR - value = f'[name="{value}"]' - + by, value = self._parent.locator_converter.convert(by, value) return self._execute(Command.FIND_CHILD_ELEMENTS, {"using": by, "value": value})["value"] def __hash__(self) -> int: diff --git a/py/test/selenium/webdriver/common/driver_element_finding_tests.py b/py/test/selenium/webdriver/common/driver_element_finding_tests.py index 2578ac2f57861..205edb92e1f88 100644 --- a/py/test/selenium/webdriver/common/driver_element_finding_tests.py +++ b/py/test/selenium/webdriver/common/driver_element_finding_tests.py @@ -715,3 +715,21 @@ def test_should_not_be_able_to_find_an_element_on_a_blank_page(driver, pages): driver.get("about:blank") with pytest.raises(NoSuchElementException): driver.find_element(By.TAG_NAME, "a") + + +# custom finders tests + + +def test_register_and_get_custom_finder(): + By.register_custom_finder("custom", "custom strategy") + assert By.get_finder("custom") == "custom strategy" + + +def test_get_nonexistent_finder(): + assert By.get_finder("nonexistent") is None + + +def test_clear_custom_finders(): + By.register_custom_finder("custom", "custom strategy") + By.clear_custom_finders() + assert By.get_finder("custom") is None diff --git a/py/test/selenium/webdriver/remote/custom_element_tests.py b/py/test/selenium/webdriver/remote/custom_element_tests.py new file mode 100644 index 0000000000000..3fccb52ad3119 --- /dev/null +++ b/py/test/selenium/webdriver/remote/custom_element_tests.py @@ -0,0 +1,50 @@ +# Licensed to the Software Freedom Conservancy (SFC) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The SFC licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +from selenium.webdriver.common.by import By +from selenium.webdriver.remote.webelement import WebElement + + +# Custom element class +class MyCustomElement(WebElement): + def custom_method(self): + return "Custom element method" + + +def test_find_element_with_custom_class(driver, pages): + """Test to ensure custom element class is used for a single element.""" + driver._web_element_cls = MyCustomElement + pages.load("simpleTest.html") + element = driver.find_element(By.TAG_NAME, "body") + assert isinstance(element, MyCustomElement) + assert element.custom_method() == "Custom element method" + + +def test_find_elements_with_custom_class(driver, pages): + """Test to ensure custom element class is used for multiple elements.""" + driver._web_element_cls = MyCustomElement + pages.load("simpleTest.html") + elements = driver.find_elements(By.TAG_NAME, "div") + assert all(isinstance(el, MyCustomElement) for el in elements) + assert all(el.custom_method() == "Custom element method" for el in elements) + + +def test_default_element_class(driver, pages): + """Test to ensure default WebElement class is used.""" + pages.load("simpleTest.html") + element = driver.find_element(By.TAG_NAME, "body") + assert isinstance(element, WebElement) + assert not hasattr(element, "custom_method") diff --git a/py/test/selenium/webdriver/remote/remote_custom_locator_tests.py b/py/test/selenium/webdriver/remote/remote_custom_locator_tests.py new file mode 100644 index 0000000000000..e235f2ee2e999 --- /dev/null +++ b/py/test/selenium/webdriver/remote/remote_custom_locator_tests.py @@ -0,0 +1,40 @@ +# Licensed to the Software Freedom Conservancy (SFC) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The SFC licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +from selenium.webdriver.remote.locator_converter import LocatorConverter + + +class CustomLocatorConverter(LocatorConverter): + def convert(self, by, value): + # Custom conversion logic + if by == "custom": + return "css selector", f'[custom-attr="{value}"]' + return super().convert(by, value) + + +def test_find_element_with_custom_locator(driver): + driver.get("data:text/html,
Test
") + element = driver.find_element("custom", "example") + assert element is not None + assert element.text == "Test" + + +def test_find_elements_with_custom_locator(driver): + driver.get("data:text/html,
Test1
Test2
") + elements = driver.find_elements("custom", "example") + assert len(elements) == 2 + assert elements[0].text == "Test1" + assert elements[1].text == "Test2" diff --git a/py/test/unit/selenium/webdriver/remote/remote_connection_tests.py b/py/test/unit/selenium/webdriver/remote/remote_connection_tests.py index 2c798365d85f5..260214e5c918d 100644 --- a/py/test/unit/selenium/webdriver/remote/remote_connection_tests.py +++ b/py/test/unit/selenium/webdriver/remote/remote_connection_tests.py @@ -15,6 +15,7 @@ # specific language governing permissions and limitations # under the License. +from unittest.mock import patch from urllib import parse import pytest @@ -24,6 +25,31 @@ from selenium.webdriver.remote.remote_connection import RemoteConnection +@pytest.fixture +def remote_connection(): + """Fixture to create a RemoteConnection instance.""" + return RemoteConnection("http://localhost:4444") + + +def test_add_command(remote_connection): + """Test adding a custom command to the connection.""" + remote_connection.add_command("CUSTOM_COMMAND", "PUT", "/session/$sessionId/custom") + assert remote_connection.get_command("CUSTOM_COMMAND") == ("PUT", "/session/$sessionId/custom") + + +@patch("selenium.webdriver.remote.remote_connection.RemoteConnection._request") +def test_execute_custom_command(mock_request, remote_connection): + """Test executing a custom command through the connection.""" + remote_connection.add_command("CUSTOM_COMMAND", "PUT", "/session/$sessionId/custom") + mock_request.return_value = {"status": 200, "value": "OK"} + + params = {"sessionId": "12345"} + response = remote_connection.execute("CUSTOM_COMMAND", params) + + mock_request.assert_called_once_with("PUT", "http://localhost:4444/session/12345/custom", body="{}") + assert response == {"status": 200, "value": "OK"} + + def test_get_remote_connection_headers_defaults(): url = "http://remote" headers = RemoteConnection.get_remote_connection_headers(parse.urlparse(url)) @@ -32,7 +58,7 @@ def test_get_remote_connection_headers_defaults(): assert headers.get("Accept") == "application/json" assert headers.get("Content-Type") == "application/json;charset=UTF-8" assert headers.get("User-Agent").startswith(f"selenium/{__version__} (python ") - assert headers.get("User-Agent").split(" ")[-1] in {"windows)", "mac)", "linux)"} + assert headers.get("User-Agent").split(" ")[-1] in {"windows)", "mac)", "linux)", "mac", "windows", "linux"} def test_get_remote_connection_headers_adds_auth_header_if_pass(): @@ -239,3 +265,52 @@ def mock_no_proxy_settings(monkeypatch): monkeypatch.setenv("http_proxy", http_proxy) monkeypatch.setenv("no_proxy", "65.253.214.253,localhost,127.0.0.1,*zyz.xx,::1") monkeypatch.setenv("NO_PROXY", "65.253.214.253,localhost,127.0.0.1,*zyz.xx,::1,127.0.0.0/8") + + +@patch("selenium.webdriver.remote.remote_connection.RemoteConnection.get_remote_connection_headers") +def test_override_user_agent_in_headers(mock_get_remote_connection_headers, remote_connection): + RemoteConnection.user_agent = "custom-agent/1.0 (python 3.8)" + + mock_get_remote_connection_headers.return_value = { + "Accept": "application/json", + "Content-Type": "application/json;charset=UTF-8", + "User-Agent": "custom-agent/1.0 (python 3.8)", + } + + headers = RemoteConnection.get_remote_connection_headers(parse.urlparse("http://remote")) + + assert headers.get("User-Agent") == "custom-agent/1.0 (python 3.8)" + assert headers.get("Accept") == "application/json" + assert headers.get("Content-Type") == "application/json;charset=UTF-8" + + +@patch("selenium.webdriver.remote.remote_connection.RemoteConnection._request") +def test_register_extra_headers(mock_request, remote_connection): + RemoteConnection.extra_headers = {"Foo": "bar"} + + mock_request.return_value = {"status": 200, "value": "OK"} + remote_connection.execute("newSession", {}) + + mock_request.assert_called_once_with("POST", "http://localhost:4444/session", body="{}") + headers = RemoteConnection.get_remote_connection_headers(parse.urlparse("http://localhost:4444"), False) + assert headers["Foo"] == "bar" + + +def test_get_connection_manager_ignores_certificates(monkeypatch): + monkeypatch.setattr(RemoteConnection, "get_timeout", lambda _: 10) + remote_connection = RemoteConnection("http://remote", ignore_certificates=True) + conn = remote_connection._get_connection_manager() + + assert conn.connection_pool_kw["timeout"] == 10 + assert conn.connection_pool_kw["cert_reqs"] == "CERT_NONE" + assert isinstance(conn, urllib3.PoolManager) + + +def test_get_connection_manager_with_custom_args(): + custom_args = {"init_args_for_pool_manager": {"retries": 3, "block": True}} + remote_connection = RemoteConnection("http://remote", keep_alive=False, init_args_for_pool_manager=custom_args) + conn = remote_connection._get_connection_manager() + + assert isinstance(conn, urllib3.PoolManager) + assert conn.connection_pool_kw["retries"] == 3 + assert conn.connection_pool_kw["block"] is True From c145a83613130fefb5d338b6626b99a646fdfa37 Mon Sep 17 00:00:00 2001 From: Rob Brackett Date: Mon, 8 Jul 2024 14:45:40 -0700 Subject: [PATCH 007/135] Update Ruby BiDi script structs to match spec This updates the structs used by the BiDi `Script` and `LogHandler` classes to match the W3C spec as of 2024-07-08. It also makes the tests slightly more detailed. --- rb/lib/selenium/webdriver/bidi/log_handler.rb | 4 +- .../selenium/webdriver/bidi/script_spec.rb | 49 +++++++++++++++++-- 2 files changed, 48 insertions(+), 5 deletions(-) diff --git a/rb/lib/selenium/webdriver/bidi/log_handler.rb b/rb/lib/selenium/webdriver/bidi/log_handler.rb index 5054a28ed416f..0ba7382927f2e 100644 --- a/rb/lib/selenium/webdriver/bidi/log_handler.rb +++ b/rb/lib/selenium/webdriver/bidi/log_handler.rb @@ -21,8 +21,8 @@ module Selenium module WebDriver class BiDi class LogHandler - ConsoleLogEntry = BiDi::Struct.new(:level, :text, :timestamp, :method, :args, :type) - JavaScriptLogEntry = BiDi::Struct.new(:level, :text, :timestamp, :stack_trace, :type) + ConsoleLogEntry = BiDi::Struct.new(:level, :text, :timestamp, :stack_trace, :type, :source, :method, :args) + JavaScriptLogEntry = BiDi::Struct.new(:level, :text, :timestamp, :stack_trace, :type, :source) def initialize(bidi) @bidi = bidi diff --git a/rb/spec/integration/selenium/webdriver/bidi/script_spec.rb b/rb/spec/integration/selenium/webdriver/bidi/script_spec.rb index eb660f9b4d763..578659befa1f5 100644 --- a/rb/spec/integration/selenium/webdriver/bidi/script_spec.rb +++ b/rb/spec/integration/selenium/webdriver/bidi/script_spec.rb @@ -25,6 +25,20 @@ module WebDriver only: {browser: %i[chrome edge firefox]} do after { |example| reset_driver!(example: example) } + # Helper to match the expected pattern of `script.StackFrame` objects. + # https://w3c.github.io/webdriver-bidi/#type-script-StackFrame + # + # Pass in any fields you want to check more specific values for, e.g: + # a_stack_frame('functionName' => 'someFunction') + def a_stack_frame(**options) + include({ + 'columnNumber' => an_instance_of(Integer), + 'functionName' => an_instance_of(String), + 'lineNumber' => an_instance_of(Integer), + 'url' => an_instance_of(String) + }.merge(options)) + end + it 'errors when bidi not enabled' do reset_driver!(web_socket_url: false) do |driver| msg = /BiDi must be enabled by setting #web_socket_url to true in options class/ @@ -45,10 +59,27 @@ module WebDriver expect(log_entries.size).to eq(1) log_entry = log_entries.first expect(log_entry).to be_a BiDi::LogHandler::ConsoleLogEntry + expect(log_entry.type).to eq 'console' expect(log_entry.level).to eq 'info' expect(log_entry.method).to eq 'log' expect(log_entry.text).to eq 'Hello, world!' - expect(log_entry.type).to eq 'console' + expect(log_entry.args).to eq [ + {'type' => 'string', 'value' => 'Hello, world!'} + ] + expect(log_entry.timestamp).to be_an_integer + expect(log_entry.source).to match( + 'context' => an_instance_of(String), + 'realm' => an_instance_of(String) + ) + # Stack traces on console messages are optional. + expect(log_entry.stack_trace).to be_nil.or match( + # Some browsers include stack traces from parts of the runtime, so we + # just check the first frames that come from user code. + 'callFrames' => start_with( + a_stack_frame('functionName' => 'helloWorld'), + a_stack_frame('functionName' => 'onclick') + ) + ) end it 'logs multiple console messages' do @@ -97,10 +128,22 @@ module WebDriver expect(log_entries.size).to eq(1) log_entry = log_entries.first expect(log_entry).to be_a BiDi::LogHandler::JavaScriptLogEntry - expect(log_entry.level).to eq 'error' expect(log_entry.type).to eq 'javascript' + expect(log_entry.level).to eq 'error' expect(log_entry.text).to eq 'Error: Not working' - expect(log_entry.stack_trace).not_to be_empty + expect(log_entry.timestamp).to be_an_integer + expect(log_entry.source).to match( + 'context' => an_instance_of(String), + 'realm' => an_instance_of(String) + ) + expect(log_entry.stack_trace).to match( + # Some browsers include stack traces from parts of the runtime, so we + # just check the first frames that come from user code. + 'callFrames' => start_with( + a_stack_frame('functionName' => 'createError'), + a_stack_frame('functionName' => 'onclick') + ) + ) end it 'errors removing non-existent handler' do From 029d263895c2f663fcc5016697a1e1157499b039 Mon Sep 17 00:00:00 2001 From: Nikolay Borisenko <22616990+nvborisenko@users.noreply.github.com> Date: Tue, 22 Oct 2024 22:24:12 +0300 Subject: [PATCH 008/135] [ci] [dotnet] Enable long path in bazel (#14634) --- .github/workflows/ci-dotnet.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci-dotnet.yml b/.github/workflows/ci-dotnet.yml index 65debef8c10e4..1e2a2c259382d 100644 --- a/.github/workflows/ci-dotnet.yml +++ b/.github/workflows/ci-dotnet.yml @@ -23,4 +23,5 @@ jobs: java-version: 17 os: windows run: | + fsutil 8dot3name set 0 bazel test //dotnet/test/common:ElementFindingTest-firefox //dotnet/test/common:ElementFindingTest-chrome --pin_browsers=true From 833efa907879c5a19ae39dd7e91a7fae8801d6bd Mon Sep 17 00:00:00 2001 From: Viet Nguyen Duc Date: Thu, 24 Oct 2024 04:28:56 +0000 Subject: [PATCH 009/135] [grid] Improvement for Node handling (#14628) * [grid] Update for node shutdown gracefully * Return HTTP response in case session is not owned * Fix test --------- Signed-off-by: Viet Nguyen Duc --- .../grid/node/ForwardWebDriverCommand.java | 22 ++++- .../org/openqa/selenium/grid/node/Node.java | 2 +- .../selenium/grid/node/local/LocalNode.java | 17 +++- .../node/ForwardWebDriverCommandTest.java | 80 +++++++++++++++++++ .../openqa/selenium/grid/node/NodeTest.java | 44 +++++++++- .../selenium/grid/router/StressTest.java | 59 +++++++++++++- 6 files changed, 213 insertions(+), 11 deletions(-) create mode 100644 java/test/org/openqa/selenium/grid/node/ForwardWebDriverCommandTest.java diff --git a/java/src/org/openqa/selenium/grid/node/ForwardWebDriverCommand.java b/java/src/org/openqa/selenium/grid/node/ForwardWebDriverCommand.java index 458dfff372cbe..fadcfff4c80fd 100644 --- a/java/src/org/openqa/selenium/grid/node/ForwardWebDriverCommand.java +++ b/java/src/org/openqa/selenium/grid/node/ForwardWebDriverCommand.java @@ -17,7 +17,13 @@ package org.openqa.selenium.grid.node; +import static java.net.HttpURLConnection.HTTP_INTERNAL_ERROR; +import static org.openqa.selenium.remote.HttpSessionId.getSessionId; +import static org.openqa.selenium.remote.http.Contents.asJson; + +import com.google.common.collect.ImmutableMap; import org.openqa.selenium.internal.Require; +import org.openqa.selenium.remote.SessionId; import org.openqa.selenium.remote.http.HttpHandler; import org.openqa.selenium.remote.http.HttpRequest; import org.openqa.selenium.remote.http.HttpResponse; @@ -30,8 +36,22 @@ class ForwardWebDriverCommand implements HttpHandler { this.node = Require.nonNull("Node", node); } + public boolean matches(HttpRequest req) { + return getSessionId(req.getUri()) + .map(id -> node.isSessionOwner(new SessionId(id))) + .orElse(false); + } + @Override public HttpResponse execute(HttpRequest req) { - return node.executeWebDriverCommand(req); + if (matches(req)) { + return node.executeWebDriverCommand(req); + } + return new HttpResponse() + .setStatus(HTTP_INTERNAL_ERROR) + .setContent( + asJson( + ImmutableMap.of( + "error", String.format("Session not found in node %s", node.getId())))); } } diff --git a/java/src/org/openqa/selenium/grid/node/Node.java b/java/src/org/openqa/selenium/grid/node/Node.java index 5d54bb3e2981d..09fe7d02ae9f5 100644 --- a/java/src/org/openqa/selenium/grid/node/Node.java +++ b/java/src/org/openqa/selenium/grid/node/Node.java @@ -152,7 +152,7 @@ protected Node( req -> getSessionId(req.getUri()) .map(SessionId::new) - .map(this::isSessionOwner) + .map(sessionId -> this.getSession(sessionId) != null) .orElse(false)) .to(() -> new ForwardWebDriverCommand(this)) .with(spanDecorator("node.forward_command")), diff --git a/java/src/org/openqa/selenium/grid/node/local/LocalNode.java b/java/src/org/openqa/selenium/grid/node/local/LocalNode.java index 2283e8573042d..7304db8a87847 100644 --- a/java/src/org/openqa/selenium/grid/node/local/LocalNode.java +++ b/java/src/org/openqa/selenium/grid/node/local/LocalNode.java @@ -297,7 +297,13 @@ protected LocalNode( heartbeatPeriod.getSeconds(), TimeUnit.SECONDS); - Runtime.getRuntime().addShutdownHook(new Thread(this::stopAllSessions)); + Runtime.getRuntime() + .addShutdownHook( + new Thread( + () -> { + stopAllSessions(); + drain(); + })); new JMXHelper().register(this); } @@ -316,7 +322,6 @@ private void stopTimedOutSession(RemovalNotification not } // Attempt to stop the session slot.stop(); - this.sessionToDownloadsDir.invalidate(id); // Decrement pending sessions if Node is draining if (this.isDraining()) { int done = pendingSessions.decrementAndGet(); @@ -473,8 +478,6 @@ public Either newSession( sessionToDownloadsDir.put(session.getId(), uuidForSessionDownloads); currentSessions.put(session.getId(), slotToUse); - checkSessionCount(); - SessionId sessionId = session.getId(); Capabilities caps = session.getCapabilities(); SESSION_ID.accept(span, sessionId); @@ -513,6 +516,8 @@ public Either newSession( span.addEvent("Unable to create session with the driver", attributeMap); return Either.left(possibleSession.left()); } + } finally { + checkSessionCount(); } } @@ -765,6 +770,10 @@ public HttpResponse uploadFile(HttpRequest req, SessionId id) { public void stop(SessionId id) throws NoSuchSessionException { Require.nonNull("Session ID", id); + if (sessionToDownloadsDir.getIfPresent(id) != null) { + sessionToDownloadsDir.invalidate(id); + } + SessionSlot slot = currentSessions.getIfPresent(id); if (slot == null) { throw new NoSuchSessionException("Cannot find session with id: " + id); diff --git a/java/test/org/openqa/selenium/grid/node/ForwardWebDriverCommandTest.java b/java/test/org/openqa/selenium/grid/node/ForwardWebDriverCommandTest.java new file mode 100644 index 0000000000000..8f0df29251870 --- /dev/null +++ b/java/test/org/openqa/selenium/grid/node/ForwardWebDriverCommandTest.java @@ -0,0 +1,80 @@ +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package org.openqa.selenium.grid.node; + +import static java.net.HttpURLConnection.HTTP_INTERNAL_ERROR; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.mockito.Mockito.*; +import static org.openqa.selenium.remote.http.Contents.asJson; + +import com.google.common.collect.ImmutableMap; +import java.util.UUID; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.openqa.selenium.grid.data.NodeId; +import org.openqa.selenium.remote.SessionId; +import org.openqa.selenium.remote.http.HttpRequest; +import org.openqa.selenium.remote.http.HttpResponse; + +class ForwardWebDriverCommandTest { + + private Node mockNode; + private ForwardWebDriverCommand command; + + @BeforeEach + void setUp() { + mockNode = mock(Node.class); + when(mockNode.getId()).thenReturn(new NodeId(UUID.randomUUID())); + command = new ForwardWebDriverCommand(mockNode); + } + + @Test + void testExecuteWithValidSessionOwner() { + HttpRequest mockRequest = mock(HttpRequest.class); + when(mockRequest.getUri()).thenReturn("/session/1234"); + + SessionId sessionId = new SessionId("1234"); + when(mockNode.isSessionOwner(sessionId)).thenReturn(true); + + HttpResponse expectedResponse = new HttpResponse(); + when(mockNode.executeWebDriverCommand(mockRequest)).thenReturn(expectedResponse); + + HttpResponse actualResponse = command.execute(mockRequest); + assertEquals(expectedResponse, actualResponse); + } + + @Test + void testExecuteWithInvalidSessionOwner() { + HttpRequest mockRequest = mock(HttpRequest.class); + when(mockRequest.getUri()).thenReturn("/session/5678"); + + SessionId sessionId = new SessionId("5678"); + when(mockNode.isSessionOwner(sessionId)).thenReturn(false); + + HttpResponse actualResponse = command.execute(mockRequest); + HttpResponse expectResponse = + new HttpResponse() + .setStatus(HTTP_INTERNAL_ERROR) + .setContent( + asJson( + ImmutableMap.of( + "error", String.format("Session not found in node %s", mockNode.getId())))); + assertEquals(expectResponse.getStatus(), actualResponse.getStatus()); + assertEquals(expectResponse.getContentEncoding(), actualResponse.getContentEncoding()); + } +} diff --git a/java/test/org/openqa/selenium/grid/node/NodeTest.java b/java/test/org/openqa/selenium/grid/node/NodeTest.java index b1c50ed0dc65a..c2a66d2162c4b 100644 --- a/java/test/org/openqa/selenium/grid/node/NodeTest.java +++ b/java/test/org/openqa/selenium/grid/node/NodeTest.java @@ -23,6 +23,8 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.assertj.core.api.InstanceOfAssertFactories.MAP; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; import static org.openqa.selenium.json.Json.MAP_TYPE; import static org.openqa.selenium.remote.http.Contents.string; import static org.openqa.selenium.remote.http.HttpMethod.DELETE; @@ -102,7 +104,9 @@ class NodeTest { private Tracer tracer; private EventBus bus; private LocalNode local; + private LocalNode local2; private Node node; + private Node node2; private ImmutableCapabilities stereotype; private ImmutableCapabilities caps; private URI uri; @@ -150,6 +154,7 @@ public HttpResponse execute(HttpRequest req) throws UncheckedIOException { builder = builder.enableManagedDownloads(true).sessionTimeout(Duration.ofSeconds(1)); } local = builder.build(); + local2 = builder.build(); node = new RemoteNode( @@ -160,6 +165,16 @@ public HttpResponse execute(HttpRequest req) throws UncheckedIOException { registrationSecret, local.getSessionTimeout(), ImmutableSet.of(caps)); + + node2 = + new RemoteNode( + tracer, + new PassthroughHttpClient.Factory(local2), + new NodeId(UUID.randomUUID()), + uri, + registrationSecret, + local2.getSessionTimeout(), + ImmutableSet.of(caps)); } @Test @@ -371,13 +386,36 @@ void shouldOnlyRespondToWebDriverCommandsForSessionsTheNodeOwns() { assertThatEither(response).isRight(); Session session = response.right().getSession(); + Either response2 = + node2.newSession(createSessionRequest(caps)); + assertThatEither(response2).isRight(); + Session session2 = response2.right().getSession(); + + // Assert that should respond to commands for sessions Node 1 owns HttpRequest req = new HttpRequest(POST, String.format("/session/%s/url", session.getId())); assertThat(local.matches(req)).isTrue(); assertThat(node.matches(req)).isTrue(); - req = new HttpRequest(POST, String.format("/session/%s/url", UUID.randomUUID())); - assertThat(local.matches(req)).isFalse(); - assertThat(node.matches(req)).isFalse(); + // Assert that should respond to commands for sessions Node 2 owns + HttpRequest req2 = new HttpRequest(POST, String.format("/session/%s/url", session2.getId())); + assertThat(local2.matches(req2)).isTrue(); + assertThat(node2.matches(req2)).isTrue(); + + // Assert that should not respond to commands for sessions Node 1 does not own + NoSuchSessionException exception = + assertThrows(NoSuchSessionException.class, () -> node.execute(req2)); + assertTrue( + exception + .getMessage() + .startsWith(String.format("Cannot find session with id: %s", session2.getId()))); + + // Assert that should not respond to commands for sessions Node 2 does not own + NoSuchSessionException exception2 = + assertThrows(NoSuchSessionException.class, () -> node2.execute(req)); + assertTrue( + exception2 + .getMessage() + .startsWith(String.format("Cannot find session with id: %s", session.getId()))); } @Test diff --git a/java/test/org/openqa/selenium/grid/router/StressTest.java b/java/test/org/openqa/selenium/grid/router/StressTest.java index a2c432229297f..3be76395e4f01 100644 --- a/java/test/org/openqa/selenium/grid/router/StressTest.java +++ b/java/test/org/openqa/selenium/grid/router/StressTest.java @@ -20,6 +20,8 @@ import static java.nio.charset.StandardCharsets.UTF_8; import static java.util.concurrent.TimeUnit.MINUTES; import static org.assertj.core.api.Assertions.assertThat; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.StringReader; import java.util.LinkedList; @@ -33,7 +35,10 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.openqa.selenium.By; +import org.openqa.selenium.MutableCapabilities; +import org.openqa.selenium.NoSuchSessionException; import org.openqa.selenium.WebDriver; +import org.openqa.selenium.WebDriverException; import org.openqa.selenium.grid.config.MapConfig; import org.openqa.selenium.grid.config.MemoizedConfig; import org.openqa.selenium.grid.config.TomlConfig; @@ -65,7 +70,14 @@ public void setupServers() { DeploymentTypes.DISTRIBUTED.start( browser.getCapabilities(), new TomlConfig( - new StringReader("[node]\n" + "driver-implementation = " + browser.displayName()))); + new StringReader( + "[node]\n" + + "driver-implementation = " + + browser.displayName() + + "\n" + + "session-timeout = 11" + + "\n" + + "enable-managed-downloads = true"))); tearDowns.add(deployment); server = deployment.getServer(); @@ -106,7 +118,10 @@ void multipleSimultaneousSessions() throws Exception { try { WebDriver driver = RemoteWebDriver.builder() - .oneOf(browser.getCapabilities()) + .oneOf( + browser + .getCapabilities() + .merge(new MutableCapabilities(Map.of("se:downloadsEnabled", true)))) .address(server.getUrl()) .build(); @@ -124,4 +139,44 @@ void multipleSimultaneousSessions() throws Exception { CompletableFuture.allOf(futures).get(4, MINUTES); } + + @Test + void multipleSimultaneousSessionsTimedOut() throws Exception { + assertThat(server.isStarted()).isTrue(); + + CompletableFuture[] futures = new CompletableFuture[10]; + for (int i = 0; i < futures.length; i++) { + CompletableFuture future = new CompletableFuture<>(); + futures[i] = future; + + executor.submit( + () -> { + try { + WebDriver driver = + RemoteWebDriver.builder() + .oneOf(browser.getCapabilities()) + .address(server.getUrl()) + .build(); + driver.get(appServer.getUrl().toString()); + Thread.sleep(11000); + NoSuchSessionException exception = + assertThrows(NoSuchSessionException.class, driver::getTitle); + assertTrue(exception.getMessage().startsWith("Cannot find session with id:")); + WebDriverException webDriverException = + assertThrows( + WebDriverException.class, + () -> ((RemoteWebDriver) driver).getDownloadableFiles()); + assertTrue( + webDriverException + .getMessage() + .startsWith("Cannot find downloads file system for session id:")); + future.complete(true); + } catch (Exception e) { + future.completeExceptionally(e); + } + }); + } + + CompletableFuture.allOf(futures).get(5, MINUTES); + } } From a149d9e6c882feb55232a092af62945fa9b5c076 Mon Sep 17 00:00:00 2001 From: Michael Render Date: Thu, 24 Oct 2024 03:58:48 -0400 Subject: [PATCH 010/135] [dotnet] Fix devtools check in `NetworkManager` (#14638) [dotnet] Fix devtools check in NetworkManager --- dotnet/src/webdriver/NetworkManager.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet/src/webdriver/NetworkManager.cs b/dotnet/src/webdriver/NetworkManager.cs index 8d91b72bc27b0..7d3131c7a6114 100644 --- a/dotnet/src/webdriver/NetworkManager.cs +++ b/dotnet/src/webdriver/NetworkManager.cs @@ -45,7 +45,7 @@ public NetworkManager(IWebDriver driver) this.session = new Lazy(() => { IDevTools devToolsDriver = driver as IDevTools; - if (session == null) + if (devToolsDriver == null) { throw new WebDriverException("Driver must implement IDevTools to use these features"); } From c3e3bc8a2da33cbda229426bbbcd316c7f57ebb2 Mon Sep 17 00:00:00 2001 From: Michael Render Date: Thu, 24 Oct 2024 14:15:13 -0400 Subject: [PATCH 011/135] [dotnet] Lazy-load Selenium manager binary location (#14639) * [dotnet] Lazy-load Selenium manager binary location * PR suggestions * Enable NRT for `SeleniumManager` * fix last hypothetical null reference exception in selenium manager * Do not use nullable json properties * fix ResultResponse deserizalization * Fix ResultResponse again * Make ResultResponse properties required --------- Co-authored-by: Nikolay Borisenko <22616990+nvborisenko@users.noreply.github.com> --- dotnet/src/webdriver/SeleniumManager.cs | 59 +++++++++++-------------- 1 file changed, 26 insertions(+), 33 deletions(-) diff --git a/dotnet/src/webdriver/SeleniumManager.cs b/dotnet/src/webdriver/SeleniumManager.cs index d57b13f278180..e9060a8984e5e 100644 --- a/dotnet/src/webdriver/SeleniumManager.cs +++ b/dotnet/src/webdriver/SeleniumManager.cs @@ -25,6 +25,9 @@ using System.Text; using System.Text.Json; using System.Text.Json.Serialization; +using static OpenQA.Selenium.SeleniumManagerResponse; + +#nullable enable namespace OpenQA.Selenium { @@ -36,27 +39,25 @@ public static class SeleniumManager { private static readonly ILogger _logger = Log.GetLogger(typeof(SeleniumManager)); - private static readonly string BinaryFullPath = Environment.GetEnvironmentVariable("SE_MANAGER_PATH"); - private static readonly JsonSerializerOptions _serializerOptions = new() { PropertyNameCaseInsensitive = true, TypeInfoResolver = SeleniumManagerSerializerContext.Default }; - static SeleniumManager() + private static readonly Lazy _lazyBinaryFullPath = new(() => { - - if (BinaryFullPath == null) + string? binaryFullPath = Environment.GetEnvironmentVariable("SE_MANAGER_PATH"); + if (binaryFullPath == null) { var currentDirectory = AppContext.BaseDirectory; if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) { - BinaryFullPath = Path.Combine(currentDirectory, "selenium-manager", "windows", "selenium-manager.exe"); + binaryFullPath = Path.Combine(currentDirectory, "selenium-manager", "windows", "selenium-manager.exe"); } else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { - BinaryFullPath = Path.Combine(currentDirectory, "selenium-manager", "linux", "selenium-manager"); + binaryFullPath = Path.Combine(currentDirectory, "selenium-manager", "linux", "selenium-manager"); } else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX)) { - BinaryFullPath = Path.Combine(currentDirectory, "selenium-manager", "macos", "selenium-manager"); + binaryFullPath = Path.Combine(currentDirectory, "selenium-manager", "macos", "selenium-manager"); } else { @@ -65,11 +66,13 @@ static SeleniumManager() } } - if (!File.Exists(BinaryFullPath)) + if (!File.Exists(binaryFullPath)) { - throw new WebDriverException($"Unable to locate or obtain Selenium Manager binary at {BinaryFullPath}"); + throw new WebDriverException($"Unable to locate or obtain Selenium Manager binary at {binaryFullPath}"); } - } + + return binaryFullPath; + }); /// /// Determines the location of the browser and driver binaries. @@ -88,7 +91,7 @@ public static Dictionary BinaryPaths(string arguments) argsBuilder.Append(" --debug"); } - var smCommandResult = RunCommand(BinaryFullPath, argsBuilder.ToString()); + var smCommandResult = RunCommand(_lazyBinaryFullPath.Value, argsBuilder.ToString()); Dictionary binaryPaths = new() { { "browser_path", smCommandResult.BrowserPath }, @@ -112,10 +115,10 @@ public static Dictionary BinaryPaths(string arguments) /// /// the standard output of the execution. /// - private static SeleniumManagerResponse.ResultResponse RunCommand(string fileName, string arguments) + private static ResultResponse RunCommand(string fileName, string arguments) { Process process = new Process(); - process.StartInfo.FileName = BinaryFullPath; + process.StartInfo.FileName = _lazyBinaryFullPath.Value; process.StartInfo.Arguments = arguments; process.StartInfo.UseShellExecute = false; process.StartInfo.CreateNoWindow = true; @@ -183,7 +186,7 @@ private static SeleniumManagerResponse.ResultResponse RunCommand(string fileName try { - jsonResponse = JsonSerializer.Deserialize(output, _serializerOptions); + jsonResponse = JsonSerializer.Deserialize(output, _serializerOptions)!; } catch (Exception ex) { @@ -222,32 +225,22 @@ private static SeleniumManagerResponse.ResultResponse RunCommand(string fileName } } - internal class SeleniumManagerResponse + internal record SeleniumManagerResponse(IReadOnlyList Logs, ResultResponse Result) { - public IReadOnlyList Logs { get; set; } - - public ResultResponse Result { get; set; } + public record LogEntryResponse(string Level, string Message); - public class LogEntryResponse - { - public string Level { get; set; } - - public string Message { get; set; } - } - - public class ResultResponse + public record ResultResponse { [JsonPropertyName("driver_path")] - public string DriverPath { get; set; } + [JsonRequired] + public string DriverPath { get; init; } = null!; [JsonPropertyName("browser_path")] - public string BrowserPath { get; set; } + [JsonRequired] + public string BrowserPath { get; init; } = null!; } } [JsonSerializable(typeof(SeleniumManagerResponse))] - internal partial class SeleniumManagerSerializerContext : JsonSerializerContext - { - - } + internal partial class SeleniumManagerSerializerContext : JsonSerializerContext; } From 68dbe573919f10226a893338d882a8956b1d59bd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 02:00:24 +0700 Subject: [PATCH 012/135] chore(deps): Update ubuntu:focal Docker digest to 8e5c4f0 (#14614) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Viet Nguyen Duc --- scripts/remote-image/Dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/remote-image/Dockerfile b/scripts/remote-image/Dockerfile index 28b7a8b9afb7a..37969e044aa9c 100644 --- a/scripts/remote-image/Dockerfile +++ b/scripts/remote-image/Dockerfile @@ -1,5 +1,5 @@ # Our images must be for Linux x86_64 -FROM --platform=linux/amd64 ubuntu:focal@sha256:0b897358ff6624825fb50d20ffb605ab0eaea77ced0adb8c6a4b756513dec6fc +FROM --platform=linux/amd64 ubuntu:focal@sha256:8e5c4f0285ecbb4ead070431d29b576a530d3166df73ec44affc1cd27555141b ENV DEBIAN_FRONTEND=noninteractive From fbdc7a560ae18495605da3c6ba99b674c7741db8 Mon Sep 17 00:00:00 2001 From: Nikolay Borisenko <22616990+nvborisenko@users.noreply.github.com> Date: Fri, 25 Oct 2024 00:56:14 +0300 Subject: [PATCH 013/135] [dotnet] Declare proper nullable Selenium Manager ResultResponse DTO --- dotnet/src/webdriver/SeleniumManager.cs | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/dotnet/src/webdriver/SeleniumManager.cs b/dotnet/src/webdriver/SeleniumManager.cs index e9060a8984e5e..4b28f7862d138 100644 --- a/dotnet/src/webdriver/SeleniumManager.cs +++ b/dotnet/src/webdriver/SeleniumManager.cs @@ -230,15 +230,12 @@ internal record SeleniumManagerResponse(IReadOnlyList Logs, Re public record LogEntryResponse(string Level, string Message); public record ResultResponse - { - [JsonPropertyName("driver_path")] - [JsonRequired] - public string DriverPath { get; init; } = null!; - - [JsonPropertyName("browser_path")] - [JsonRequired] - public string BrowserPath { get; init; } = null!; - } + ( + [property: JsonPropertyName("driver_path")] + string DriverPath, + [property: JsonPropertyName("browser_path")] + string BrowserPath + ); } [JsonSerializable(typeof(SeleniumManagerResponse))] From 9b17faba2f8151d5b7c683db63e6e6328c242208 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 03:55:59 +0000 Subject: [PATCH 014/135] chore(deps): [rust] crate anyhow to v1.0.91 (#14645) --- rust/Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 2d606bec17983..01ed0fbc4db54 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -98,9 +98,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.89" +version = "1.0.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" +checksum = "c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8" dependencies = [ "backtrace", ] From d6d2fddccdda9f9730b476d79e4984a73f01f585 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 13:23:12 +0700 Subject: [PATCH 015/135] chore(deps): [rust] Update crate regex to v1.11.1 (#14647) Update Rust crate regex to v1.11.1 Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- rust/Cargo.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rust/Cargo.lock b/rust/Cargo.lock index 01ed0fbc4db54..2696beb8223eb 100644 --- a/rust/Cargo.lock +++ b/rust/Cargo.lock @@ -1567,9 +1567,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.11.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", From 7f8a53207e41dfeeab7d4bade285b38b4e82f040 Mon Sep 17 00:00:00 2001 From: Titus Fortner Date: Fri, 25 Oct 2024 02:39:36 -0700 Subject: [PATCH 016/135] [py] implement configurable configuration class for the http client (#13286) --------- Signed-off-by: Viet Nguyen Duc Co-authored-by: Diego Molina Co-authored-by: Viet Nguyen Duc Co-authored-by: David Burns --- .../webdriver/chrome/remote_connection.py | 8 +- .../webdriver/chromium/remote_connection.py | 12 +- py/selenium/webdriver/common/options.py | 10 + .../webdriver/edge/remote_connection.py | 8 +- .../webdriver/firefox/remote_connection.py | 18 +- py/selenium/webdriver/remote/client_config.py | 258 ++++++++++++++++++ .../webdriver/remote/remote_connection.py | 163 +++++++---- py/selenium/webdriver/remote/webdriver.py | 25 +- .../webdriver/safari/remote_connection.py | 18 +- .../remote/remote_connection_tests.py | 86 +++++- 10 files changed, 522 insertions(+), 84 deletions(-) create mode 100644 py/selenium/webdriver/remote/client_config.py diff --git a/py/selenium/webdriver/chrome/remote_connection.py b/py/selenium/webdriver/chrome/remote_connection.py index d20ac581f36d7..1aa34dbfa4b31 100644 --- a/py/selenium/webdriver/chrome/remote_connection.py +++ b/py/selenium/webdriver/chrome/remote_connection.py @@ -14,10 +14,12 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import typing + +from typing import Optional from selenium.webdriver import DesiredCapabilities from selenium.webdriver.chromium.remote_connection import ChromiumRemoteConnection +from selenium.webdriver.remote.client_config import ClientConfig class ChromeRemoteConnection(ChromiumRemoteConnection): @@ -27,7 +29,8 @@ def __init__( self, remote_server_addr: str, keep_alive: bool = True, - ignore_proxy: typing.Optional[bool] = False, + ignore_proxy: Optional[bool] = False, + client_config: Optional[ClientConfig] = None, ) -> None: super().__init__( remote_server_addr=remote_server_addr, @@ -35,4 +38,5 @@ def __init__( browser_name=ChromeRemoteConnection.browser_name, keep_alive=keep_alive, ignore_proxy=ignore_proxy, + client_config=client_config, ) diff --git a/py/selenium/webdriver/chromium/remote_connection.py b/py/selenium/webdriver/chromium/remote_connection.py index 29d33499111cf..021c47737cd17 100644 --- a/py/selenium/webdriver/chromium/remote_connection.py +++ b/py/selenium/webdriver/chromium/remote_connection.py @@ -14,7 +14,9 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. +from typing import Optional +from selenium.webdriver.remote.client_config import ClientConfig from selenium.webdriver.remote.remote_connection import RemoteConnection @@ -25,9 +27,15 @@ def __init__( vendor_prefix: str, browser_name: str, keep_alive: bool = True, - ignore_proxy: bool = False, + ignore_proxy: Optional[bool] = False, + client_config: Optional[ClientConfig] = None, ) -> None: - super().__init__(remote_server_addr, keep_alive, ignore_proxy) + super().__init__( + remote_server_addr=remote_server_addr, + keep_alive=keep_alive, + ignore_proxy=ignore_proxy, + client_config=client_config, + ) self.browser_name = browser_name commands = self._remote_commands(vendor_prefix) for key, value in commands.items(): diff --git a/py/selenium/webdriver/common/options.py b/py/selenium/webdriver/common/options.py index e938191c79adb..3e754d2537ba6 100644 --- a/py/selenium/webdriver/common/options.py +++ b/py/selenium/webdriver/common/options.py @@ -15,6 +15,7 @@ # specific language governing permissions and limitations # under the License. import typing +import warnings from abc import ABCMeta from abc import abstractmethod from enum import Enum @@ -514,6 +515,15 @@ def add_argument(self, argument) -> None: def ignore_local_proxy_environment_variables(self) -> None: """By calling this you will ignore HTTP_PROXY and HTTPS_PROXY from being picked up and used.""" + warnings.warn( + "using ignore_local_proxy_environment_variables in Options has been deprecated, " + "instead, create a Proxy instance with ProxyType.DIRECT to ignore proxy settings, " + "pass the proxy instance into a ClientConfig constructor, " + "pass the client config instance into the Webdriver constructor", + DeprecationWarning, + stacklevel=2, + ) + super().ignore_local_proxy_environment_variables() def to_capabilities(self): diff --git a/py/selenium/webdriver/edge/remote_connection.py b/py/selenium/webdriver/edge/remote_connection.py index 5e4a3739ba0e8..8f74c9f52c5af 100644 --- a/py/selenium/webdriver/edge/remote_connection.py +++ b/py/selenium/webdriver/edge/remote_connection.py @@ -14,10 +14,12 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -import typing + +from typing import Optional from selenium.webdriver import DesiredCapabilities from selenium.webdriver.chromium.remote_connection import ChromiumRemoteConnection +from selenium.webdriver.remote.client_config import ClientConfig class EdgeRemoteConnection(ChromiumRemoteConnection): @@ -27,7 +29,8 @@ def __init__( self, remote_server_addr: str, keep_alive: bool = True, - ignore_proxy: typing.Optional[bool] = False, + ignore_proxy: Optional[bool] = False, + client_config: Optional[ClientConfig] = None, ) -> None: super().__init__( remote_server_addr=remote_server_addr, @@ -35,4 +38,5 @@ def __init__( browser_name=EdgeRemoteConnection.browser_name, keep_alive=keep_alive, ignore_proxy=ignore_proxy, + client_config=client_config, ) diff --git a/py/selenium/webdriver/firefox/remote_connection.py b/py/selenium/webdriver/firefox/remote_connection.py index 1147a6a6aaadd..502c144c41622 100644 --- a/py/selenium/webdriver/firefox/remote_connection.py +++ b/py/selenium/webdriver/firefox/remote_connection.py @@ -15,15 +15,29 @@ # specific language governing permissions and limitations # under the License. +from typing import Optional + from selenium.webdriver.common.desired_capabilities import DesiredCapabilities +from selenium.webdriver.remote.client_config import ClientConfig from selenium.webdriver.remote.remote_connection import RemoteConnection class FirefoxRemoteConnection(RemoteConnection): browser_name = DesiredCapabilities.FIREFOX["browserName"] - def __init__(self, remote_server_addr, keep_alive=True, ignore_proxy=False) -> None: - super().__init__(remote_server_addr, keep_alive, ignore_proxy) + def __init__( + self, + remote_server_addr: str, + keep_alive: bool = True, + ignore_proxy: Optional[bool] = False, + client_config: Optional[ClientConfig] = None, + ) -> None: + super().__init__( + remote_server_addr=remote_server_addr, + keep_alive=keep_alive, + ignore_proxy=ignore_proxy, + client_config=client_config, + ) self._commands["GET_CONTEXT"] = ("GET", "/session/$sessionId/moz/context") self._commands["SET_CONTEXT"] = ("POST", "/session/$sessionId/moz/context") diff --git a/py/selenium/webdriver/remote/client_config.py b/py/selenium/webdriver/remote/client_config.py new file mode 100644 index 0000000000000..62ba82076946b --- /dev/null +++ b/py/selenium/webdriver/remote/client_config.py @@ -0,0 +1,258 @@ +# Licensed to the Software Freedom Conservancy (SFC) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The SFC licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +import base64 +import os +import socket +from typing import Optional +from urllib import parse + +import certifi + +from selenium.webdriver.common.proxy import Proxy +from selenium.webdriver.common.proxy import ProxyType + + +class ClientConfig: + def __init__( + self, + remote_server_addr: str, + keep_alive: Optional[bool] = True, + proxy: Optional[Proxy] = Proxy(raw={"proxyType": ProxyType.SYSTEM}), + ignore_certificates: Optional[bool] = False, + init_args_for_pool_manager: Optional[dict] = None, + timeout: Optional[int] = None, + ca_certs: Optional[str] = None, + username: Optional[str] = None, + password: Optional[str] = None, + auth_type: Optional[str] = "Basic", + token: Optional[str] = None, + ) -> None: + self.remote_server_addr = remote_server_addr + self.keep_alive = keep_alive + self.proxy = proxy + self.ignore_certificates = ignore_certificates + self.init_args_for_pool_manager = init_args_for_pool_manager or {} + self.timeout = timeout + self.username = username + self.password = password + self.auth_type = auth_type + self.token = token + + self.timeout = ( + ( + float(os.getenv("GLOBAL_DEFAULT_TIMEOUT", str(socket.getdefaulttimeout()))) + if os.getenv("GLOBAL_DEFAULT_TIMEOUT") is not None + else socket.getdefaulttimeout() + ) + if timeout is None + else timeout + ) + + self.ca_certs = ( + (os.getenv("REQUESTS_CA_BUNDLE") if "REQUESTS_CA_BUNDLE" in os.environ else certifi.where()) + if ca_certs is None + else ca_certs + ) + + @property + def remote_server_addr(self) -> str: + """:Returns: The address of the remote server.""" + return self._remote_server_addr + + @remote_server_addr.setter + def remote_server_addr(self, value: str) -> None: + """Provides the address of the remote server.""" + self._remote_server_addr = value + + @property + def keep_alive(self) -> bool: + """:Returns: The keep alive value.""" + return self._keep_alive + + @keep_alive.setter + def keep_alive(self, value: bool) -> None: + """Toggles the keep alive value. + + :Args: + - value: whether to keep the http connection alive + """ + self._keep_alive = value + + @property + def proxy(self) -> Proxy: + """:Returns: The proxy used for communicating to the driver/server.""" + return self._proxy + + @proxy.setter + def proxy(self, proxy: Proxy) -> None: + """Provides the information for communicating with the driver or + server. + For example: Proxy(raw={"proxyType": ProxyType.SYSTEM}) + + :Args: + - value: the proxy information to use to communicate with the driver or server + """ + self._proxy = proxy + + @property + def ignore_certificates(self) -> bool: + """:Returns: The ignore certificate check value.""" + return self._ignore_certificates + + @ignore_certificates.setter + def ignore_certificates(self, ignore_certificates: bool) -> None: + """Toggles the ignore certificate check. + + :Args: + - value: value of ignore certificate check + """ + self._ignore_certificates = ignore_certificates + + @property + def init_args_for_pool_manager(self) -> dict: + """:Returns: The dictionary of arguments will be appended while + initializing the pool manager.""" + return self._init_args_for_pool_manager + + @init_args_for_pool_manager.setter + def init_args_for_pool_manager(self, init_args_for_pool_manager: dict) -> None: + """Provides dictionary of arguments will be appended while initializing the pool manager. + For example: {"init_args_for_pool_manager": {"retries": 3, "block": True}} + + :Args: + - value: the dictionary of arguments will be appended while initializing the pool manager + """ + self._init_args_for_pool_manager = init_args_for_pool_manager + + @property + def timeout(self) -> int: + """:Returns: The timeout (in seconds) used for communicating to the + driver/server.""" + return self._timeout + + @timeout.setter + def timeout(self, timeout: int) -> None: + """Provides the timeout (in seconds) for communicating with the driver + or server. + + :Args: + - value: the timeout (in seconds) to use to communicate with the driver or server + """ + self._timeout = timeout + + def reset_timeout(self) -> None: + """Resets the timeout to the default value of socket.""" + self._timeout = socket.getdefaulttimeout() + + @property + def ca_certs(self) -> str: + """:Returns: The path to bundle of CA certificates.""" + return self._ca_certs + + @ca_certs.setter + def ca_certs(self, ca_certs: str) -> None: + """Provides the path to bundle of CA certificates for establishing + secure connections. + + :Args: + - value: the path to bundle of CA certificates for establishing secure connections + """ + self._ca_certs = ca_certs + + @property + def username(self) -> str: + """Returns the username used for basic authentication to the remote + server.""" + return self._username + + @username.setter + def username(self, value: str) -> None: + """Sets the username used for basic authentication to the remote + server.""" + self._username = value + + @property + def password(self) -> str: + """Returns the password used for basic authentication to the remote + server.""" + return self._password + + @password.setter + def password(self, value: str) -> None: + """Sets the password used for basic authentication to the remote + server.""" + self._password = value + + @property + def auth_type(self) -> str: + """Returns the type of authentication to the remote server.""" + return self._auth_type + + @auth_type.setter + def auth_type(self, value: str) -> None: + """Sets the type of authentication to the remote server if it is not + using basic with username and password.""" + self._auth_type = value + + @property + def token(self) -> str: + """Returns the token used for authentication to the remote server.""" + return self._token + + @token.setter + def token(self, value: str) -> None: + """Sets the token used for authentication to the remote server if + auth_type is not basic.""" + self._token = value + + def get_proxy_url(self) -> Optional[str]: + """Returns the proxy URL to use for the connection.""" + proxy_type = self.proxy.proxy_type + remote_add = parse.urlparse(self.remote_server_addr) + if proxy_type is ProxyType.DIRECT: + return None + if proxy_type is ProxyType.SYSTEM: + _no_proxy = os.environ.get("no_proxy", os.environ.get("NO_PROXY")) + if _no_proxy: + for entry in map(str.strip, _no_proxy.split(",")): + if entry == "*": + return None + n_url = parse.urlparse(entry) + if n_url.netloc and remote_add.netloc == n_url.netloc: + return None + if n_url.path in remote_add.netloc: + return None + return os.environ.get( + "https_proxy" if self.remote_server_addr.startswith("https://") else "http_proxy", + os.environ.get("HTTPS_PROXY" if self.remote_server_addr.startswith("https://") else "HTTP_PROXY"), + ) + if proxy_type is ProxyType.MANUAL: + return self.proxy.sslProxy if self.remote_server_addr.startswith("https://") else self.proxy.http_proxy + return None + + def get_auth_header(self) -> Optional[dict]: + """Returns the authorization to add to the request headers.""" + auth_type = self.auth_type.lower() + if auth_type == "basic" and self.username and self.password: + credentials = f"{self.username}:{self.password}" + encoded_credentials = base64.b64encode(credentials.encode("utf-8")).decode("utf-8") + return {"Authorization": f"Basic {encoded_credentials}"} + if auth_type == "bearer" and self.token: + return {"Authorization": f"Bearer {self.token}"} + if auth_type == "oauth" and self.token: + return {"Authorization": f"OAuth {self.token}"} + return None diff --git a/py/selenium/webdriver/remote/remote_connection.py b/py/selenium/webdriver/remote/remote_connection.py index 0a4bde22c40d2..57f38b5806574 100644 --- a/py/selenium/webdriver/remote/remote_connection.py +++ b/py/selenium/webdriver/remote/remote_connection.py @@ -16,19 +16,19 @@ # under the License. import logging -import os import platform -import socket import string +import warnings from base64 import b64encode +from typing import Optional from urllib import parse -import certifi import urllib3 from selenium import __version__ from . import utils +from .client_config import ClientConfig from .command import Command from .errorhandler import ErrorCode @@ -136,12 +136,7 @@ class RemoteConnection: """ browser_name = None - _timeout = ( - float(os.getenv("GLOBAL_DEFAULT_TIMEOUT", str(socket.getdefaulttimeout()))) - if os.getenv("GLOBAL_DEFAULT_TIMEOUT") is not None - else socket.getdefaulttimeout() - ) - _ca_certs = os.getenv("REQUESTS_CA_BUNDLE") if "REQUESTS_CA_BUNDLE" in os.environ else certifi.where() + _client_config: ClientConfig = None system = platform.system().lower() if system == "darwin": @@ -158,7 +153,12 @@ def get_timeout(cls): Timeout value in seconds for all http requests made to the Remote Connection """ - return None if cls._timeout == socket._GLOBAL_DEFAULT_TIMEOUT else cls._timeout + warnings.warn( + "get_timeout() in RemoteConnection is deprecated, get timeout from ClientConfig instance instead", + DeprecationWarning, + stacklevel=2, + ) + return cls._client_config.timeout @classmethod def set_timeout(cls, timeout): @@ -167,12 +167,22 @@ def set_timeout(cls, timeout): :Args: - timeout - timeout value for http requests in seconds """ - cls._timeout = timeout + warnings.warn( + "set_timeout() in RemoteConnection is deprecated, set timeout to ClientConfig instance in constructor instead", + DeprecationWarning, + stacklevel=2, + ) + cls._client_config.timeout = timeout @classmethod def reset_timeout(cls): """Reset the http request timeout to socket._GLOBAL_DEFAULT_TIMEOUT.""" - cls._timeout = socket._GLOBAL_DEFAULT_TIMEOUT + warnings.warn( + "reset_timeout() in RemoteConnection is deprecated, use reset_timeout() in ClientConfig instance instead", + DeprecationWarning, + stacklevel=2, + ) + cls._client_config.reset_timeout() @classmethod def get_certificate_bundle_path(cls): @@ -182,7 +192,12 @@ def get_certificate_bundle_path(cls): command executor. Defaults to certifi.where() or REQUESTS_CA_BUNDLE env variable if set. """ - return cls._ca_certs + warnings.warn( + "get_certificate_bundle_path() in RemoteConnection is deprecated, get ca_certs from ClientConfig instance instead", + DeprecationWarning, + stacklevel=2, + ) + return cls._client_config.ca_certs @classmethod def set_certificate_bundle_path(cls, path): @@ -193,7 +208,12 @@ def set_certificate_bundle_path(cls, path): :Args: - path - path of a .pem encoded certificate chain. """ - cls._ca_certs = path + warnings.warn( + "set_certificate_bundle_path() in RemoteConnection is deprecated, set ca_certs to ClientConfig instance in constructor instead", + DeprecationWarning, + stacklevel=2, + ) + cls._client_config.ca_certs = path @classmethod def get_remote_connection_headers(cls, parsed_url, keep_alive=False): @@ -222,12 +242,6 @@ def get_remote_connection_headers(cls, parsed_url, keep_alive=False): return headers - def _get_proxy_url(self): - if self._url.startswith("https://"): - return os.environ.get("https_proxy", os.environ.get("HTTPS_PROXY")) - if self._url.startswith("http://"): - return os.environ.get("http_proxy", os.environ.get("HTTP_PROXY")) - def _identify_http_proxy_auth(self): url = self._proxy_url url = url[url.find(":") + 3 :] @@ -242,15 +256,17 @@ def _separate_http_proxy_auth(self): return proxy_without_auth, auth def _get_connection_manager(self): - pool_manager_init_args = {"timeout": self.get_timeout()} - pool_manager_init_args.update(self._init_args_for_pool_manager.get("init_args_for_pool_manager", {})) + pool_manager_init_args = {"timeout": self._client_config.timeout} + pool_manager_init_args.update( + self._client_config.init_args_for_pool_manager.get("init_args_for_pool_manager", {}) + ) - if self._ignore_certificates: + if self._client_config.ignore_certificates: pool_manager_init_args["cert_reqs"] = "CERT_NONE" urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) - elif self._ca_certs: + elif self._client_config.ca_certs: pool_manager_init_args["cert_reqs"] = "CERT_REQUIRED" - pool_manager_init_args["ca_certs"] = self._ca_certs + pool_manager_init_args["ca_certs"] = self._client_config.ca_certs if self._proxy_url: if self._proxy_url.lower().startswith("sock"): @@ -266,38 +282,61 @@ def _get_connection_manager(self): def __init__( self, - remote_server_addr: str, - keep_alive: bool = False, - ignore_proxy: bool = False, - ignore_certificates: bool = False, - init_args_for_pool_manager: dict = None, + remote_server_addr: Optional[str] = None, + keep_alive: Optional[bool] = True, + ignore_proxy: Optional[bool] = False, + ignore_certificates: Optional[bool] = False, + init_args_for_pool_manager: Optional[dict] = None, + client_config: Optional[ClientConfig] = None, ): - self.keep_alive = keep_alive - self._url = remote_server_addr - self._ignore_certificates = ignore_certificates - self._init_args_for_pool_manager = init_args_for_pool_manager or {} - - # Env var NO_PROXY will override this part of the code - _no_proxy = os.environ.get("no_proxy", os.environ.get("NO_PROXY")) - if _no_proxy: - for npu in _no_proxy.split(","): - npu = npu.strip() - if npu == "*": - ignore_proxy = True - break - n_url = parse.urlparse(npu) - remote_add = parse.urlparse(self._url) - if n_url.netloc: - if remote_add.netloc == n_url.netloc: - ignore_proxy = True - break - else: - if n_url.path in remote_add.netloc: - ignore_proxy = True - break - - self._proxy_url = self._get_proxy_url() if not ignore_proxy else None - if keep_alive: + self._client_config = client_config or ClientConfig( + remote_server_addr=remote_server_addr, + keep_alive=keep_alive, + ignore_certificates=ignore_certificates, + init_args_for_pool_manager=init_args_for_pool_manager, + ) + + RemoteConnection._client_config = self._client_config + + if remote_server_addr: + warnings.warn( + "setting remote_server_addr in RemoteConnection() is deprecated, set in ClientConfig instance instead", + DeprecationWarning, + stacklevel=2, + ) + + if not keep_alive: + warnings.warn( + "setting keep_alive in RemoteConnection() is deprecated, set in ClientConfig instance instead", + DeprecationWarning, + stacklevel=2, + ) + + if ignore_certificates: + warnings.warn( + "setting ignore_certificates in RemoteConnection() is deprecated, set in ClientConfig instance instead", + DeprecationWarning, + stacklevel=2, + ) + + if init_args_for_pool_manager: + warnings.warn( + "setting init_args_for_pool_manager in RemoteConnection() is deprecated, set in ClientConfig instance instead", + DeprecationWarning, + stacklevel=2, + ) + + if ignore_proxy: + warnings.warn( + "setting ignore_proxy in RemoteConnection() is deprecated, set in ClientConfig instance instead", + DeprecationWarning, + stacklevel=2, + ) + self._proxy_url = None + else: + self._proxy_url = self._client_config.get_proxy_url() + + if self._client_config.keep_alive: self._conn = self._get_connection_manager() self._commands = remote_commands @@ -331,7 +370,7 @@ def execute(self, command, params): for word in substitute_params: del params[word] data = utils.dump_json(params) - url = f"{self._url}{path}" + url = f"{self._client_config.remote_server_addr}{path}" trimmed = self._trim_large_entries(params) LOGGER.debug("%s %s %s", command_info[0], url, str(trimmed)) return self._request(command_info[0], url, body=data) @@ -348,12 +387,16 @@ def _request(self, method, url, body=None, timeout=120): A dictionary with the server's parsed JSON response. """ parsed_url = parse.urlparse(url) - headers = self.get_remote_connection_headers(parsed_url, self.keep_alive) - response = None + headers = self.get_remote_connection_headers(parsed_url, self._client_config.keep_alive) + auth_header = self._client_config.get_auth_header() + + if auth_header: + headers.update(auth_header) + if body and method not in ("POST", "PUT"): body = None - if self.keep_alive: + if self._client_config.keep_alive: response = self._conn.request(method, url, body=body, headers=headers, timeout=timeout) statuscode = response.status else: diff --git a/py/selenium/webdriver/remote/webdriver.py b/py/selenium/webdriver/remote/webdriver.py index 8ef6292012089..bae7f4e8d28c1 100644 --- a/py/selenium/webdriver/remote/webdriver.py +++ b/py/selenium/webdriver/remote/webdriver.py @@ -54,6 +54,7 @@ from selenium.webdriver.support.relative_locator import RelativeBy from .bidi_connection import BidiConnection +from .client_config import ClientConfig from .command import Command from .errorhandler import ErrorHandler from .file_detector import FileDetector @@ -96,7 +97,17 @@ def _create_caps(caps): return {"capabilities": {"firstMatch": [{}], "alwaysMatch": always_match}} -def get_remote_connection(capabilities, command_executor, keep_alive, ignore_local_proxy=False): +def get_remote_connection( + capabilities: dict, + command_executor: Union[str, RemoteConnection], + keep_alive: bool, + ignore_local_proxy: bool, + client_config: Optional[ClientConfig] = None, +) -> RemoteConnection: + if isinstance(command_executor, str): + client_config = client_config or ClientConfig(remote_server_addr=command_executor) + client_config.remote_server_addr = command_executor + command_executor = RemoteConnection(client_config=client_config) from selenium.webdriver.chrome.remote_connection import ChromeRemoteConnection from selenium.webdriver.edge.remote_connection import EdgeRemoteConnection from selenium.webdriver.firefox.remote_connection import FirefoxRemoteConnection @@ -105,7 +116,12 @@ def get_remote_connection(capabilities, command_executor, keep_alive, ignore_loc candidates = [ChromeRemoteConnection, EdgeRemoteConnection, SafariRemoteConnection, FirefoxRemoteConnection] handler = next((c for c in candidates if c.browser_name == capabilities.get("browserName")), RemoteConnection) - return handler(command_executor, keep_alive=keep_alive, ignore_proxy=ignore_local_proxy) + return handler( + remote_server_addr=command_executor, + keep_alive=keep_alive, + ignore_proxy=ignore_local_proxy, + client_config=client_config, + ) def create_matches(options: List[BaseOptions]) -> Dict: @@ -174,6 +190,7 @@ def __init__( options: Optional[Union[BaseOptions, List[BaseOptions]]] = None, locator_converter: Optional[LocatorConverter] = None, web_element_cls: Optional[type] = None, + client_config: Optional[ClientConfig] = None, ) -> None: """Create a new driver that will issue commands using the wire protocol. @@ -181,13 +198,14 @@ def __init__( :Args: - command_executor - Either a string representing URL of the remote server or a custom remote_connection.RemoteConnection object. Defaults to 'http://127.0.0.1:4444/wd/hub'. - - keep_alive - Whether to configure remote_connection.RemoteConnection to use + - keep_alive - (Deprecated) Whether to configure remote_connection.RemoteConnection to use HTTP keep-alive. Defaults to True. - file_detector - Pass custom file detector object during instantiation. If None, then default LocalFileDetector() will be used. - options - instance of a driver options.Options class - locator_converter - Custom locator converter to use. Defaults to None. - web_element_cls - Custom class to use for web elements. Defaults to WebElement. + - client_config - Custom client configuration to use. Defaults to None. """ if isinstance(options, list): @@ -203,6 +221,7 @@ def __init__( command_executor=command_executor, keep_alive=keep_alive, ignore_local_proxy=_ignore_local_proxy, + client_config=client_config, ) self._is_remote = True self.session_id = None diff --git a/py/selenium/webdriver/safari/remote_connection.py b/py/selenium/webdriver/safari/remote_connection.py index a97f614a98585..05dbfb379b4c2 100644 --- a/py/selenium/webdriver/safari/remote_connection.py +++ b/py/selenium/webdriver/safari/remote_connection.py @@ -15,15 +15,29 @@ # specific language governing permissions and limitations # under the License. +from typing import Optional + from selenium.webdriver.common.desired_capabilities import DesiredCapabilities +from selenium.webdriver.remote.client_config import ClientConfig from selenium.webdriver.remote.remote_connection import RemoteConnection class SafariRemoteConnection(RemoteConnection): browser_name = DesiredCapabilities.SAFARI["browserName"] - def __init__(self, remote_server_addr: str, keep_alive: bool = True, ignore_proxy: bool = False) -> None: - super().__init__(remote_server_addr, keep_alive, ignore_proxy) + def __init__( + self, + remote_server_addr: str, + keep_alive: bool = True, + ignore_proxy: Optional[bool] = False, + client_config: Optional[ClientConfig] = None, + ) -> None: + super().__init__( + remote_server_addr=remote_server_addr, + keep_alive=keep_alive, + ignore_proxy=ignore_proxy, + client_config=client_config, + ) self._commands["GET_PERMISSIONS"] = ("GET", "/session/$sessionId/apple/permissions") self._commands["SET_PERMISSIONS"] = ("POST", "/session/$sessionId/apple/permissions") diff --git a/py/test/unit/selenium/webdriver/remote/remote_connection_tests.py b/py/test/unit/selenium/webdriver/remote/remote_connection_tests.py index 260214e5c918d..e3d8e29f38e69 100644 --- a/py/test/unit/selenium/webdriver/remote/remote_connection_tests.py +++ b/py/test/unit/selenium/webdriver/remote/remote_connection_tests.py @@ -22,6 +22,7 @@ import urllib3 from selenium import __version__ +from selenium.webdriver.remote.remote_connection import ClientConfig from selenium.webdriver.remote.remote_connection import RemoteConnection @@ -76,26 +77,35 @@ def test_get_remote_connection_headers_adds_keep_alive_if_requested(): def test_get_proxy_url_http(mock_proxy_settings): proxy = "http://http_proxy.com:8080" remote_connection = RemoteConnection("http://remote", keep_alive=False) - proxy_url = remote_connection._get_proxy_url() + proxy_url = remote_connection._client_config.get_proxy_url() assert proxy_url == proxy +def test_get_auth_header_if_client_config_pass(): + custom_config = ClientConfig( + remote_server_addr="http://remote", keep_alive=True, username="user", password="pass", auth_type="Basic" + ) + remote_connection = RemoteConnection(custom_config.remote_server_addr, client_config=custom_config) + headers = remote_connection._client_config.get_auth_header() + assert headers.get("Authorization") == "Basic dXNlcjpwYXNz" + + def test_get_proxy_url_https(mock_proxy_settings): proxy = "http://https_proxy.com:8080" remote_connection = RemoteConnection("https://remote", keep_alive=False) - proxy_url = remote_connection._get_proxy_url() + proxy_url = remote_connection._client_config.get_proxy_url() assert proxy_url == proxy def test_get_proxy_url_none(mock_proxy_settings_missing): remote_connection = RemoteConnection("https://remote", keep_alive=False) - proxy_url = remote_connection._get_proxy_url() + proxy_url = remote_connection._client_config.get_proxy_url() assert proxy_url is None def test_get_proxy_url_http_auth(mock_proxy_auth_settings): remote_connection = RemoteConnection("http://remote", keep_alive=False) - proxy_url = remote_connection._get_proxy_url() + proxy_url = remote_connection._client_config.get_proxy_url() raw_proxy_url, basic_auth_string = remote_connection._separate_http_proxy_auth() assert proxy_url == "http://user:password@http_proxy.com:8080" assert raw_proxy_url == "http://http_proxy.com:8080" @@ -104,7 +114,7 @@ def test_get_proxy_url_http_auth(mock_proxy_auth_settings): def test_get_proxy_url_https_auth(mock_proxy_auth_settings): remote_connection = RemoteConnection("https://remote", keep_alive=False) - proxy_url = remote_connection._get_proxy_url() + proxy_url = remote_connection._client_config.get_proxy_url() raw_proxy_url, basic_auth_string = remote_connection._separate_http_proxy_auth() assert proxy_url == "https://user:password@https_proxy.com:8080" assert raw_proxy_url == "https://https_proxy.com:8080" @@ -117,9 +127,10 @@ def test_get_connection_manager_without_proxy(mock_proxy_settings_missing): assert isinstance(conn, urllib3.PoolManager) -def test_get_connection_manager_for_certs_and_timeout(monkeypatch): - monkeypatch.setattr(RemoteConnection, "get_timeout", lambda _: 10) # Class state; leaks into subsequent tests. +def test_get_connection_manager_for_certs_and_timeout(): remote_connection = RemoteConnection("http://remote", keep_alive=False) + remote_connection.set_timeout(10) + assert remote_connection.get_timeout() == 10 conn = remote_connection._get_connection_manager() assert conn.connection_pool_kw["timeout"] == 10 assert conn.connection_pool_kw["cert_reqs"] == "CERT_REQUIRED" @@ -296,21 +307,74 @@ def test_register_extra_headers(mock_request, remote_connection): assert headers["Foo"] == "bar" -def test_get_connection_manager_ignores_certificates(monkeypatch): - monkeypatch.setattr(RemoteConnection, "get_timeout", lambda _: 10) - remote_connection = RemoteConnection("http://remote", ignore_certificates=True) +def test_get_connection_manager_with_timeout_from_client_config(): + remote_connection = RemoteConnection(remote_server_addr="http://remote", keep_alive=False) + remote_connection.set_timeout(10) + conn = remote_connection._get_connection_manager() + assert remote_connection.get_timeout() == 10 + assert conn.connection_pool_kw["timeout"] == 10 + assert isinstance(conn, urllib3.PoolManager) + + client_config = ClientConfig("http://remote", timeout=300) + remote_connection = RemoteConnection(client_config=client_config) + conn = remote_connection._get_connection_manager() + assert conn.connection_pool_kw["timeout"] == 300 + assert isinstance(conn, urllib3.PoolManager) + + +def test_get_connection_manager_with_ca_certs_from_client_config(): + remote_connection = RemoteConnection(remote_server_addr="http://remote") + remote_connection.set_certificate_bundle_path("/path/to/cacert.pem") + conn = remote_connection._get_connection_manager() + assert conn.connection_pool_kw["timeout"] is None + assert conn.connection_pool_kw["cert_reqs"] == "CERT_REQUIRED" + assert conn.connection_pool_kw["ca_certs"] == "/path/to/cacert.pem" + assert isinstance(conn, urllib3.PoolManager) + + client_config = ClientConfig(remote_server_addr="http://remote", ca_certs="/path/to/cacert.pem") + remote_connection = RemoteConnection(client_config=client_config) + conn = remote_connection._get_connection_manager() + assert conn.connection_pool_kw["timeout"] is None + assert conn.connection_pool_kw["cert_reqs"] == "CERT_REQUIRED" + assert conn.connection_pool_kw["ca_certs"] == "/path/to/cacert.pem" + assert isinstance(conn, urllib3.PoolManager) + + +def test_get_connection_manager_ignores_certificates(): + remote_connection = RemoteConnection(remote_server_addr="http://remote", keep_alive=False, ignore_certificates=True) + remote_connection.set_timeout(10) conn = remote_connection._get_connection_manager() + assert conn.connection_pool_kw["timeout"] == 10 + assert conn.connection_pool_kw["cert_reqs"] == "CERT_NONE" + assert isinstance(conn, urllib3.PoolManager) + client_config = ClientConfig(remote_server_addr="http://remote", ignore_certificates=True, timeout=10) + remote_connection = RemoteConnection(client_config=client_config) + conn = remote_connection._get_connection_manager() assert conn.connection_pool_kw["timeout"] == 10 assert conn.connection_pool_kw["cert_reqs"] == "CERT_NONE" assert isinstance(conn, urllib3.PoolManager) + remote_connection.reset_timeout() + assert remote_connection.get_timeout() is None + def test_get_connection_manager_with_custom_args(): custom_args = {"init_args_for_pool_manager": {"retries": 3, "block": True}} - remote_connection = RemoteConnection("http://remote", keep_alive=False, init_args_for_pool_manager=custom_args) + + remote_connection = RemoteConnection( + remote_server_addr="http://remote", keep_alive=False, init_args_for_pool_manager=custom_args + ) conn = remote_connection._get_connection_manager() + assert isinstance(conn, urllib3.PoolManager) + assert conn.connection_pool_kw["retries"] == 3 + assert conn.connection_pool_kw["block"] is True + client_config = ClientConfig( + remote_server_addr="http://remote", keep_alive=False, init_args_for_pool_manager=custom_args + ) + remote_connection = RemoteConnection(client_config=client_config) + conn = remote_connection._get_connection_manager() assert isinstance(conn, urllib3.PoolManager) assert conn.connection_pool_kw["retries"] == 3 assert conn.connection_pool_kw["block"] is True From c5fbdd6c7b027c4ce49233ad7da237d1419b4b62 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 25 Oct 2024 20:53:13 +0700 Subject: [PATCH 017/135] chore(deps): [java] update dependency com.google.guava:guava to v33.3.1-jre (#14648) --------- Signed-off-by: Viet Nguyen Duc Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Viet Nguyen Duc --- MODULE.bazel | 2 +- java/maven_install.json | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index c1817b08269e8..3ab1515e9c3fb 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -173,7 +173,7 @@ maven.install( "com.github.spotbugs:spotbugs:4.8.6", "com.github.stephenc.jcip:jcip-annotations:1.0-1", "com.google.code.gson:gson:2.11.0", - "com.google.guava:guava:33.3.0-jre", + "com.google.guava:guava:33.3.1-jre", "com.google.auto:auto-common:1.2.2", "com.google.auto.service:auto-service:1.1.1", "com.google.auto.service:auto-service-annotations:1.1.1", diff --git a/java/maven_install.json b/java/maven_install.json index 8be2dd9b44a41..04f5468f594a2 100644 --- a/java/maven_install.json +++ b/java/maven_install.json @@ -1,11 +1,11 @@ { "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL", - "__INPUT_ARTIFACTS_HASH": -1369959342, - "__RESOLVED_ARTIFACTS_HASH": 2051378450, + "__INPUT_ARTIFACTS_HASH": 1327312787, + "__RESOLVED_ARTIFACTS_HASH": -2038995232, "conflict_resolution": { "com.google.code.gson:gson:2.8.9": "com.google.code.gson:gson:2.11.0", "com.google.errorprone:error_prone_annotations:2.3.2": "com.google.errorprone:error_prone_annotations:2.28.0", - "com.google.guava:guava:31.1-jre": "com.google.guava:guava:33.3.0-jre", + "com.google.guava:guava:31.1-jre": "com.google.guava:guava:33.3.1-jre", "com.google.j2objc:j2objc-annotations:1.3": "com.google.j2objc:j2objc-annotations:3.0.0", "org.mockito:mockito-core:4.3.1": "org.mockito:mockito-core:5.13.0" }, @@ -159,10 +159,10 @@ }, "com.google.guava:guava": { "shasums": { - "jar": "dfadc3bce3101eff1452aae47d7c833fee443b47bdf9ef13311b6c7cab663ddf", - "sources": "f91f8619f533db55f37d13369c2fee39d5e1d2f72cef7f69f735d5be1a601f14" + "jar": "4bf0e2c5af8e4525c96e8fde17a4f7307f97f8478f11c4c8e35a0e3298ae4e90", + "sources": "b7cbdad958b791f2a036abff7724570bf9836531c460966f8a3d0df8eaa1c21d" }, - "version": "33.3.0-jre" + "version": "33.3.1-jre" }, "com.google.guava:guava-testlib": { "shasums": { From 798f3f966dfcf0c7e1f1c0bce11407e2f702e1d7 Mon Sep 17 00:00:00 2001 From: Augustin Gottlieb <33221555+aguspe@users.noreply.github.com> Date: Fri, 25 Oct 2024 16:57:33 +0200 Subject: [PATCH 018/135] [rb] Add missing RBS methods (#14621) --- rb/sig/lib/selenium/webdriver/bidi.rbs | 2 +- .../selenium/webdriver/bidi/log_handler.rbs | 6 +++--- .../webdriver/common/driver_finder.rbs | 17 +++++++++++++++++ .../webdriver/common/search_context.rbs | 4 ++++ .../lib/selenium/webdriver/common/service.rbs | 4 +++- .../webdriver/common/websocket_connection.rbs | 4 ++++ rb/sig/lib/selenium/webdriver/fedcm/dialog.rbs | 2 ++ .../lib/selenium/webdriver/firefox/options.rbs | 2 ++ .../selenium/webdriver/remote/http/common.rbs | 18 ++++++++++++++---- .../webdriver/support/guards/guard.rbs | 1 + rb/sig/selenium/web_driver/script.rbs | 12 ++++++------ 11 files changed, 57 insertions(+), 15 deletions(-) diff --git a/rb/sig/lib/selenium/webdriver/bidi.rbs b/rb/sig/lib/selenium/webdriver/bidi.rbs index fa6b8757f6815..9f8395be94270 100644 --- a/rb/sig/lib/selenium/webdriver/bidi.rbs +++ b/rb/sig/lib/selenium/webdriver/bidi.rbs @@ -13,7 +13,7 @@ module Selenium def callbacks: () -> Hash[untyped, untyped] - def remove_callback: -> Array[Integer] + def remove_callback: (String event, Integer id) -> Error::WebDriverError? def session: () -> Session diff --git a/rb/sig/lib/selenium/webdriver/bidi/log_handler.rbs b/rb/sig/lib/selenium/webdriver/bidi/log_handler.rbs index 703729d9c74ec..47f94107b14ec 100644 --- a/rb/sig/lib/selenium/webdriver/bidi/log_handler.rbs +++ b/rb/sig/lib/selenium/webdriver/bidi/log_handler.rbs @@ -14,13 +14,13 @@ module Selenium def add_message_handler: (String type) { (untyped) -> untyped } -> Integer - def remove_message_handler: (Integer id) -> false + def remove_message_handler: (Integer id) -> bool private - def subscribe_log_entry: () -> false + def subscribe_log_entry: () -> bool - def unsubscribe_log_entry: () -> false + def unsubscribe_log_entry: () -> bool end end end diff --git a/rb/sig/lib/selenium/webdriver/common/driver_finder.rbs b/rb/sig/lib/selenium/webdriver/common/driver_finder.rbs index d012a5ec38f3c..4373fec706895 100644 --- a/rb/sig/lib/selenium/webdriver/common/driver_finder.rbs +++ b/rb/sig/lib/selenium/webdriver/common/driver_finder.rbs @@ -1,7 +1,24 @@ module Selenium module WebDriver class DriverFinder + @options: untyped + + @paths: untyped + @service: untyped + + def initialize: (untyped options,untyped service) -> void + def self.path: (untyped options, untyped klass) -> untyped + + def browser_path: -> untyped + + def browser_path?: -> untyped + + def driver_path: -> untyped + + private + + def paths: -> untyped end end end diff --git a/rb/sig/lib/selenium/webdriver/common/search_context.rbs b/rb/sig/lib/selenium/webdriver/common/search_context.rbs index 5f8f227156cb6..c240e68d5ce5b 100644 --- a/rb/sig/lib/selenium/webdriver/common/search_context.rbs +++ b/rb/sig/lib/selenium/webdriver/common/search_context.rbs @@ -5,6 +5,10 @@ module Selenium FINDERS: untyped + attr_accessor self.extra_finders: untyped + + def self.finders: -> untyped + def find_element: (*untyped args) -> untyped def find_elements: (*untyped args) -> untyped diff --git a/rb/sig/lib/selenium/webdriver/common/service.rbs b/rb/sig/lib/selenium/webdriver/common/service.rbs index e07af9ac3e1ce..788728741d3e1 100644 --- a/rb/sig/lib/selenium/webdriver/common/service.rbs +++ b/rb/sig/lib/selenium/webdriver/common/service.rbs @@ -47,12 +47,14 @@ module Selenium attr_accessor args: untyped - def env_path: -> String + def env_path: -> String? alias extra_args args def initialize: (?path: untyped?, ?port: untyped?, ?log: untyped?, ?args: untyped?) -> void + def find_driver_path: -> untyped + def launch: () -> untyped def shutdown_supported: () -> untyped diff --git a/rb/sig/lib/selenium/webdriver/common/websocket_connection.rbs b/rb/sig/lib/selenium/webdriver/common/websocket_connection.rbs index 411f09d91e948..b0276a246d815 100644 --- a/rb/sig/lib/selenium/webdriver/common/websocket_connection.rbs +++ b/rb/sig/lib/selenium/webdriver/common/websocket_connection.rbs @@ -35,10 +35,14 @@ module Selenium def initialize: (url: untyped) -> void + def add_callback: (untyped event, untyped id) -> untyped + def close: () -> untyped def callbacks: () -> untyped + def remove_callback: (untyped event, untyped id) -> untyped + def send_cmd: (**untyped payload) -> untyped private diff --git a/rb/sig/lib/selenium/webdriver/fedcm/dialog.rbs b/rb/sig/lib/selenium/webdriver/fedcm/dialog.rbs index c16ef91d6c930..98e4ff81a283e 100644 --- a/rb/sig/lib/selenium/webdriver/fedcm/dialog.rbs +++ b/rb/sig/lib/selenium/webdriver/fedcm/dialog.rbs @@ -7,6 +7,8 @@ module Selenium @bridge: Remote::Bridge + def initialize: (Remote::Bridge bridge) -> void + def accounts: -> Array[Account] def cancel: -> Remote::Response? diff --git a/rb/sig/lib/selenium/webdriver/firefox/options.rbs b/rb/sig/lib/selenium/webdriver/firefox/options.rbs index d4087e414024c..2fcb015d6430e 100644 --- a/rb/sig/lib/selenium/webdriver/firefox/options.rbs +++ b/rb/sig/lib/selenium/webdriver/firefox/options.rbs @@ -6,6 +6,8 @@ module Selenium @profile: untyped + @options: Hash[Symbol, untyped] + attr_accessor debugger_address: untyped KEY: String diff --git a/rb/sig/lib/selenium/webdriver/remote/http/common.rbs b/rb/sig/lib/selenium/webdriver/remote/http/common.rbs index 3e1e2ecc26be3..dfafbbf8456bf 100644 --- a/rb/sig/lib/selenium/webdriver/remote/http/common.rbs +++ b/rb/sig/lib/selenium/webdriver/remote/http/common.rbs @@ -9,21 +9,31 @@ module Selenium DEFAULT_HEADERS: Hash[String, untyped] - attr_writer server_url: untyped + @common_headers: Hash[String, untyped] + + attr_accessor self.extra_headers: Hash[String, untyped] + + attr_writer self.user_agent: String + + def self.user_agent: -> String + + attr_writer server_url: String def quit_errors: () -> Array[untyped] - def close: () -> untyped + def close: () -> nil def call: (untyped verb, untyped url, untyped command_hash) -> untyped private - def server_url: () -> untyped + def common_headers: -> Hash[String, untyped] + + def server_url: () -> String def request: (*untyped) -> untyped - def create_response: (untyped code, untyped body, untyped content_type) -> untyped + def create_response: (Integer code, Hash[String, untyped] body, String content_type) -> Remote::Response end end end diff --git a/rb/sig/lib/selenium/webdriver/support/guards/guard.rbs b/rb/sig/lib/selenium/webdriver/support/guards/guard.rbs index d5e312b9ee43f..70c13b3cb0312 100644 --- a/rb/sig/lib/selenium/webdriver/support/guards/guard.rbs +++ b/rb/sig/lib/selenium/webdriver/support/guards/guard.rbs @@ -15,6 +15,7 @@ module Selenium attr_reader guarded: untyped + attr_reader tracker: String attr_reader type: untyped attr_reader messages: untyped diff --git a/rb/sig/selenium/web_driver/script.rbs b/rb/sig/selenium/web_driver/script.rbs index f2dc066174df0..73804ed7d280a 100644 --- a/rb/sig/selenium/web_driver/script.rbs +++ b/rb/sig/selenium/web_driver/script.rbs @@ -4,17 +4,17 @@ module Selenium @bidi: BiDi @log_entry_subscribed: bool - def add_console_message_handler: -> untyped + @log_handler: BiDi::LogHandler - def add_javascript_error_handler: -> untyped + def initialize: (BiDi bidi) -> void - def remove_console_message_handler: -> untyped + def add_console_message_handler: -> Integer - alias remove_javascript_error_handler remove_console_message_handler + def add_javascript_error_handler: -> Integer - private + def remove_console_message_handler: (Integer id) -> bool - def subscribe_log_entry: -> untyped + alias remove_javascript_error_handler remove_console_message_handler end end end From 40c43efa204fa646784639de3972612ff1e31a6c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 26 Oct 2024 18:30:34 +0700 Subject: [PATCH 019/135] chore(deps): [py] update dependency debugpy to v1.8.7 (#14649) chore(deps): update dependency debugpy to v1.8.7 Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Viet Nguyen Duc --- py/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/py/requirements.txt b/py/requirements.txt index 7520086bbd7f0..38085a1181db8 100644 --- a/py/requirements.txt +++ b/py/requirements.txt @@ -3,7 +3,7 @@ attrs==23.2.0 certifi==2023.11.17 cffi==1.16.0 cryptography==42.0.8 -debugpy==1.8.5 +debugpy==1.8.7 h11==0.14.0 idna==3.7 importlib-metadata==6.8.0 From bc1c14c2f90b650315a198b68219a2544518af2b Mon Sep 17 00:00:00 2001 From: Sri Harsha Date: Sat, 26 Oct 2024 12:22:15 -0400 Subject: [PATCH 020/135] [JS] update dependencies to latest versions to resolve security alerts --- .../node/selenium-webdriver/package.json | 14 +- pnpm-lock.yaml | 627 ++++++++---------- 2 files changed, 292 insertions(+), 349 deletions(-) diff --git a/javascript/node/selenium-webdriver/package.json b/javascript/node/selenium-webdriver/package.json index 308b4a9caf5c6..31f7b92c3eeed 100644 --- a/javascript/node/selenium-webdriver/package.json +++ b/javascript/node/selenium-webdriver/package.json @@ -23,24 +23,24 @@ "node": ">= 14.21.0" }, "dependencies": { - "@bazel/runfiles": "^6.3.0", + "@bazel/runfiles": "^6.3.1", "jszip": "^3.10.1", "tmp": "^0.2.3", "ws": "^8.18.0" }, "devDependencies": { - "@eslint/js": "^9.12.0", + "@eslint/js": "^9.13.0", "clean-jsdoc-theme": "^4.3.0", - "eslint": "^9.12.0", + "eslint": "^9.13.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-mocha": "^10.5.0", - "eslint-plugin-n": "^17.10.3", + "eslint-plugin-n": "^17.11.1", "eslint-plugin-no-only-tests": "^3.3.0", "eslint-plugin-prettier": "^5.2.1", - "express": "^4.21.0", - "globals": "^15.10.0", + "express": "^4.21.1", + "globals": "^15.11.0", "has-flag": "^5.0.1", - "jsdoc": "^4.0.3", + "jsdoc": "^4.0.4", "mocha": "^10.7.3", "mocha-junit-reporter": "^2.2.1", "multer": "1.4.5-lts.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9ba6191ac72a5..3844bdb5a3747 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -51,7 +51,7 @@ importers: version: 16.8.1 graphql.macro: specifier: 1.4.2 - version: 1.4.2(@babel/core@7.25.7)(graphql@16.8.1) + version: 1.4.2(@babel/core@7.26.0)(graphql@16.8.1) path-browserify: specifier: 1.0.1 version: 1.0.1 @@ -76,7 +76,7 @@ importers: devDependencies: '@babel/preset-react': specifier: 7.24.7 - version: 7.24.7(@babel/core@7.25.7) + version: 7.24.7(@babel/core@7.26.0) '@testing-library/jest-dom': specifier: 6.4.5 version: 6.4.5(@types/jest@29.5.12) @@ -99,8 +99,8 @@ importers: javascript/node/selenium-webdriver: dependencies: '@bazel/runfiles': - specifier: ^6.3.0 - version: 6.3.0 + specifier: ^6.3.1 + version: 6.3.1 jszip: specifier: ^3.10.1 version: 3.10.1 @@ -112,41 +112,41 @@ importers: version: 8.18.0 devDependencies: '@eslint/js': - specifier: ^9.12.0 - version: 9.12.0 + specifier: ^9.13.0 + version: 9.13.0 clean-jsdoc-theme: specifier: ^4.3.0 - version: 4.3.0(jsdoc@4.0.3) + version: 4.3.0(jsdoc@4.0.4) eslint: - specifier: ^9.12.0 - version: 9.12.0(supports-color@9.4.0) + specifier: ^9.13.0 + version: 9.13.0(supports-color@9.4.0) eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@9.12.0) + version: 9.1.0(eslint@9.13.0) eslint-plugin-mocha: specifier: ^10.5.0 - version: 10.5.0(eslint@9.12.0) + version: 10.5.0(eslint@9.13.0) eslint-plugin-n: - specifier: ^17.10.3 - version: 17.10.3(eslint@9.12.0) + specifier: ^17.11.1 + version: 17.11.1(eslint@9.13.0) eslint-plugin-no-only-tests: specifier: ^3.3.0 version: 3.3.0 eslint-plugin-prettier: specifier: ^5.2.1 - version: 5.2.1(eslint-config-prettier@9.1.0)(eslint@9.12.0)(prettier@3.3.3) + version: 5.2.1(eslint-config-prettier@9.1.0)(eslint@9.13.0)(prettier@3.3.3) express: - specifier: ^4.21.0 - version: 4.21.0(supports-color@9.4.0) + specifier: ^4.21.1 + version: 4.21.1(supports-color@9.4.0) globals: - specifier: ^15.10.0 - version: 15.10.0 + specifier: ^15.11.0 + version: 15.11.0 has-flag: specifier: ^5.0.1 version: 5.0.1 jsdoc: - specifier: ^4.0.3 - version: 4.0.3 + specifier: ^4.0.4 + version: 4.0.4 mocha: specifier: ^10.7.3 version: 10.7.3 @@ -215,37 +215,38 @@ packages: response-iterator: 0.2.6 symbol-observable: 4.0.0 ts-invariant: 0.10.3 - tslib: 2.7.0 + tslib: 2.8.0 zen-observable-ts: 1.2.5 transitivePeerDependencies: - '@types/react' dev: false - /@babel/code-frame@7.25.7: - resolution: {integrity: sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==} + /@babel/code-frame@7.26.0: + resolution: {integrity: sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/highlight': 7.25.7 - picocolors: 1.1.0 + '@babel/helper-validator-identifier': 7.25.9 + js-tokens: 4.0.0 + picocolors: 1.1.1 - /@babel/compat-data@7.25.7: - resolution: {integrity: sha512-9ickoLz+hcXCeh7jrcin+/SLWm+GkxE2kTvoYyp38p4WkdFXfQJxDFGWp/YHjiKLPx06z2A7W8XKuqbReXDzsw==} + /@babel/compat-data@7.26.0: + resolution: {integrity: sha512-qETICbZSLe7uXv9VE8T/RWOdIE5qqyTucOt4zLYMafj2MRO271VGgLd4RACJMeBO37UPWhXiKMBk7YlJ0fOzQA==} engines: {node: '>=6.9.0'} - /@babel/core@7.25.7: - resolution: {integrity: sha512-yJ474Zv3cwiSOO9nXJuqzvwEeM+chDuQ8GJirw+pZ91sCGCyOZ3dJkVE09fTV0VEVzXyLWhh3G/AolYTPX7Mow==} + /@babel/core@7.26.0: + resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==} engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.25.7 - '@babel/generator': 7.25.7 - '@babel/helper-compilation-targets': 7.25.7 - '@babel/helper-module-transforms': 7.25.7(@babel/core@7.25.7) - '@babel/helpers': 7.25.7 - '@babel/parser': 7.25.7 - '@babel/template': 7.25.7 - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.7 + '@babel/code-frame': 7.26.0 + '@babel/generator': 7.26.0 + '@babel/helper-compilation-targets': 7.25.9 + '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) + '@babel/helpers': 7.26.0 + '@babel/parser': 7.26.1 + '@babel/template': 7.25.9 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 convert-source-map: 2.0.0 debug: 4.3.7 gensync: 1.0.0-beta.2 @@ -254,225 +255,206 @@ packages: transitivePeerDependencies: - supports-color - /@babel/generator@7.25.7: - resolution: {integrity: sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==} + /@babel/generator@7.26.0: + resolution: {integrity: sha512-/AIkAmInnWwgEAJGQr9vY0c66Mj6kjkE2ZPB1PurTRaRAh3U+J45sAQMjQDJdh4WbR3l0x5xkimXBKyBXXAu2w==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.25.7 + '@babel/parser': 7.26.1 + '@babel/types': 7.26.0 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.0.2 - /@babel/helper-annotate-as-pure@7.25.7: - resolution: {integrity: sha512-4xwU8StnqnlIhhioZf1tqnVWeQ9pvH/ujS8hRfw/WOza+/a+1qv69BWNy+oY231maTCWgKWhfBU7kDpsds6zAA==} + /@babel/helper-annotate-as-pure@7.25.9: + resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==} engines: {node: '>=6.9.0'} dependencies: - '@babel/types': 7.25.7 + '@babel/types': 7.26.0 dev: true - /@babel/helper-compilation-targets@7.25.7: - resolution: {integrity: sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==} + /@babel/helper-compilation-targets@7.25.9: + resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.25.7 - '@babel/helper-validator-option': 7.25.7 - browserslist: 4.24.0 + '@babel/compat-data': 7.26.0 + '@babel/helper-validator-option': 7.25.9 + browserslist: 4.24.2 lru-cache: 5.1.1 semver: 6.3.1 - /@babel/helper-module-imports@7.25.7: - resolution: {integrity: sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==} + /@babel/helper-module-imports@7.25.9: + resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.7 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color - /@babel/helper-module-transforms@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==} + /@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0): + resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-module-imports': 7.25.7 - '@babel/helper-simple-access': 7.25.7 - '@babel/helper-validator-identifier': 7.25.7 - '@babel/traverse': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 + '@babel/traverse': 7.25.9 transitivePeerDependencies: - supports-color - /@babel/helper-plugin-utils@7.25.7: - resolution: {integrity: sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==} + /@babel/helper-plugin-utils@7.25.9: + resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==} engines: {node: '>=6.9.0'} dev: true - /@babel/helper-simple-access@7.25.7: - resolution: {integrity: sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==} - engines: {node: '>=6.9.0'} - dependencies: - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.7 - transitivePeerDependencies: - - supports-color - - /@babel/helper-string-parser@7.25.7: - resolution: {integrity: sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==} - engines: {node: '>=6.9.0'} - - /@babel/helper-validator-identifier@7.25.7: - resolution: {integrity: sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==} + /@babel/helper-string-parser@7.25.9: + resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==} engines: {node: '>=6.9.0'} - /@babel/helper-validator-option@7.25.7: - resolution: {integrity: sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==} + /@babel/helper-validator-identifier@7.25.9: + resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==} engines: {node: '>=6.9.0'} - /@babel/helpers@7.25.7: - resolution: {integrity: sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==} + /@babel/helper-validator-option@7.25.9: + resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==} engines: {node: '>=6.9.0'} - dependencies: - '@babel/template': 7.25.7 - '@babel/types': 7.25.7 - /@babel/highlight@7.25.7: - resolution: {integrity: sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==} + /@babel/helpers@7.26.0: + resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-validator-identifier': 7.25.7 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.1.0 + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 - /@babel/parser@7.25.7: - resolution: {integrity: sha512-aZn7ETtQsjjGG5HruveUK06cU3Hljuhd9Iojm4M8WWv3wLE6OkE5PWbDUkItmMgegmccaITudyuW5RPYrYlgWw==} + /@babel/parser@7.26.1: + resolution: {integrity: sha512-reoQYNiAJreZNsJzyrDNzFQ+IQ5JFiIzAHJg9bn94S3l+4++J7RsIhNMoB+lgP/9tpmiAQqspv+xfdxTSzREOw==} engines: {node: '>=6.0.0'} hasBin: true dependencies: - '@babel/types': 7.25.7 + '@babel/types': 7.26.0 - /@babel/plugin-syntax-jsx@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-ruZOnKO+ajVL/MVx+PwNBPOkrnXTXoWMtte1MBpegfCArhqOe3Bj52avVj1huLLxNKYKXYaSxZ2F+woK1ekXfw==} + /@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-react-display-name@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-r0QY7NVU8OnrwE+w2IWiRom0wwsTbjx4+xH2RTd7AVdof3uurXOF+/mXHQDRk+2jIvWgSaCHKMgggfvM4dyUGA==} + /@babel/plugin-transform-react-display-name@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/plugin-transform-react-jsx-development@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-5yd3lH1PWxzW6IZj+p+Y4OLQzz0/LzlOG8vGqonHfVR3euf1vyzyMUJk9Ac+m97BH46mFc/98t9PmYLyvgL3qg==} + /@babel/plugin-transform-react-jsx-development@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/plugin-transform-react-jsx': 7.25.7(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-react-jsx@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-vILAg5nwGlR9EXE8JIOX4NHXd49lrYbN8hnjffDtoULwpL9hUx/N55nqh2qd0q6FyNDfjl9V79ecKGvFbcSA0Q==} + /@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-module-imports': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/plugin-syntax-jsx': 7.25.7(@babel/core@7.25.7) - '@babel/types': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-module-imports': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/plugin-syntax-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color dev: true - /@babel/plugin-transform-react-pure-annotations@7.25.7(@babel/core@7.25.7): - resolution: {integrity: sha512-6YTHJ7yjjgYqGc8S+CbEXhLICODk0Tn92j+vNJo07HFk9t3bjFgAKxPLFhHwF2NjmQVSI1zBRfBWUeVBa2osfA==} + /@babel/plugin-transform-react-pure-annotations@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-annotate-as-pure': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 + '@babel/core': 7.26.0 + '@babel/helper-annotate-as-pure': 7.25.9 + '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/preset-react@7.24.7(@babel/core@7.25.7): + /@babel/preset-react@7.24.7(@babel/core@7.26.0): resolution: {integrity: sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 dependencies: - '@babel/core': 7.25.7 - '@babel/helper-plugin-utils': 7.25.7 - '@babel/helper-validator-option': 7.25.7 - '@babel/plugin-transform-react-display-name': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-react-jsx': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-react-jsx-development': 7.25.7(@babel/core@7.25.7) - '@babel/plugin-transform-react-pure-annotations': 7.25.7(@babel/core@7.25.7) + '@babel/core': 7.26.0 + '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-validator-option': 7.25.9 + '@babel/plugin-transform-react-display-name': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-jsx-development': 7.25.9(@babel/core@7.26.0) + '@babel/plugin-transform-react-pure-annotations': 7.25.9(@babel/core@7.26.0) transitivePeerDependencies: - supports-color dev: true - /@babel/runtime@7.25.7: - resolution: {integrity: sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==} + /@babel/runtime@7.26.0: + resolution: {integrity: sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==} engines: {node: '>=6.9.0'} dependencies: regenerator-runtime: 0.14.1 - /@babel/template@7.25.7: - resolution: {integrity: sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==} + /@babel/template@7.25.9: + resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.25.7 - '@babel/parser': 7.25.7 - '@babel/types': 7.25.7 + '@babel/code-frame': 7.26.0 + '@babel/parser': 7.26.1 + '@babel/types': 7.26.0 - /@babel/traverse@7.25.7: - resolution: {integrity: sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==} + /@babel/traverse@7.25.9: + resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.25.7 - '@babel/generator': 7.25.7 - '@babel/parser': 7.25.7 - '@babel/template': 7.25.7 - '@babel/types': 7.25.7 + '@babel/code-frame': 7.26.0 + '@babel/generator': 7.26.0 + '@babel/parser': 7.26.1 + '@babel/template': 7.25.9 + '@babel/types': 7.26.0 debug: 4.3.7 globals: 11.12.0 transitivePeerDependencies: - supports-color - /@babel/types@7.25.7: - resolution: {integrity: sha512-vwIVdXG+j+FOpkwqHRcBgHLYNL7XMkufrlaFvL9o6Ai9sJn9+PdyIL5qa0XzTZw084c+u9LOls53eoZWP/W5WQ==} + /@babel/types@7.26.0: + resolution: {integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==} engines: {node: '>=6.9.0'} dependencies: - '@babel/helper-string-parser': 7.25.7 - '@babel/helper-validator-identifier': 7.25.7 - to-fast-properties: 2.0.0 + '@babel/helper-string-parser': 7.25.9 + '@babel/helper-validator-identifier': 7.25.9 - /@bazel/runfiles@6.3.0: - resolution: {integrity: sha512-2Q+KC0ys+BLIBp6zsI8E6htEw1/R1cjA1Yt+3JiqdEB597aGpZKiJJP6FeJSA4LIAWlH/FDVDtgvJ77eeLNyiA==} + /@bazel/runfiles@6.3.1: + resolution: {integrity: sha512-1uLNT5NZsUVIGS4syuHwTzZ8HycMPyr6POA3FCE4GbMtc4rhoJk8aZKtNIRthJYfL+iioppi+rTfH3olMPr9nA==} dev: false /@emotion/babel-plugin@11.12.0: resolution: {integrity: sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==} dependencies: - '@babel/helper-module-imports': 7.25.7 - '@babel/runtime': 7.25.7 + '@babel/helper-module-imports': 7.25.9 + '@babel/runtime': 7.26.0 '@emotion/hash': 0.9.2 '@emotion/memoize': 0.9.0 '@emotion/serialize': 1.3.2 @@ -519,7 +501,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 '@emotion/babel-plugin': 11.12.0 '@emotion/cache': 11.13.1 '@emotion/serialize': 1.3.2 @@ -557,7 +539,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 '@emotion/babel-plugin': 11.12.0 '@emotion/is-prop-valid': 1.3.1 '@emotion/react': 11.11.4(@types/react@18.2.72)(react@18.2.0) @@ -801,8 +783,8 @@ packages: dev: true optional: true - /@eslint-community/eslint-utils@4.4.0(eslint@8.57.1): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + /@eslint-community/eslint-utils@4.4.1(eslint@8.57.1): + resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 @@ -811,18 +793,18 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/eslint-utils@4.4.0(eslint@9.12.0): - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + /@eslint-community/eslint-utils@4.4.1(eslint@9.13.0): + resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 9.12.0(supports-color@9.4.0) + eslint: 9.13.0(supports-color@9.4.0) eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/regexpp@4.11.1: - resolution: {integrity: sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==} + /@eslint-community/regexpp@4.11.2: + resolution: {integrity: sha512-2WwyTYNVaMNUWPZTOJdkax9iqTdirrApgTbk+Qoq5EPX6myqZvG8QGFRgdKmkjKVG6/G/a565vpPauHk0+hpBA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true @@ -837,8 +819,8 @@ packages: - supports-color dev: true - /@eslint/core@0.6.0: - resolution: {integrity: sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==} + /@eslint/core@0.7.0: + resolution: {integrity: sha512-xp5Jirz5DyPYlPiKat8jaq0EmYvDXKKpzTbxXMpT9eqlRJkRKIz9AGMdlvYjih+im+QlhWrpvVjl8IPC/lHlUw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true @@ -881,8 +863,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@eslint/js@9.12.0: - resolution: {integrity: sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==} + /@eslint/js@9.13.0: + resolution: {integrity: sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true @@ -891,8 +873,8 @@ packages: engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true - /@eslint/plugin-kit@0.2.0: - resolution: {integrity: sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==} + /@eslint/plugin-kit@0.2.1: + resolution: {integrity: sha512-HFZ4Mp26nbWk9d/BpvP0YNL6W4UoZF0VFcTw/aPPA8RpOxeFQgK+ClABGgAUXs9Y/RGX/l1vOmrqz1MQt9MNuw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: levn: 0.4.1 @@ -1047,9 +1029,9 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 '@floating-ui/react-dom': 2.1.2(react-dom@18.2.0)(react@18.2.0) - '@mui/types': 7.2.17(@types/react@18.2.72) + '@mui/types': 7.2.18(@types/react@18.2.72) '@mui/utils': 5.16.6(@types/react@18.2.72)(react@18.2.0) '@popperjs/core': 2.11.8 '@types/react': 18.2.72 @@ -1074,7 +1056,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 '@mui/material': 5.15.18(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) '@types/react': 18.2.72 react: 18.2.0 @@ -1097,13 +1079,13 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 '@emotion/react': 11.11.4(@types/react@18.2.72)(react@18.2.0) '@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.72)(react@18.2.0) '@mui/base': 5.0.0-beta.40(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) '@mui/core-downloads-tracker': 5.16.7 '@mui/system': 5.16.7(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.72)(react@18.2.0) - '@mui/types': 7.2.17(@types/react@18.2.72) + '@mui/types': 7.2.18(@types/react@18.2.72) '@mui/utils': 5.16.6(@types/react@18.2.72)(react@18.2.0) '@types/react': 18.2.72 '@types/react-transition-group': 4.4.11 @@ -1126,7 +1108,7 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 '@mui/utils': 5.16.6(@types/react@18.2.72)(react@18.2.0) '@types/react': 18.2.72 prop-types: 15.8.1 @@ -1146,7 +1128,7 @@ packages: '@emotion/styled': optional: true dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 '@emotion/cache': 11.13.1 '@emotion/react': 11.11.4(@types/react@18.2.72)(react@18.2.0) '@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.72)(react@18.2.0) @@ -1171,12 +1153,12 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 '@emotion/react': 11.11.4(@types/react@18.2.72)(react@18.2.0) '@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.72)(react@18.2.0) '@mui/private-theming': 5.16.6(@types/react@18.2.72)(react@18.2.0) '@mui/styled-engine': 5.16.6(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.2.0) - '@mui/types': 7.2.17(@types/react@18.2.72) + '@mui/types': 7.2.18(@types/react@18.2.72) '@mui/utils': 5.16.6(@types/react@18.2.72)(react@18.2.0) '@types/react': 18.2.72 clsx: 2.1.1 @@ -1185,8 +1167,8 @@ packages: react: 18.2.0 dev: false - /@mui/types@7.2.17(@types/react@18.2.72): - resolution: {integrity: sha512-oyumoJgB6jDV8JFzRqjBo2daUuHpzDjoO/e3IrRhhHo/FxJlaVhET6mcNrKHUq2E+R+q3ql0qAtvQ4rfWHhAeQ==} + /@mui/types@7.2.18(@types/react@18.2.72): + resolution: {integrity: sha512-uvK9dWeyCJl/3ocVnTOS6nlji/Knj8/tVqVX03UVTpdmTJYu/s4jtDd9Kvv0nRGE0CUSNW1UYAci7PYypjealg==} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: @@ -1206,8 +1188,8 @@ packages: '@types/react': optional: true dependencies: - '@babel/runtime': 7.25.7 - '@mui/types': 7.2.17(@types/react@18.2.72) + '@babel/runtime': 7.26.0 + '@mui/types': 7.2.18(@types/react@18.2.72) '@types/prop-types': 15.7.13 '@types/react': 18.2.72 clsx: 2.1.1 @@ -1268,8 +1250,8 @@ packages: type-detect: 4.0.8 dev: true - /@sinonjs/fake-timers@13.0.2: - resolution: {integrity: sha512-4Bb+oqXZTSTZ1q27Izly9lv8B9dlV61CROxPiVtywwzv5SnytJqhvYe6FclHYuXml4cd1VHPo1zd5PmTeJozvA==} + /@sinonjs/fake-timers@13.0.4: + resolution: {integrity: sha512-wpUq+QiKxrWk7U2pdvNSY9fNX62/k+7eEdlQMO0A3rU8tQ+vvzY/WzBhMz+GbQlATXZlXWYQqFWNFcn1SVvThA==} dependencies: '@sinonjs/commons': 3.0.1 dev: true @@ -1290,8 +1272,8 @@ packages: resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} engines: {node: '>=18'} dependencies: - '@babel/code-frame': 7.25.7 - '@babel/runtime': 7.25.7 + '@babel/code-frame': 7.26.0 + '@babel/runtime': 7.26.0 '@types/aria-query': 5.0.4 aria-query: 5.3.0 chalk: 4.1.2 @@ -1304,8 +1286,8 @@ packages: resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} engines: {node: '>=14'} dependencies: - '@babel/code-frame': 7.25.7 - '@babel/runtime': 7.25.7 + '@babel/code-frame': 7.26.0 + '@babel/runtime': 7.26.0 '@types/aria-query': 5.0.4 aria-query: 5.1.3 chalk: 4.1.2 @@ -1336,7 +1318,7 @@ packages: optional: true dependencies: '@adobe/css-tools': 4.4.0 - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 '@types/jest': 29.5.12 aria-query: 5.3.2 chalk: 3.0.0 @@ -1353,7 +1335,7 @@ packages: react: ^18.0.0 react-dom: ^18.0.0 dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 '@testing-library/dom': 9.3.4 '@types/react-dom': 18.2.22 react: 18.2.0 @@ -1499,7 +1481,7 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.11.1 + '@eslint-community/regexpp': 4.11.2 '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.4.5) '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@5.4.5) @@ -1596,7 +1578,7 @@ packages: peerDependencies: eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) + '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 5.62.0 @@ -1626,35 +1608,35 @@ packages: resolution: {integrity: sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==} engines: {node: '>=8'} dependencies: - tslib: 2.7.0 + tslib: 2.8.0 dev: false /@wry/context@0.7.4: resolution: {integrity: sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==} engines: {node: '>=8'} dependencies: - tslib: 2.7.0 + tslib: 2.8.0 dev: false /@wry/equality@0.5.7: resolution: {integrity: sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==} engines: {node: '>=8'} dependencies: - tslib: 2.7.0 + tslib: 2.8.0 dev: false /@wry/trie@0.4.3: resolution: {integrity: sha512-I6bHwH0fSf6RqQcnnXLJKhkSXG45MFral3GxPaY4uAl0LYDZM+YDVDAiU9bYwjTuysy1S0IeecWtmq1SZA3M1w==} engines: {node: '>=8'} dependencies: - tslib: 2.7.0 + tslib: 2.8.0 dev: false /@wry/trie@0.5.0: resolution: {integrity: sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==} engines: {node: '>=8'} dependencies: - tslib: 2.7.0 + tslib: 2.8.0 dev: false /accepts@1.3.8: @@ -1665,16 +1647,16 @@ packages: negotiator: 0.6.3 dev: true - /acorn-jsx@5.3.2(acorn@8.12.1): + /acorn-jsx@5.3.2(acorn@8.13.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.12.1 + acorn: 8.13.0 dev: true - /acorn@8.12.1: - resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + /acorn@8.13.0: + resolution: {integrity: sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==} engines: {node: '>=0.4.0'} hasBin: true dev: true @@ -1697,12 +1679,6 @@ packages: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} - /ansi-styles@3.2.1: - resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} - engines: {node: '>=4'} - dependencies: - color-convert: 1.9.3 - /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} engines: {node: '>=8'} @@ -1855,15 +1831,15 @@ packages: possible-typed-array-names: 1.0.0 dev: true - /babel-literal-to-ast@2.1.0(@babel/core@7.25.7): + /babel-literal-to-ast@2.1.0(@babel/core@7.26.0): resolution: {integrity: sha512-CxfpQ0ysQ0bZOhlaPgcWjl79Em16Rhqc6++UAFn0A3duiXmuyhhj8yyl9PYbj0I0CyjrHovdDbp2QEKT7uIMxw==} peerDependencies: '@babel/core': ^7.1.2 dependencies: - '@babel/core': 7.25.7 - '@babel/parser': 7.25.7 - '@babel/traverse': 7.25.7 - '@babel/types': 7.25.7 + '@babel/core': 7.26.0 + '@babel/parser': 7.26.1 + '@babel/traverse': 7.25.9 + '@babel/types': 7.26.0 transitivePeerDependencies: - supports-color dev: false @@ -1871,7 +1847,7 @@ packages: /babel-plugin-macros@2.8.0: resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==} dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 cosmiconfig: 6.0.0 resolve: 1.22.8 dev: false @@ -1880,7 +1856,7 @@ packages: resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} engines: {node: '>=10', npm: '>=6'} dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 cosmiconfig: 7.1.0 resolve: 1.22.8 dev: false @@ -1942,15 +1918,15 @@ packages: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} dev: true - /browserslist@4.24.0: - resolution: {integrity: sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==} + /browserslist@4.24.2: + resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001667 - electron-to-chromium: 1.5.32 + caniuse-lite: 1.0.30001671 + electron-to-chromium: 1.5.47 node-releases: 2.0.18 - update-browserslist-db: 1.1.1(browserslist@4.24.0) + update-browserslist-db: 1.1.1(browserslist@4.24.2) /btoa@1.2.1: resolution: {integrity: sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==} @@ -1999,7 +1975,7 @@ packages: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} dependencies: pascal-case: 3.1.2 - tslib: 2.7.0 + tslib: 2.8.0 dev: true /camelcase@6.3.0: @@ -2007,8 +1983,8 @@ packages: engines: {node: '>=10'} dev: true - /caniuse-lite@1.0.30001667: - resolution: {integrity: sha512-7LTwJjcRkzKFmtqGsibMeuXmvFDfZq/nzIjnmgCGzKKRVzjD72selLDK1oPF/Oxzmt4fNcPvTDvGqSDG4tCALw==} + /caniuse-lite@1.0.30001671: + resolution: {integrity: sha512-jocyVaSSfXg2faluE6hrWkMgDOiULBMca4QLtDT39hw1YxaIPHWc1CcTCKkPmHgGH6tKji6ZNbMSmUAvENf2/A==} /catharsis@0.9.0: resolution: {integrity: sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==} @@ -2017,14 +1993,6 @@ packages: lodash: 4.17.21 dev: true - /chalk@2.4.2: - resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} - engines: {node: '>=4'} - dependencies: - ansi-styles: 3.2.1 - escape-string-regexp: 1.0.5 - supports-color: 5.5.0 - /chalk@3.0.0: resolution: {integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==} engines: {node: '>=8'} @@ -2070,7 +2038,7 @@ packages: source-map: 0.6.1 dev: true - /clean-jsdoc-theme@4.3.0(jsdoc@4.0.3): + /clean-jsdoc-theme@4.3.0(jsdoc@4.0.4): resolution: {integrity: sha512-QMrBdZ2KdPt6V2Ytg7dIt0/q32U4COpxvR0UDhPjRRKRL0o0MvRCR5YpY37/4rPF1SI1AYEKAWyof7ndCb/dzA==} peerDependencies: jsdoc: '>=3.x <=4.x' @@ -2078,7 +2046,7 @@ packages: '@jsdoc/salty': 0.2.8 fs-extra: 10.1.0 html-minifier-terser: 7.2.0 - jsdoc: 4.0.3 + jsdoc: 4.0.4 klaw-sync: 6.0.0 lodash: 4.17.21 showdown: 2.1.0 @@ -2096,20 +2064,12 @@ packages: engines: {node: '>=6'} dev: false - /color-convert@1.9.3: - resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} - dependencies: - color-name: 1.1.3 - /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} engines: {node: '>=7.0.0'} dependencies: color-name: 1.1.4 - /color-name@1.1.3: - resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} - /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -2163,8 +2123,8 @@ packages: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} dev: true - /cookie@0.6.0: - resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==} + /cookie@0.7.1: + resolution: {integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==} engines: {node: '>= 0.6'} dev: true @@ -2417,7 +2377,7 @@ packages: /dom-helpers@5.2.1: resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 csstype: 3.1.3 dev: false @@ -2425,7 +2385,7 @@ packages: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: no-case: 3.0.4 - tslib: 2.7.0 + tslib: 2.8.0 dev: true /duplexer@0.1.2: @@ -2444,8 +2404,8 @@ packages: jake: 10.9.2 dev: false - /electron-to-chromium@1.5.32: - resolution: {integrity: sha512-M+7ph0VGBQqqpTT2YrabjNKSQ2fEl9PVx6AK3N558gDH9NO8O6XN9SXXFWRo9u9PbEg/bWq+tjXQr+eXmxubCw==} + /electron-to-chromium@1.5.47: + resolution: {integrity: sha512-zS5Yer0MOYw4rtK2iq43cJagHZ8sXN0jDHDKzB+86gSBSAI4v07S97mcq+Gs2vclAxSh1j7vOAHxSVgduiiuVQ==} /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2556,8 +2516,8 @@ packages: stop-iteration-iterator: 1.0.0 dev: true - /es-iterator-helpers@1.0.19: - resolution: {integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==} + /es-iterator-helpers@1.1.0: + resolution: {integrity: sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 @@ -2572,7 +2532,7 @@ packages: has-proto: 1.0.3 has-symbols: 1.0.3 internal-slot: 1.0.7 - iterator.prototype: 1.1.2 + iterator.prototype: 1.1.3 safe-array-concat: 1.1.2 dev: true @@ -2645,10 +2605,6 @@ packages: /escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} - /escape-string-regexp@1.0.5: - resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} - engines: {node: '>=0.8.0'} - /escape-string-regexp@2.0.0: resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} engines: {node: '>=8'} @@ -2657,33 +2613,33 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - /eslint-compat-utils@0.5.1(eslint@9.12.0): + /eslint-compat-utils@0.5.1(eslint@9.13.0): resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} engines: {node: '>=12'} peerDependencies: eslint: '>=6.0.0' dependencies: - eslint: 9.12.0(supports-color@9.4.0) + eslint: 9.13.0(supports-color@9.4.0) semver: 7.6.3 dev: true - /eslint-config-prettier@9.1.0(eslint@9.12.0): + /eslint-config-prettier@9.1.0(eslint@9.13.0): resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 9.12.0(supports-color@9.4.0) + eslint: 9.13.0(supports-color@9.4.0) dev: true - /eslint-config-standard-jsx@11.0.0(eslint-plugin-react@7.37.1)(eslint@8.57.1): + /eslint-config-standard-jsx@11.0.0(eslint-plugin-react@7.37.2)(eslint@8.57.1): resolution: {integrity: sha512-+1EV/R0JxEK1L0NGolAr8Iktm3Rgotx3BKwgaX+eAuSX8D952LULKtjgZD3F+e6SvibONnhLwoTi9DPxN5LvvQ==} peerDependencies: eslint: ^8.8.0 eslint-plugin-react: ^7.28.0 dependencies: eslint: 8.57.1 - eslint-plugin-react: 7.37.1(eslint@8.57.1) + eslint-plugin-react: 7.37.2(eslint@8.57.1) dev: true /eslint-config-standard-with-typescript@23.0.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint-plugin-import@2.31.0)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.6.0)(eslint@8.57.1)(typescript@5.4.5): @@ -2762,16 +2718,16 @@ packages: - supports-color dev: true - /eslint-plugin-es-x@7.8.0(eslint@9.12.0): + /eslint-plugin-es-x@7.8.0(eslint@9.13.0): resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0) - '@eslint-community/regexpp': 4.11.1 - eslint: 9.12.0(supports-color@9.4.0) - eslint-compat-utils: 0.5.1(eslint@9.12.0) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.13.0) + '@eslint-community/regexpp': 4.11.2 + eslint: 9.13.0(supports-color@9.4.0) + eslint-compat-utils: 0.5.1(eslint@9.13.0) dev: true /eslint-plugin-es@4.1.0(eslint@8.57.1): @@ -2822,14 +2778,14 @@ packages: - supports-color dev: true - /eslint-plugin-mocha@10.5.0(eslint@9.12.0): + /eslint-plugin-mocha@10.5.0(eslint@9.13.0): resolution: {integrity: sha512-F2ALmQVPT1GoP27O1JTZGrV9Pqg8k79OeIuvw63UxMtQKREZtmkK1NFgkZQ2TW7L2JSSFKHFPTtHu5z8R9QNRw==} engines: {node: '>=14.0.0'} peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 9.12.0(supports-color@9.4.0) - eslint-utils: 3.0.0(eslint@9.12.0) + eslint: 9.13.0(supports-color@9.4.0) + eslint-utils: 3.0.0(eslint@9.13.0) globals: 13.24.0 rambda: 7.5.0 dev: true @@ -2851,18 +2807,18 @@ packages: semver: 7.6.3 dev: true - /eslint-plugin-n@17.10.3(eslint@9.12.0): - resolution: {integrity: sha512-ySZBfKe49nQZWR1yFaA0v/GsH6Fgp8ah6XV0WDz6CN8WO0ek4McMzb7A2xnf4DCYV43frjCygvb9f/wx7UUxRw==} + /eslint-plugin-n@17.11.1(eslint@9.13.0): + resolution: {integrity: sha512-93IUD82N6tIEgjztVI/l3ElHtC2wTa9boJHrD8iN+NyDxjxz/daZUZKfkedjBZNdg6EqDk4irybUsiPwDqXAEA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.23.0' dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.13.0) enhanced-resolve: 5.17.1 - eslint: 9.12.0(supports-color@9.4.0) - eslint-plugin-es-x: 7.8.0(eslint@9.12.0) + eslint: 9.13.0(supports-color@9.4.0) + eslint-plugin-es-x: 7.8.0(eslint@9.13.0) get-tsconfig: 4.8.1 - globals: 15.10.0 + globals: 15.11.0 ignore: 5.3.2 minimatch: 9.0.5 semver: 7.6.3 @@ -2873,7 +2829,7 @@ packages: engines: {node: '>=5.0.0'} dev: true - /eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0)(eslint@9.12.0)(prettier@3.3.3): + /eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0)(eslint@9.13.0)(prettier@3.3.3): resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -2887,8 +2843,8 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 9.12.0(supports-color@9.4.0) - eslint-config-prettier: 9.1.0(eslint@9.12.0) + eslint: 9.13.0(supports-color@9.4.0) + eslint-config-prettier: 9.1.0(eslint@9.13.0) prettier: 3.3.3 prettier-linter-helpers: 1.0.0 synckit: 0.9.2 @@ -2903,8 +2859,8 @@ packages: eslint: 8.57.1 dev: true - /eslint-plugin-react@7.37.1(eslint@8.57.1): - resolution: {integrity: sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg==} + /eslint-plugin-react@7.37.2(eslint@8.57.1): + resolution: {integrity: sha512-EsTAnj9fLVr/GZleBLFbj/sSuXeWmp1eXIN60ceYnZveqEaUCyW4X+Vh4WTdUhCkW4xutXYqTXCUSyqD4rB75w==} engines: {node: '>=4'} peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 @@ -2914,7 +2870,7 @@ packages: array.prototype.flatmap: 1.3.2 array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 - es-iterator-helpers: 1.0.19 + es-iterator-helpers: 1.1.0 eslint: 8.57.1 estraverse: 5.3.0 hasown: 2.0.2 @@ -2971,13 +2927,13 @@ packages: eslint-visitor-keys: 2.1.0 dev: true - /eslint-utils@3.0.0(eslint@9.12.0): + /eslint-utils@3.0.0(eslint@9.13.0): resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 9.12.0(supports-color@9.4.0) + eslint: 9.13.0(supports-color@9.4.0) eslint-visitor-keys: 2.1.0 dev: true @@ -3007,8 +2963,8 @@ packages: deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.1) - '@eslint-community/regexpp': 4.11.1 + '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) + '@eslint-community/regexpp': 4.11.2 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.57.1 '@humanwhocodes/config-array': 0.13.0 @@ -3049,8 +3005,8 @@ packages: - supports-color dev: true - /eslint@9.12.0(supports-color@9.4.0): - resolution: {integrity: sha512-UVIOlTEWxwIopRL1wgSQYdnVDcEvs2wyaO6DGo5mXqe3r16IoCNWkR29iHhyaP4cICWjbgbmFUGAhh0GJRuGZw==} + /eslint@9.13.0(supports-color@9.4.0): + resolution: {integrity: sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -3059,13 +3015,13 @@ packages: jiti: optional: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@9.12.0) - '@eslint-community/regexpp': 4.11.1 + '@eslint-community/eslint-utils': 4.4.1(eslint@9.13.0) + '@eslint-community/regexpp': 4.11.2 '@eslint/config-array': 0.18.0(supports-color@9.4.0) - '@eslint/core': 0.6.0 + '@eslint/core': 0.7.0 '@eslint/eslintrc': 3.1.0(supports-color@9.4.0) - '@eslint/js': 9.12.0 - '@eslint/plugin-kit': 0.2.0 + '@eslint/js': 9.13.0 + '@eslint/plugin-kit': 0.2.1 '@humanfs/node': 0.16.5 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.3.1 @@ -3102,8 +3058,8 @@ packages: resolution: {integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - acorn: 8.12.1 - acorn-jsx: 5.3.2(acorn@8.12.1) + acorn: 8.13.0 + acorn-jsx: 5.3.2(acorn@8.13.0) eslint-visitor-keys: 4.1.0 dev: true @@ -3111,8 +3067,8 @@ packages: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.12.1 - acorn-jsx: 5.3.2(acorn@8.12.1) + acorn: 8.13.0 + acorn-jsx: 5.3.2(acorn@8.13.0) eslint-visitor-keys: 3.4.3 dev: true @@ -3164,8 +3120,8 @@ packages: jest-message-util: 29.7.0 jest-util: 29.7.0 - /express@4.21.0(supports-color@9.4.0): - resolution: {integrity: sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==} + /express@4.21.1(supports-color@9.4.0): + resolution: {integrity: sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==} engines: {node: '>= 0.10.0'} dependencies: accepts: 1.3.8 @@ -3173,7 +3129,7 @@ packages: body-parser: 1.20.3(supports-color@9.4.0) content-disposition: 0.5.4 content-type: 1.0.5 - cookie: 0.6.0 + cookie: 0.7.1 cookie-signature: 1.0.6 debug: 2.6.9(supports-color@9.4.0) depd: 2.0.0 @@ -3475,8 +3431,8 @@ packages: engines: {node: '>=18'} dev: true - /globals@15.10.0: - resolution: {integrity: sha512-tqFIbz83w4Y5TCbtgjZjApohbuh7K9BxGYFm7ifwDR240tvdb7P9x+/9VvUKlmkPoiknoJtanI8UOrqxS3a7lQ==} + /globals@15.11.0: + resolution: {integrity: sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==} engines: {node: '>=18'} dev: true @@ -3520,14 +3476,14 @@ packages: graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: graphql: 16.8.1 - tslib: 2.7.0 + tslib: 2.8.0 dev: false - /graphql.macro@1.4.2(@babel/core@7.25.7)(graphql@16.8.1): + /graphql.macro@1.4.2(@babel/core@7.26.0)(graphql@16.8.1): resolution: {integrity: sha512-vcIaStPgS65gp5i1M3DSBimNVkyus0Z7k4VObWAyZS319tKlpX/TEIJSWTgOZU5k8dn4RRzGoS/elQhX2E6yBw==} dependencies: - '@babel/template': 7.25.7 - babel-literal-to-ast: 2.1.0(@babel/core@7.25.7) + '@babel/template': 7.25.9 + babel-literal-to-ast: 2.1.0(@babel/core@7.26.0) babel-plugin-macros: 2.8.0 graphql-tag: 2.12.6(graphql@16.8.1) transitivePeerDependencies: @@ -3552,10 +3508,6 @@ packages: resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} dev: true - /has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} @@ -3616,7 +3568,7 @@ packages: entities: 4.5.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.34.1 + terser: 5.36.0 dev: true /http-errors@1.6.3: @@ -3926,8 +3878,9 @@ packages: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} dev: true - /iterator.prototype@1.1.2: - resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} + /iterator.prototype@1.1.3: + resolution: {integrity: sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==} + engines: {node: '>= 0.4'} dependencies: define-properties: 1.2.1 get-intrinsic: 1.2.4 @@ -3973,7 +3926,7 @@ packages: resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/code-frame': 7.25.7 + '@babel/code-frame': 7.26.0 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -4010,12 +3963,12 @@ packages: xmlcreate: 2.0.4 dev: true - /jsdoc@4.0.3: - resolution: {integrity: sha512-Nu7Sf35kXJ1MWDZIMAuATRQTg1iIPdzh7tqJ6jjvaU/GfDf+qi5UV8zJR3Mo+/pYFvm8mzay4+6O5EWigaQBQw==} + /jsdoc@4.0.4: + resolution: {integrity: sha512-zeFezwyXeG4syyYHbvh1A967IAqq/67yXtXvuL5wnqCkFZe8I0vKfm+EO+YEvLguo6w9CDUbrAXVtJSHh2E8rw==} engines: {node: '>=12.0.0'} hasBin: true dependencies: - '@babel/parser': 7.25.7 + '@babel/parser': 7.26.1 '@jsdoc/salty': 0.2.8 '@types/markdown-it': 14.1.2 bluebird: 3.7.2 @@ -4208,7 +4161,7 @@ packages: /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: - tslib: 2.7.0 + tslib: 2.8.0 dev: true /lru-cache@5.1.1: @@ -4428,7 +4381,7 @@ packages: resolution: {integrity: sha512-aMSAzLVY7LyeM60gvBS423nBmIPP+Wy7St7hsb+8/fc1HmeoHJfLO8CKse4u3BtOZvQLJghYPI2i/1WZrEj5/g==} dependencies: '@sinonjs/commons': 3.0.1 - '@sinonjs/fake-timers': 13.0.2 + '@sinonjs/fake-timers': 13.0.4 '@sinonjs/text-encoding': 0.7.3 just-extend: 6.2.0 path-to-regexp: 8.2.0 @@ -4438,7 +4391,7 @@ packages: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 - tslib: 2.7.0 + tslib: 2.8.0 dev: true /node-releases@2.0.18: @@ -4544,7 +4497,7 @@ packages: '@wry/caches': 1.0.1 '@wry/context': 0.7.4 '@wry/trie': 0.4.3 - tslib: 2.7.0 + tslib: 2.8.0 dev: false /optionator@0.9.4: @@ -4614,7 +4567,7 @@ packages: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} dependencies: dot-case: 3.0.4 - tslib: 2.7.0 + tslib: 2.8.0 dev: true /parent-module@1.0.1: @@ -4635,7 +4588,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.25.7 + '@babel/code-frame': 7.26.0 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -4655,7 +4608,7 @@ packages: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: no-case: 3.0.4 - tslib: 2.7.0 + tslib: 2.8.0 dev: true /path-browserify@1.0.1: @@ -4702,8 +4655,8 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - /picocolors@1.1.0: - resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + /picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} @@ -4908,7 +4861,7 @@ packages: react: '>=16.6.0' react-dom: '>=16.6.0' dependencies: - '@babel/runtime': 7.25.7 + '@babel/runtime': 7.26.0 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 @@ -5232,7 +5185,7 @@ packages: resolution: {integrity: sha512-euuToqM+PjO4UgXeLETsfQiuoyPXlqFezr6YZDFwHR3t4qaX0fZUe1MfPMznTL5f8BWrVS89KduLdMUsxFCO6g==} dependencies: '@sinonjs/commons': 3.0.1 - '@sinonjs/fake-timers': 13.0.2 + '@sinonjs/fake-timers': 13.0.4 '@sinonjs/samsam': 8.0.2 diff: 7.0.0 nise: 6.1.1 @@ -5414,12 +5367,6 @@ packages: resolution: {integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==} dev: false - /supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - dependencies: - has-flag: 3.0.0 - /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} @@ -5452,7 +5399,7 @@ packages: engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@pkgr/core': 0.1.1 - tslib: 2.7.0 + tslib: 2.8.0 dev: true /tapable@2.2.1: @@ -5468,13 +5415,13 @@ packages: rimraf: 2.6.3 dev: false - /terser@5.34.1: - resolution: {integrity: sha512-FsJZ7iZLd/BXkz+4xrRTGJ26o/6VTjQytUk8b8OxkwcD2I+79VPJlz7qss1+zE7h8GNIScFqXcDyJ/KqBYZFVA==} + /terser@5.36.0: + resolution: {integrity: sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w==} engines: {node: '>=10'} hasBin: true dependencies: '@jridgewell/source-map': 0.3.6 - acorn: 8.12.1 + acorn: 8.13.0 commander: 2.20.3 source-map-support: 0.5.21 dev: true @@ -5488,10 +5435,6 @@ packages: engines: {node: '>=14.14'} dev: false - /to-fast-properties@2.0.0: - resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} - engines: {node: '>=4'} - /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} @@ -5507,7 +5450,7 @@ packages: resolution: {integrity: sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==} engines: {node: '>=8'} dependencies: - tslib: 2.7.0 + tslib: 2.8.0 dev: false /ts-standard@12.0.2(typescript@5.4.5): @@ -5520,12 +5463,12 @@ packages: '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1)(typescript@5.4.5) '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.4.5) eslint: 8.57.1 - eslint-config-standard-jsx: 11.0.0(eslint-plugin-react@7.37.1)(eslint@8.57.1) + eslint-config-standard-jsx: 11.0.0(eslint-plugin-react@7.37.2)(eslint@8.57.1) eslint-config-standard-with-typescript: 23.0.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint-plugin-import@2.31.0)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.6.0)(eslint@8.57.1)(typescript@5.4.5) eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1) eslint-plugin-n: 15.7.0(eslint@8.57.1) eslint-plugin-promise: 6.6.0(eslint@8.57.1) - eslint-plugin-react: 7.37.1(eslint@8.57.1) + eslint-plugin-react: 7.37.2(eslint@8.57.1) minimist: 1.2.8 pkg-conf: 4.0.0 standard-engine: 15.1.0 @@ -5549,8 +5492,8 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tslib@2.7.0: - resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + /tslib@2.8.0: + resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} /tsutils@3.21.0(typescript@5.4.5): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} @@ -5681,15 +5624,15 @@ packages: engines: {node: '>= 0.8'} dev: true - /update-browserslist-db@1.1.1(browserslist@4.24.0): + /update-browserslist-db@1.1.1(browserslist@4.24.2): resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==} hasBin: true peerDependencies: browserslist: '>= 4.21.0' dependencies: - browserslist: 4.24.0 + browserslist: 4.24.2 escalade: 3.2.0 - picocolors: 1.1.0 + picocolors: 1.1.1 /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} From 215e20b139f9af0c2db76b800472daed0633c73c Mon Sep 17 00:00:00 2001 From: Sri Harsha Date: Sat, 26 Oct 2024 13:11:16 -0400 Subject: [PATCH 021/135] [JS] update grid dependencies to latest versions --- javascript/grid-ui/package.json | 22 +- pnpm-lock.yaml | 549 ++++++++++++++++---------------- 2 files changed, 291 insertions(+), 280 deletions(-) diff --git a/javascript/grid-ui/package.json b/javascript/grid-ui/package.json index add2c75d45847..5a59007ec2986 100644 --- a/javascript/grid-ui/package.json +++ b/javascript/grid-ui/package.json @@ -4,13 +4,13 @@ "private": true, "type": "module", "dependencies": { - "@apollo/client": "3.10.4", - "@emotion/react": "11.11.4", - "@emotion/styled": "11.11.5", + "@apollo/client": "3.11.8", + "@emotion/react": "11.13.3", + "@emotion/styled": "11.13.0", "@mui/icons-material": "5.15.18", "@mui/material": "5.15.18", "@novnc/novnc": "1.4.0", - "@types/jest": "29.5.12", + "@types/jest": "29.5.14", "@types/node": "20.12.12", "@types/react": "18.2.72", "@types/react-dom": "18.2.22", @@ -20,10 +20,10 @@ "graphql.macro": "1.4.2", "path-browserify": "1.0.1", "pretty-ms": "9.0.0", - "react": "18.2.0", - "react-dom": "18.2.0", + "react": "18.3.1", + "react-dom": "18.3.1", "react-modal": "3.16.1", - "react-router-dom": "6.22.3", + "react-router-dom": "6.27.0", "source-map-explorer": "2.5.3" }, "scripts": { @@ -47,13 +47,13 @@ ] }, "devDependencies": { - "@babel/preset-react": "7.24.7", - "@testing-library/jest-dom": "6.4.5", + "@babel/preset-react": "7.25.9", + "@testing-library/jest-dom": "6.6.2", "@testing-library/react": "14.3.1", "@testing-library/user-event": "14.5.2", - "esbuild": "0.19.12", + "esbuild": "0.24.0", "ts-standard": "12.0.2", - "typescript": "5.4.5" + "typescript": "5.6.3" }, "jest": { "testMatch": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3844bdb5a3747..bd3089aee3d08 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,26 +11,26 @@ importers: javascript/grid-ui: dependencies: '@apollo/client': - specifier: 3.10.4 - version: 3.10.4(@types/react@18.2.72)(graphql@16.8.1)(react-dom@18.2.0)(react@18.2.0) + specifier: 3.11.8 + version: 3.11.8(@types/react@18.2.72)(graphql@16.8.1)(react-dom@18.3.1)(react@18.3.1) '@emotion/react': - specifier: 11.11.4 - version: 11.11.4(@types/react@18.2.72)(react@18.2.0) + specifier: 11.13.3 + version: 11.13.3(@types/react@18.2.72)(react@18.3.1) '@emotion/styled': - specifier: 11.11.5 - version: 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.72)(react@18.2.0) + specifier: 11.13.0 + version: 11.13.0(@emotion/react@11.13.3)(@types/react@18.2.72)(react@18.3.1) '@mui/icons-material': specifier: 5.15.18 - version: 5.15.18(@mui/material@5.15.18)(@types/react@18.2.72)(react@18.2.0) + version: 5.15.18(@mui/material@5.15.18)(@types/react@18.2.72)(react@18.3.1) '@mui/material': specifier: 5.15.18 - version: 5.15.18(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + version: 5.15.18(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.2.72)(react-dom@18.3.1)(react@18.3.1) '@novnc/novnc': specifier: 1.4.0 version: 1.4.0 '@types/jest': - specifier: 29.5.12 - version: 29.5.12 + specifier: 29.5.14 + version: 29.5.14 '@types/node': specifier: 20.12.12 version: 20.12.12 @@ -59,42 +59,42 @@ importers: specifier: 9.0.0 version: 9.0.0 react: - specifier: 18.2.0 - version: 18.2.0 + specifier: 18.3.1 + version: 18.3.1 react-dom: - specifier: 18.2.0 - version: 18.2.0(react@18.2.0) + specifier: 18.3.1 + version: 18.3.1(react@18.3.1) react-modal: specifier: 3.16.1 - version: 3.16.1(react-dom@18.2.0)(react@18.2.0) + version: 3.16.1(react-dom@18.3.1)(react@18.3.1) react-router-dom: - specifier: 6.22.3 - version: 6.22.3(react-dom@18.2.0)(react@18.2.0) + specifier: 6.27.0 + version: 6.27.0(react-dom@18.3.1)(react@18.3.1) source-map-explorer: specifier: 2.5.3 version: 2.5.3 devDependencies: '@babel/preset-react': - specifier: 7.24.7 - version: 7.24.7(@babel/core@7.26.0) + specifier: 7.25.9 + version: 7.25.9(@babel/core@7.26.0) '@testing-library/jest-dom': - specifier: 6.4.5 - version: 6.4.5(@types/jest@29.5.12) + specifier: 6.6.2 + version: 6.6.2 '@testing-library/react': specifier: 14.3.1 - version: 14.3.1(react-dom@18.2.0)(react@18.2.0) + version: 14.3.1(react-dom@18.3.1)(react@18.3.1) '@testing-library/user-event': specifier: 14.5.2 version: 14.5.2(@testing-library/dom@10.4.0) esbuild: - specifier: 0.19.12 - version: 0.19.12 + specifier: 0.24.0 + version: 0.24.0 ts-standard: specifier: 12.0.2 - version: 12.0.2(typescript@5.4.5) + version: 12.0.2(typescript@5.6.3) typescript: - specifier: 5.4.5 - version: 5.4.5 + specifier: 5.6.3 + version: 5.6.3 javascript/node/selenium-webdriver: dependencies: @@ -182,13 +182,13 @@ packages: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 - /@apollo/client@3.10.4(@types/react@18.2.72)(graphql@16.8.1)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-51gk0xOwN6Ls1EbTG5svFva1kdm2APHYTzmFhaAdvUQoJFDxfc0UwQgDxGptzH84vkPlo1qunY1FuboyF9LI3Q==} + /@apollo/client@3.11.8(@types/react@18.2.72)(graphql@16.8.1)(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-CgG1wbtMjsV2pRGe/eYITmV5B8lXUCYljB2gB/6jWTFQcrvirUVvKg7qtFdjYkQSFbIffU1IDyxgeaN81eTjbA==} peerDependencies: graphql: ^15.0.0 || ^16.0.0 graphql-ws: ^5.5.5 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || >=19.0.0-rc <19.0.0 subscriptions-transport-ws: ^0.9.0 || ^0.11.0 peerDependenciesMeta: graphql-ws: @@ -209,9 +209,9 @@ packages: hoist-non-react-statics: 3.3.2 optimism: 0.18.0 prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - rehackt: 0.1.0(@types/react@18.2.72)(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + rehackt: 0.1.0(@types/react@18.2.72)(react@18.3.1) response-iterator: 0.2.6 symbol-observable: 4.0.0 ts-invariant: 0.10.3 @@ -394,8 +394,8 @@ packages: '@babel/helper-plugin-utils': 7.25.9 dev: true - /@babel/preset-react@7.24.7(@babel/core@7.26.0): - resolution: {integrity: sha512-AAH4lEkpmzFWrGVlHaxJB7RLH21uPQ9+He+eFLWHmF9IuFQVugz8eAsamaW0DXRrTfco5zj1wWtpdcXJUOfsag==} + /@babel/preset-react@7.25.9(@babel/core@7.26.0): + resolution: {integrity: sha512-D3to0uSPiWE7rBrdIICCd0tJSIGpLaaGptna2+w7Pft5xMqLpA1sz99DK5TZ1TjGbdQ/VI1eCSZ06dv3lT4JOw==} engines: {node: '>=6.9.0'} peerDependencies: '@babel/core': ^7.0.0-0 @@ -492,8 +492,8 @@ packages: resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} dev: false - /@emotion/react@11.11.4(@types/react@18.2.72)(react@18.2.0): - resolution: {integrity: sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==} + /@emotion/react@11.13.3(@types/react@18.2.72)(react@18.3.1): + resolution: {integrity: sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==} peerDependencies: '@types/react': '*' react: '>=16.8.0' @@ -505,12 +505,12 @@ packages: '@emotion/babel-plugin': 11.12.0 '@emotion/cache': 11.13.1 '@emotion/serialize': 1.3.2 - '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@18.2.0) + '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@18.3.1) '@emotion/utils': 1.4.1 - '@emotion/weak-memoize': 0.3.1 + '@emotion/weak-memoize': 0.4.0 '@types/react': 18.2.72 hoist-non-react-statics: 3.3.2 - react: 18.2.0 + react: 18.3.1 transitivePeerDependencies: - supports-color dev: false @@ -529,8 +529,8 @@ packages: resolution: {integrity: sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==} dev: false - /@emotion/styled@11.11.5(@emotion/react@11.11.4)(@types/react@18.2.72)(react@18.2.0): - resolution: {integrity: sha512-/ZjjnaNKvuMPxcIiUkf/9SHoG4Q196DRl1w82hQ3WCsjo1IUR8uaGWrC6a87CrYAW0Kb/pK7hk8BnLgLRi9KoQ==} + /@emotion/styled@11.13.0(@emotion/react@11.13.3)(@types/react@18.2.72)(react@18.3.1): + resolution: {integrity: sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==} peerDependencies: '@emotion/react': ^11.0.0-rc.0 '@types/react': '*' @@ -542,12 +542,12 @@ packages: '@babel/runtime': 7.26.0 '@emotion/babel-plugin': 11.12.0 '@emotion/is-prop-valid': 1.3.1 - '@emotion/react': 11.11.4(@types/react@18.2.72)(react@18.2.0) + '@emotion/react': 11.13.3(@types/react@18.2.72)(react@18.3.1) '@emotion/serialize': 1.3.2 - '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@18.2.0) + '@emotion/use-insertion-effect-with-fallbacks': 1.1.0(react@18.3.1) '@emotion/utils': 1.4.1 '@types/react': 18.2.72 - react: 18.2.0 + react: 18.3.1 transitivePeerDependencies: - supports-color dev: false @@ -556,227 +556,232 @@ packages: resolution: {integrity: sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==} dev: false - /@emotion/use-insertion-effect-with-fallbacks@1.1.0(react@18.2.0): + /@emotion/use-insertion-effect-with-fallbacks@1.1.0(react@18.3.1): resolution: {integrity: sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==} peerDependencies: react: '>=16.8.0' dependencies: - react: 18.2.0 + react: 18.3.1 dev: false /@emotion/utils@1.4.1: resolution: {integrity: sha512-BymCXzCG3r72VKJxaYVwOXATqXIZ85cuvg0YOUDxMGNrKc1DJRZk8MgV5wyXRyEayIMd4FuXJIUgTBXvDNW5cA==} dev: false - /@emotion/weak-memoize@0.3.1: - resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} - dev: false - /@emotion/weak-memoize@0.4.0: resolution: {integrity: sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==} dev: false - /@esbuild/aix-ppc64@0.19.12: - resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==} - engines: {node: '>=12'} + /@esbuild/aix-ppc64@0.24.0: + resolution: {integrity: sha512-WtKdFM7ls47zkKHFVzMz8opM7LkcsIp9amDUBIAWirg70RM71WRSjdILPsY5Uv1D42ZpUfaPILDlfactHgsRkw==} + engines: {node: '>=18'} cpu: [ppc64] os: [aix] requiresBuild: true dev: true optional: true - /@esbuild/android-arm64@0.19.12: - resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==} - engines: {node: '>=12'} + /@esbuild/android-arm64@0.24.0: + resolution: {integrity: sha512-Vsm497xFM7tTIPYK9bNTYJyF/lsP590Qc1WxJdlB6ljCbdZKU9SY8i7+Iin4kyhV/KV5J2rOKsBQbB77Ab7L/w==} + engines: {node: '>=18'} cpu: [arm64] os: [android] requiresBuild: true dev: true optional: true - /@esbuild/android-arm@0.19.12: - resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==} - engines: {node: '>=12'} + /@esbuild/android-arm@0.24.0: + resolution: {integrity: sha512-arAtTPo76fJ/ICkXWetLCc9EwEHKaeya4vMrReVlEIUCAUncH7M4bhMQ+M9Vf+FFOZJdTNMXNBrWwW+OXWpSew==} + engines: {node: '>=18'} cpu: [arm] os: [android] requiresBuild: true dev: true optional: true - /@esbuild/android-x64@0.19.12: - resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==} - engines: {node: '>=12'} + /@esbuild/android-x64@0.24.0: + resolution: {integrity: sha512-t8GrvnFkiIY7pa7mMgJd7p8p8qqYIz1NYiAoKc75Zyv73L3DZW++oYMSHPRarcotTKuSs6m3hTOa5CKHaS02TQ==} + engines: {node: '>=18'} cpu: [x64] os: [android] requiresBuild: true dev: true optional: true - /@esbuild/darwin-arm64@0.19.12: - resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==} - engines: {node: '>=12'} + /@esbuild/darwin-arm64@0.24.0: + resolution: {integrity: sha512-CKyDpRbK1hXwv79soeTJNHb5EiG6ct3efd/FTPdzOWdbZZfGhpbcqIpiD0+vwmpu0wTIL97ZRPZu8vUt46nBSw==} + engines: {node: '>=18'} cpu: [arm64] os: [darwin] requiresBuild: true dev: true optional: true - /@esbuild/darwin-x64@0.19.12: - resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==} - engines: {node: '>=12'} + /@esbuild/darwin-x64@0.24.0: + resolution: {integrity: sha512-rgtz6flkVkh58od4PwTRqxbKH9cOjaXCMZgWD905JOzjFKW+7EiUObfd/Kav+A6Gyud6WZk9w+xu6QLytdi2OA==} + engines: {node: '>=18'} cpu: [x64] os: [darwin] requiresBuild: true dev: true optional: true - /@esbuild/freebsd-arm64@0.19.12: - resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==} - engines: {node: '>=12'} + /@esbuild/freebsd-arm64@0.24.0: + resolution: {integrity: sha512-6Mtdq5nHggwfDNLAHkPlyLBpE5L6hwsuXZX8XNmHno9JuL2+bg2BX5tRkwjyfn6sKbxZTq68suOjgWqCicvPXA==} + engines: {node: '>=18'} cpu: [arm64] os: [freebsd] requiresBuild: true dev: true optional: true - /@esbuild/freebsd-x64@0.19.12: - resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==} - engines: {node: '>=12'} + /@esbuild/freebsd-x64@0.24.0: + resolution: {integrity: sha512-D3H+xh3/zphoX8ck4S2RxKR6gHlHDXXzOf6f/9dbFt/NRBDIE33+cVa49Kil4WUjxMGW0ZIYBYtaGCa2+OsQwQ==} + engines: {node: '>=18'} cpu: [x64] os: [freebsd] requiresBuild: true dev: true optional: true - /@esbuild/linux-arm64@0.19.12: - resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==} - engines: {node: '>=12'} + /@esbuild/linux-arm64@0.24.0: + resolution: {integrity: sha512-TDijPXTOeE3eaMkRYpcy3LarIg13dS9wWHRdwYRnzlwlA370rNdZqbcp0WTyyV/k2zSxfko52+C7jU5F9Tfj1g==} + engines: {node: '>=18'} cpu: [arm64] os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/linux-arm@0.19.12: - resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==} - engines: {node: '>=12'} + /@esbuild/linux-arm@0.24.0: + resolution: {integrity: sha512-gJKIi2IjRo5G6Glxb8d3DzYXlxdEj2NlkixPsqePSZMhLudqPhtZ4BUrpIuTjJYXxvF9njql+vRjB2oaC9XpBw==} + engines: {node: '>=18'} cpu: [arm] os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/linux-ia32@0.19.12: - resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==} - engines: {node: '>=12'} + /@esbuild/linux-ia32@0.24.0: + resolution: {integrity: sha512-K40ip1LAcA0byL05TbCQ4yJ4swvnbzHscRmUilrmP9Am7//0UjPreh4lpYzvThT2Quw66MhjG//20mrufm40mA==} + engines: {node: '>=18'} cpu: [ia32] os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/linux-loong64@0.19.12: - resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==} - engines: {node: '>=12'} + /@esbuild/linux-loong64@0.24.0: + resolution: {integrity: sha512-0mswrYP/9ai+CU0BzBfPMZ8RVm3RGAN/lmOMgW4aFUSOQBjA31UP8Mr6DDhWSuMwj7jaWOT0p0WoZ6jeHhrD7g==} + engines: {node: '>=18'} cpu: [loong64] os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/linux-mips64el@0.19.12: - resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==} - engines: {node: '>=12'} + /@esbuild/linux-mips64el@0.24.0: + resolution: {integrity: sha512-hIKvXm0/3w/5+RDtCJeXqMZGkI2s4oMUGj3/jM0QzhgIASWrGO5/RlzAzm5nNh/awHE0A19h/CvHQe6FaBNrRA==} + engines: {node: '>=18'} cpu: [mips64el] os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/linux-ppc64@0.19.12: - resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==} - engines: {node: '>=12'} + /@esbuild/linux-ppc64@0.24.0: + resolution: {integrity: sha512-HcZh5BNq0aC52UoocJxaKORfFODWXZxtBaaZNuN3PUX3MoDsChsZqopzi5UupRhPHSEHotoiptqikjN/B77mYQ==} + engines: {node: '>=18'} cpu: [ppc64] os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/linux-riscv64@0.19.12: - resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==} - engines: {node: '>=12'} + /@esbuild/linux-riscv64@0.24.0: + resolution: {integrity: sha512-bEh7dMn/h3QxeR2KTy1DUszQjUrIHPZKyO6aN1X4BCnhfYhuQqedHaa5MxSQA/06j3GpiIlFGSsy1c7Gf9padw==} + engines: {node: '>=18'} cpu: [riscv64] os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/linux-s390x@0.19.12: - resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==} - engines: {node: '>=12'} + /@esbuild/linux-s390x@0.24.0: + resolution: {integrity: sha512-ZcQ6+qRkw1UcZGPyrCiHHkmBaj9SiCD8Oqd556HldP+QlpUIe2Wgn3ehQGVoPOvZvtHm8HPx+bH20c9pvbkX3g==} + engines: {node: '>=18'} cpu: [s390x] os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/linux-x64@0.19.12: - resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==} - engines: {node: '>=12'} + /@esbuild/linux-x64@0.24.0: + resolution: {integrity: sha512-vbutsFqQ+foy3wSSbmjBXXIJ6PL3scghJoM8zCL142cGaZKAdCZHyf+Bpu/MmX9zT9Q0zFBVKb36Ma5Fzfa8xA==} + engines: {node: '>=18'} cpu: [x64] os: [linux] requiresBuild: true dev: true optional: true - /@esbuild/netbsd-x64@0.19.12: - resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==} - engines: {node: '>=12'} + /@esbuild/netbsd-x64@0.24.0: + resolution: {integrity: sha512-hjQ0R/ulkO8fCYFsG0FZoH+pWgTTDreqpqY7UnQntnaKv95uP5iW3+dChxnx7C3trQQU40S+OgWhUVwCjVFLvg==} + engines: {node: '>=18'} cpu: [x64] os: [netbsd] requiresBuild: true dev: true optional: true - /@esbuild/openbsd-x64@0.19.12: - resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==} - engines: {node: '>=12'} + /@esbuild/openbsd-arm64@0.24.0: + resolution: {integrity: sha512-MD9uzzkPQbYehwcN583yx3Tu5M8EIoTD+tUgKF982WYL9Pf5rKy9ltgD0eUgs8pvKnmizxjXZyLt0z6DC3rRXg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + requiresBuild: true + dev: true + optional: true + + /@esbuild/openbsd-x64@0.24.0: + resolution: {integrity: sha512-4ir0aY1NGUhIC1hdoCzr1+5b43mw99uNwVzhIq1OY3QcEwPDO3B7WNXBzaKY5Nsf1+N11i1eOfFcq+D/gOS15Q==} + engines: {node: '>=18'} cpu: [x64] os: [openbsd] requiresBuild: true dev: true optional: true - /@esbuild/sunos-x64@0.19.12: - resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==} - engines: {node: '>=12'} + /@esbuild/sunos-x64@0.24.0: + resolution: {integrity: sha512-jVzdzsbM5xrotH+W5f1s+JtUy1UWgjU0Cf4wMvffTB8m6wP5/kx0KiaLHlbJO+dMgtxKV8RQ/JvtlFcdZ1zCPA==} + engines: {node: '>=18'} cpu: [x64] os: [sunos] requiresBuild: true dev: true optional: true - /@esbuild/win32-arm64@0.19.12: - resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==} - engines: {node: '>=12'} + /@esbuild/win32-arm64@0.24.0: + resolution: {integrity: sha512-iKc8GAslzRpBytO2/aN3d2yb2z8XTVfNV0PjGlCxKo5SgWmNXx82I/Q3aG1tFfS+A2igVCY97TJ8tnYwpUWLCA==} + engines: {node: '>=18'} cpu: [arm64] os: [win32] requiresBuild: true dev: true optional: true - /@esbuild/win32-ia32@0.19.12: - resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==} - engines: {node: '>=12'} + /@esbuild/win32-ia32@0.24.0: + resolution: {integrity: sha512-vQW36KZolfIudCcTnaTpmLQ24Ha1RjygBo39/aLkM2kmjkWmZGEJ5Gn9l5/7tzXA42QGIoWbICfg6KLLkIw6yw==} + engines: {node: '>=18'} cpu: [ia32] os: [win32] requiresBuild: true dev: true optional: true - /@esbuild/win32-x64@0.19.12: - resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==} - engines: {node: '>=12'} + /@esbuild/win32-x64@0.24.0: + resolution: {integrity: sha512-7IAFPrjSQIJrGsK6flwg7NFmwBoSTyF3rl7If0hNUFQU4ilTsEPL6GuMuU9BfIWVVGuRnuIidkSMC+c0Otu8IA==} + engines: {node: '>=18'} cpu: [x64] os: [win32] requiresBuild: true @@ -893,15 +898,15 @@ packages: '@floating-ui/utils': 0.2.8 dev: false - /@floating-ui/react-dom@2.1.2(react-dom@18.2.0)(react@18.2.0): + /@floating-ui/react-dom@2.1.2(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==} peerDependencies: react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: '@floating-ui/dom': 1.6.11 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) dev: false /@floating-ui/utils@0.2.8: @@ -961,12 +966,14 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: jest-get-type: 29.6.3 + dev: false /@jest/schemas@29.6.3: resolution: {integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.27.8 + dev: false /@jest/types@29.6.3: resolution: {integrity: sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==} @@ -978,6 +985,7 @@ packages: '@types/node': 20.12.12 '@types/yargs': 17.0.33 chalk: 4.1.2 + dev: false /@jridgewell/gen-mapping@0.3.5: resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} @@ -1018,7 +1026,7 @@ packages: lodash: 4.17.21 dev: true - /@mui/base@5.0.0-beta.40(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0): + /@mui/base@5.0.0-beta.40(@types/react@18.2.72)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==} engines: {node: '>=12.0.0'} peerDependencies: @@ -1030,22 +1038,22 @@ packages: optional: true dependencies: '@babel/runtime': 7.26.0 - '@floating-ui/react-dom': 2.1.2(react-dom@18.2.0)(react@18.2.0) + '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1)(react@18.3.1) '@mui/types': 7.2.18(@types/react@18.2.72) - '@mui/utils': 5.16.6(@types/react@18.2.72)(react@18.2.0) + '@mui/utils': 5.16.6(@types/react@18.2.72)(react@18.3.1) '@popperjs/core': 2.11.8 '@types/react': 18.2.72 clsx: 2.1.1 prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) dev: false /@mui/core-downloads-tracker@5.16.7: resolution: {integrity: sha512-RtsCt4Geed2/v74sbihWzzRs+HsIQCfclHeORh5Ynu2fS4icIKozcSubwuG7vtzq2uW3fOR1zITSP84TNt2GoQ==} dev: false - /@mui/icons-material@5.15.18(@mui/material@5.15.18)(@types/react@18.2.72)(react@18.2.0): + /@mui/icons-material@5.15.18(@mui/material@5.15.18)(@types/react@18.2.72)(react@18.3.1): resolution: {integrity: sha512-jGhyw02TSLM0NgW+MDQRLLRUD/K4eN9rlK2pTBTL1OtzyZmQ8nB060zK1wA0b7cVrIiG+zyrRmNAvGWXwm2N9Q==} engines: {node: '>=12.0.0'} peerDependencies: @@ -1057,12 +1065,12 @@ packages: optional: true dependencies: '@babel/runtime': 7.26.0 - '@mui/material': 5.15.18(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@mui/material': 5.15.18(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.2.72)(react-dom@18.3.1)(react@18.3.1) '@types/react': 18.2.72 - react: 18.2.0 + react: 18.3.1 dev: false - /@mui/material@5.15.18(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0): + /@mui/material@5.15.18(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.2.72)(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-n+/dsiqux74fFfcRUJjok+ieNQ7+BEk6/OwX9cLcLvriZrZb+/7Y8+Fd2HlUUbn5N0CDurgAHm0VH1DqyJ9HAw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -1080,25 +1088,25 @@ packages: optional: true dependencies: '@babel/runtime': 7.26.0 - '@emotion/react': 11.11.4(@types/react@18.2.72)(react@18.2.0) - '@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.72)(react@18.2.0) - '@mui/base': 5.0.0-beta.40(@types/react@18.2.72)(react-dom@18.2.0)(react@18.2.0) + '@emotion/react': 11.13.3(@types/react@18.2.72)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3)(@types/react@18.2.72)(react@18.3.1) + '@mui/base': 5.0.0-beta.40(@types/react@18.2.72)(react-dom@18.3.1)(react@18.3.1) '@mui/core-downloads-tracker': 5.16.7 - '@mui/system': 5.16.7(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.72)(react@18.2.0) + '@mui/system': 5.16.7(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.2.72)(react@18.3.1) '@mui/types': 7.2.18(@types/react@18.2.72) - '@mui/utils': 5.16.6(@types/react@18.2.72)(react@18.2.0) + '@mui/utils': 5.16.6(@types/react@18.2.72)(react@18.3.1) '@types/react': 18.2.72 '@types/react-transition-group': 4.4.11 clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) react-is: 18.3.1 - react-transition-group: 4.4.5(react-dom@18.2.0)(react@18.2.0) + react-transition-group: 4.4.5(react-dom@18.3.1)(react@18.3.1) dev: false - /@mui/private-theming@5.16.6(@types/react@18.2.72)(react@18.2.0): + /@mui/private-theming@5.16.6(@types/react@18.2.72)(react@18.3.1): resolution: {integrity: sha512-rAk+Rh8Clg7Cd7shZhyt2HGTTE5wYKNSJ5sspf28Fqm/PZ69Er9o6KX25g03/FG2dfpg5GCwZh/xOojiTfm3hw==} engines: {node: '>=12.0.0'} peerDependencies: @@ -1109,13 +1117,13 @@ packages: optional: true dependencies: '@babel/runtime': 7.26.0 - '@mui/utils': 5.16.6(@types/react@18.2.72)(react@18.2.0) + '@mui/utils': 5.16.6(@types/react@18.2.72)(react@18.3.1) '@types/react': 18.2.72 prop-types: 15.8.1 - react: 18.2.0 + react: 18.3.1 dev: false - /@mui/styled-engine@5.16.6(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.2.0): + /@mui/styled-engine@5.16.6(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(react@18.3.1): resolution: {integrity: sha512-zaThmS67ZmtHSWToTiHslbI8jwrmITcN93LQaR2lKArbvS7Z3iLkwRoiikNWutx9MBs8Q6okKvbZq1RQYB3v7g==} engines: {node: '>=12.0.0'} peerDependencies: @@ -1130,14 +1138,14 @@ packages: dependencies: '@babel/runtime': 7.26.0 '@emotion/cache': 11.13.1 - '@emotion/react': 11.11.4(@types/react@18.2.72)(react@18.2.0) - '@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.72)(react@18.2.0) + '@emotion/react': 11.13.3(@types/react@18.2.72)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3)(@types/react@18.2.72)(react@18.3.1) csstype: 3.1.3 prop-types: 15.8.1 - react: 18.2.0 + react: 18.3.1 dev: false - /@mui/system@5.16.7(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(@types/react@18.2.72)(react@18.2.0): + /@mui/system@5.16.7(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.2.72)(react@18.3.1): resolution: {integrity: sha512-Jncvs/r/d/itkxh7O7opOunTqbbSSzMTHzZkNLM+FjAOg+cYAZHrPDlYe1ZGKUYORwwb2XexlWnpZp0kZ4AHuA==} engines: {node: '>=12.0.0'} peerDependencies: @@ -1154,17 +1162,17 @@ packages: optional: true dependencies: '@babel/runtime': 7.26.0 - '@emotion/react': 11.11.4(@types/react@18.2.72)(react@18.2.0) - '@emotion/styled': 11.11.5(@emotion/react@11.11.4)(@types/react@18.2.72)(react@18.2.0) - '@mui/private-theming': 5.16.6(@types/react@18.2.72)(react@18.2.0) - '@mui/styled-engine': 5.16.6(@emotion/react@11.11.4)(@emotion/styled@11.11.5)(react@18.2.0) + '@emotion/react': 11.13.3(@types/react@18.2.72)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3)(@types/react@18.2.72)(react@18.3.1) + '@mui/private-theming': 5.16.6(@types/react@18.2.72)(react@18.3.1) + '@mui/styled-engine': 5.16.6(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(react@18.3.1) '@mui/types': 7.2.18(@types/react@18.2.72) - '@mui/utils': 5.16.6(@types/react@18.2.72)(react@18.2.0) + '@mui/utils': 5.16.6(@types/react@18.2.72)(react@18.3.1) '@types/react': 18.2.72 clsx: 2.1.1 csstype: 3.1.3 prop-types: 15.8.1 - react: 18.2.0 + react: 18.3.1 dev: false /@mui/types@7.2.18(@types/react@18.2.72): @@ -1178,7 +1186,7 @@ packages: '@types/react': 18.2.72 dev: false - /@mui/utils@5.16.6(@types/react@18.2.72)(react@18.2.0): + /@mui/utils@5.16.6(@types/react@18.2.72)(react@18.3.1): resolution: {integrity: sha512-tWiQqlhxAt3KENNiSRL+DIn9H5xNVK6Jjf70x3PnfQPz1MPBdh7yyIcAyVBT9xiw7hP3SomRhPR7hzBMBCjqEA==} engines: {node: '>=12.0.0'} peerDependencies: @@ -1194,7 +1202,7 @@ packages: '@types/react': 18.2.72 clsx: 2.1.1 prop-types: 15.8.1 - react: 18.2.0 + react: 18.3.1 react-is: 18.3.1 dev: false @@ -1232,8 +1240,8 @@ packages: resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} dev: false - /@remix-run/router@1.15.3: - resolution: {integrity: sha512-Oy8rmScVrVxWZVOpEF57ovlnhpZ8CCPlnIIumVcV9nFdiSIrus99+Lw78ekXyGvVDlIsFJbSfmSovJUhCWYV3w==} + /@remix-run/router@1.20.0: + resolution: {integrity: sha512-mUnk8rPJBI9loFDZ+YzPGdeniYK+FTmRD1TMCz7ev2SNIozyKKpnGgsxO34u6Z4z/t0ITuu7voi/AshfsGsgFg==} engines: {node: '>=14.0.0'} dev: false @@ -1243,6 +1251,7 @@ packages: /@sinclair/typebox@0.27.8: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: false /@sinonjs/commons@3.0.1: resolution: {integrity: sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==} @@ -1296,30 +1305,11 @@ packages: pretty-format: 27.5.1 dev: true - /@testing-library/jest-dom@6.4.5(@types/jest@29.5.12): - resolution: {integrity: sha512-AguB9yvTXmCnySBP1lWjfNNUwpbElsaQ567lt2VdGqAdHtpieLgjmcVyv1q7PMIvLbgpDdkWV5Ydv3FEejyp2A==} + /@testing-library/jest-dom@6.6.2: + resolution: {integrity: sha512-P6GJD4yqc9jZLbe98j/EkyQDTPgqftohZF5FBkHY5BUERZmcf4HeO2k0XaefEg329ux2p21i1A1DmyQ1kKw2Jw==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} - peerDependencies: - '@jest/globals': '>= 28' - '@types/bun': latest - '@types/jest': '>= 28' - jest: '>= 28' - vitest: '>= 0.32' - peerDependenciesMeta: - '@jest/globals': - optional: true - '@types/bun': - optional: true - '@types/jest': - optional: true - jest: - optional: true - vitest: - optional: true dependencies: '@adobe/css-tools': 4.4.0 - '@babel/runtime': 7.26.0 - '@types/jest': 29.5.12 aria-query: 5.3.2 chalk: 3.0.0 css.escape: 1.5.1 @@ -1328,7 +1318,7 @@ packages: redent: 3.0.0 dev: true - /@testing-library/react@14.3.1(react-dom@18.2.0)(react@18.2.0): + /@testing-library/react@14.3.1(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-H99XjUhWQw0lTgyMN05W3xQG1Nh4lq574D8keFf1dDoNTJgp66VbJozRaczoF+wsiaPJNt/TcnfpLGufGxSrZQ==} engines: {node: '>=14'} peerDependencies: @@ -1338,8 +1328,8 @@ packages: '@babel/runtime': 7.26.0 '@testing-library/dom': 9.3.4 '@types/react-dom': 18.2.22 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) dev: true /@testing-library/user-event@14.5.2(@testing-library/dom@10.4.0): @@ -1365,22 +1355,26 @@ packages: /@types/istanbul-lib-coverage@2.0.6: resolution: {integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==} + dev: false /@types/istanbul-lib-report@3.0.3: resolution: {integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==} dependencies: '@types/istanbul-lib-coverage': 2.0.6 + dev: false /@types/istanbul-reports@3.0.4: resolution: {integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==} dependencies: '@types/istanbul-lib-report': 3.0.3 + dev: false - /@types/jest@29.5.12: - resolution: {integrity: sha512-eDC8bTvT/QhYdxJAulQikueigY5AsdBRH2yDKW3yveW7svY3+DzN84/2NUgkw10RTiJbWqZrTtoGVdYlvFJdLw==} + /@types/jest@29.5.14: + resolution: {integrity: sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==} dependencies: expect: 29.7.0 pretty-format: 29.7.0 + dev: false /@types/json-schema@7.0.15: resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} @@ -1409,6 +1403,7 @@ packages: resolution: {integrity: sha512-eWLDGF/FOSPtAvEqeRAQ4C8LSA7M1I7i0ky1I8U7kD1J5ITyW3AsRhQrKVoWf5pFKZ2kILsEGJhsI9r93PYnOw==} dependencies: undici-types: 5.26.5 + dev: false /@types/parse-json@4.0.2: resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -1461,16 +1456,19 @@ packages: /@types/stack-utils@2.0.3: resolution: {integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==} + dev: false /@types/yargs-parser@21.0.3: resolution: {integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==} + dev: false /@types/yargs@17.0.33: resolution: {integrity: sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==} dependencies: '@types/yargs-parser': 21.0.3 + dev: false - /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1)(typescript@5.4.5): + /@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1)(typescript@5.6.3): resolution: {integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -1482,23 +1480,23 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.11.2 - '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.4.5) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.6.3) '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@5.4.5) - '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.4.5) + '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.6.3) debug: 4.3.7 eslint: 8.57.1 graphemer: 1.4.0 ignore: 5.3.2 natural-compare-lite: 1.4.0 semver: 7.6.3 - tsutils: 3.21.0(typescript@5.4.5) - typescript: 5.4.5 + tsutils: 3.21.0(typescript@5.6.3) + typescript: 5.6.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.4.5): + /@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.6.3): resolution: {integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -1510,10 +1508,10 @@ packages: dependencies: '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.6.3) debug: 4.3.7 eslint: 8.57.1 - typescript: 5.4.5 + typescript: 5.6.3 transitivePeerDependencies: - supports-color dev: true @@ -1526,7 +1524,7 @@ packages: '@typescript-eslint/visitor-keys': 5.62.0 dev: true - /@typescript-eslint/type-utils@5.62.0(eslint@8.57.1)(typescript@5.4.5): + /@typescript-eslint/type-utils@5.62.0(eslint@8.57.1)(typescript@5.6.3): resolution: {integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -1536,12 +1534,12 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5) - '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.6.3) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.6.3) debug: 4.3.7 eslint: 8.57.1 - tsutils: 3.21.0(typescript@5.4.5) - typescript: 5.4.5 + tsutils: 3.21.0(typescript@5.6.3) + typescript: 5.6.3 transitivePeerDependencies: - supports-color dev: true @@ -1551,7 +1549,7 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@typescript-eslint/typescript-estree@5.62.0(typescript@5.4.5): + /@typescript-eslint/typescript-estree@5.62.0(typescript@5.6.3): resolution: {integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -1566,13 +1564,13 @@ packages: globby: 11.1.0 is-glob: 4.0.3 semver: 7.6.3 - tsutils: 3.21.0(typescript@5.4.5) - typescript: 5.4.5 + tsutils: 3.21.0(typescript@5.6.3) + typescript: 5.6.3 transitivePeerDependencies: - supports-color dev: true - /@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.4.5): + /@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.6.3): resolution: {integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -1583,7 +1581,7 @@ packages: '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 - '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.6.3) eslint: 8.57.1 eslint-scope: 5.1.1 semver: 7.6.3 @@ -2030,6 +2028,7 @@ packages: /ci-info@3.9.0: resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} engines: {node: '>=8'} + dev: false /clean-css@5.3.3: resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} @@ -2334,6 +2333,7 @@ packages: /diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: false /diff@5.2.0: resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} @@ -2567,35 +2567,36 @@ packages: is-symbol: 1.0.4 dev: true - /esbuild@0.19.12: - resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==} - engines: {node: '>=12'} + /esbuild@0.24.0: + resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==} + engines: {node: '>=18'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/aix-ppc64': 0.19.12 - '@esbuild/android-arm': 0.19.12 - '@esbuild/android-arm64': 0.19.12 - '@esbuild/android-x64': 0.19.12 - '@esbuild/darwin-arm64': 0.19.12 - '@esbuild/darwin-x64': 0.19.12 - '@esbuild/freebsd-arm64': 0.19.12 - '@esbuild/freebsd-x64': 0.19.12 - '@esbuild/linux-arm': 0.19.12 - '@esbuild/linux-arm64': 0.19.12 - '@esbuild/linux-ia32': 0.19.12 - '@esbuild/linux-loong64': 0.19.12 - '@esbuild/linux-mips64el': 0.19.12 - '@esbuild/linux-ppc64': 0.19.12 - '@esbuild/linux-riscv64': 0.19.12 - '@esbuild/linux-s390x': 0.19.12 - '@esbuild/linux-x64': 0.19.12 - '@esbuild/netbsd-x64': 0.19.12 - '@esbuild/openbsd-x64': 0.19.12 - '@esbuild/sunos-x64': 0.19.12 - '@esbuild/win32-arm64': 0.19.12 - '@esbuild/win32-ia32': 0.19.12 - '@esbuild/win32-x64': 0.19.12 + '@esbuild/aix-ppc64': 0.24.0 + '@esbuild/android-arm': 0.24.0 + '@esbuild/android-arm64': 0.24.0 + '@esbuild/android-x64': 0.24.0 + '@esbuild/darwin-arm64': 0.24.0 + '@esbuild/darwin-x64': 0.24.0 + '@esbuild/freebsd-arm64': 0.24.0 + '@esbuild/freebsd-x64': 0.24.0 + '@esbuild/linux-arm': 0.24.0 + '@esbuild/linux-arm64': 0.24.0 + '@esbuild/linux-ia32': 0.24.0 + '@esbuild/linux-loong64': 0.24.0 + '@esbuild/linux-mips64el': 0.24.0 + '@esbuild/linux-ppc64': 0.24.0 + '@esbuild/linux-riscv64': 0.24.0 + '@esbuild/linux-s390x': 0.24.0 + '@esbuild/linux-x64': 0.24.0 + '@esbuild/netbsd-x64': 0.24.0 + '@esbuild/openbsd-arm64': 0.24.0 + '@esbuild/openbsd-x64': 0.24.0 + '@esbuild/sunos-x64': 0.24.0 + '@esbuild/win32-arm64': 0.24.0 + '@esbuild/win32-ia32': 0.24.0 + '@esbuild/win32-x64': 0.24.0 dev: true /escalade@3.2.0: @@ -2642,7 +2643,7 @@ packages: eslint-plugin-react: 7.37.2(eslint@8.57.1) dev: true - /eslint-config-standard-with-typescript@23.0.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint-plugin-import@2.31.0)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.6.0)(eslint@8.57.1)(typescript@5.4.5): + /eslint-config-standard-with-typescript@23.0.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint-plugin-import@2.31.0)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.6.0)(eslint@8.57.1)(typescript@5.6.3): resolution: {integrity: sha512-iaaWifImn37Z1OXbNW1es7KI+S7D408F9ys0bpaQf2temeBWlvb0Nc5qHkOgYaRb5QxTZT32GGeN1gtswASOXA==} deprecated: Please use eslint-config-love, instead. peerDependencies: @@ -2653,14 +2654,14 @@ packages: eslint-plugin-promise: ^6.0.0 typescript: '*' dependencies: - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1)(typescript@5.4.5) - '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.4.5) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.6.3) eslint: 8.57.1 eslint-config-standard: 17.0.0(eslint-plugin-import@2.31.0)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.6.0)(eslint@8.57.1) eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1) eslint-plugin-n: 15.7.0(eslint@8.57.1) eslint-plugin-promise: 6.6.0(eslint@8.57.1) - typescript: 5.4.5 + typescript: 5.6.3 transitivePeerDependencies: - supports-color dev: true @@ -2710,7 +2711,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.4.5) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.6.3) debug: 3.2.7 eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 @@ -2752,7 +2753,7 @@ packages: optional: true dependencies: '@rtsao/scc': 1.1.0 - '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.4.5) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.6.3) array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 @@ -3119,6 +3120,7 @@ packages: jest-matcher-utils: 29.7.0 jest-message-util: 29.7.0 jest-util: 29.7.0 + dev: false /express@4.21.1(supports-color@9.4.0): resolution: {integrity: sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==} @@ -3908,10 +3910,12 @@ packages: diff-sequences: 29.6.3 jest-get-type: 29.6.3 pretty-format: 29.7.0 + dev: false /jest-get-type@29.6.3: resolution: {integrity: sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: false /jest-matcher-utils@29.7.0: resolution: {integrity: sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==} @@ -3921,6 +3925,7 @@ packages: jest-diff: 29.7.0 jest-get-type: 29.6.3 pretty-format: 29.7.0 + dev: false /jest-message-util@29.7.0: resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} @@ -3935,6 +3940,7 @@ packages: pretty-format: 29.7.0 slash: 3.0.0 stack-utils: 2.0.6 + dev: false /jest-util@29.7.0: resolution: {integrity: sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==} @@ -3946,6 +3952,7 @@ packages: ci-info: 3.9.0 graceful-fs: 4.2.11 picomatch: 2.3.1 + dev: false /js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} @@ -4722,6 +4729,7 @@ packages: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.3.1 + dev: false /pretty-ms@9.0.0: resolution: {integrity: sha512-E9e9HJ9R9NasGOgPaPE8VMeiPKAyWR5jcFpNnwIejslIhWqdqOrb2wShBsncMPUb+BcCd2OPYfh7p2W6oemTng==} @@ -4794,13 +4802,13 @@ packages: unpipe: 1.0.0 dev: true - /react-dom@18.2.0(react@18.2.0): - resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + /react-dom@18.3.1(react@18.3.1): + resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} peerDependencies: - react: ^18.2.0 + react: ^18.3.1 dependencies: loose-envify: 1.4.0 - react: 18.2.0 + react: 18.3.1 scheduler: 0.23.2 /react-is@16.13.1: @@ -4812,12 +4820,13 @@ packages: /react-is@18.3.1: resolution: {integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==} + dev: false /react-lifecycles-compat@3.0.4: resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} dev: false - /react-modal@3.16.1(react-dom@18.2.0)(react@18.2.0): + /react-modal@3.16.1(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-VStHgI3BVcGo7OXczvnJN7yT2TWHJPDXZWyI/a0ssFNhGZWsPmB8cF0z33ewDXq4VfYMO1vXgiv/g8Nj9NDyWg==} engines: {node: '>=8'} peerDependencies: @@ -4826,36 +4835,36 @@ packages: dependencies: exenv: 1.2.2 prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) react-lifecycles-compat: 3.0.4 warning: 4.0.3 dev: false - /react-router-dom@6.22.3(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-7ZILI7HjcE+p31oQvwbokjk6OA/bnFxrhJ19n82Ex9Ph8fNAq+Hm/7KchpMGlTgWhUxRHMMCut+vEtNpWpowKw==} + /react-router-dom@6.27.0(react-dom@18.3.1)(react@18.3.1): + resolution: {integrity: sha512-+bvtFWMC0DgAFrfKXKG9Fc+BcXWRUO1aJIihbB79xaeq0v5UzfvnM5houGUm1Y461WVRcgAQ+Clh5rdb1eCx4g==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' react-dom: '>=16.8' dependencies: - '@remix-run/router': 1.15.3 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - react-router: 6.22.3(react@18.2.0) + '@remix-run/router': 1.20.0 + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) + react-router: 6.27.0(react@18.3.1) dev: false - /react-router@6.22.3(react@18.2.0): - resolution: {integrity: sha512-dr2eb3Mj5zK2YISHK++foM9w4eBnO23eKnZEDs7c880P6oKbrjz/Svg9+nxqtHQK+oMW4OtjZca0RqPglXxguQ==} + /react-router@6.27.0(react@18.3.1): + resolution: {integrity: sha512-YA+HGZXz4jaAkVoYBE98VQl+nVzI+cVI2Oj/06F5ZM+0u3TgedN9Y9kmMRo2mnkSK2nCpNQn0DVob4HCsY/WLw==} engines: {node: '>=14.0.0'} peerDependencies: react: '>=16.8' dependencies: - '@remix-run/router': 1.15.3 - react: 18.2.0 + '@remix-run/router': 1.20.0 + react: 18.3.1 dev: false - /react-transition-group@4.4.5(react-dom@18.2.0)(react@18.2.0): + /react-transition-group@4.4.5(react-dom@18.3.1)(react@18.3.1): resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} peerDependencies: react: '>=16.6.0' @@ -4865,12 +4874,12 @@ packages: dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 - react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) + react: 18.3.1 + react-dom: 18.3.1(react@18.3.1) dev: false - /react@18.2.0: - resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + /react@18.3.1: + resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} dependencies: loose-envify: 1.4.0 @@ -4932,7 +4941,7 @@ packages: engines: {node: '>=8'} dev: true - /rehackt@0.1.0(@types/react@18.2.72)(react@18.2.0): + /rehackt@0.1.0(@types/react@18.2.72)(react@18.3.1): resolution: {integrity: sha512-7kRDOuLHB87D/JESKxQoRwv4DzbIdwkAGQ7p6QKGdVlY1IZheUnVhlk/4UZlNUVxdAXpyxikE3URsG067ybVzw==} peerDependencies: '@types/react': '*' @@ -4944,7 +4953,7 @@ packages: optional: true dependencies: '@types/react': 18.2.72 - react: 18.2.0 + react: 18.3.1 dev: false /relateurl@0.2.7: @@ -5242,6 +5251,7 @@ packages: engines: {node: '>=10'} dependencies: escape-string-regexp: 2.0.0 + dev: false /standard-engine@15.1.0: resolution: {integrity: sha512-VHysfoyxFu/ukT+9v49d4BRXIokFRZuH3z1VRxzFArZdjSCFpro6rEIU3ji7e4AoAtuSfKBkiOmsrDqKW5ZSRw==} @@ -5453,18 +5463,18 @@ packages: tslib: 2.8.0 dev: false - /ts-standard@12.0.2(typescript@5.4.5): + /ts-standard@12.0.2(typescript@5.6.3): resolution: {integrity: sha512-XX2wrB9fKKTfBj4yD3ABm9iShzZcS2iWcPK8XzlBvuL20+wMiLgiz/k5tXgZwTaYq5wRhbks1Y9PelhujF/9ag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} hasBin: true peerDependencies: typescript: '*' dependencies: - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1)(typescript@5.4.5) - '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.4.5) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1)(typescript@5.6.3) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.6.3) eslint: 8.57.1 eslint-config-standard-jsx: 11.0.0(eslint-plugin-react@7.37.2)(eslint@8.57.1) - eslint-config-standard-with-typescript: 23.0.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint-plugin-import@2.31.0)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.6.0)(eslint@8.57.1)(typescript@5.4.5) + eslint-config-standard-with-typescript: 23.0.0(@typescript-eslint/eslint-plugin@5.62.0)(eslint-plugin-import@2.31.0)(eslint-plugin-n@15.7.0)(eslint-plugin-promise@6.6.0)(eslint@8.57.1)(typescript@5.6.3) eslint-plugin-import: 2.31.0(@typescript-eslint/parser@5.62.0)(eslint@8.57.1) eslint-plugin-n: 15.7.0(eslint@8.57.1) eslint-plugin-promise: 6.6.0(eslint@8.57.1) @@ -5472,7 +5482,7 @@ packages: minimist: 1.2.8 pkg-conf: 4.0.0 standard-engine: 15.1.0 - typescript: 5.4.5 + typescript: 5.6.3 transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -5495,14 +5505,14 @@ packages: /tslib@2.8.0: resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} - /tsutils@3.21.0(typescript@5.4.5): + /tsutils@3.21.0(typescript@5.6.3): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} peerDependencies: typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' dependencies: tslib: 1.14.1 - typescript: 5.4.5 + typescript: 5.6.3 dev: true /type-check@0.4.0: @@ -5588,8 +5598,8 @@ packages: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} dev: true - /typescript@5.4.5: - resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + /typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} engines: {node: '>=14.17'} hasBin: true dev: true @@ -5613,6 +5623,7 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: false /universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} From 635a88a6ffa7d148689d1381669c3a58d99deb5f Mon Sep 17 00:00:00 2001 From: Nikolay Borisenko <22616990+nvborisenko@users.noreply.github.com> Date: Sun, 27 Oct 2024 23:35:37 +0300 Subject: [PATCH 022/135] [dotnet] [bidi] Second round of BiDi implementation (#14566) * Refactor * Auth * Log tests * Auth tests * Intercept options * Stabilize tests * Finish network tests * Stabilize * Browser tests * Update InputModule.cs * Parallelize * Storage tests * Stabilize * Enumerable cookies * Update Subscription.cs * Script tests * Evaluate tests * Script events * Script commands * Temp input * Temp input tests * Experimenting input via paint * Update DefaultMouseTest.cs * Make actions required * Don't introduce any helpers * Input wheel * Simplify hierarchy * Better * GetUserContextsResult as enumerable * LocateNodesResult as enumerable * GetRealmsResult as Enumerable * Better? * Should be TestFixture? * And make fixture public magically * Fix CanListenToFetchError test * Fix CanListenToOnAuthRequiredEvent test * Remove demo test * Fix CanFailRequest test * Update ScriptCommandsTest.cs * Fix CanFailRequest test * Ignore auth req continue for firefox * Don't output command length in logs * Hide transport * Enable nullable context for bidi namespace * Even more warnings * Intercept is cls compliant * String remote value not null? * Options in browsing context log as optional * Fix warnings for UrlPattern and Locator * Remove extra experiment * Make sure unions don't contain extra nested classes * None input action * Source input actions as interface * Update SourceActions.cs * Open door to sequential input actions * Pause as ISourceAction * TODO Node as shared reference * Add input tests * Simplified required properties dto * Tests for Input module temporary are out --- dotnet/src/webdriver/BiDi/BiDi.cs | 57 +--- dotnet/src/webdriver/BiDi/BiDiException.cs | 2 + .../webdriver/BiDi/Communication/Broker.cs | 14 +- .../webdriver/BiDi/Communication/Command.cs | 2 + .../BiDi/Communication/CommandOptions.cs | 2 + .../BiDi/Communication/EventHandler.cs | 2 + .../Converters/BrowserUserContextConverter.cs | 2 + .../Converters/BrowsingContextConverter.cs | 2 + .../Json/Converters/ChannelConverter.cs | 11 +- .../Converters/DateTimeOffsetConverter.cs | 2 + .../Enumerable/GetCookiesResultConverter.cs | 26 ++ .../Enumerable/GetRealmsResultConverter.cs | 25 ++ .../GetUserContextsResultConverter.cs | 25 ++ .../Enumerable/InputSourceActionsConverter.cs | 61 ++++ .../Enumerable/LocateNodesResultConverter.cs | 26 ++ .../Json/Converters/HandleConverter.cs | 2 + .../Json/Converters/InputOriginConverter.cs | 36 +++ .../Json/Converters/InterceptConverter.cs | 2 + .../Json/Converters/InternalIdConverter.cs | 2 + .../Json/Converters/NavigationConverter.cs | 2 + .../Polymorphic/EvaluateResultConverter.cs | 6 +- .../Polymorphic/LogEntryConverter.cs | 12 +- .../Polymorphic/MessageConverter.cs | 2 + .../Polymorphic/RealmInfoConverter.cs | 18 +- .../Polymorphic/RemoteValueConverter.cs | 55 ++-- .../Json/Converters/PreloadScriptConverter.cs | 2 + .../Converters/PrintPageRangeConverter.cs | 2 + .../Json/Converters/RealmConverter.cs | 2 + .../Json/Converters/RealmTypeConverter.cs | 17 +- .../Json/Converters/RequestConverter.cs | 2 + .../webdriver/BiDi/Communication/Message.cs | 2 + .../Communication/Transport/ITransport.cs | 4 +- .../Transport/WebSocketTransport.cs | 6 +- dotnet/src/webdriver/BiDi/EventArgs.cs | 2 + .../BiDi/Modules/Browser/BrowserModule.cs | 8 +- .../BiDi/Modules/Browser/CloseCommand.cs | 2 + .../Browser/CreateUserContextCommand.cs | 2 + .../Modules/Browser/GetUserContextsCommand.cs | 21 +- .../Browser/RemoveUserContextCommand.cs | 2 + .../BiDi/Modules/Browser/UserContext.cs | 16 +- .../BiDi/Modules/Browser/UserContextInfo.cs | 2 + .../BrowsingContext/ActivateCommand.cs | 2 + .../BrowsingContext/BrowsingContext.cs | 56 ++-- .../BrowsingContext/BrowsingContextInfo.cs | 2 + .../BrowsingContextInputModule.cs | 11 +- .../BrowsingContextLogModule.cs | 6 +- .../BrowsingContext/BrowsingContextModule.cs | 8 +- .../BrowsingContextNetworkModule.cs | 11 +- .../BrowsingContextScriptModule.cs | 23 +- .../BrowsingContextStorageModule.cs | 8 +- .../CaptureScreenshotCommand.cs | 15 +- .../Modules/BrowsingContext/CloseCommand.cs | 2 + .../Modules/BrowsingContext/CreateCommand.cs | 2 + .../Modules/BrowsingContext/GetTreeCommand.cs | 2 + .../HandleUserPromptCommand.cs | 2 + .../BrowsingContext/LocateNodesCommand.cs | 21 +- .../BiDi/Modules/BrowsingContext/Locator.cs | 50 ++- .../BrowsingContext/NavigateCommand.cs | 2 + .../Modules/BrowsingContext/Navigation.cs | 2 + .../Modules/BrowsingContext/NavigationInfo.cs | 2 + .../Modules/BrowsingContext/PrintCommand.cs | 2 + .../Modules/BrowsingContext/ReloadCommand.cs | 2 + .../BrowsingContext/SetViewportCommand.cs | 2 + .../BrowsingContext/TraverseHistoryCommand.cs | 2 + .../UserPromptClosedEventArgs.cs | 2 + .../UserPromptOpenedEventArgs.cs | 2 + .../BiDi/Modules/Input/InputModule.cs | 14 +- .../src/webdriver/BiDi/Modules/Input/Key.cs | 8 + .../webdriver/BiDi/Modules/Input/Origin.cs | 17 + .../Modules/Input/PerformActionsCommand.cs | 70 +--- .../Modules/Input/ReleaseActionsCommand.cs | 2 + .../Modules/Input/SequentialSourceActions.cs | 161 +++++++++ .../BiDi/Modules/Input/SourceActions.cs | 155 +++++++++ .../src/webdriver/BiDi/Modules/Log/Entry.cs | 30 ++ .../webdriver/BiDi/Modules/Log/LogEntry.cs | 25 -- .../webdriver/BiDi/Modules/Log/LogModule.cs | 6 +- dotnet/src/webdriver/BiDi/Modules/Module.cs | 2 + .../Modules/Network/AddInterceptCommand.cs | 2 + .../BiDi/Modules/Network/AuthChallenge.cs | 2 + .../BiDi/Modules/Network/AuthCredentials.cs | 8 +- .../Modules/Network/AuthRequiredEventArgs.cs | 2 + .../Network/BaseParametersEventArgs.cs | 2 + .../Network/BeforeRequestSentEventArgs.cs | 2 + .../BiDi/Modules/Network/BytesValue.cs | 14 +- .../Modules/Network/ContinueRequestCommand.cs | 2 + .../Network/ContinueResponseCommand.cs | 2 + .../Network/ContinueWithAuthCommand.cs | 19 +- .../webdriver/BiDi/Modules/Network/Cookie.cs | 2 + .../BiDi/Modules/Network/CookieHeader.cs | 2 + .../Modules/Network/FailRequestCommand.cs | 2 + .../Modules/Network/FetchErrorEventArgs.cs | 2 + .../BiDi/Modules/Network/FetchTimingInfo.cs | 2 + .../webdriver/BiDi/Modules/Network/Header.cs | 2 + .../BiDi/Modules/Network/Initiator.cs | 2 + .../BiDi/Modules/Network/Intercept.cs | 24 +- .../BiDi/Modules/Network/NetworkModule.cs | 17 +- .../Modules/Network/ProvideResponseCommand.cs | 2 + .../Modules/Network/RemoveInterceptCommand.cs | 2 + .../webdriver/BiDi/Modules/Network/Request.cs | 2 + .../BiDi/Modules/Network/RequestData.cs | 2 + .../Network/ResponseCompletedEventArgs.cs | 2 + .../BiDi/Modules/Network/ResponseContent.cs | 2 + .../BiDi/Modules/Network/ResponseData.cs | 2 + .../Network/ResponseStartedEventArgs.cs | 2 + .../BiDi/Modules/Network/SetCookieHeader.cs | 2 + .../BiDi/Modules/Network/UrlPattern.cs | 34 +- .../Modules/Script/AddPreloadScriptCommand.cs | 8 +- .../Modules/Script/CallFunctionCommand.cs | 2 + .../webdriver/BiDi/Modules/Script/Channel.cs | 15 +- .../BiDi/Modules/Script/ChannelValue.cs | 13 - .../BiDi/Modules/Script/DisownCommand.cs | 2 + .../BiDi/Modules/Script/EvaluateCommand.cs | 18 +- .../BiDi/Modules/Script/GetRealmsCommand.cs | 21 +- .../webdriver/BiDi/Modules/Script/Handle.cs | 2 + .../BiDi/Modules/Script/InternalId.cs | 2 + .../BiDi/Modules/Script/LocalValue.cs | 89 +++-- .../BiDi/Modules/Script/MessageEventArgs.cs | 5 + .../BiDi/Modules/Script/NodeProperties.cs | 6 +- .../BiDi/Modules/Script/PreloadScript.cs | 4 +- .../webdriver/BiDi/Modules/Script/Realm.cs | 2 + .../Modules/Script/RealmDestroyedEventArgs.cs | 5 + .../BiDi/Modules/Script/RealmInfo.cs | 45 +-- .../BiDi/Modules/Script/RealmType.cs | 2 + .../BiDi/Modules/Script/RemoteReference.cs | 2 + .../BiDi/Modules/Script/RemoteValue.cs | 306 +++++++++--------- .../Script/RemovePreloadScriptCommand.cs | 2 + .../BiDi/Modules/Script/ResultOwnership.cs | 2 + .../Modules/Script/ScriptEvaluateException.cs | 6 +- .../BiDi/Modules/Script/ScriptModule.cs | 65 +++- .../Modules/Script/SerializationOptions.cs | 2 + .../webdriver/BiDi/Modules/Script/Source.cs | 2 + .../BiDi/Modules/Script/StackFrame.cs | 2 + .../BiDi/Modules/Script/StackTrace.cs | 2 + .../webdriver/BiDi/Modules/Script/Target.cs | 19 +- .../Modules/Session/CapabilitiesRequest.cs | 2 + .../BiDi/Modules/Session/CapabilityRequest.cs | 2 + .../BiDi/Modules/Session/EndCommand.cs | 2 + .../BiDi/Modules/Session/NewCommand.cs | 2 + .../Modules/Session/ProxyConfiguration.cs | 41 +-- .../BiDi/Modules/Session/SessionModule.cs | 2 + .../BiDi/Modules/Session/StatusCommand.cs | 2 + .../BiDi/Modules/Session/SubscribeCommand.cs | 2 + .../Modules/Session/UnsubscribeCommand.cs | 2 + .../Modules/Storage/DeleteCookiesCommand.cs | 2 + .../BiDi/Modules/Storage/GetCookiesCommand.cs | 43 ++- .../BiDi/Modules/Storage/PartitionKey.cs | 4 +- .../BiDi/Modules/Storage/SetCookieCommand.cs | 2 + .../BiDi/Modules/Storage/StorageModule.cs | 2 + dotnet/src/webdriver/BiDi/Subscription.cs | 8 +- .../webdriver/BiDi/WebDriver.Extensions.cs | 2 + dotnet/test/common/BiDi/BiDiFixture.cs | 54 ++++ .../test/common/BiDi/Browser/BrowserTest.cs | 43 +++ .../BrowsingContext/BrowsingContextTest.cs | 301 +++++++++++++++++ .../BiDi/Input/CombinedInputActionsTest.cs | 55 ++++ .../common/BiDi/Input/DefaultKeyboardTest.cs | 88 +++++ .../common/BiDi/Input/DefaultMouseTest.cs | 49 +++ dotnet/test/common/BiDi/Log/LogTest.cs | 75 +++++ .../common/BiDi/Network/NetworkEventsTest.cs | 132 ++++++++ .../test/common/BiDi/Network/NetworkTest.cs | 195 +++++++++++ .../BiDi/Script/CallFunctionParameterTest.cs | 203 ++++++++++++ .../BiDi/Script/EvaluateParametersTest.cs | 109 +++++++ .../common/BiDi/Script/ScriptCommandsTest.cs | 150 +++++++++ .../common/BiDi/Script/ScriptEventsTest.cs | 63 ++++ .../test/common/BiDi/Storage/StorageTest.cs | 161 +++++++++ .../test/common/Environment/DriverFactory.cs | 8 +- 165 files changed, 3190 insertions(+), 646 deletions(-) create mode 100644 dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetCookiesResultConverter.cs create mode 100644 dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetRealmsResultConverter.cs create mode 100644 dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetUserContextsResultConverter.cs create mode 100644 dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/InputSourceActionsConverter.cs create mode 100644 dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/LocateNodesResultConverter.cs create mode 100644 dotnet/src/webdriver/BiDi/Communication/Json/Converters/InputOriginConverter.cs create mode 100644 dotnet/src/webdriver/BiDi/Modules/Input/Key.cs create mode 100644 dotnet/src/webdriver/BiDi/Modules/Input/Origin.cs create mode 100644 dotnet/src/webdriver/BiDi/Modules/Input/SequentialSourceActions.cs create mode 100644 dotnet/src/webdriver/BiDi/Modules/Input/SourceActions.cs create mode 100644 dotnet/src/webdriver/BiDi/Modules/Log/Entry.cs delete mode 100644 dotnet/src/webdriver/BiDi/Modules/Log/LogEntry.cs delete mode 100644 dotnet/src/webdriver/BiDi/Modules/Script/ChannelValue.cs create mode 100644 dotnet/src/webdriver/BiDi/Modules/Script/MessageEventArgs.cs create mode 100644 dotnet/src/webdriver/BiDi/Modules/Script/RealmDestroyedEventArgs.cs create mode 100644 dotnet/test/common/BiDi/BiDiFixture.cs create mode 100644 dotnet/test/common/BiDi/Browser/BrowserTest.cs create mode 100644 dotnet/test/common/BiDi/BrowsingContext/BrowsingContextTest.cs create mode 100644 dotnet/test/common/BiDi/Input/CombinedInputActionsTest.cs create mode 100644 dotnet/test/common/BiDi/Input/DefaultKeyboardTest.cs create mode 100644 dotnet/test/common/BiDi/Input/DefaultMouseTest.cs create mode 100644 dotnet/test/common/BiDi/Log/LogTest.cs create mode 100644 dotnet/test/common/BiDi/Network/NetworkEventsTest.cs create mode 100644 dotnet/test/common/BiDi/Network/NetworkTest.cs create mode 100644 dotnet/test/common/BiDi/Script/CallFunctionParameterTest.cs create mode 100644 dotnet/test/common/BiDi/Script/EvaluateParametersTest.cs create mode 100644 dotnet/test/common/BiDi/Script/ScriptCommandsTest.cs create mode 100644 dotnet/test/common/BiDi/Script/ScriptEventsTest.cs create mode 100644 dotnet/test/common/BiDi/Storage/StorageTest.cs diff --git a/dotnet/src/webdriver/BiDi/BiDi.cs b/dotnet/src/webdriver/BiDi/BiDi.cs index db53571e8ad8c..34a9452dec144 100644 --- a/dotnet/src/webdriver/BiDi/BiDi.cs +++ b/dotnet/src/webdriver/BiDi/BiDi.cs @@ -1,9 +1,10 @@ using System; -using System.Collections.Generic; using System.Threading.Tasks; using OpenQA.Selenium.BiDi.Communication; using OpenQA.Selenium.BiDi.Communication.Transport; +#nullable enable + namespace OpenQA.Selenium.BiDi; public class BiDi : IAsyncDisposable @@ -38,11 +39,11 @@ internal BiDi(string url) } internal Modules.Session.SessionModule SessionModule => _sessionModule.Value; - internal Modules.BrowsingContext.BrowsingContextModule BrowsingContextModule => _browsingContextModule.Value; + internal Modules.BrowsingContext.BrowsingContextModule BrowsingContext => _browsingContextModule.Value; public Modules.Browser.BrowserModule Browser => _browserModule.Value; public Modules.Network.NetworkModule Network => _networkModule.Value; internal Modules.Input.InputModule InputModule => _inputModule.Value; - internal Modules.Script.ScriptModule ScriptModule => _scriptModule.Value; + public Modules.Script.ScriptModule Script => _scriptModule.Value; public Modules.Log.LogModule Log => _logModule.Value; public Modules.Storage.StorageModule Storage => _storageModule.Value; @@ -60,16 +61,6 @@ public static async Task ConnectAsync(string url) return bidi; } - public Task CreateContextAsync(Modules.BrowsingContext.ContextType type, Modules.BrowsingContext.CreateOptions? options = null) - { - return BrowsingContextModule.CreateAsync(type, options); - } - - public Task> GetTreeAsync(Modules.BrowsingContext.GetTreeOptions? options = null) - { - return BrowsingContextModule.GetTreeAsync(options); - } - public Task EndAsync(Modules.Session.EndOptions? options = null) { return SessionModule.EndAsync(options); @@ -81,44 +72,4 @@ public async ValueTask DisposeAsync() _transport?.Dispose(); } - - public Task OnContextCreatedAsync(Func handler, BrowsingContextsSubscriptionOptions? options = null) - { - return BrowsingContextModule.OnContextCreatedAsync(handler, options); - } - - public Task OnContextCreatedAsync(Action handler, BrowsingContextsSubscriptionOptions? options = null) - { - return BrowsingContextModule.OnContextCreatedAsync(handler, options); - } - - public Task OnContextDestroyedAsync(Func handler, BrowsingContextsSubscriptionOptions? options = null) - { - return BrowsingContextModule.OnContextDestroyedAsync(handler, options); - } - - public Task OnContextDestroyedAsync(Action handler, BrowsingContextsSubscriptionOptions? options = null) - { - return BrowsingContextModule.OnContextDestroyedAsync(handler, options); - } - - public Task OnUserPromptOpenedAsync(Func handler, BrowsingContextsSubscriptionOptions? options = null) - { - return BrowsingContextModule.OnUserPromptOpenedAsync(handler, options); - } - - public Task OnUserPromptOpenedAsync(Action handler, BrowsingContextsSubscriptionOptions? options = null) - { - return BrowsingContextModule.OnUserPromptOpenedAsync(handler, options); - } - - public Task OnUserPromptClosedAsync(Func handler, BrowsingContextsSubscriptionOptions? options = null) - { - return BrowsingContextModule.OnUserPromptClosedAsync(handler, options); - } - - public Task OnUserPromptClosedAsync(Action handler, BrowsingContextsSubscriptionOptions? options = null) - { - return BrowsingContextModule.OnUserPromptClosedAsync(handler, options); - } } diff --git a/dotnet/src/webdriver/BiDi/BiDiException.cs b/dotnet/src/webdriver/BiDi/BiDiException.cs index 7f2ddd5b59cbc..6959645111b01 100644 --- a/dotnet/src/webdriver/BiDi/BiDiException.cs +++ b/dotnet/src/webdriver/BiDi/BiDiException.cs @@ -1,5 +1,7 @@ using System; +#nullable enable + namespace OpenQA.Selenium.BiDi; public class BiDiException : Exception diff --git a/dotnet/src/webdriver/BiDi/Communication/Broker.cs b/dotnet/src/webdriver/BiDi/Communication/Broker.cs index 82549d1d5c5b1..5f8a0983846c9 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Broker.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Broker.cs @@ -10,6 +10,8 @@ using System.Threading; using System.Threading.Tasks; +#nullable enable + namespace OpenQA.Selenium.BiDi.Communication; public class Broker : IAsyncDisposable @@ -34,7 +36,7 @@ public class Broker : IAsyncDisposable private readonly JsonSerializerOptions _jsonSerializerOptions; - public Broker(BiDi bidi, ITransport transport) + internal Broker(BiDi bidi, ITransport transport) { _bidi = bidi; _transport = transport; @@ -51,7 +53,7 @@ public Broker(BiDi bidi, ITransport transport) new NavigationConverter(), new InterceptConverter(_bidi), new RequestConverter(_bidi), - new ChannelConverter(_bidi), + new ChannelConverter(), new HandleConverter(_bidi), new InternalIdConverter(_bidi), new PreloadScriptConverter(_bidi), @@ -59,6 +61,7 @@ public Broker(BiDi bidi, ITransport transport) new RealmTypeConverter(), new DateTimeOffsetConverter(), new PrintPageRangeConverter(), + new InputOriginConverter(), new JsonStringEnumConverter(JsonNamingPolicy.CamelCase), // https://github.com/dotnet/runtime/issues/72604 @@ -68,6 +71,13 @@ public Broker(BiDi bidi, ITransport transport) new Json.Converters.Polymorphic.RealmInfoConverter(), new Json.Converters.Polymorphic.LogEntryConverter(), // + + // Enumerable + new Json.Converters.Enumerable.GetCookiesResultConverter(), + new Json.Converters.Enumerable.LocateNodesResultConverter(), + new Json.Converters.Enumerable.InputSourceActionsConverter(), + new Json.Converters.Enumerable.GetUserContextsResultConverter(), + new Json.Converters.Enumerable.GetRealmsResultConverter(), } }; } diff --git a/dotnet/src/webdriver/BiDi/Communication/Command.cs b/dotnet/src/webdriver/BiDi/Communication/Command.cs index bfa7113512068..729b319cc03ec 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Command.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Command.cs @@ -1,5 +1,7 @@ using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Communication; [JsonPolymorphic(TypeDiscriminatorPropertyName = "method")] diff --git a/dotnet/src/webdriver/BiDi/Communication/CommandOptions.cs b/dotnet/src/webdriver/BiDi/Communication/CommandOptions.cs index 93cc63fc2ebfc..ffb6616ae9cef 100644 --- a/dotnet/src/webdriver/BiDi/Communication/CommandOptions.cs +++ b/dotnet/src/webdriver/BiDi/Communication/CommandOptions.cs @@ -1,5 +1,7 @@ using System; +#nullable enable + namespace OpenQA.Selenium.BiDi.Communication; public record CommandOptions diff --git a/dotnet/src/webdriver/BiDi/Communication/EventHandler.cs b/dotnet/src/webdriver/BiDi/Communication/EventHandler.cs index 4aab8620e3f2b..ce5444eb0d9fd 100644 --- a/dotnet/src/webdriver/BiDi/Communication/EventHandler.cs +++ b/dotnet/src/webdriver/BiDi/Communication/EventHandler.cs @@ -3,6 +3,8 @@ using System.Collections.Generic; using System.Threading.Tasks; +#nullable enable + namespace OpenQA.Selenium.BiDi.Communication; public abstract class EventHandler(string eventName, Type eventArgsType, IEnumerable? contexts = null) diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/BrowserUserContextConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/BrowserUserContextConverter.cs index 7997f7c0f1541..3d478cf5d9f69 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/BrowserUserContextConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/BrowserUserContextConverter.cs @@ -3,6 +3,8 @@ using System.Text.Json; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Communication.Json.Converters; internal class BrowserUserContextConverter : JsonConverter diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/BrowsingContextConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/BrowsingContextConverter.cs index 2718700f3ffac..8c1a928ef19ad 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/BrowsingContextConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/BrowsingContextConverter.cs @@ -3,6 +3,8 @@ using System.Text.Json; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Communication.Json.Converters; internal class BrowsingContextConverter : JsonConverter diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/ChannelConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/ChannelConverter.cs index c2a7da0accffd..ac35a22fcc2c4 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/ChannelConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/ChannelConverter.cs @@ -3,22 +3,17 @@ using System.Text.Json; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Communication.Json.Converters; internal class ChannelConverter : JsonConverter { - private readonly BiDi _bidi; - - public ChannelConverter(BiDi bidi) - { - _bidi = bidi; - } - public override Channel? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { var id = reader.GetString(); - return new Channel(_bidi, id!); + return new Channel(id!); } public override void Write(Utf8JsonWriter writer, Channel value, JsonSerializerOptions options) diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/DateTimeOffsetConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/DateTimeOffsetConverter.cs index 9d87f0f17342e..ff9b6258d3a69 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/DateTimeOffsetConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/DateTimeOffsetConverter.cs @@ -2,6 +2,8 @@ using System.Text.Json; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Communication.Json.Converters; internal class DateTimeOffsetConverter : JsonConverter diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetCookiesResultConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetCookiesResultConverter.cs new file mode 100644 index 0000000000000..bd92fa36eb119 --- /dev/null +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetCookiesResultConverter.cs @@ -0,0 +1,26 @@ +using OpenQA.Selenium.BiDi.Modules.Storage; +using System; +using System.Collections.Generic; +using System.Text.Json; +using System.Text.Json.Serialization; + +#nullable enable + +namespace OpenQA.Selenium.BiDi.Communication.Json.Converters.Enumerable; + +internal class GetCookiesResultConverter : JsonConverter +{ + public override GetCookiesResult Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + var doc = JsonDocument.ParseValue(ref reader); + var cookies = doc.RootElement.GetProperty("cookies").Deserialize>(options); + var partitionKey = doc.RootElement.GetProperty("partitionKey").Deserialize(options); + + return new GetCookiesResult(cookies!, partitionKey!); + } + + public override void Write(Utf8JsonWriter writer, GetCookiesResult value, JsonSerializerOptions options) + { + throw new NotImplementedException(); + } +} diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetRealmsResultConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetRealmsResultConverter.cs new file mode 100644 index 0000000000000..34c5a979c02c6 --- /dev/null +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetRealmsResultConverter.cs @@ -0,0 +1,25 @@ +using OpenQA.Selenium.BiDi.Modules.Script; +using System; +using System.Collections.Generic; +using System.Text.Json; +using System.Text.Json.Serialization; + +#nullable enable + +namespace OpenQA.Selenium.BiDi.Communication.Json.Converters.Enumerable; + +internal class GetRealmsResultConverter : JsonConverter +{ + public override GetRealmsResult Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + var doc = JsonDocument.ParseValue(ref reader); + var realms = doc.RootElement.GetProperty("realms").Deserialize>(options); + + return new GetRealmsResult(realms!); + } + + public override void Write(Utf8JsonWriter writer, GetRealmsResult value, JsonSerializerOptions options) + { + throw new NotImplementedException(); + } +} diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetUserContextsResultConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetUserContextsResultConverter.cs new file mode 100644 index 0000000000000..123c415c9bcd1 --- /dev/null +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetUserContextsResultConverter.cs @@ -0,0 +1,25 @@ +using OpenQA.Selenium.BiDi.Modules.Browser; +using System; +using System.Collections.Generic; +using System.Text.Json; +using System.Text.Json.Serialization; + +#nullable enable + +namespace OpenQA.Selenium.BiDi.Communication.Json.Converters.Enumerable; + +internal class GetUserContextsResultConverter : JsonConverter +{ + public override GetUserContextsResult Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + var doc = JsonDocument.ParseValue(ref reader); + var userContexts = doc.RootElement.GetProperty("userContexts").Deserialize>(options); + + return new GetUserContextsResult(userContexts!); + } + + public override void Write(Utf8JsonWriter writer, GetUserContextsResult value, JsonSerializerOptions options) + { + throw new NotImplementedException(); + } +} diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/InputSourceActionsConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/InputSourceActionsConverter.cs new file mode 100644 index 0000000000000..4e4c72c91fbe9 --- /dev/null +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/InputSourceActionsConverter.cs @@ -0,0 +1,61 @@ +using OpenQA.Selenium.BiDi.Modules.Input; +using System; +using System.Linq; +using System.Text.Json; +using System.Text.Json.Serialization; + +#nullable enable + +namespace OpenQA.Selenium.BiDi.Communication.Json.Converters.Enumerable; + +internal class InputSourceActionsConverter : JsonConverter +{ + public override SourceActions Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + throw new NotImplementedException(); + } + + public override void Write(Utf8JsonWriter writer, SourceActions value, JsonSerializerOptions options) + { + writer.WriteStartObject(); + + writer.WriteString("id", value.Id); + + switch (value) + { + case KeyActions keys: + writer.WriteString("type", "key"); + writer.WritePropertyName("actions"); + JsonSerializer.Serialize(writer, keys.Actions.Select(a => a as IKeySourceAction), options); + + break; + case PointerActions pointers: + writer.WriteString("type", "pointer"); + if (pointers.Options is not null) + { + writer.WritePropertyName("parameters"); + JsonSerializer.Serialize(writer, pointers.Options, options); + } + + writer.WritePropertyName("actions"); + JsonSerializer.Serialize(writer, pointers.Actions.Select(a => a as IPointerSourceAction), options); + + break; + case WheelActions wheels: + writer.WriteString("type", "wheel"); + writer.WritePropertyName("actions"); + JsonSerializer.Serialize(writer, wheels.Actions.Select(a => a as IWheelSourceAction), options); + + break; + case NoneActions none: + writer.WriteString("type", "none"); + writer.WritePropertyName("actions"); + JsonSerializer.Serialize(writer, none.Actions.Select(a => a as INoneSourceAction), options); + + break; + } + + writer.WriteEndObject(); + } +} + diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/LocateNodesResultConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/LocateNodesResultConverter.cs new file mode 100644 index 0000000000000..307433c7be023 --- /dev/null +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/LocateNodesResultConverter.cs @@ -0,0 +1,26 @@ +using OpenQA.Selenium.BiDi.Modules.BrowsingContext; +using OpenQA.Selenium.BiDi.Modules.Script; +using System; +using System.Collections.Generic; +using System.Text.Json; +using System.Text.Json.Serialization; + +#nullable enable + +namespace OpenQA.Selenium.BiDi.Communication.Json.Converters.Enumerable; + +internal class LocateNodesResultConverter : JsonConverter +{ + public override LocateNodesResult Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + var doc = JsonDocument.ParseValue(ref reader); + var nodes = doc.RootElement.GetProperty("nodes").Deserialize>(options); + + return new LocateNodesResult(nodes!); + } + + public override void Write(Utf8JsonWriter writer, LocateNodesResult value, JsonSerializerOptions options) + { + throw new NotImplementedException(); + } +} diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/HandleConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/HandleConverter.cs index 71e0ed6e5ae51..2117bb72fa519 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/HandleConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/HandleConverter.cs @@ -3,6 +3,8 @@ using System.Text.Json; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Communication.Json.Converters; internal class HandleConverter : JsonConverter diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/InputOriginConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/InputOriginConverter.cs new file mode 100644 index 0000000000000..c544362ccccd8 --- /dev/null +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/InputOriginConverter.cs @@ -0,0 +1,36 @@ +using OpenQA.Selenium.BiDi.Modules.Input; +using System; +using System.Text.Json; +using System.Text.Json.Serialization; + +#nullable enable + +namespace OpenQA.Selenium.BiDi.Communication.Json.Converters; + +internal class InputOriginConverter : JsonConverter +{ + public override Origin Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + throw new NotImplementedException(); + } + + public override void Write(Utf8JsonWriter writer, Origin value, JsonSerializerOptions options) + { + if (value is Origin.Viewport) + { + writer.WriteStringValue("viewport"); + } + else if (value is Origin.Pointer) + { + writer.WriteStringValue("pointer"); + } + else if (value is Origin.Element element) + { + writer.WriteStartObject(); + writer.WriteString("type", "element"); + writer.WritePropertyName("element"); + JsonSerializer.Serialize(writer, element.SharedReference, options); + writer.WriteEndObject(); + } + } +} diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/InterceptConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/InterceptConverter.cs index 3a207a89116c2..3fd062b22fae3 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/InterceptConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/InterceptConverter.cs @@ -3,6 +3,8 @@ using System.Text.Json; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Communication.Json.Converters; internal class InterceptConverter : JsonConverter diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/InternalIdConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/InternalIdConverter.cs index 9271a1877be71..7edcaa7543464 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/InternalIdConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/InternalIdConverter.cs @@ -3,6 +3,8 @@ using System.Text.Json; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Communication.Json.Converters; internal class InternalIdConverter : JsonConverter diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/NavigationConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/NavigationConverter.cs index 040e7fb723919..e61d300f18f56 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/NavigationConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/NavigationConverter.cs @@ -3,6 +3,8 @@ using System.Text.Json; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Communication.Json.Converters; internal class NavigationConverter : JsonConverter diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/EvaluateResultConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/EvaluateResultConverter.cs index c349d82f90f04..ac0fd1a7bbfcc 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/EvaluateResultConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/EvaluateResultConverter.cs @@ -3,6 +3,8 @@ using System.Text.Json; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Communication.Json.Converters.Polymorphic; // https://github.com/dotnet/runtime/issues/72604 @@ -14,8 +16,8 @@ internal class EvaluateResultConverter : JsonConverter return jsonDocument.RootElement.GetProperty("type").ToString() switch { - "success" => jsonDocument.Deserialize(options), - "exception" => jsonDocument.Deserialize(options), + "success" => jsonDocument.Deserialize(options), + "exception" => jsonDocument.Deserialize(options), _ => null, }; } diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/LogEntryConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/LogEntryConverter.cs index ada10ab054a50..e5ccbac46f326 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/LogEntryConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/LogEntryConverter.cs @@ -3,24 +3,26 @@ using System.Text.Json; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Communication.Json.Converters.Polymorphic; // https://github.com/dotnet/runtime/issues/72604 -internal class LogEntryConverter : JsonConverter +internal class LogEntryConverter : JsonConverter { - public override BaseLogEntry? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + public override Modules.Log.Entry? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { var jsonDocument = JsonDocument.ParseValue(ref reader); return jsonDocument.RootElement.GetProperty("type").ToString() switch { - "console" => jsonDocument.Deserialize(options), - "javascript" => jsonDocument.Deserialize(options), + "console" => jsonDocument.Deserialize(options), + "javascript" => jsonDocument.Deserialize(options), _ => null, }; } - public override void Write(Utf8JsonWriter writer, BaseLogEntry value, JsonSerializerOptions options) + public override void Write(Utf8JsonWriter writer, Modules.Log.Entry value, JsonSerializerOptions options) { throw new NotImplementedException(); } diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/MessageConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/MessageConverter.cs index 6164dcc04690d..b9d86ae634902 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/MessageConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/MessageConverter.cs @@ -2,6 +2,8 @@ using System.Text.Json; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Communication.Json.Converters.Polymorphic; // https://github.com/dotnet/runtime/issues/72604 diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/RealmInfoConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/RealmInfoConverter.cs index b3d061783dfae..9824377ca47ac 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/RealmInfoConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/RealmInfoConverter.cs @@ -3,6 +3,8 @@ using System.Text.Json; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Communication.Json.Converters.Polymorphic; // https://github.com/dotnet/runtime/issues/72604 @@ -14,14 +16,14 @@ internal class RealmInfoConverter : JsonConverter return jsonDocument.RootElement.GetProperty("type").ToString() switch { - "window" => jsonDocument.Deserialize(options), - "dedicated-worker" => jsonDocument.Deserialize(options), - "shared-worker" => jsonDocument.Deserialize(options), - "service-worker" => jsonDocument.Deserialize(options), - "worker" => jsonDocument.Deserialize(options), - "paint-worklet" => jsonDocument.Deserialize(options), - "audio-worklet" => jsonDocument.Deserialize(options), - "worklet" => jsonDocument.Deserialize(options), + "window" => jsonDocument.Deserialize(options), + "dedicated-worker" => jsonDocument.Deserialize(options), + "shared-worker" => jsonDocument.Deserialize(options), + "service-worker" => jsonDocument.Deserialize(options), + "worker" => jsonDocument.Deserialize(options), + "paint-worklet" => jsonDocument.Deserialize(options), + "audio-worklet" => jsonDocument.Deserialize(options), + "worklet" => jsonDocument.Deserialize(options), _ => null, }; } diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/RemoteValueConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/RemoteValueConverter.cs index 1d3b08211b348..3f19d2a18c56c 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/RemoteValueConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/RemoteValueConverter.cs @@ -3,6 +3,8 @@ using System.Text.Json; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Communication.Json.Converters.Polymorphic; // https://github.com/dotnet/runtime/issues/72604 @@ -12,31 +14,38 @@ internal class RemoteValueConverter : JsonConverter { var jsonDocument = JsonDocument.ParseValue(ref reader); + if (jsonDocument.RootElement.ValueKind == JsonValueKind.String) + { + return new RemoteValue.String(jsonDocument.RootElement.GetString()!); + } + return jsonDocument.RootElement.GetProperty("type").ToString() switch { - "number" => jsonDocument.Deserialize(options), - "string" => jsonDocument.Deserialize(options), - "null" => jsonDocument.Deserialize(options), - "undefined" => jsonDocument.Deserialize(options), - "symbol" => jsonDocument.Deserialize(options), - "object" => jsonDocument.Deserialize(options), - "function" => jsonDocument.Deserialize(options), - "regexp" => jsonDocument.Deserialize(options), - "date" => jsonDocument.Deserialize(options), - "map" => jsonDocument.Deserialize(options), - "set" => jsonDocument.Deserialize(options), - "weakmap" => jsonDocument.Deserialize(options), - "weakset" => jsonDocument.Deserialize(options), - "generator" => jsonDocument.Deserialize(options), - "error" => jsonDocument.Deserialize(options), - "proxy" => jsonDocument.Deserialize(options), - "promise" => jsonDocument.Deserialize(options), - "typedarray" => jsonDocument.Deserialize(options), - "arraybuffer" => jsonDocument.Deserialize(options), - "nodelist" => jsonDocument.Deserialize(options), - "htmlcollection" => jsonDocument.Deserialize(options), - "node" => jsonDocument.Deserialize(options), - "window" => jsonDocument.Deserialize(options), + "number" => jsonDocument.Deserialize(options), + "boolean" => jsonDocument.Deserialize(options), + "string" => jsonDocument.Deserialize(options), + "null" => jsonDocument.Deserialize(options), + "undefined" => jsonDocument.Deserialize(options), + "symbol" => jsonDocument.Deserialize(options), + "array" => jsonDocument.Deserialize(options), + "object" => jsonDocument.Deserialize(options), + "function" => jsonDocument.Deserialize(options), + "regexp" => jsonDocument.Deserialize(options), + "date" => jsonDocument.Deserialize(options), + "map" => jsonDocument.Deserialize(options), + "set" => jsonDocument.Deserialize(options), + "weakmap" => jsonDocument.Deserialize(options), + "weakset" => jsonDocument.Deserialize(options), + "generator" => jsonDocument.Deserialize(options), + "error" => jsonDocument.Deserialize(options), + "proxy" => jsonDocument.Deserialize(options), + "promise" => jsonDocument.Deserialize(options), + "typedarray" => jsonDocument.Deserialize(options), + "arraybuffer" => jsonDocument.Deserialize(options), + "nodelist" => jsonDocument.Deserialize(options), + "htmlcollection" => jsonDocument.Deserialize(options), + "node" => jsonDocument.Deserialize(options), + "window" => jsonDocument.Deserialize(options), _ => null, }; } diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/PreloadScriptConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/PreloadScriptConverter.cs index 53dba4b424388..4b68ce22c52ff 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/PreloadScriptConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/PreloadScriptConverter.cs @@ -3,6 +3,8 @@ using System.Text.Json; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Communication.Json.Converters; internal class PreloadScriptConverter : JsonConverter diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/PrintPageRangeConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/PrintPageRangeConverter.cs index afd375d078a59..76ffd9b34ad4e 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/PrintPageRangeConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/PrintPageRangeConverter.cs @@ -3,6 +3,8 @@ using System.Text.Json; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Communication.Json.Converters; internal class PrintPageRangeConverter : JsonConverter diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/RealmConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/RealmConverter.cs index ab2baedc6fd28..60cde6d1152db 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/RealmConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/RealmConverter.cs @@ -3,6 +3,8 @@ using System.Text.Json; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Communication.Json.Converters; internal class RealmConverter : JsonConverter diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/RealmTypeConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/RealmTypeConverter.cs index f92966b1a3f1f..048250fd526d5 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/RealmTypeConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/RealmTypeConverter.cs @@ -3,6 +3,8 @@ using System.Text.Json; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Communication.Json.Converters; internal class RealmTypeConverter : JsonConverter @@ -27,6 +29,19 @@ public override RealmType Read(ref Utf8JsonReader reader, Type typeToConvert, Js public override void Write(Utf8JsonWriter writer, RealmType value, JsonSerializerOptions options) { - throw new NotImplementedException(); + var str = value switch + { + RealmType.Window => "window", + RealmType.DedicatedWorker => "dedicated-worker", + RealmType.SharedWorker => "shared-worker", + RealmType.ServiceWorker => "service-worker", + RealmType.Worker => "worker", + RealmType.PaintWorker => "paint-worker", + RealmType.AudioWorker => "audio-worker", + RealmType.Worklet => "worklet", + _ => throw new JsonException($"Unrecognized '{value}' value of {typeof(RealmType)}."), + }; + + writer.WriteStringValue(str); } } diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/RequestConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/RequestConverter.cs index 7a15a569faa06..0524246d6b3b3 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/RequestConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/RequestConverter.cs @@ -3,6 +3,8 @@ using System.Text.Json; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Communication.Json.Converters; internal class RequestConverter : JsonConverter diff --git a/dotnet/src/webdriver/BiDi/Communication/Message.cs b/dotnet/src/webdriver/BiDi/Communication/Message.cs index 75925ed4d7592..c00a2777a33f4 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Message.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Message.cs @@ -1,5 +1,7 @@ using System.Text.Json; +#nullable enable + namespace OpenQA.Selenium.BiDi.Communication; // https://github.com/dotnet/runtime/issues/72604 diff --git a/dotnet/src/webdriver/BiDi/Communication/Transport/ITransport.cs b/dotnet/src/webdriver/BiDi/Communication/Transport/ITransport.cs index 404d62734f9d2..3ed6d2e32a4cf 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Transport/ITransport.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Transport/ITransport.cs @@ -3,9 +3,11 @@ using System.Threading; using System; +#nullable enable + namespace OpenQA.Selenium.BiDi.Communication.Transport; -public interface ITransport : IDisposable +interface ITransport : IDisposable { Task ConnectAsync(CancellationToken cancellationToken); diff --git a/dotnet/src/webdriver/BiDi/Communication/Transport/WebSocketTransport.cs b/dotnet/src/webdriver/BiDi/Communication/Transport/WebSocketTransport.cs index 52cd5c0ffa7f2..76384f51b1261 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Transport/WebSocketTransport.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Transport/WebSocketTransport.cs @@ -7,9 +7,11 @@ using System.Text; using OpenQA.Selenium.Internal.Logging; +#nullable enable + namespace OpenQA.Selenium.BiDi.Communication.Transport; -public class WebSocketTransport(Uri _uri) : ITransport, IDisposable +class WebSocketTransport(Uri _uri) : ITransport, IDisposable { private readonly static ILogger _logger = Log.GetLogger(); @@ -59,7 +61,7 @@ public async Task SendAsJsonAsync(Command command, JsonSerializerOptions jsonSer { if (_logger.IsEnabled(LogEventLevel.Trace)) { - _logger.Trace($"BiDi SND >> {buffer.Length} > {Encoding.UTF8.GetString(buffer)}"); + _logger.Trace($"BiDi SND >> {Encoding.UTF8.GetString(buffer)}"); } await _webSocket.SendAsync(new ArraySegment(buffer), WebSocketMessageType.Text, true, cancellationToken).ConfigureAwait(false); diff --git a/dotnet/src/webdriver/BiDi/EventArgs.cs b/dotnet/src/webdriver/BiDi/EventArgs.cs index 01d5cd3280acf..30361ca95e6cb 100644 --- a/dotnet/src/webdriver/BiDi/EventArgs.cs +++ b/dotnet/src/webdriver/BiDi/EventArgs.cs @@ -1,6 +1,8 @@ using OpenQA.Selenium.BiDi.Modules.BrowsingContext; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi; public abstract record EventArgs(BiDi BiDi) diff --git a/dotnet/src/webdriver/BiDi/Modules/Browser/BrowserModule.cs b/dotnet/src/webdriver/BiDi/Modules/Browser/BrowserModule.cs index e42982b773d8c..ba7fb0496dd6d 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Browser/BrowserModule.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Browser/BrowserModule.cs @@ -2,6 +2,8 @@ using System.Threading.Tasks; using OpenQA.Selenium.BiDi.Communication; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Browser; public sealed class BrowserModule(Broker broker) : Module(broker) @@ -16,11 +18,9 @@ public async Task CreateUserContextAsync(CreateUserContextOptio return await Broker.ExecuteCommandAsync(new CreateUserContextCommand(), options).ConfigureAwait(false); } - public async Task> GetUserContextsAsync(GetUserContextsOptions? options = null) + public async Task GetUserContextsAsync(GetUserContextsOptions? options = null) { - var result = await Broker.ExecuteCommandAsync(new GetUserContextsCommand(), options).ConfigureAwait(false); - - return result.UserContexts; + return await Broker.ExecuteCommandAsync(new GetUserContextsCommand(), options).ConfigureAwait(false); } public async Task RemoveUserContextAsync(UserContext userContext, RemoveUserContextOptions? options = null) diff --git a/dotnet/src/webdriver/BiDi/Modules/Browser/CloseCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Browser/CloseCommand.cs index 345a3c5a22935..59f9db7374929 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Browser/CloseCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Browser/CloseCommand.cs @@ -1,5 +1,7 @@ using OpenQA.Selenium.BiDi.Communication; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Browser; internal class CloseCommand() : Command(CommandParameters.Empty); diff --git a/dotnet/src/webdriver/BiDi/Modules/Browser/CreateUserContextCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Browser/CreateUserContextCommand.cs index 9b84d1ee11532..ce44e5ae2f367 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Browser/CreateUserContextCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Browser/CreateUserContextCommand.cs @@ -1,5 +1,7 @@ using OpenQA.Selenium.BiDi.Communication; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Browser; internal class CreateUserContextCommand() : Command(CommandParameters.Empty); diff --git a/dotnet/src/webdriver/BiDi/Modules/Browser/GetUserContextsCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Browser/GetUserContextsCommand.cs index 5a1a0a211cf1c..161a1bf286f1e 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Browser/GetUserContextsCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Browser/GetUserContextsCommand.cs @@ -1,10 +1,29 @@ using OpenQA.Selenium.BiDi.Communication; +using System.Collections; using System.Collections.Generic; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Browser; internal class GetUserContextsCommand() : Command(CommandParameters.Empty); public record GetUserContextsOptions : CommandOptions; -public record GetUserContextsResult(IReadOnlyList UserContexts); +public record GetUserContextsResult : IReadOnlyList +{ + private readonly IReadOnlyList _userContexts; + + internal GetUserContextsResult(IReadOnlyList userContexts) + { + _userContexts = userContexts; + } + + public UserContextInfo this[int index] => _userContexts[index]; + + public int Count => _userContexts.Count; + + public IEnumerator GetEnumerator() => _userContexts.GetEnumerator(); + + IEnumerator IEnumerable.GetEnumerator() => (_userContexts as IEnumerable).GetEnumerator(); +} diff --git a/dotnet/src/webdriver/BiDi/Modules/Browser/RemoveUserContextCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Browser/RemoveUserContextCommand.cs index b937ad48ffc80..7877eb0f710ff 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Browser/RemoveUserContextCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Browser/RemoveUserContextCommand.cs @@ -1,5 +1,7 @@ using OpenQA.Selenium.BiDi.Communication; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Browser; internal class RemoveUserContextCommand(RemoveUserContextCommandParameters @params) : Command(@params); diff --git a/dotnet/src/webdriver/BiDi/Modules/Browser/UserContext.cs b/dotnet/src/webdriver/BiDi/Modules/Browser/UserContext.cs index 5e8bcd712062a..a2e689d494aaa 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Browser/UserContext.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Browser/UserContext.cs @@ -1,6 +1,8 @@ using System; using System.Threading.Tasks; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Browser; public class UserContext : IAsyncDisposable @@ -13,7 +15,7 @@ internal UserContext(BiDi bidi, string id) Id = id; } - public string Id { get; } + internal string Id { get; } public Task RemoveAsync() { @@ -24,4 +26,16 @@ public async ValueTask DisposeAsync() { await RemoveAsync().ConfigureAwait(false); } + + public override bool Equals(object? obj) + { + if (obj is UserContext userContextObj) return userContextObj.Id == Id; + + return false; + } + + public override int GetHashCode() + { + return Id.GetHashCode(); + } } diff --git a/dotnet/src/webdriver/BiDi/Modules/Browser/UserContextInfo.cs b/dotnet/src/webdriver/BiDi/Modules/Browser/UserContextInfo.cs index 7f4949b49a2fa..99b7e59a486b2 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Browser/UserContextInfo.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Browser/UserContextInfo.cs @@ -1,3 +1,5 @@ +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Browser; public record UserContextInfo(UserContext UserContext); diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/ActivateCommand.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/ActivateCommand.cs index f05354060e89a..4934e51b815bd 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/ActivateCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/ActivateCommand.cs @@ -1,5 +1,7 @@ using OpenQA.Selenium.BiDi.Communication; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext; internal class ActivateCommand(ActivateCommandParameters @params) : Command(@params); diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContext.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContext.cs index 80c7b7d49fb70..e83f671ae227e 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContext.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContext.cs @@ -2,6 +2,8 @@ using System.Threading.Tasks; using System; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext; public class BrowsingContext @@ -13,7 +15,7 @@ internal BrowsingContext(BiDi bidi, string id) _logModule = new Lazy(() => new BrowsingContextLogModule(this, BiDi.Log)); _networkModule = new Lazy(() => new BrowsingContextNetworkModule(this, BiDi.Network)); - _scriptModule = new Lazy(() => new BrowsingContextScriptModule(this, BiDi.ScriptModule)); + _scriptModule = new Lazy(() => new BrowsingContextScriptModule(this, BiDi.Script)); _storageModule = new Lazy(() => new BrowsingContextStorageModule(this, BiDi.Storage)); _inputModule = new Lazy(() => new BrowsingContextInputModule(this, BiDi.InputModule)); } @@ -40,37 +42,37 @@ internal BrowsingContext(BiDi bidi, string id) public Task NavigateAsync(string url, NavigateOptions? options = null) { - return BiDi.BrowsingContextModule.NavigateAsync(this, url, options); + return BiDi.BrowsingContext.NavigateAsync(this, url, options); } public Task ReloadAsync(ReloadOptions? options = null) { - return BiDi.BrowsingContextModule.ReloadAsync(this, options); + return BiDi.BrowsingContext.ReloadAsync(this, options); } public Task ActivateAsync(ActivateOptions? options = null) { - return BiDi.BrowsingContextModule.ActivateAsync(this, options); + return BiDi.BrowsingContext.ActivateAsync(this, options); } - public Task> LocateNodesAsync(Locator locator, LocateNodesOptions? options = null) + public Task LocateNodesAsync(Locator locator, LocateNodesOptions? options = null) { - return BiDi.BrowsingContextModule.LocateNodesAsync(this, locator, options); + return BiDi.BrowsingContext.LocateNodesAsync(this, locator, options); } public Task CaptureScreenshotAsync(CaptureScreenshotOptions? options = null) { - return BiDi.BrowsingContextModule.CaptureScreenshotAsync(this, options); + return BiDi.BrowsingContext.CaptureScreenshotAsync(this, options); } public Task CloseAsync(CloseOptions? options = null) { - return BiDi.BrowsingContextModule.CloseAsync(this, options); + return BiDi.BrowsingContext.CloseAsync(this, options); } public Task TraverseHistoryAsync(int delta, TraverseHistoryOptions? options = null) { - return BiDi.BrowsingContextModule.TraverseHistoryAsync(this, delta, options); + return BiDi.BrowsingContext.TraverseHistoryAsync(this, delta, options); } public Task NavigateBackAsync(TraverseHistoryOptions? options = null) @@ -85,17 +87,17 @@ public Task NavigateForwardAsync(TraverseHistoryOptions? options = null) public Task SetViewportAsync(SetViewportOptions? options = null) { - return BiDi.BrowsingContextModule.SetViewportAsync(this, options); + return BiDi.BrowsingContext.SetViewportAsync(this, options); } public Task PrintAsync(PrintOptions? options = null) { - return BiDi.BrowsingContextModule.PrintAsync(this, options); + return BiDi.BrowsingContext.PrintAsync(this, options); } public Task HandleUserPromptAsync(HandleUserPromptOptions? options = null) { - return BiDi.BrowsingContextModule.HandleUserPromptAsync(this, options); + return BiDi.BrowsingContext.HandleUserPromptAsync(this, options); } public Task> GetTreeAsync(BrowsingContextGetTreeOptions? options = null) @@ -105,77 +107,77 @@ public Task> GetTreeAsync(BrowsingContextGetT Root = this }; - return BiDi.BrowsingContextModule.GetTreeAsync(getTreeOptions); + return BiDi.BrowsingContext.GetTreeAsync(getTreeOptions); } public Task OnNavigationStartedAsync(Func handler, SubscriptionOptions? options = null) { - return BiDi.BrowsingContextModule.OnNavigationStartedAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); + return BiDi.BrowsingContext.OnNavigationStartedAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); } public Task OnNavigationStartedAsync(Action handler, SubscriptionOptions? options = null) { - return BiDi.BrowsingContextModule.OnNavigationStartedAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); + return BiDi.BrowsingContext.OnNavigationStartedAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); } public Task OnFragmentNavigatedAsync(Func handler, SubscriptionOptions? options = null) { - return BiDi.BrowsingContextModule.OnFragmentNavigatedAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); + return BiDi.BrowsingContext.OnFragmentNavigatedAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); } public Task OnFragmentNavigatedAsync(Action handler, SubscriptionOptions? options = null) { - return BiDi.BrowsingContextModule.OnFragmentNavigatedAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); + return BiDi.BrowsingContext.OnFragmentNavigatedAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); } public Task OnDomContentLoadedAsync(Func handler, SubscriptionOptions? options = null) { - return BiDi.BrowsingContextModule.OnDomContentLoadedAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); + return BiDi.BrowsingContext.OnDomContentLoadedAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); } public Task OnLoadAsync(Action handler, SubscriptionOptions? options = null) { - return BiDi.BrowsingContextModule.OnLoadAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); + return BiDi.BrowsingContext.OnLoadAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); } public Task OnLoadAsync(Func handler, SubscriptionOptions? options = null) { - return BiDi.BrowsingContextModule.OnLoadAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); + return BiDi.BrowsingContext.OnLoadAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); } public Task OnDownloadWillBeginAsync(Action handler, SubscriptionOptions? options = null) { - return BiDi.BrowsingContextModule.OnDownloadWillBeginAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); + return BiDi.BrowsingContext.OnDownloadWillBeginAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); } public Task OnDownloadWillBeginAsync(Func handler, SubscriptionOptions? options = null) { - return BiDi.BrowsingContextModule.OnDownloadWillBeginAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); + return BiDi.BrowsingContext.OnDownloadWillBeginAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); } public Task OnNavigationAbortedAsync(Action handler, SubscriptionOptions? options = null) { - return BiDi.BrowsingContextModule.OnNavigationAbortedAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); + return BiDi.BrowsingContext.OnNavigationAbortedAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); } public Task OnNavigationAbortedAsync(Func handler, SubscriptionOptions? options = null) { - return BiDi.BrowsingContextModule.OnNavigationAbortedAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); + return BiDi.BrowsingContext.OnNavigationAbortedAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); } public Task OnNavigationFailedAsync(Action handler, SubscriptionOptions? options = null) { - return BiDi.BrowsingContextModule.OnNavigationFailedAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); + return BiDi.BrowsingContext.OnNavigationFailedAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); } public Task OnNavigationFailedAsync(Func handler, SubscriptionOptions? options = null) { - return BiDi.BrowsingContextModule.OnNavigationFailedAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); + return BiDi.BrowsingContext.OnNavigationFailedAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); } public Task OnDomContentLoadedAsync(Action handler, SubscriptionOptions? options = null) { - return BiDi.BrowsingContextModule.OnDomContentLoadedAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); + return BiDi.BrowsingContext.OnDomContentLoadedAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [this] }); } public override bool Equals(object? obj) diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextInfo.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextInfo.cs index 52f2edeb972e0..f2303915feb90 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextInfo.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextInfo.cs @@ -1,6 +1,8 @@ using System.Collections.Generic; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext; // TODO: Split it to separate class with just info and event args diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextInputModule.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextInputModule.cs index ceae616cb2378..919758b14ba79 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextInputModule.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextInputModule.cs @@ -2,16 +2,19 @@ using OpenQA.Selenium.BiDi.Modules.Input; using System.Collections.Generic; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext; public class BrowsingContextInputModule(BrowsingContext context, InputModule inputModule) { public Task PerformActionsAsync(IEnumerable actions, PerformActionsOptions? options = null) { - options ??= new(); - - options.Actions = actions; + return inputModule.PerformActionsAsync(context, actions, options); + } - return inputModule.PerformActionsAsync(context, options); + public Task ReleaseActionsAsync(ReleaseActionsOptions? options = null) + { + return inputModule.ReleaseActionsAsync(context, options); } } diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextLogModule.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextLogModule.cs index 03187efd7265c..a085bb07de630 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextLogModule.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextLogModule.cs @@ -2,11 +2,13 @@ using System.Threading.Tasks; using System; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext; public class BrowsingContextLogModule(BrowsingContext context, LogModule logModule) { - public Task OnEntryAddedAsync(Func handler, SubscriptionOptions options = null) + public Task OnEntryAddedAsync(Func handler, SubscriptionOptions? options = null) { return logModule.OnEntryAddedAsync(async args => { @@ -17,7 +19,7 @@ public Task OnEntryAddedAsync(Func handler, Su }, options); } - public Task OnEntryAddedAsync(Action handler, SubscriptionOptions options = null) + public Task OnEntryAddedAsync(Action handler, SubscriptionOptions? options = null) { return logModule.OnEntryAddedAsync(args => { diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextModule.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextModule.cs index fe7a1d3f36343..690df63f7ab2d 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextModule.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextModule.cs @@ -3,6 +3,8 @@ using System.Threading.Tasks; using OpenQA.Selenium.BiDi.Communication; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext; public class BrowsingContextModule(Broker broker) : Module(broker) @@ -42,7 +44,7 @@ public async Task ActivateAsync(BrowsingContext context, ActivateOptions? option await Broker.ExecuteCommandAsync(new ActivateCommand(@params), options).ConfigureAwait(false); } - public async Task> LocateNodesAsync(BrowsingContext context, Locator locator, LocateNodesOptions? options = null) + public async Task LocateNodesAsync(BrowsingContext context, Locator locator, LocateNodesOptions? options = null) { var @params = new LocateNodesCommandParameters(context, locator); @@ -53,9 +55,7 @@ public async Task ActivateAsync(BrowsingContext context, ActivateOptions? option @params.StartNodes = options.StartNodes; } - var result = await Broker.ExecuteCommandAsync(new LocateNodesCommand(@params), options).ConfigureAwait(false); - - return result.Nodes; + return await Broker.ExecuteCommandAsync(new LocateNodesCommand(@params), options).ConfigureAwait(false); } public async Task CaptureScreenshotAsync(BrowsingContext context, CaptureScreenshotOptions? options = null) diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextNetworkModule.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextNetworkModule.cs index 4b4d805eb3041..e25f255f423c7 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextNetworkModule.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextNetworkModule.cs @@ -2,6 +2,8 @@ using System; using OpenQA.Selenium.BiDi.Modules.Network; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext; public class BrowsingContextNetworkModule(BrowsingContext context, NetworkModule networkModule) @@ -34,7 +36,7 @@ public async Task InterceptResponseAsync(Func InterceptAuthenticationAsync(Func handler, BrowsingContextAddInterceptOptions? interceptOptions = null, SubscriptionOptions? options = null) + public async Task InterceptAuthAsync(Func handler, BrowsingContextAddInterceptOptions? interceptOptions = null, SubscriptionOptions? options = null) { AddInterceptOptions addInterceptOptions = new(interceptOptions) { @@ -88,7 +90,12 @@ public Task OnFetchErrorAsync(Action handler, return networkModule.OnFetchErrorAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [context] }); } - internal Task OnAuthRequiredAsync(Func handler, SubscriptionOptions? options = null) + public Task OnAuthRequiredAsync(Func handler, SubscriptionOptions? options = null) + { + return networkModule.OnAuthRequiredAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [context] }); + } + + public Task OnAuthRequiredAsync(Action handler, SubscriptionOptions? options = null) { return networkModule.OnAuthRequiredAsync(handler, new BrowsingContextsSubscriptionOptions(options) { Contexts = [context] }); } diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextScriptModule.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextScriptModule.cs index d2756ecc503cc..f6f8b77e43c55 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextScriptModule.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextScriptModule.cs @@ -2,6 +2,8 @@ using OpenQA.Selenium.BiDi.Modules.Script; using System.Collections.Generic; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext; public class BrowsingContextScriptModule(BrowsingContext context, ScriptModule scriptModule) @@ -25,9 +27,9 @@ public async Task> GetRealmsAsync(GetRealmsOptions? opt return await scriptModule.GetRealmsAsync(options).ConfigureAwait(false); } - public Task EvaluateAsync(string expression, bool awaitPromise, EvaluateOptions? options = null, ContextTargetOptions? targetOptions = null) + public Task EvaluateAsync(string expression, bool awaitPromise, EvaluateOptions? options = null, ContextTargetOptions? targetOptions = null) { - var contextTarget = new ContextTarget(context); + var contextTarget = new Target.Context(context); if (targetOptions is not null) { @@ -37,16 +39,16 @@ public Task EvaluateAsync(string expression, bool awaitPromise, Eva return scriptModule.EvaluateAsync(expression, awaitPromise, contextTarget, options); } - public async Task EvaluateAsync(string expression, bool awaitPromise, EvaluateOptions? options = null) + public async Task EvaluateAsync(string expression, bool awaitPromise, EvaluateOptions? options = null, ContextTargetOptions? targetOptions = null) { - var remoteValue = await EvaluateAsync(expression, awaitPromise, options).ConfigureAwait(false); + var result = await EvaluateAsync(expression, awaitPromise, options, targetOptions).ConfigureAwait(false); - return remoteValue.ConvertTo(); + return result.Result.ConvertTo(); } - public Task CallFunctionAsync(string functionDeclaration, bool awaitPromise, CallFunctionOptions? options = null, ContextTargetOptions? targetOptions = null) + public Task CallFunctionAsync(string functionDeclaration, bool awaitPromise, CallFunctionOptions? options = null, ContextTargetOptions? targetOptions = null) { - var contextTarget = new ContextTarget(context); + var contextTarget = new Target.Context(context); if (targetOptions is not null) { @@ -55,4 +57,11 @@ public Task CallFunctionAsync(string functionDeclaration, bool awai return scriptModule.CallFunctionAsync(functionDeclaration, awaitPromise, contextTarget, options); } + + public async Task CallFunctionAsync(string functionDeclaration, bool awaitPromise, CallFunctionOptions? options = null, ContextTargetOptions? targetOptions = null) + { + var result = await CallFunctionAsync(functionDeclaration, awaitPromise, options, targetOptions).ConfigureAwait(false); + + return result.Result.ConvertTo(); + } } diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextStorageModule.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextStorageModule.cs index 810f1ab0b32db..d89343d1ab0f9 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextStorageModule.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextStorageModule.cs @@ -1,6 +1,8 @@ using System.Threading.Tasks; using OpenQA.Selenium.BiDi.Modules.Storage; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext; public class BrowsingContextStorageModule(BrowsingContext context, StorageModule storageModule) @@ -9,7 +11,7 @@ public Task GetCookiesAsync(GetCookiesOptions? options = null) { options ??= new(); - options.Partition = new BrowsingContextPartitionDescriptor(context); + options.Partition = new PartitionDescriptor.Context(context); return storageModule.GetCookiesAsync(options); } @@ -18,7 +20,7 @@ public async Task DeleteCookiesAsync(DeleteCookiesOptions? options { options ??= new(); - options.Partition = new BrowsingContextPartitionDescriptor(context); + options.Partition = new PartitionDescriptor.Context(context); var res = await storageModule.DeleteCookiesAsync(options).ConfigureAwait(false); @@ -29,7 +31,7 @@ public async Task SetCookieAsync(PartialCookie cookie, SetCookieOp { options ??= new(); - options.Partition = new BrowsingContextPartitionDescriptor(context); + options.Partition = new PartitionDescriptor.Context(context); var res = await storageModule.SetCookieAsync(cookie, options).ConfigureAwait(false); diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/CaptureScreenshotCommand.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/CaptureScreenshotCommand.cs index 69ea01b0e70d8..df5f203c1d3fc 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/CaptureScreenshotCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/CaptureScreenshotCommand.cs @@ -1,6 +1,8 @@ using OpenQA.Selenium.BiDi.Communication; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext; internal class CaptureScreenshotCommand(CaptureScreenshotCommandParameters @params) : Command(@params); @@ -35,13 +37,14 @@ public record struct ImageFormat(string Type) } [JsonPolymorphic(TypeDiscriminatorPropertyName = "type")] -[JsonDerivedType(typeof(BoxClipRectangle), "box")] -[JsonDerivedType(typeof(ElementClipRectangle), "element")] -public abstract record ClipRectangle; - -public record BoxClipRectangle(double X, double Y, double Width, double Height) : ClipRectangle; +[JsonDerivedType(typeof(Box), "box")] +[JsonDerivedType(typeof(Element), "element")] +public abstract record ClipRectangle +{ + public record Box(double X, double Y, double Width, double Height) : ClipRectangle; -public record ElementClipRectangle(Script.SharedReference Element) : ClipRectangle; + public record Element([property: JsonPropertyName("element")] Script.SharedReference SharedReference) : ClipRectangle; +} public record CaptureScreenshotResult(string Data) { diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/CloseCommand.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/CloseCommand.cs index ac531a28699ac..e3f3279a97955 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/CloseCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/CloseCommand.cs @@ -1,5 +1,7 @@ using OpenQA.Selenium.BiDi.Communication; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext; internal class CloseCommand(CloseCommandParameters @params) : Command(@params); diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/CreateCommand.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/CreateCommand.cs index 86a81bcada46a..a70f89726c364 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/CreateCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/CreateCommand.cs @@ -1,5 +1,7 @@ using OpenQA.Selenium.BiDi.Communication; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext; internal class CreateCommand(CreateCommandParameters @params) : Command(@params); diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/GetTreeCommand.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/GetTreeCommand.cs index fe6a38c1fe0bc..eb03c29856266 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/GetTreeCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/GetTreeCommand.cs @@ -1,6 +1,8 @@ using OpenQA.Selenium.BiDi.Communication; using System.Collections.Generic; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext; internal class GetTreeCommand(GetTreeCommandParameters @params) : Command(@params); diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/HandleUserPromptCommand.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/HandleUserPromptCommand.cs index 2dd2888d19a87..a566ef6edf963 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/HandleUserPromptCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/HandleUserPromptCommand.cs @@ -1,5 +1,7 @@ using OpenQA.Selenium.BiDi.Communication; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext; class HandleUserPromptCommand(HandleUserPromptCommandParameters @params) : Command(@params); diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/LocateNodesCommand.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/LocateNodesCommand.cs index 2dce843e557a3..d32188ae7cce3 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/LocateNodesCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/LocateNodesCommand.cs @@ -1,6 +1,9 @@ using OpenQA.Selenium.BiDi.Communication; +using System.Collections; using System.Collections.Generic; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext; internal class LocateNodesCommand(LocateNodesCommandParameters @params) : Command(@params); @@ -23,4 +26,20 @@ public record LocateNodesOptions : CommandOptions public IEnumerable? StartNodes { get; set; } } -public record LocateNodesResult(IReadOnlyList Nodes); +public record LocateNodesResult : IReadOnlyList +{ + private readonly IReadOnlyList _nodes; + + internal LocateNodesResult(IReadOnlyList nodes) + { + _nodes = nodes; + } + + public Script.RemoteValue.Node this[int index] => _nodes[index]; + + public int Count => _nodes.Count; + + public IEnumerator GetEnumerator() => _nodes.GetEnumerator(); + + IEnumerator IEnumerable.GetEnumerator() => (_nodes as IEnumerable).GetEnumerator(); +} diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/Locator.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/Locator.cs index d931019afd446..d22215f5f6d92 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/Locator.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/Locator.cs @@ -1,43 +1,37 @@ using System.Text.Json.Serialization; -using static OpenQA.Selenium.BiDi.Modules.BrowsingContext.AccessibilityLocator; + +#nullable enable namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext; [JsonPolymorphic(TypeDiscriminatorPropertyName = "type")] -[JsonDerivedType(typeof(AccessibilityLocator), "accessibility")] -[JsonDerivedType(typeof(CssLocator), "css")] -[JsonDerivedType(typeof(InnerTextLocator), "innerText")] -[JsonDerivedType(typeof(XPathLocator), "xpath")] +[JsonDerivedType(typeof(Accessibility), "accessibility")] +[JsonDerivedType(typeof(Css), "css")] +[JsonDerivedType(typeof(InnerText), "innerText")] +[JsonDerivedType(typeof(XPath), "xpath")] public abstract record Locator { - public static CssLocator Css(string value) - => new(value); - - public static InnerTextLocator InnerText(string value, bool? ignoreCase = null, MatchType? matchType = null, long? maxDepth = null) - => new(value) { IgnoreCase = ignoreCase, MatchType = matchType, MaxDepth = maxDepth }; - - public static XPathLocator XPath(string value) - => new(value); -} - -public record AccessibilityLocator(AccessibilityValue Value) : Locator -{ - public record AccessibilityValue + public record Accessibility(Accessibility.AccessibilityValue Value) : Locator { - public string? Name { get; set; } - public string? Role { get; set; } + public record AccessibilityValue + { + public string? Name { get; set; } + public string? Role { get; set; } + } } -} -public record CssLocator(string Value) : Locator; + public record Css(string Value) : Locator; -public record InnerTextLocator(string Value) : Locator -{ - public bool? IgnoreCase { get; set; } + public record InnerText(string Value) : Locator + { + public bool? IgnoreCase { get; set; } - public MatchType? MatchType { get; set; } + public MatchType? MatchType { get; set; } - public long? MaxDepth { get; set; } + public long? MaxDepth { get; set; } + } + + public record XPath(string Value) : Locator; } public enum MatchType @@ -45,5 +39,3 @@ public enum MatchType Full, Partial } - -public record XPathLocator(string Value) : Locator; diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/NavigateCommand.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/NavigateCommand.cs index 401c0ec2093d4..7481a6141e430 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/NavigateCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/NavigateCommand.cs @@ -1,5 +1,7 @@ using OpenQA.Selenium.BiDi.Communication; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext; internal class NavigateCommand(NavigateCommandParameters @params) : Command(@params); diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/Navigation.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/Navigation.cs index 0b56229ade1de..3ce169d0f40c6 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/Navigation.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/Navigation.cs @@ -1,3 +1,5 @@ +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext; public record Navigation(string Id); diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/NavigationInfo.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/NavigationInfo.cs index fe7a83399bf11..e934e3030d305 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/NavigationInfo.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/NavigationInfo.cs @@ -1,5 +1,7 @@ using System; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext; public record NavigationInfo(BiDi BiDi, BrowsingContext Context, Navigation Navigation, DateTimeOffset Timestamp, string Url) diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/PrintCommand.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/PrintCommand.cs index 66c270c12dd97..70fa6bcdd1f2a 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/PrintCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/PrintCommand.cs @@ -2,6 +2,8 @@ using System; using System.Collections.Generic; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext; internal class PrintCommand(PrintCommandParameters @params) : Command(@params); diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/ReloadCommand.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/ReloadCommand.cs index fea265ce15200..1dd805fd0a00b 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/ReloadCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/ReloadCommand.cs @@ -1,5 +1,7 @@ using OpenQA.Selenium.BiDi.Communication; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext; internal class ReloadCommand(ReloadCommandParameters @params) : Command(@params); diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/SetViewportCommand.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/SetViewportCommand.cs index 0ed6e869e85a7..a43cb30157e15 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/SetViewportCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/SetViewportCommand.cs @@ -1,5 +1,7 @@ using OpenQA.Selenium.BiDi.Communication; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext; internal class SetViewportCommand(SetViewportCommandParameters @params) : Command(@params); diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/TraverseHistoryCommand.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/TraverseHistoryCommand.cs index 65797e0164cd0..b8c78b2601adb 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/TraverseHistoryCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/TraverseHistoryCommand.cs @@ -1,5 +1,7 @@ using OpenQA.Selenium.BiDi.Communication; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext; internal class TraverseHistoryCommand(TraverseHistoryCommandParameters @params) : Command(@params); diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/UserPromptClosedEventArgs.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/UserPromptClosedEventArgs.cs index fa59f7262fcc2..c7123e89f76be 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/UserPromptClosedEventArgs.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/UserPromptClosedEventArgs.cs @@ -1,5 +1,7 @@ using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext; public record UserPromptClosedEventArgs(BiDi BiDi, BrowsingContext Context, bool Accepted) diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/UserPromptOpenedEventArgs.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/UserPromptOpenedEventArgs.cs index 8e6658bd79523..03dd37be8cbeb 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/UserPromptOpenedEventArgs.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/UserPromptOpenedEventArgs.cs @@ -1,5 +1,7 @@ using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext; public record UserPromptOpenedEventArgs(BiDi BiDi, BrowsingContext Context, UserPromptType Type, string Message) diff --git a/dotnet/src/webdriver/BiDi/Modules/Input/InputModule.cs b/dotnet/src/webdriver/BiDi/Modules/Input/InputModule.cs index a31b0371dfb4a..53f913132c758 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Input/InputModule.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Input/InputModule.cs @@ -1,18 +1,16 @@ using OpenQA.Selenium.BiDi.Communication; +using System.Collections.Generic; using System.Threading.Tasks; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Input; public sealed class InputModule(Broker broker) : Module(broker) { - public async Task PerformActionsAsync(BrowsingContext.BrowsingContext context, PerformActionsOptions? options = null) + public async Task PerformActionsAsync(BrowsingContext.BrowsingContext context, IEnumerable actions, PerformActionsOptions? options = null) { - var @params = new PerformActionsCommandParameters(context); - - if (options is not null) - { - @params.Actions = options.Actions; - } + var @params = new PerformActionsCommandParameters(context, actions); await Broker.ExecuteCommandAsync(new PerformActionsCommand(@params), options).ConfigureAwait(false); } @@ -21,6 +19,6 @@ public async Task ReleaseActionsAsync(BrowsingContext.BrowsingContext context, R { var @params = new ReleaseActionsCommandParameters(context); - await Broker.ExecuteCommandAsync(new ReleaseActionsCommand(@params), options); + await Broker.ExecuteCommandAsync(new ReleaseActionsCommand(@params), options).ConfigureAwait(false); } } diff --git a/dotnet/src/webdriver/BiDi/Modules/Input/Key.cs b/dotnet/src/webdriver/BiDi/Modules/Input/Key.cs new file mode 100644 index 0000000000000..a7d99ffca3ac9 --- /dev/null +++ b/dotnet/src/webdriver/BiDi/Modules/Input/Key.cs @@ -0,0 +1,8 @@ +//namespace OpenQA.Selenium.BiDi.Modules.Input; + +//partial record Key +//{ +// public const char Shift = '\uE008'; + +// public const char Pause = '\uE00B'; +//} diff --git a/dotnet/src/webdriver/BiDi/Modules/Input/Origin.cs b/dotnet/src/webdriver/BiDi/Modules/Input/Origin.cs new file mode 100644 index 0000000000000..5cc909cd6aabe --- /dev/null +++ b/dotnet/src/webdriver/BiDi/Modules/Input/Origin.cs @@ -0,0 +1,17 @@ +using System.Text.Json.Serialization; + +#nullable enable + +namespace OpenQA.Selenium.BiDi.Modules.Input; + +public abstract record Origin +{ + public record Viewport() : Origin; + + public record Pointer() : Origin; + + public record Element([property: JsonPropertyName("element")] Script.SharedReference SharedReference) : Origin + { + public string Type { get; } = "element"; + } +} diff --git a/dotnet/src/webdriver/BiDi/Modules/Input/PerformActionsCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Input/PerformActionsCommand.cs index 0a719c7513ce7..878b576417fba 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Input/PerformActionsCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Input/PerformActionsCommand.cs @@ -1,74 +1,12 @@ using OpenQA.Selenium.BiDi.Communication; -using System; using System.Collections.Generic; -using System.Text.Json.Serialization; + +#nullable enable namespace OpenQA.Selenium.BiDi.Modules.Input; internal class PerformActionsCommand(PerformActionsCommandParameters @params) : Command(@params); -internal record PerformActionsCommandParameters(BrowsingContext.BrowsingContext Context) : CommandParameters -{ - public IEnumerable? Actions { get; set; } -} - -public record PerformActionsOptions : CommandOptions -{ - public IEnumerable? Actions { get; set; } = []; -} - -[JsonPolymorphic(TypeDiscriminatorPropertyName = "type")] -[JsonDerivedType(typeof(KeySourceActions), "key")] -public abstract record SourceActions -{ - public static KeySourceActions Press(string text) - { - var keySourceActions = new KeySourceActions(); - - foreach (var character in text) - { - keySourceActions.Actions.AddRange([ - new KeyDownAction(character.ToString()), - new KeyUpAction(character.ToString()) - ]); - } - - return keySourceActions; - } -} - -public record KeySourceActions : SourceActions -{ - public string Id { get; set; } = Guid.NewGuid().ToString(); - - public List Actions { get; set; } = []; - - public new KeySourceActions Press(string text) - { - Actions.AddRange(SourceActions.Press(text).Actions); - - return this; - } - - public KeySourceActions Pause(long? duration = null) - { - Actions.Add(new KeyPauseAction { Duration = duration }); - - return this; - } -} - -[JsonPolymorphic(TypeDiscriminatorPropertyName = "type")] -[JsonDerivedType(typeof(KeyPauseAction), "pause")] -[JsonDerivedType(typeof(KeyDownAction), "keyDown")] -[JsonDerivedType(typeof(KeyUpAction), "keyUp")] -public abstract record KeySourceAction; - -public record KeyPauseAction : KeySourceAction -{ - public long? Duration { get; set; } -} - -public record KeyDownAction(string Value) : KeySourceAction; +internal record PerformActionsCommandParameters(BrowsingContext.BrowsingContext Context, IEnumerable Actions) : CommandParameters; -public record KeyUpAction(string Value) : KeySourceAction; +public record PerformActionsOptions : CommandOptions; diff --git a/dotnet/src/webdriver/BiDi/Modules/Input/ReleaseActionsCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Input/ReleaseActionsCommand.cs index 0ee6d6345d21b..2331e1bec6c49 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Input/ReleaseActionsCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Input/ReleaseActionsCommand.cs @@ -1,5 +1,7 @@ using OpenQA.Selenium.BiDi.Communication; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Input; internal class ReleaseActionsCommand(ReleaseActionsCommandParameters @params) : Command(@params); diff --git a/dotnet/src/webdriver/BiDi/Modules/Input/SequentialSourceActions.cs b/dotnet/src/webdriver/BiDi/Modules/Input/SequentialSourceActions.cs new file mode 100644 index 0000000000000..dfdbc3f69a331 --- /dev/null +++ b/dotnet/src/webdriver/BiDi/Modules/Input/SequentialSourceActions.cs @@ -0,0 +1,161 @@ +//using System.Collections; +//using System.Collections.Generic; +//using System.Linq; + +//namespace OpenQA.Selenium.BiDi.Modules.Input; + +//public interface ISequentialSourceActions : IEnumerable +//{ +// ISequentialSourceActions Pause(int duration); + +// ISequentialSourceActions Type(string text); +// ISequentialSourceActions KeyDown(char key); +// ISequentialSourceActions KeyUp(char key); + +// ISequentialSourceActions PointerDown(int button, PointerDownOptions? options = null); +// ISequentialSourceActions PointerUp(int button); +// ISequentialSourceActions PointerMove(int x, int y, PointerMoveOptions? options = null); +//} + +//public record SequentialSourceActions : ISequentialSourceActions +//{ +// private readonly KeyActions _keyActions = []; +// private readonly PointerActions _pointerActions = []; +// private readonly WheelActions _wheelActions = []; +// private readonly WheelActions _noneActions = []; + +// public ISequentialSourceActions Pause(int duration) +// { +// _noneActions.Add(new Pause { Duration = duration }); + +// return Normalized(); +// } + +// public ISequentialSourceActions Type(string text) +// { +// _keyActions.Type(text); + +// return Normalized(); +// } + +// public ISequentialSourceActions KeyDown(char key) +// { +// _keyActions.Add(new Key.Down(key)); + +// return Normalized(); +// } + +// public ISequentialSourceActions KeyUp(char key) +// { +// _keyActions.Add(new Key.Up(key)); + +// return Normalized(); +// } + +// public ISequentialSourceActions PointerDown(int button, PointerDownOptions? options = null) +// { +// _pointerActions.Add(new Pointer.Down(button) +// { +// Width = options?.Width, +// Height = options?.Height, +// Pressure = options?.Pressure, +// TangentialPressure = options?.TangentialPressure, +// Twist = options?.Twist, +// AltitudeAngle = options?.AltitudeAngle, +// AzimuthAngle = options?.AzimuthAngle +// }); + +// return Normalized(); +// } + +// public ISequentialSourceActions PointerUp(int button) +// { +// _pointerActions.Add(new Pointer.Up(button)); + +// return Normalized(); +// } + +// public ISequentialSourceActions PointerMove(int x, int y, PointerMoveOptions? options = null) +// { +// _pointerActions.Add(new Pointer.Move(x, y) +// { +// Duration = options?.Duration, +// Origin = options?.Origin, +// Width = options?.Width, +// Height = options?.Height, +// Pressure = options?.Pressure, +// TangentialPressure = options?.TangentialPressure, +// Twist = options?.Twist, +// AltitudeAngle = options?.AltitudeAngle, +// AzimuthAngle = options?.AzimuthAngle +// }); + +// return Normalized(); +// } + +// private SequentialSourceActions Normalized() +// { +// var max = new[] { _keyActions.Count(), _pointerActions.Count(), _wheelActions.Count(), _noneActions.Count() }.Max(); + +// for (int i = _keyActions.Count(); i < max; i++) +// { +// _keyActions.Add(new Pause()); +// } + +// for (int i = _pointerActions.Count(); i < max; i++) +// { +// _pointerActions.Add(new Pause()); +// } + +// for (int i = _wheelActions.Count(); i < max; i++) +// { +// _wheelActions.Add(new Pause()); +// } + +// for (int i = _noneActions.Count(); i < max; i++) +// { +// _noneActions.Add(new Pause()); +// } + +// return this; +// } + +// public IEnumerator GetEnumerator() +// { +// var sourceActions = new List +// { +// _keyActions, +// _pointerActions, +// _wheelActions, +// _noneActions +// }; +// return sourceActions.GetEnumerator(); +// } + +// IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); +//} + +//public record PointerDownOptions : IPointerCommonProperties +//{ +// public int? Width { get; set; } +// public int? Height { get; set; } +// public double? Pressure { get; set; } +// public double? TangentialPressure { get; set; } +// public int? Twist { get; set; } +// public double? AltitudeAngle { get; set; } +// public double? AzimuthAngle { get; set; } +//} + +//public record PointerMoveOptions : IPointerCommonProperties +//{ +// public int? Duration { get; set; } +// public Origin? Origin { get; set; } + +// public int? Width { get; set; } +// public int? Height { get; set; } +// public double? Pressure { get; set; } +// public double? TangentialPressure { get; set; } +// public int? Twist { get; set; } +// public double? AltitudeAngle { get; set; } +// public double? AzimuthAngle { get; set; } +//} diff --git a/dotnet/src/webdriver/BiDi/Modules/Input/SourceActions.cs b/dotnet/src/webdriver/BiDi/Modules/Input/SourceActions.cs new file mode 100644 index 0000000000000..a9b7ed3f7001f --- /dev/null +++ b/dotnet/src/webdriver/BiDi/Modules/Input/SourceActions.cs @@ -0,0 +1,155 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Text.Json.Serialization; + +#nullable enable + +namespace OpenQA.Selenium.BiDi.Modules.Input; + +public abstract record SourceActions +{ + public string Id { get; } = Guid.NewGuid().ToString(); +} + +public interface ISourceAction; + +public record SourceActions : SourceActions, IEnumerable where T : ISourceAction +{ + public IList Actions { get; set; } = []; + + public IEnumerator GetEnumerator() => Actions.GetEnumerator(); + + IEnumerator IEnumerable.GetEnumerator() => Actions.GetEnumerator(); + + public void Add(ISourceAction action) => Actions.Add(action); +} + +[JsonPolymorphic(TypeDiscriminatorPropertyName = "type")] +[JsonDerivedType(typeof(Pause), "pause")] +[JsonDerivedType(typeof(Key.Down), "keyDown")] +[JsonDerivedType(typeof(Key.Up), "keyUp")] +public interface IKeySourceAction : ISourceAction; + +public record KeyActions : SourceActions +{ + public KeyActions Type(string text) + { + foreach (var character in text) + { + Add(new Key.Down(character)); + Add(new Key.Up(character)); + } + + return this; + } +} + +[JsonPolymorphic(TypeDiscriminatorPropertyName = "type")] +[JsonDerivedType(typeof(Pause), "pause")] +[JsonDerivedType(typeof(Pointer.Down), "pointerDown")] +[JsonDerivedType(typeof(Pointer.Up), "pointerUp")] +[JsonDerivedType(typeof(Pointer.Move), "pointerMove")] +public interface IPointerSourceAction : ISourceAction; + +public record PointerActions : SourceActions +{ + public PointerParameters? Options { get; set; } +} + +[JsonPolymorphic(TypeDiscriminatorPropertyName = "type")] +[JsonDerivedType(typeof(Pause), "pause")] +[JsonDerivedType(typeof(Wheel.Scroll), "scroll")] +public interface IWheelSourceAction : ISourceAction; + +public record WheelActions : SourceActions; + +[JsonPolymorphic(TypeDiscriminatorPropertyName = "type")] +[JsonDerivedType(typeof(Pause), "pause")] +public interface INoneSourceAction : ISourceAction; + +public record NoneActions : SourceActions; + +public abstract partial record Key : IKeySourceAction +{ + public record Down(char Value) : Key; + + public record Up(char Value) : Key; +} + +public abstract record Pointer : IPointerSourceAction +{ + public record Down(int Button) : Pointer, IPointerCommonProperties + { + public int? Width { get; set; } + public int? Height { get; set; } + public double? Pressure { get; set; } + public double? TangentialPressure { get; set; } + public int? Twist { get; set; } + public double? AltitudeAngle { get; set; } + public double? AzimuthAngle { get; set; } + } + + public record Up(int Button) : Pointer; + + public record Move(int X, int Y) : Pointer, IPointerCommonProperties + { + public int? Duration { get; set; } + + public Origin? Origin { get; set; } + + public int? Width { get; set; } + public int? Height { get; set; } + public double? Pressure { get; set; } + public double? TangentialPressure { get; set; } + public int? Twist { get; set; } + public double? AltitudeAngle { get; set; } + public double? AzimuthAngle { get; set; } + } +} + +public abstract record Wheel : IWheelSourceAction +{ + public record Scroll(int X, int Y, int DeltaX, int DeltaY) : Wheel + { + public int? Duration { get; set; } + + public Origin? Origin { get; set; } + } +} + +public abstract record None : INoneSourceAction; + +public record Pause : ISourceAction, IKeySourceAction, IPointerSourceAction, IWheelSourceAction, INoneSourceAction +{ + public long? Duration { get; set; } +} + +public record PointerParameters +{ + public PointerType? PointerType { get; set; } +} + +public enum PointerType +{ + Mouse, + Pen, + Touch +} + +public interface IPointerCommonProperties +{ + public int? Width { get; set; } + + public int? Height { get; set; } + + public double? Pressure { get; set; } + + public double? TangentialPressure { get; set; } + + public int? Twist { get; set; } + + public double? AltitudeAngle { get; set; } + + public double? AzimuthAngle { get; set; } +} diff --git a/dotnet/src/webdriver/BiDi/Modules/Log/Entry.cs b/dotnet/src/webdriver/BiDi/Modules/Log/Entry.cs new file mode 100644 index 0000000000000..dba3714e27403 --- /dev/null +++ b/dotnet/src/webdriver/BiDi/Modules/Log/Entry.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; + +#nullable enable + +namespace OpenQA.Selenium.BiDi.Modules.Log; + +// https://github.com/dotnet/runtime/issues/72604 +//[JsonPolymorphic(TypeDiscriminatorPropertyName = "type")] +//[JsonDerivedType(typeof(Console), "console")] +//[JsonDerivedType(typeof(Javascript), "javascript")] +public abstract record Entry(BiDi BiDi, Level Level, Script.Source Source, string Text, DateTimeOffset Timestamp) + : EventArgs(BiDi) +{ + public Script.StackTrace? StackTrace { get; set; } + + public record Console(BiDi BiDi, Level Level, Script.Source Source, string Text, DateTimeOffset Timestamp, string Method, IReadOnlyList Args) + : Entry(BiDi, Level, Source, Text, Timestamp); + + public record Javascript(BiDi BiDi, Level Level, Script.Source Source, string Text, DateTimeOffset Timestamp) + : Entry(BiDi, Level, Source, Text, Timestamp); +} + +public enum Level +{ + Debug, + Info, + Warn, + Error +} diff --git a/dotnet/src/webdriver/BiDi/Modules/Log/LogEntry.cs b/dotnet/src/webdriver/BiDi/Modules/Log/LogEntry.cs deleted file mode 100644 index f210c126a8859..0000000000000 --- a/dotnet/src/webdriver/BiDi/Modules/Log/LogEntry.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace OpenQA.Selenium.BiDi.Modules.Log; - -// https://github.com/dotnet/runtime/issues/72604 -//[JsonPolymorphic(TypeDiscriminatorPropertyName = "type")] -//[JsonDerivedType(typeof(ConsoleLogEntry), "console")] -//[JsonDerivedType(typeof(JavascriptLogEntry), "javascript")] -public abstract record BaseLogEntry(BiDi BiDi, Level Level, Script.Source Source, string Text, DateTimeOffset Timestamp) - : EventArgs(BiDi); - -public record ConsoleLogEntry(BiDi BiDi, Level Level, Script.Source Source, string Text, DateTimeOffset Timestamp, string Method, IReadOnlyList Args) - : BaseLogEntry(BiDi, Level, Source, Text, Timestamp); - -public record JavascriptLogEntry(BiDi BiDi, Level Level, Script.Source Source, string Text, DateTimeOffset Timestamp) - : BaseLogEntry(BiDi, Level, Source, Text, Timestamp); - -public enum Level -{ - Debug, - Info, - Warn, - Error -} diff --git a/dotnet/src/webdriver/BiDi/Modules/Log/LogModule.cs b/dotnet/src/webdriver/BiDi/Modules/Log/LogModule.cs index 7bf84d530126a..aeb09a08754bd 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Log/LogModule.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Log/LogModule.cs @@ -2,16 +2,18 @@ using System; using OpenQA.Selenium.BiDi.Communication; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Log; public sealed class LogModule(Broker broker) : Module(broker) { - public async Task OnEntryAddedAsync(Func handler, SubscriptionOptions? options = null) + public async Task OnEntryAddedAsync(Func handler, SubscriptionOptions? options = null) { return await Broker.SubscribeAsync("log.entryAdded", handler, options).ConfigureAwait(false); } - public async Task OnEntryAddedAsync(Action handler, SubscriptionOptions? options = null) + public async Task OnEntryAddedAsync(Action handler, SubscriptionOptions? options = null) { return await Broker.SubscribeAsync("log.entryAdded", handler, options).ConfigureAwait(false); } diff --git a/dotnet/src/webdriver/BiDi/Modules/Module.cs b/dotnet/src/webdriver/BiDi/Modules/Module.cs index a6ac7d1719c43..a7c2491349750 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Module.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Module.cs @@ -1,5 +1,7 @@ using OpenQA.Selenium.BiDi.Communication; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules; public abstract class Module(Broker broker) diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/AddInterceptCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Network/AddInterceptCommand.cs index 4856193d512d9..219f3640ca466 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/AddInterceptCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/AddInterceptCommand.cs @@ -1,6 +1,8 @@ using System.Collections.Generic; using OpenQA.Selenium.BiDi.Communication; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; internal class AddInterceptCommand(AddInterceptCommandParameters @params) : Command(@params); diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/AuthChallenge.cs b/dotnet/src/webdriver/BiDi/Modules/Network/AuthChallenge.cs index b304cbacf3f1e..f85da002f189e 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/AuthChallenge.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/AuthChallenge.cs @@ -1,3 +1,5 @@ +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; public record AuthChallenge(string Scheme, string Realm); diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/AuthCredentials.cs b/dotnet/src/webdriver/BiDi/Modules/Network/AuthCredentials.cs index 384360e660f44..8f78b5465f969 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/AuthCredentials.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/AuthCredentials.cs @@ -1,12 +1,14 @@ using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; [JsonPolymorphic(TypeDiscriminatorPropertyName = "type")] -[JsonDerivedType(typeof(BasicAuthCredentials), "password")] +[JsonDerivedType(typeof(Basic), "password")] public abstract record AuthCredentials { - public static BasicAuthCredentials Basic(string username, string password) => new(username, password); + public record Basic(string Username, string Password) : AuthCredentials; } -public record BasicAuthCredentials(string Username, string Password) : AuthCredentials; + diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/AuthRequiredEventArgs.cs b/dotnet/src/webdriver/BiDi/Modules/Network/AuthRequiredEventArgs.cs index 6e3e8626e8b5f..dca341b07b4da 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/AuthRequiredEventArgs.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/AuthRequiredEventArgs.cs @@ -1,5 +1,7 @@ using System; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; public record AuthRequiredEventArgs(BiDi BiDi, BrowsingContext.BrowsingContext Context, bool IsBlocked, BrowsingContext.Navigation Navigation, long RedirectCount, RequestData Request, DateTimeOffset Timestamp, ResponseData Response) : diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/BaseParametersEventArgs.cs b/dotnet/src/webdriver/BiDi/Modules/Network/BaseParametersEventArgs.cs index d632e433e137d..e8e721d033ca5 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/BaseParametersEventArgs.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/BaseParametersEventArgs.cs @@ -2,6 +2,8 @@ using System.Text.Json.Serialization; using System; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; public abstract record BaseParametersEventArgs(BiDi BiDi, BrowsingContext.BrowsingContext Context, bool IsBlocked, BrowsingContext.Navigation Navigation, long RedirectCount, RequestData Request, DateTimeOffset Timestamp) diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/BeforeRequestSentEventArgs.cs b/dotnet/src/webdriver/BiDi/Modules/Network/BeforeRequestSentEventArgs.cs index 0ca4994bd7bae..53f4b85aa3669 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/BeforeRequestSentEventArgs.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/BeforeRequestSentEventArgs.cs @@ -1,6 +1,8 @@ using OpenQA.Selenium.BiDi.Modules.BrowsingContext; using System; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; public record BeforeRequestSentEventArgs(BiDi BiDi, BrowsingContext.BrowsingContext Context, bool IsBlocked, Navigation Navigation, long RedirectCount, RequestData Request, DateTimeOffset Timestamp, Initiator Initiator) diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/BytesValue.cs b/dotnet/src/webdriver/BiDi/Modules/Network/BytesValue.cs index 02b982422d4c7..6c5d88a930d66 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/BytesValue.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/BytesValue.cs @@ -1,15 +1,17 @@ using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; [JsonPolymorphic(TypeDiscriminatorPropertyName = "type")] -[JsonDerivedType(typeof(StringValue), "string")] -[JsonDerivedType(typeof(Base64Value), "base64")] +[JsonDerivedType(typeof(String), "string")] +[JsonDerivedType(typeof(Base64), "base64")] public abstract record BytesValue { - public static implicit operator BytesValue(string value) => new StringValue(value); -} + public static implicit operator BytesValue(string value) => new String(value); -public record StringValue(string Value) : BytesValue; + public record String(string Value) : BytesValue; -public record Base64Value(string Value) : BytesValue; + public record Base64(string Value) : BytesValue; +} diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/ContinueRequestCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Network/ContinueRequestCommand.cs index bdf572ece2c08..447dfa41baa70 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/ContinueRequestCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/ContinueRequestCommand.cs @@ -1,6 +1,8 @@ using OpenQA.Selenium.BiDi.Communication; using System.Collections.Generic; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; internal class ContinueRequestCommand(ContinueRequestCommandParameters @params) : Command(@params); diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/ContinueResponseCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Network/ContinueResponseCommand.cs index 6762035e94e38..ba2e4e60a1bed 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/ContinueResponseCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/ContinueResponseCommand.cs @@ -1,6 +1,8 @@ using OpenQA.Selenium.BiDi.Communication; using System.Collections.Generic; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; internal class ContinueResponseCommand(ContinueResponseCommandParameters @params) : Command(@params); diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/ContinueWithAuthCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Network/ContinueWithAuthCommand.cs index 4c6553181da92..c486066015ec4 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/ContinueWithAuthCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/ContinueWithAuthCommand.cs @@ -1,21 +1,24 @@ using OpenQA.Selenium.BiDi.Communication; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; internal class ContinueWithAuthCommand(ContinueWithAuthParameters @params) : Command(@params); [JsonPolymorphic(TypeDiscriminatorPropertyName = "action")] -[JsonDerivedType(typeof(ContinueWithAuthCredentials), "provideCredentials")] -[JsonDerivedType(typeof(ContinueWithDefaultAuth), "default")] -[JsonDerivedType(typeof(ContinueWithCancelledAuth), "cancel")] -internal abstract record ContinueWithAuthParameters(Request Request) : CommandParameters; - -internal record ContinueWithAuthCredentials(Request Request, AuthCredentials Credentials) : ContinueWithAuthParameters(Request); +[JsonDerivedType(typeof(Credentials), "provideCredentials")] +[JsonDerivedType(typeof(Default), "default")] +[JsonDerivedType(typeof(Cancel), "cancel")] +internal abstract record ContinueWithAuthParameters(Request Request) : CommandParameters +{ + internal record Credentials(Request Request, [property: JsonPropertyName("credentials")] AuthCredentials AuthCredentials) : ContinueWithAuthParameters(Request); -internal record ContinueWithDefaultAuth(Request Request) : ContinueWithAuthParameters(Request); + internal record Default(Request Request) : ContinueWithAuthParameters(Request); -internal record ContinueWithCancelledAuth(Request Request) : ContinueWithAuthParameters(Request); + internal record Cancel(Request Request) : ContinueWithAuthParameters(Request); +} public record ContinueWithAuthOptions : CommandOptions; diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/Cookie.cs b/dotnet/src/webdriver/BiDi/Modules/Network/Cookie.cs index 0c615762e7044..f3a4bedc8f926 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/Cookie.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/Cookie.cs @@ -1,6 +1,8 @@ using System; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; public record Cookie(string Name, BytesValue Value, string Domain, string Path, long Size, bool HttpOnly, bool Secure, SameSite SameSite) diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/CookieHeader.cs b/dotnet/src/webdriver/BiDi/Modules/Network/CookieHeader.cs index dac9bd7b8260a..e588a87d0acb8 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/CookieHeader.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/CookieHeader.cs @@ -1,3 +1,5 @@ +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; public record CookieHeader(string Name, BytesValue Value); diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/FailRequestCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Network/FailRequestCommand.cs index fe25e4904e34f..f3b01ee692743 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/FailRequestCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/FailRequestCommand.cs @@ -1,5 +1,7 @@ using OpenQA.Selenium.BiDi.Communication; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; internal class FailRequestCommand(FailRequestCommandParameters @params) : Command(@params); diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/FetchErrorEventArgs.cs b/dotnet/src/webdriver/BiDi/Modules/Network/FetchErrorEventArgs.cs index ce77fbed5216c..6c911e0009fa7 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/FetchErrorEventArgs.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/FetchErrorEventArgs.cs @@ -1,6 +1,8 @@ using OpenQA.Selenium.BiDi.Modules.BrowsingContext; using System; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; public record FetchErrorEventArgs(BiDi BiDi, BrowsingContext.BrowsingContext Context, bool IsBlocked, Navigation Navigation, long RedirectCount, RequestData Request, DateTimeOffset Timestamp, string ErrorText) diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/FetchTimingInfo.cs b/dotnet/src/webdriver/BiDi/Modules/Network/FetchTimingInfo.cs index d1b8caf24e5ca..d5980cc2ca141 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/FetchTimingInfo.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/FetchTimingInfo.cs @@ -1,3 +1,5 @@ +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; public record FetchTimingInfo(double TimeOrigin, diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/Header.cs b/dotnet/src/webdriver/BiDi/Modules/Network/Header.cs index d32397f88dbd3..0804a1919dec0 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/Header.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/Header.cs @@ -1,3 +1,5 @@ +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; public record Header(string Name, BytesValue Value); diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/Initiator.cs b/dotnet/src/webdriver/BiDi/Modules/Network/Initiator.cs index 128b69f5097cf..a1449e77928a2 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/Initiator.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/Initiator.cs @@ -1,3 +1,5 @@ +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; public record Initiator(InitiatorType Type) diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/Intercept.cs b/dotnet/src/webdriver/BiDi/Modules/Network/Intercept.cs index 26d71006cc03f..4fd55a7d14b0f 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/Intercept.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/Intercept.cs @@ -3,39 +3,41 @@ using System.Linq; using System.Threading.Tasks; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; public class Intercept : IAsyncDisposable { private readonly BiDi _bidi; - protected readonly IList _onBeforeRequestSentSubscriptions = []; - protected readonly IList _onResponseStartedSubscriptions = []; - protected readonly IList _onAuthRequiredSubscriptions = []; - internal Intercept(BiDi bidi, string id) { _bidi = bidi; Id = id; } - public string Id { get; } + internal string Id { get; } + + protected IList OnBeforeRequestSentSubscriptions { get; } = []; + protected IList OnResponseStartedSubscriptions { get; } = []; + protected IList OnAuthRequiredSubscriptions { get; } = []; public async Task RemoveAsync() { await _bidi.Network.RemoveInterceptAsync(this).ConfigureAwait(false); - foreach (var subscription in _onBeforeRequestSentSubscriptions) + foreach (var subscription in OnBeforeRequestSentSubscriptions) { await subscription.UnsubscribeAsync().ConfigureAwait(false); } - foreach (var subscription in _onResponseStartedSubscriptions) + foreach (var subscription in OnResponseStartedSubscriptions) { await subscription.UnsubscribeAsync().ConfigureAwait(false); } - foreach (var subscription in _onAuthRequiredSubscriptions) + foreach (var subscription in OnAuthRequiredSubscriptions) { await subscription.UnsubscribeAsync().ConfigureAwait(false); } @@ -45,21 +47,21 @@ public async Task OnBeforeRequestSentAsync(Func await Filter(args, handler), options).ConfigureAwait(false); - _onBeforeRequestSentSubscriptions.Add(subscription); + OnBeforeRequestSentSubscriptions.Add(subscription); } public async Task OnResponseStartedAsync(Func handler, SubscriptionOptions? options = null) { var subscription = await _bidi.Network.OnResponseStartedAsync(async args => await Filter(args, handler), options).ConfigureAwait(false); - _onResponseStartedSubscriptions.Add(subscription); + OnResponseStartedSubscriptions.Add(subscription); } public async Task OnAuthRequiredAsync(Func handler, SubscriptionOptions? options = null) { var subscription = await _bidi.Network.OnAuthRequiredAsync(async args => await Filter(args, handler), options).ConfigureAwait(false); - _onAuthRequiredSubscriptions.Add(subscription); + OnAuthRequiredSubscriptions.Add(subscription); } private async Task Filter(BeforeRequestSentEventArgs args, Func handler) diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/NetworkModule.cs b/dotnet/src/webdriver/BiDi/Modules/Network/NetworkModule.cs index 65264dbf51a67..7d4eac19a673f 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/NetworkModule.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/NetworkModule.cs @@ -3,6 +3,8 @@ using System.Threading.Tasks; using OpenQA.Selenium.BiDi.Communication; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; public sealed class NetworkModule(Broker broker) : Module(broker) @@ -47,7 +49,7 @@ public async Task InterceptResponseAsync(Func InterceptAuthenticationAsync(Func handler, AddInterceptOptions? interceptOptions = null, SubscriptionOptions? options = null) + public async Task InterceptAuthAsync(Func handler, AddInterceptOptions? interceptOptions = null, SubscriptionOptions? options = null) { var intercept = await AddInterceptAsync([InterceptPhase.AuthRequired], interceptOptions).ConfigureAwait(false); @@ -113,17 +115,17 @@ internal async Task ProvideResponseAsync(Request request, ProvideResponseOptions internal async Task ContinueWithAuthAsync(Request request, AuthCredentials credentials, ContinueWithAuthOptions? options = null) { - await Broker.ExecuteCommandAsync(new ContinueWithAuthCommand(new ContinueWithAuthCredentials(request, credentials)), options).ConfigureAwait(false); + await Broker.ExecuteCommandAsync(new ContinueWithAuthCommand(new ContinueWithAuthParameters.Credentials(request, credentials)), options).ConfigureAwait(false); } internal async Task ContinueWithAuthAsync(Request request, ContinueWithDefaultAuthOptions? options = null) { - await Broker.ExecuteCommandAsync(new ContinueWithAuthCommand(new ContinueWithDefaultAuth(request)), options).ConfigureAwait(false); + await Broker.ExecuteCommandAsync(new ContinueWithAuthCommand(new ContinueWithAuthParameters.Default(request)), options).ConfigureAwait(false); } internal async Task ContinueWithAuthAsync(Request request, ContinueWithCancelledAuthOptions? options = null) { - await Broker.ExecuteCommandAsync(new ContinueWithAuthCommand(new ContinueWithCancelledAuth(request)), options).ConfigureAwait(false); + await Broker.ExecuteCommandAsync(new ContinueWithAuthCommand(new ContinueWithAuthParameters.Cancel(request)), options).ConfigureAwait(false); } public async Task OnBeforeRequestSentAsync(Func handler, SubscriptionOptions? options = null) @@ -166,7 +168,12 @@ public async Task OnFetchErrorAsync(Action ha return await Broker.SubscribeAsync("network.fetchError", handler, options).ConfigureAwait(false); } - internal async Task OnAuthRequiredAsync(Func handler, SubscriptionOptions? options = null) + public async Task OnAuthRequiredAsync(Func handler, SubscriptionOptions? options = null) + { + return await Broker.SubscribeAsync("network.authRequired", handler, options).ConfigureAwait(false); + } + + public async Task OnAuthRequiredAsync(Action handler, SubscriptionOptions? options = null) { return await Broker.SubscribeAsync("network.authRequired", handler, options).ConfigureAwait(false); } diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/ProvideResponseCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Network/ProvideResponseCommand.cs index 317ac4474b4fa..6dae6fc24556f 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/ProvideResponseCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/ProvideResponseCommand.cs @@ -1,6 +1,8 @@ using OpenQA.Selenium.BiDi.Communication; using System.Collections.Generic; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; internal class ProvideResponseCommand(ProvideResponseCommandParameters @params) : Command(@params); diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/RemoveInterceptCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Network/RemoveInterceptCommand.cs index de64aa1200fb7..c592b74e13a1a 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/RemoveInterceptCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/RemoveInterceptCommand.cs @@ -1,5 +1,7 @@ using OpenQA.Selenium.BiDi.Communication; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; internal class RemoveInterceptCommand(RemoveInterceptCommandParameters @params) : Command(@params); diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/Request.cs b/dotnet/src/webdriver/BiDi/Modules/Network/Request.cs index 1b68df0768897..f7b93fbebff19 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/Request.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/Request.cs @@ -1,5 +1,7 @@ using System.Threading.Tasks; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; public class Request diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/RequestData.cs b/dotnet/src/webdriver/BiDi/Modules/Network/RequestData.cs index 442db03520234..01cc77f040e79 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/RequestData.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/RequestData.cs @@ -1,5 +1,7 @@ using System.Collections.Generic; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; public record RequestData(Request Request, string Url, string Method, IReadOnlyList
Headers, IReadOnlyList Cookies, long HeadersSize, long? BodySize, FetchTimingInfo Timings); diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/ResponseCompletedEventArgs.cs b/dotnet/src/webdriver/BiDi/Modules/Network/ResponseCompletedEventArgs.cs index 81fec792efdfd..75c9aa21332bd 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/ResponseCompletedEventArgs.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/ResponseCompletedEventArgs.cs @@ -1,6 +1,8 @@ using OpenQA.Selenium.BiDi.Modules.BrowsingContext; using System; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; public record ResponseCompletedEventArgs(BiDi BiDi, BrowsingContext.BrowsingContext Context, bool IsBlocked, Navigation Navigation, long RedirectCount, RequestData Request, DateTimeOffset Timestamp, ResponseData Response) diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/ResponseContent.cs b/dotnet/src/webdriver/BiDi/Modules/Network/ResponseContent.cs index 9647356e7b052..5511c4b24129f 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/ResponseContent.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/ResponseContent.cs @@ -1,3 +1,5 @@ +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; public record ResponseContent(long Size); diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/ResponseData.cs b/dotnet/src/webdriver/BiDi/Modules/Network/ResponseData.cs index 5ac779301b9ab..6096bda7fd8a6 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/ResponseData.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/ResponseData.cs @@ -1,6 +1,8 @@ using System.Collections.Generic; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; public record ResponseData(string Url, diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/ResponseStartedEventArgs.cs b/dotnet/src/webdriver/BiDi/Modules/Network/ResponseStartedEventArgs.cs index 0c80739bf4c72..aa3aff6fd5cf9 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/ResponseStartedEventArgs.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/ResponseStartedEventArgs.cs @@ -1,6 +1,8 @@ using OpenQA.Selenium.BiDi.Modules.BrowsingContext; using System; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; public record ResponseStartedEventArgs(BiDi BiDi, BrowsingContext.BrowsingContext Context, bool IsBlocked, Navigation Navigation, long RedirectCount, RequestData Request, DateTimeOffset Timestamp, ResponseData Response) diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/SetCookieHeader.cs b/dotnet/src/webdriver/BiDi/Modules/Network/SetCookieHeader.cs index d11d8ee8a21e5..a73c9171419f0 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/SetCookieHeader.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/SetCookieHeader.cs @@ -1,3 +1,5 @@ +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; public record SetCookieHeader(string Name, BytesValue Value) diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/UrlPattern.cs b/dotnet/src/webdriver/BiDi/Modules/Network/UrlPattern.cs index 50226a115f327..30a034fbee4d0 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/UrlPattern.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/UrlPattern.cs @@ -1,31 +1,31 @@ using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Network; [JsonPolymorphic(TypeDiscriminatorPropertyName = "type")] -[JsonDerivedType(typeof(UrlPatternPattern), "pattern")] -[JsonDerivedType(typeof(UrlPatternString), "string")] +[JsonDerivedType(typeof(Pattern), "pattern")] +[JsonDerivedType(typeof(String), "string")] public abstract record UrlPattern { - public static UrlPatternPattern Patter(string? protocol = null, string? hostname = null, string? port = null, string? pathname = null, string? search = null) - => new() { Protocol = protocol, Hostname = hostname, Port = port, Pathname = pathname, Search = search }; + public static implicit operator UrlPattern(string value) => new String(value); - public static UrlPatternString String(string pattern) => new UrlPatternString(pattern); + public record Pattern : UrlPattern + { + public string? Protocol { get; set; } - public static implicit operator UrlPattern(string value) => new UrlPatternString(value); -} + public string? Hostname { get; set; } -public record UrlPatternPattern : UrlPattern -{ - public string? Protocol { get; set; } + public string? Port { get; set; } - public string? Hostname { get; set; } + public string? Pathname { get; set; } - public string? Port { get; set; } + public string? Search { get; set; } + } - public string? Pathname { get; set; } - - public string? Search { get; set; } + public record String(string Pattern) : UrlPattern + { + public new string Pattern { get; } = Pattern; + } } - -public record UrlPatternString(string Pattern) : UrlPattern; diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/AddPreloadScriptCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Script/AddPreloadScriptCommand.cs index 516e65b10f45c..512d79a86900e 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/AddPreloadScriptCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/AddPreloadScriptCommand.cs @@ -1,13 +1,15 @@ using OpenQA.Selenium.BiDi.Communication; using System.Collections.Generic; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Script; internal class AddPreloadScriptCommand(AddPreloadScriptCommandParameters @params) : Command(@params); internal record AddPreloadScriptCommandParameters(string FunctionDeclaration) : CommandParameters { - public IEnumerable? Arguments { get; set; } + public IEnumerable? Arguments { get; set; } public IEnumerable? Contexts { get; set; } @@ -24,7 +26,7 @@ internal AddPreloadScriptOptions(BrowsingContextAddPreloadScriptOptions? options Sandbox = options?.Sandbox; } - public IEnumerable? Arguments { get; set; } + public IEnumerable? Arguments { get; set; } public IEnumerable? Contexts { get; set; } @@ -33,7 +35,7 @@ internal AddPreloadScriptOptions(BrowsingContextAddPreloadScriptOptions? options public record BrowsingContextAddPreloadScriptOptions { - public IEnumerable? Arguments { get; set; } + public IEnumerable? Arguments { get; set; } public string? Sandbox { get; set; } } diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/CallFunctionCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Script/CallFunctionCommand.cs index 08c9800911044..9ff03a72896f4 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/CallFunctionCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/CallFunctionCommand.cs @@ -1,6 +1,8 @@ using OpenQA.Selenium.BiDi.Communication; using System.Collections.Generic; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Script; internal class CallFunctionCommand(CallFunctionCommandParameters @params) : Command(@params); diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/Channel.cs b/dotnet/src/webdriver/BiDi/Modules/Script/Channel.cs index a828d9a4caff3..6518aee1d5388 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/Channel.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/Channel.cs @@ -1,14 +1,5 @@ -namespace OpenQA.Selenium.BiDi.Modules.Script; - -public class Channel -{ - readonly BiDi _bidi; +#nullable enable - internal Channel(BiDi bidi, string id) - { - _bidi = bidi; - Id = id; - } +namespace OpenQA.Selenium.BiDi.Modules.Script; - internal string Id { get; } -} +public record Channel(string Id); diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/ChannelValue.cs b/dotnet/src/webdriver/BiDi/Modules/Script/ChannelValue.cs deleted file mode 100644 index 4b92a7dc15b96..0000000000000 --- a/dotnet/src/webdriver/BiDi/Modules/Script/ChannelValue.cs +++ /dev/null @@ -1,13 +0,0 @@ -namespace OpenQA.Selenium.BiDi.Modules.Script; - -public record ChannelValue : LocalValue -{ - public string Type => "channel"; -} - -public record ChannelProperties(Channel Channel) -{ - public SerializationOptions? SerializationOptions { get; set; } - - public ResultOwnership? Ownership { get; set; } -} diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/DisownCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Script/DisownCommand.cs index dfe04fc14e0be..b09ab31da07b3 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/DisownCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/DisownCommand.cs @@ -1,6 +1,8 @@ using OpenQA.Selenium.BiDi.Communication; using System.Collections.Generic; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Script; internal class DisownCommand(DisownCommandParameters @params) : Command(@params); diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/EvaluateCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Script/EvaluateCommand.cs index 307a9156e8b4b..8ccba001543af 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/EvaluateCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/EvaluateCommand.cs @@ -1,5 +1,7 @@ using OpenQA.Selenium.BiDi.Communication; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Script; internal class EvaluateCommand(EvaluateCommandParameters @params) : Command(@params); @@ -24,12 +26,16 @@ public record EvaluateOptions : CommandOptions // https://github.com/dotnet/runtime/issues/72604 //[JsonPolymorphic(TypeDiscriminatorPropertyName = "type")] -//[JsonDerivedType(typeof(EvaluateResultSuccess), "success")] -//[JsonDerivedType(typeof(EvaluateResultException), "exception")] -public abstract record EvaluateResult; - -public record EvaluateResultSuccess(RemoteValue Result) : EvaluateResult; +//[JsonDerivedType(typeof(Success), "success")] +//[JsonDerivedType(typeof(Exception), "exception")] +public abstract record EvaluateResult +{ + public record Success(RemoteValue Result, Realm Realm) : EvaluateResult + { + public static implicit operator RemoteValue(Success success) => success.Result; + } -public record EvaluateResultException(ExceptionDetails ExceptionDetails) : EvaluateResult; + public record Exception(ExceptionDetails ExceptionDetails, Realm Realm) : EvaluateResult; +} public record ExceptionDetails(long ColumnNumber, long LineNumber, StackTrace StackTrace, string Text); diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/GetRealmsCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Script/GetRealmsCommand.cs index 98d4a03ba785f..e5730a9d21a06 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/GetRealmsCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/GetRealmsCommand.cs @@ -1,6 +1,9 @@ using OpenQA.Selenium.BiDi.Communication; +using System.Collections; using System.Collections.Generic; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Script; internal class GetRealmsCommand(GetRealmsCommandParameters @params) : Command(@params); @@ -19,4 +22,20 @@ public record GetRealmsOptions : CommandOptions public RealmType? Type { get; set; } } -internal record GetRealmsResult(IReadOnlyList Realms); +public record GetRealmsResult : IReadOnlyList +{ + private readonly IReadOnlyList _realms; + + internal GetRealmsResult(IReadOnlyList realms) + { + _realms = realms; + } + + public RealmInfo this[int index] => _realms[index]; + + public int Count => _realms.Count; + + public IEnumerator GetEnumerator() => _realms.GetEnumerator(); + + IEnumerator IEnumerable.GetEnumerator() => (_realms as IEnumerable).GetEnumerator(); +} diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/Handle.cs b/dotnet/src/webdriver/BiDi/Modules/Script/Handle.cs index 2e2649af926cf..8323bea292827 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/Handle.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/Handle.cs @@ -1,3 +1,5 @@ +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Script; public class Handle diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/InternalId.cs b/dotnet/src/webdriver/BiDi/Modules/Script/InternalId.cs index 89e08f58f9121..1a34d8bd61bb5 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/InternalId.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/InternalId.cs @@ -1,3 +1,5 @@ +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Script; public class InternalId diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/LocalValue.cs b/dotnet/src/webdriver/BiDi/Modules/Script/LocalValue.cs index 3451352ab962d..2b162c438dd3d 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/LocalValue.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/LocalValue.cs @@ -1,31 +1,36 @@ using System.Collections.Generic; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Script; [JsonPolymorphic(TypeDiscriminatorPropertyName = "type")] -[JsonDerivedType(typeof(NumberLocalValue), "number")] -[JsonDerivedType(typeof(StringLocalValue), "string")] -[JsonDerivedType(typeof(NullLocalValue), "null")] -[JsonDerivedType(typeof(UndefinedLocalValue), "undefined")] -[JsonDerivedType(typeof(ArrayLocalValue), "array")] -[JsonDerivedType(typeof(DateLocalValue), "date")] -[JsonDerivedType(typeof(MapLocalValue), "map")] -[JsonDerivedType(typeof(ObjectLocalValue), "object")] -[JsonDerivedType(typeof(RegExpLocalValue), "regexp")] -[JsonDerivedType(typeof(SetLocalValue), "set")] +[JsonDerivedType(typeof(Number), "number")] +[JsonDerivedType(typeof(String), "string")] +[JsonDerivedType(typeof(Null), "null")] +[JsonDerivedType(typeof(Undefined), "undefined")] +[JsonDerivedType(typeof(Channel), "channel")] +[JsonDerivedType(typeof(Array), "array")] +[JsonDerivedType(typeof(Date), "date")] +[JsonDerivedType(typeof(Map), "map")] +[JsonDerivedType(typeof(Object), "object")] +[JsonDerivedType(typeof(RegExp), "regexp")] +[JsonDerivedType(typeof(Set), "set")] public abstract record LocalValue { - public static implicit operator LocalValue(int value) { return new NumberLocalValue(value); } - public static implicit operator LocalValue(string value) { return new StringLocalValue(value); } + public static implicit operator LocalValue(int value) { return new Number(value); } + public static implicit operator LocalValue(string value) { return new String(value); } // TODO: Extend converting from types public static LocalValue ConvertFrom(object? value) { switch (value) { + case LocalValue: + return (LocalValue)value; case null: - return new NullLocalValue(); + return new Null(); case int: return (int)value; case string: @@ -43,41 +48,55 @@ public static LocalValue ConvertFrom(object? value) values.Add([property.Name, ConvertFrom(property.GetValue(value))]); } - return new ObjectLocalValue(values); + return new Object(values); } } } -} -public abstract record PrimitiveProtocolLocalValue : LocalValue -{ + public abstract record PrimitiveProtocolLocalValue : LocalValue + { -} + } -public record NumberLocalValue(long Value) : PrimitiveProtocolLocalValue -{ - public static explicit operator NumberLocalValue(int n) => new NumberLocalValue(n); -} + public record Number(long Value) : PrimitiveProtocolLocalValue + { + public static explicit operator Number(int n) => new Number(n); + } -public record StringLocalValue(string Value) : PrimitiveProtocolLocalValue; + public record String(string Value) : PrimitiveProtocolLocalValue; -public record NullLocalValue : PrimitiveProtocolLocalValue; + public record Null : PrimitiveProtocolLocalValue; -public record UndefinedLocalValue : PrimitiveProtocolLocalValue; + public record Undefined : PrimitiveProtocolLocalValue; -public record ArrayLocalValue(IEnumerable Value) : LocalValue; + public record Channel(Channel.ChannelProperties Value) : LocalValue + { + [JsonInclude] + internal string type = "channel"; -public record DateLocalValue(string Value) : LocalValue; + public record ChannelProperties(Script.Channel Channel) + { + public SerializationOptions? SerializationOptions { get; set; } -public record MapLocalValue(IDictionary Value) : LocalValue; // seems to implement IDictionary + public ResultOwnership? Ownership { get; set; } + } + } -public record ObjectLocalValue(IEnumerable> Value) : LocalValue; + public record Array(IEnumerable Value) : LocalValue; -public record RegExpLocalValue(RegExpValue Value) : LocalValue; + public record Date(string Value) : LocalValue; -public record RegExpValue(string Pattern) -{ - public string? Flags { get; set; } -} + public record Map(IDictionary Value) : LocalValue; // seems to implement IDictionary + + public record Object(IEnumerable> Value) : LocalValue; -public record SetLocalValue(IEnumerable Value) : LocalValue; + public record RegExp(RegExp.RegExpValue Value) : LocalValue + { + public record RegExpValue(string Pattern) + { + public string? Flags { get; set; } + } + } + + public record Set(IEnumerable Value) : LocalValue; +} diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/MessageEventArgs.cs b/dotnet/src/webdriver/BiDi/Modules/Script/MessageEventArgs.cs new file mode 100644 index 0000000000000..e6062a76262c1 --- /dev/null +++ b/dotnet/src/webdriver/BiDi/Modules/Script/MessageEventArgs.cs @@ -0,0 +1,5 @@ +#nullable enable + +namespace OpenQA.Selenium.BiDi.Modules.Script; + +public record MessageEventArgs(BiDi BiDi, Channel Channel, RemoteValue Data, Source Source) : EventArgs(BiDi); diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/NodeProperties.cs b/dotnet/src/webdriver/BiDi/Modules/Script/NodeProperties.cs index 87bf2680efa6f..5cc214fcd225c 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/NodeProperties.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/NodeProperties.cs @@ -1,6 +1,8 @@ using System.Collections.Generic; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Script; public record NodeProperties(long NodeType, long ChildNodeCount) @@ -9,7 +11,7 @@ public record NodeProperties(long NodeType, long ChildNodeCount) public IReadOnlyDictionary? Attributes { get; internal set; } [JsonInclude] - public IReadOnlyList? Children { get; internal set; } + public IReadOnlyList? Children { get; internal set; } [JsonInclude] public string? LocalName { get; internal set; } @@ -24,5 +26,5 @@ public record NodeProperties(long NodeType, long ChildNodeCount) public string? NodeValue { get; internal set; } [JsonInclude] - public NodeRemoteValue? ShadowRoot { get; internal set; } + public RemoteValue.Node? ShadowRoot { get; internal set; } } diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/PreloadScript.cs b/dotnet/src/webdriver/BiDi/Modules/Script/PreloadScript.cs index a59b9c099f05d..1b9027f21cf39 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/PreloadScript.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/PreloadScript.cs @@ -1,6 +1,8 @@ using System; using System.Threading.Tasks; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Script; public class PreloadScript : IAsyncDisposable @@ -17,7 +19,7 @@ public PreloadScript(BiDi bidi, string id) public Task RemoveAsync() { - return _bidi.ScriptModule.RemovePreloadScriptAsync(this); + return _bidi.Script.RemovePreloadScriptAsync(this); } public async ValueTask DisposeAsync() diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/Realm.cs b/dotnet/src/webdriver/BiDi/Modules/Script/Realm.cs index 0b8bf28fdf994..a690df5eabd91 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/Realm.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/Realm.cs @@ -1,3 +1,5 @@ +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Script; public class Realm diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/RealmDestroyedEventArgs.cs b/dotnet/src/webdriver/BiDi/Modules/Script/RealmDestroyedEventArgs.cs new file mode 100644 index 0000000000000..b5d30f09c5fd3 --- /dev/null +++ b/dotnet/src/webdriver/BiDi/Modules/Script/RealmDestroyedEventArgs.cs @@ -0,0 +1,5 @@ +#nullable enable + +namespace OpenQA.Selenium.BiDi.Modules.Script; + +public record RealmDestroyedEventArgs(BiDi BiDi, Realm Realm) : EventArgs(BiDi); diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/RealmInfo.cs b/dotnet/src/webdriver/BiDi/Modules/Script/RealmInfo.cs index 4d88aa5e7b25c..4715be57392a7 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/RealmInfo.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/RealmInfo.cs @@ -1,36 +1,37 @@ using System.Collections.Generic; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Script; // https://github.com/dotnet/runtime/issues/72604 //[JsonPolymorphic(TypeDiscriminatorPropertyName = "type")] -//[JsonDerivedType(typeof(WindowRealmInfo), "window")] -//[JsonDerivedType(typeof(DedicatedWorkerRealmInfo), "dedicated-worker")] -//[JsonDerivedType(typeof(SharedWorkerRealmInfo), "shared-worker")] -//[JsonDerivedType(typeof(ServiceWorkerRealmInfo), "service-worker")] -//[JsonDerivedType(typeof(WorkerRealmInfo), "worker")] -//[JsonDerivedType(typeof(PaintWorkletRealmInfo), "paint-worklet")] -//[JsonDerivedType(typeof(AudioWorkletRealmInfo), "audio-worklet")] -//[JsonDerivedType(typeof(WorkletRealmInfo), "worklet")] -public abstract record RealmInfo(BiDi BiDi) : EventArgs(BiDi); - -public abstract record BaseRealmInfo(BiDi BiDi, Realm Realm, string Origin) : RealmInfo(BiDi); - -public record WindowRealmInfo(BiDi BiDi, Realm Realm, string Origin, BrowsingContext.BrowsingContext Context) : BaseRealmInfo(BiDi, Realm, Origin) +//[JsonDerivedType(typeof(Window), "window")] +//[JsonDerivedType(typeof(DedicatedWorker), "dedicated-worker")] +//[JsonDerivedType(typeof(SharedWorker), "shared-worker")] +//[JsonDerivedType(typeof(ServiceWorker), "service-worker")] +//[JsonDerivedType(typeof(Worker), "worker")] +//[JsonDerivedType(typeof(PaintWorklet), "paint-worklet")] +//[JsonDerivedType(typeof(AudioWorklet), "audio-worklet")] +//[JsonDerivedType(typeof(Worklet), "worklet")] +public abstract record RealmInfo(BiDi BiDi, Realm Realm, string Origin) : EventArgs(BiDi) { - public string? Sandbox { get; set; } -} + public record Window(BiDi BiDi, Realm Realm, string Origin, BrowsingContext.BrowsingContext Context) : RealmInfo(BiDi, Realm, Origin) + { + public string? Sandbox { get; set; } + } -public record DedicatedWorkerRealmInfo(BiDi BiDi, Realm Realm, string Origin, IReadOnlyList Owners) : BaseRealmInfo(BiDi, Realm, Origin); + public record DedicatedWorker(BiDi BiDi, Realm Realm, string Origin, IReadOnlyList Owners) : RealmInfo(BiDi, Realm, Origin); -public record SharedWorkerRealmInfo(BiDi BiDi, Realm Realm, string Origin) : BaseRealmInfo(BiDi, Realm, Origin); + public record SharedWorker(BiDi BiDi, Realm Realm, string Origin) : RealmInfo(BiDi, Realm, Origin); -public record ServiceWorkerRealmInfo(BiDi BiDi, Realm Realm, string Origin) : BaseRealmInfo(BiDi, Realm, Origin); + public record ServiceWorker(BiDi BiDi, Realm Realm, string Origin) : RealmInfo(BiDi, Realm, Origin); -public record WorkerRealmInfo(BiDi BiDi, Realm Realm, string Origin) : BaseRealmInfo(BiDi, Realm, Origin); + public record Worker(BiDi BiDi, Realm Realm, string Origin) : RealmInfo(BiDi, Realm, Origin); -public record PaintWorkletRealmInfo(BiDi BiDi, Realm Realm, string Origin) : BaseRealmInfo(BiDi, Realm, Origin); + public record PaintWorklet(BiDi BiDi, Realm Realm, string Origin) : RealmInfo(BiDi, Realm, Origin); -public record AudioWorkletRealmInfo(BiDi BiDi, Realm Realm, string Origin) : BaseRealmInfo(BiDi, Realm, Origin); + public record AudioWorklet(BiDi BiDi, Realm Realm, string Origin) : RealmInfo(BiDi, Realm, Origin); -public record WorkletRealmInfo(BiDi BiDi, Realm Realm, string Origin) : BaseRealmInfo(BiDi, Realm, Origin); + public record Worklet(BiDi BiDi, Realm Realm, string Origin) : RealmInfo(BiDi, Realm, Origin); +} diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/RealmType.cs b/dotnet/src/webdriver/BiDi/Modules/Script/RealmType.cs index 0db521054c4d9..08444b2666830 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/RealmType.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/RealmType.cs @@ -1,3 +1,5 @@ +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Script; public enum RealmType diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/RemoteReference.cs b/dotnet/src/webdriver/BiDi/Modules/Script/RemoteReference.cs index f936501b0cb14..ac64940070e7e 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/RemoteReference.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/RemoteReference.cs @@ -1,3 +1,5 @@ +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Script; public abstract record RemoteReference : LocalValue; diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/RemoteValue.cs b/dotnet/src/webdriver/BiDi/Modules/Script/RemoteValue.cs index 0ce3be3404fa5..074ab2570b43e 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/RemoteValue.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/RemoteValue.cs @@ -1,44 +1,49 @@ using System; using System.Collections.Generic; +using System.Text.Json; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Script; // https://github.com/dotnet/runtime/issues/72604 //[JsonPolymorphic(TypeDiscriminatorPropertyName = "type")] -//[JsonDerivedType(typeof(NumberRemoteValue), "number")] -//[JsonDerivedType(typeof(StringRemoteValue), "string")] -//[JsonDerivedType(typeof(NullRemoteValue), "null")] -//[JsonDerivedType(typeof(UndefinedRemoteValue), "undefined")] -//[JsonDerivedType(typeof(SymbolRemoteValue), "symbol")] -//[JsonDerivedType(typeof(ObjectRemoteValue), "object")] -//[JsonDerivedType(typeof(FunctionRemoteValue), "function")] -//[JsonDerivedType(typeof(RegExpRemoteValue), "regexp")] -//[JsonDerivedType(typeof(DateRemoteValue), "date")] -//[JsonDerivedType(typeof(MapRemoteValue), "map")] -//[JsonDerivedType(typeof(SetRemoteValue), "set")] -//[JsonDerivedType(typeof(WeakMapRemoteValue), "weakmap")] -//[JsonDerivedType(typeof(WeakSetRemoteValue), "weakset")] -//[JsonDerivedType(typeof(GeneratorRemoteValue), "generator")] -//[JsonDerivedType(typeof(ErrorRemoteValue), "error")] -//[JsonDerivedType(typeof(ProxyRemoteValue), "proxy")] -//[JsonDerivedType(typeof(PromiseRemoteValue), "promise")] -//[JsonDerivedType(typeof(TypedArrayRemoteValue), "typedarray")] -//[JsonDerivedType(typeof(ArrayBufferRemoteValue), "arraybuffer")] -//[JsonDerivedType(typeof(NodeListRemoteValue), "nodelist")] -//[JsonDerivedType(typeof(HtmlCollectionRemoteValue), "htmlcollection")] -//[JsonDerivedType(typeof(NodeRemoteValue), "node")] -//[JsonDerivedType(typeof(WindowProxyRemoteValue), "window")] +//[JsonDerivedType(typeof(Number), "number")] +//[JsonDerivedType(typeof(Boolean), "boolean")] +//[JsonDerivedType(typeof(String), "string")] +//[JsonDerivedType(typeof(Null), "null")] +//[JsonDerivedType(typeof(Undefined), "undefined")] +//[JsonDerivedType(typeof(Symbol), "symbol")] +//[JsonDerivedType(typeof(Array), "array")] +//[JsonDerivedType(typeof(Object), "object")] +//[JsonDerivedType(typeof(Function), "function")] +//[JsonDerivedType(typeof(RegExp), "regexp")] +//[JsonDerivedType(typeof(Date), "date")] +//[JsonDerivedType(typeof(Map), "map")] +//[JsonDerivedType(typeof(Set), "set")] +//[JsonDerivedType(typeof(WeakMap), "weakmap")] +//[JsonDerivedType(typeof(WeakSet), "weakset")] +//[JsonDerivedType(typeof(Generator), "generator")] +//[JsonDerivedType(typeof(Error), "error")] +//[JsonDerivedType(typeof(Proxy), "proxy")] +//[JsonDerivedType(typeof(Promise), "promise")] +//[JsonDerivedType(typeof(TypedArray), "typedarray")] +//[JsonDerivedType(typeof(ArrayBuffer), "arraybuffer")] +//[JsonDerivedType(typeof(NodeList), "nodelist")] +//[JsonDerivedType(typeof(HtmlCollection), "htmlcollection")] +//[JsonDerivedType(typeof(Node), "node")] +//[JsonDerivedType(typeof(WindowProxy), "window")] public abstract record RemoteValue { - public static implicit operator int(RemoteValue remoteValue) => (int)((NumberRemoteValue)remoteValue).Value; - public static implicit operator long(RemoteValue remoteValue) => ((NumberRemoteValue)remoteValue).Value; + public static implicit operator int(RemoteValue remoteValue) => (int)((Number)remoteValue).Value; + public static implicit operator long(RemoteValue remoteValue) => ((Number)remoteValue).Value; public static implicit operator string(RemoteValue remoteValue) { return remoteValue switch { - StringRemoteValue stringValue => stringValue.Value, - NullRemoteValue => null!, + String stringValue => stringValue.Value, + Null => null!, _ => throw new BiDiException($"Cannot convert {remoteValue} to string") }; } @@ -48,13 +53,17 @@ public static implicit operator string(RemoteValue remoteValue) { var type = typeof(TResult); + if (type == typeof(bool)) + { + return (TResult)(Convert.ToBoolean(((Boolean)this).Value) as object); + } if (type == typeof(int)) { - return (TResult)(Convert.ToInt32(((NumberRemoteValue)this).Value) as object); + return (TResult)(Convert.ToInt32(((Number)this).Value) as object); } else if (type == typeof(string)) { - return (TResult)(((StringRemoteValue)this).Value as object); + return (TResult)(((String)this).Value as object); } else if (type is object) { @@ -64,177 +73,184 @@ public static implicit operator string(RemoteValue remoteValue) throw new BiDiException("Cannot convert ....."); } -} -public abstract record PrimitiveProtocolRemoteValue : RemoteValue; + public record Number(long Value) : PrimitiveProtocolRemoteValue; -public record NumberRemoteValue(long Value) : PrimitiveProtocolRemoteValue; + public record Boolean(bool Value) : PrimitiveProtocolRemoteValue; -public record StringRemoteValue(string Value) : PrimitiveProtocolRemoteValue; + public record String(string Value) : PrimitiveProtocolRemoteValue; -public record NullRemoteValue : PrimitiveProtocolRemoteValue; + public record Null : PrimitiveProtocolRemoteValue; -public record UndefinedRemoteValue : PrimitiveProtocolRemoteValue; + public record Undefined : PrimitiveProtocolRemoteValue; -public record SymbolRemoteValue : RemoteValue -{ - public Handle? Handle { get; set; } + public record Symbol : RemoteValue + { + public Handle? Handle { get; set; } - public InternalId? InternalId { get; set; } -} + public InternalId? InternalId { get; set; } + } -public record ArrayRemoteValue : RemoteValue -{ - public Handle? Handle { get; set; } + public record Array : RemoteValue + { + public Handle? Handle { get; set; } - public InternalId? InternalId { get; set; } + public InternalId? InternalId { get; set; } - public IReadOnlyList? Value { get; set; } -} + public IReadOnlyList? Value { get; set; } + } -public record ObjectRemoteValue : RemoteValue -{ - public Handle? Handle { get; set; } + public record Object : RemoteValue + { + public Handle? Handle { get; set; } - public InternalId? InternalId { get; set; } + public InternalId? InternalId { get; set; } - public IReadOnlyList>? Value { get; set; } -} + public IReadOnlyList>? Value { get; set; } + } -public record FunctionRemoteValue : RemoteValue -{ - public Handle? Handle { get; set; } + public record Function : RemoteValue + { + public Handle? Handle { get; set; } - public InternalId? InternalId { get; set; } -} + public InternalId? InternalId { get; set; } + } -public record RegExpRemoteValue(RegExpValue Value) : RemoteValue -{ - public Handle? Handle { get; set; } + public record RegExp(RegExp.RegExpValue Value) : RemoteValue + { + public Handle? Handle { get; set; } - public InternalId? InternalId { get; set; } -} + public InternalId? InternalId { get; set; } -public record DateRemoteValue(string Value) : RemoteValue -{ - public Handle? Handle { get; set; } + public record RegExpValue(string Pattern) + { + public string? Flags { get; set; } + } + } - public InternalId? InternalId { get; set; } -} + public record Date(string Value) : RemoteValue + { + public Handle? Handle { get; set; } -public record MapRemoteValue : RemoteValue -{ - public Handle? Handle { get; set; } + public InternalId? InternalId { get; set; } + } - public InternalId? InternalId { get; set; } + public record Map : RemoteValue + { + public Handle? Handle { get; set; } - public IDictionary? Value { get; set; } -} + public InternalId? InternalId { get; set; } -public record SetRemoteValue : RemoteValue -{ - public Handle? Handle { get; set; } + public IDictionary? Value { get; set; } + } - public InternalId? InternalId { get; set; } + public record Set : RemoteValue + { + public Handle? Handle { get; set; } - public IReadOnlyList? Value { get; set; } -} + public InternalId? InternalId { get; set; } -public record WeakMapRemoteValue : RemoteValue -{ - public Handle? Handle { get; set; } + public IReadOnlyList? Value { get; set; } + } - public InternalId? InternalId { get; set; } -} + public record WeakMap : RemoteValue + { + public Handle? Handle { get; set; } -public record WeakSetRemoteValue : RemoteValue -{ - public Handle? Handle { get; set; } + public InternalId? InternalId { get; set; } + } - public InternalId? InternalId { get; set; } -} + public record WeakSet : RemoteValue + { + public Handle? Handle { get; set; } -public record GeneratorRemoteValue : RemoteValue -{ - public Handle? Handle { get; set; } + public InternalId? InternalId { get; set; } + } - public InternalId? InternalId { get; set; } -} + public record Generator : RemoteValue + { + public Handle? Handle { get; set; } -public record ErrorRemoteValue : RemoteValue -{ - public Handle? Handle { get; set; } + public InternalId? InternalId { get; set; } + } - public InternalId? InternalId { get; set; } -} + public record Error : RemoteValue + { + public Handle? Handle { get; set; } -public record ProxyRemoteValue : RemoteValue -{ - public Handle? Handle { get; set; } + public InternalId? InternalId { get; set; } + } - public InternalId? InternalId { get; set; } -} + public record Proxy : RemoteValue + { + public Handle? Handle { get; set; } -public record PromiseRemoteValue : RemoteValue -{ - public Handle? Handle { get; set; } + public InternalId? InternalId { get; set; } + } - public InternalId? InternalId { get; set; } -} + public record Promise : RemoteValue + { + public Handle? Handle { get; set; } -public record TypedArrayRemoteValue : RemoteValue -{ - public Handle? Handle { get; set; } + public InternalId? InternalId { get; set; } + } - public InternalId? InternalId { get; set; } -} + public record TypedArray : RemoteValue + { + public Handle? Handle { get; set; } -public record ArrayBufferRemoteValue : RemoteValue -{ - public Handle? Handle { get; set; } + public InternalId? InternalId { get; set; } + } - public InternalId? InternalId { get; set; } -} + public record ArrayBuffer : RemoteValue + { + public Handle? Handle { get; set; } -public record NodeListRemoteValue : RemoteValue -{ - public Handle? Handle { get; set; } + public InternalId? InternalId { get; set; } + } - public InternalId? InternalId { get; set; } + public record NodeList : RemoteValue + { + public Handle? Handle { get; set; } - public IReadOnlyList? Value { get; set; } -} + public InternalId? InternalId { get; set; } -public record HtmlCollectionRemoteValue : RemoteValue -{ - public Handle? Handle { get; set; } + public IReadOnlyList? Value { get; set; } + } - public InternalId? InternalId { get; set; } + public record HtmlCollection : RemoteValue + { + public Handle? Handle { get; set; } - public IReadOnlyList? Value { get; set; } -} + public InternalId? InternalId { get; set; } -public record NodeRemoteValue : RemoteValue -{ - [JsonInclude] - public string? SharedId { get; internal set; } + public IReadOnlyList? Value { get; set; } + } - public Handle? Handle { get; set; } + public record Node : RemoteValue + { + [JsonInclude] + public string? SharedId { get; internal set; } - public InternalId? InternalId { get; set; } + public Handle? Handle { get; set; } - [JsonInclude] - public NodeProperties? Value { get; internal set; } -} + public InternalId? InternalId { get; set; } -public record WindowProxyRemoteValue(WindowProxyProperties Value) : RemoteValue -{ - public Handle? Handle { get; set; } + [JsonInclude] + public NodeProperties? Value { get; internal set; } + } - public InternalId? InternalId { get; set; } + public record WindowProxy(WindowProxy.Properties Value) : RemoteValue + { + public Handle? Handle { get; set; } + + public InternalId? InternalId { get; set; } + + public record Properties(BrowsingContext.BrowsingContext Context); + } } -public record WindowProxyProperties(BrowsingContext.BrowsingContext Context); +public abstract record PrimitiveProtocolRemoteValue : RemoteValue; public enum Mode { diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/RemovePreloadScriptCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Script/RemovePreloadScriptCommand.cs index a64d5dd42775c..850ab9ecc0f6c 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/RemovePreloadScriptCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/RemovePreloadScriptCommand.cs @@ -1,5 +1,7 @@ using OpenQA.Selenium.BiDi.Communication; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Script; internal class RemovePreloadScriptCommand(RemovePreloadScriptCommandParameters @params) : Command(@params); diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/ResultOwnership.cs b/dotnet/src/webdriver/BiDi/Modules/Script/ResultOwnership.cs index 68e77e72a1f01..c69595bc3293c 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/ResultOwnership.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/ResultOwnership.cs @@ -1,3 +1,5 @@ +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Script; public enum ResultOwnership diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/ScriptEvaluateException.cs b/dotnet/src/webdriver/BiDi/Modules/Script/ScriptEvaluateException.cs index 2270835f32639..4daa2cc704b1c 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/ScriptEvaluateException.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/ScriptEvaluateException.cs @@ -1,10 +1,12 @@ using System; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Script; -public class ScriptEvaluateException(EvaluateResultException evaluateResultException) : Exception +public class ScriptEvaluateException(EvaluateResult.Exception evaluateResultException) : Exception { - private readonly EvaluateResultException _evaluateResultException = evaluateResultException; + private readonly EvaluateResult.Exception _evaluateResultException = evaluateResultException; public string Text => _evaluateResultException.ExceptionDetails.Text; diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/ScriptModule.cs b/dotnet/src/webdriver/BiDi/Modules/Script/ScriptModule.cs index b5e8f2ae61b22..fee6e4a10dcfc 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/ScriptModule.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/ScriptModule.cs @@ -1,13 +1,16 @@ using OpenQA.Selenium.BiDi.Communication; +using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Script; public sealed class ScriptModule(Broker broker) : Module(broker) { - public async Task EvaluateAsync(string expression, bool awaitPromise, Target target, EvaluateOptions? options = null) + public async Task EvaluateAsync(string expression, bool awaitPromise, Target target, EvaluateOptions? options = null) { var @params = new EvaluateCommandParameters(expression, target, awaitPromise); @@ -20,15 +23,22 @@ public async Task EvaluateAsync(string expression, bool awaitPromis var result = await Broker.ExecuteCommandAsync(new EvaluateCommand(@params), options).ConfigureAwait(false); - if (result is EvaluateResultException exp) + if (result is EvaluateResult.Exception exp) { throw new ScriptEvaluateException(exp); } - return ((EvaluateResultSuccess)result).Result; + return (EvaluateResult.Success)result; } - public async Task CallFunctionAsync(string functionDeclaration, bool awaitPromise, Target target, CallFunctionOptions? options = null) + public async Task EvaluateAsync(string expression, bool awaitPromise, Target target, EvaluateOptions? options = null) + { + var result = await EvaluateAsync(expression, awaitPromise, target, options).ConfigureAwait(false); + + return result.Result.ConvertTo(); + } + + public async Task CallFunctionAsync(string functionDeclaration, bool awaitPromise, Target target, CallFunctionOptions? options = null) { var @params = new CallFunctionCommandParameters(functionDeclaration, awaitPromise, target); @@ -43,15 +53,22 @@ public async Task CallFunctionAsync(string functionDeclaration, boo var result = await Broker.ExecuteCommandAsync(new CallFunctionCommand(@params), options).ConfigureAwait(false); - if (result is EvaluateResultException exp) + if (result is EvaluateResult.Exception exp) { throw new ScriptEvaluateException(exp); } - return ((EvaluateResultSuccess)result).Result; + return (EvaluateResult.Success)result; + } + + public async Task CallFunctionAsync(string functionDeclaration, bool awaitPromise, Target target, CallFunctionOptions? options = null) + { + var result = await CallFunctionAsync(functionDeclaration, awaitPromise, target, options).ConfigureAwait(false); + + return result.Result.ConvertTo(); } - public async Task> GetRealmsAsync(GetRealmsOptions? options = null) + public async Task GetRealmsAsync(GetRealmsOptions? options = null) { var @params = new GetRealmsCommandParameters(); @@ -61,9 +78,7 @@ public async Task> GetRealmsAsync(GetRealmsOptions? opt @params.Type = options.Type; } - var result = await Broker.ExecuteCommandAsync(new GetRealmsCommand(@params), options).ConfigureAwait(false); - - return result.Realms; + return await Broker.ExecuteCommandAsync(new GetRealmsCommand(@params), options).ConfigureAwait(false); } public async Task AddPreloadScriptAsync(string functionDeclaration, AddPreloadScriptOptions? options = null) @@ -88,4 +103,34 @@ public async Task RemovePreloadScriptAsync(PreloadScript script, RemovePreloadSc await Broker.ExecuteCommandAsync(new RemovePreloadScriptCommand(@params), options).ConfigureAwait(false); } + + public async Task OnMessageAsync(Func handler, SubscriptionOptions? options = null) + { + return await Broker.SubscribeAsync("script.message", handler, options).ConfigureAwait(false); + } + + public async Task OnMessageAsync(Action handler, SubscriptionOptions? options = null) + { + return await Broker.SubscribeAsync("script.message", handler, options).ConfigureAwait(false); + } + + public async Task OnRealmCreatedAsync(Func handler, SubscriptionOptions? options = null) + { + return await Broker.SubscribeAsync("script.realmCreated", handler, options).ConfigureAwait(false); + } + + public async Task OnRealmCreatedAsync(Action handler, SubscriptionOptions? options = null) + { + return await Broker.SubscribeAsync("script.realmCreated", handler, options).ConfigureAwait(false); + } + + public async Task OnRealmDestroyedAsync(Func handler, SubscriptionOptions? options = null) + { + return await Broker.SubscribeAsync("script.realmDestroyed", handler, options).ConfigureAwait(false); + } + + public async Task OnRealmDestroyedAsync(Action handler, SubscriptionOptions? options = null) + { + return await Broker.SubscribeAsync("script.realmDestroyed", handler, options).ConfigureAwait(false); + } } diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/SerializationOptions.cs b/dotnet/src/webdriver/BiDi/Modules/Script/SerializationOptions.cs index 57659570eaaf4..bbb275cc08c2f 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/SerializationOptions.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/SerializationOptions.cs @@ -1,3 +1,5 @@ +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Script; public class SerializationOptions diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/Source.cs b/dotnet/src/webdriver/BiDi/Modules/Script/Source.cs index 309ac31a0ba75..27bdbcad6f695 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/Source.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/Source.cs @@ -1,3 +1,5 @@ +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Script; public record Source(Realm Realm) diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/StackFrame.cs b/dotnet/src/webdriver/BiDi/Modules/Script/StackFrame.cs index 7e3694e9a5e68..208485e0bd636 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/StackFrame.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/StackFrame.cs @@ -1,3 +1,5 @@ +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Script; public record StackFrame(long LineNumber, long ColumnNumber, string Url, string FunctionName); diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/StackTrace.cs b/dotnet/src/webdriver/BiDi/Modules/Script/StackTrace.cs index b9ec5c6bf1d0a..15bbfd829bb1e 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/StackTrace.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/StackTrace.cs @@ -1,5 +1,7 @@ using System.Collections.Generic; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Script; public record StackTrace(IReadOnlyCollection CallFrames); diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/Target.cs b/dotnet/src/webdriver/BiDi/Modules/Script/Target.cs index 7c20cb8b33b6f..a05849a62c8b9 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/Target.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/Target.cs @@ -1,16 +1,19 @@ using System.Text.Json.Serialization; -namespace OpenQA.Selenium.BiDi.Modules.Script; - -[JsonDerivedType(typeof(RealmTarget))] -[JsonDerivedType(typeof(ContextTarget))] -public abstract record Target; +#nullable enable -public record RealmTarget(Realm Realm) : Target; +namespace OpenQA.Selenium.BiDi.Modules.Script; -public record ContextTarget(BrowsingContext.BrowsingContext Context) : Target +[JsonDerivedType(typeof(Realm))] +[JsonDerivedType(typeof(Context))] +public abstract record Target { - public string? Sandbox { get; set; } + public record Realm([property: JsonPropertyName("realm")] Script.Realm Target) : Target; + + public record Context([property: JsonPropertyName("context")] BrowsingContext.BrowsingContext Target) : Target + { + public string? Sandbox { get; set; } + } } public class ContextTargetOptions diff --git a/dotnet/src/webdriver/BiDi/Modules/Session/CapabilitiesRequest.cs b/dotnet/src/webdriver/BiDi/Modules/Session/CapabilitiesRequest.cs index be4c7ac6d69db..542f9e1c3f076 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Session/CapabilitiesRequest.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Session/CapabilitiesRequest.cs @@ -1,5 +1,7 @@ using System.Collections.Generic; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Session; public class CapabilitiesRequest diff --git a/dotnet/src/webdriver/BiDi/Modules/Session/CapabilityRequest.cs b/dotnet/src/webdriver/BiDi/Modules/Session/CapabilityRequest.cs index 1cd33a08be0ad..b449e984bb540 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Session/CapabilityRequest.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Session/CapabilityRequest.cs @@ -1,3 +1,5 @@ +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Session; public class CapabilityRequest diff --git a/dotnet/src/webdriver/BiDi/Modules/Session/EndCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Session/EndCommand.cs index 73180d2cd6bda..a41d0be7c2ded 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Session/EndCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Session/EndCommand.cs @@ -1,5 +1,7 @@ using OpenQA.Selenium.BiDi.Communication; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Session; internal class EndCommand() : Command(CommandParameters.Empty); diff --git a/dotnet/src/webdriver/BiDi/Modules/Session/NewCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Session/NewCommand.cs index 3c965e0f1d505..97759165116a2 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Session/NewCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Session/NewCommand.cs @@ -1,5 +1,7 @@ using OpenQA.Selenium.BiDi.Communication; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Session; internal class NewCommand(NewCommandParameters @params) : Command(@params); diff --git a/dotnet/src/webdriver/BiDi/Modules/Session/ProxyConfiguration.cs b/dotnet/src/webdriver/BiDi/Modules/Session/ProxyConfiguration.cs index 171dbb0ec8c2b..4243dbbaf69c1 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Session/ProxyConfiguration.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Session/ProxyConfiguration.cs @@ -1,32 +1,35 @@ using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Session; [JsonPolymorphic(TypeDiscriminatorPropertyName = "proxyType")] -[JsonDerivedType(typeof(AutodetectProxyConfiguration), "autodetect")] -[JsonDerivedType(typeof(DirectProxyConfiguration), "direct")] -[JsonDerivedType(typeof(ManualProxyConfiguration), "manual")] -[JsonDerivedType(typeof(PacProxyConfiguration), "pac")] -[JsonDerivedType(typeof(SystemProxyConfiguration), "system")] -public abstract record ProxyConfiguration; - -public record AutodetectProxyConfiguration : ProxyConfiguration; +[JsonDerivedType(typeof(Autodetect), "autodetect")] +[JsonDerivedType(typeof(Direct), "direct")] +[JsonDerivedType(typeof(Manual), "manual")] +[JsonDerivedType(typeof(Pac), "pac")] +[JsonDerivedType(typeof(System), "system")] +public abstract record ProxyConfiguration +{ + public record Autodetect : ProxyConfiguration; -public record DirectProxyConfiguration : ProxyConfiguration; + public record Direct : ProxyConfiguration; -public record ManualProxyConfiguration : ProxyConfiguration -{ - public string? FtpProxy { get; set; } + public record Manual : ProxyConfiguration + { + public string? FtpProxy { get; set; } - public string? HttpProxy { get; set; } + public string? HttpProxy { get; set; } - public string? SslProxy { get; set; } + public string? SslProxy { get; set; } - public string? SocksProxy { get; set; } + public string? SocksProxy { get; set; } - public long? SocksVersion { get; set; } -} + public long? SocksVersion { get; set; } + } -public record PacProxyConfiguration(string ProxyAutoconfigUrl) : ProxyConfiguration; + public record Pac(string ProxyAutoconfigUrl) : ProxyConfiguration; -public record SystemProxyConfiguration : ProxyConfiguration; + public record System : ProxyConfiguration; +} diff --git a/dotnet/src/webdriver/BiDi/Modules/Session/SessionModule.cs b/dotnet/src/webdriver/BiDi/Modules/Session/SessionModule.cs index 3a1ec251a2956..88503bf894cd8 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Session/SessionModule.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Session/SessionModule.cs @@ -2,6 +2,8 @@ using System.Collections.Generic; using System.Threading.Tasks; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Session; internal sealed class SessionModule(Broker broker) : Module(broker) diff --git a/dotnet/src/webdriver/BiDi/Modules/Session/StatusCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Session/StatusCommand.cs index 2c25c17e60313..8ab6de213b138 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Session/StatusCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Session/StatusCommand.cs @@ -1,5 +1,7 @@ using OpenQA.Selenium.BiDi.Communication; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Session; internal class StatusCommand() : Command(CommandParameters.Empty); diff --git a/dotnet/src/webdriver/BiDi/Modules/Session/SubscribeCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Session/SubscribeCommand.cs index 1d33180d1e3b7..607e5c69944c6 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Session/SubscribeCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Session/SubscribeCommand.cs @@ -1,6 +1,8 @@ using OpenQA.Selenium.BiDi.Communication; using System.Collections.Generic; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Session; internal class SubscribeCommand(SubscribeCommandParameters @params) : Command(@params); diff --git a/dotnet/src/webdriver/BiDi/Modules/Session/UnsubscribeCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Session/UnsubscribeCommand.cs index e96f6b4cf828d..6ca1f7517b439 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Session/UnsubscribeCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Session/UnsubscribeCommand.cs @@ -1,5 +1,7 @@ using OpenQA.Selenium.BiDi.Communication; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Session; internal class UnsubscribeCommand(SubscribeCommandParameters @params) : Command(@params); diff --git a/dotnet/src/webdriver/BiDi/Modules/Storage/DeleteCookiesCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Storage/DeleteCookiesCommand.cs index bcc27fdf9f8b3..13dcf2f30d3ba 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Storage/DeleteCookiesCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Storage/DeleteCookiesCommand.cs @@ -1,5 +1,7 @@ using OpenQA.Selenium.BiDi.Communication; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Storage; internal class DeleteCookiesCommand(DeleteCookiesCommandParameters @params) : Command(@params); diff --git a/dotnet/src/webdriver/BiDi/Modules/Storage/GetCookiesCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Storage/GetCookiesCommand.cs index c7c7c2c01dda3..06cd0c09f6925 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Storage/GetCookiesCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Storage/GetCookiesCommand.cs @@ -1,8 +1,11 @@ using OpenQA.Selenium.BiDi.Communication; using System; +using System.Collections; using System.Collections.Generic; using System.Text.Json.Serialization; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Storage; internal class GetCookiesCommand(GetCookiesCommandParameters @params) : Command(@params); @@ -21,7 +24,26 @@ public record GetCookiesOptions : CommandOptions public PartitionDescriptor? Partition { get; set; } } -public record GetCookiesResult(IReadOnlyList Cookies, PartitionKey PartitionKey); +public record GetCookiesResult : IReadOnlyList +{ + private readonly IReadOnlyList _cookies; + + internal GetCookiesResult(IReadOnlyList cookies, PartitionKey partitionKey) + { + _cookies = cookies; + PartitionKey = partitionKey; + } + + public PartitionKey PartitionKey { get; init; } + + public Network.Cookie this[int index] => _cookies[index]; + + public int Count => _cookies.Count; + + public IEnumerator GetEnumerator() => _cookies.GetEnumerator(); + + IEnumerator IEnumerable.GetEnumerator() => (_cookies as IEnumerable).GetEnumerator(); +} public class CookieFilter { @@ -45,15 +67,16 @@ public class CookieFilter } [JsonPolymorphic(TypeDiscriminatorPropertyName = "type")] -[JsonDerivedType(typeof(BrowsingContextPartitionDescriptor), "context")] -[JsonDerivedType(typeof(StorageKeyPartitionDescriptor), "storageKey")] -public abstract record PartitionDescriptor; - -public record BrowsingContextPartitionDescriptor(BrowsingContext.BrowsingContext Context) : PartitionDescriptor; - -public record StorageKeyPartitionDescriptor : PartitionDescriptor +[JsonDerivedType(typeof(Context), "context")] +[JsonDerivedType(typeof(StorageKey), "storageKey")] +public abstract record PartitionDescriptor { - public string? UserContext { get; set; } + public record Context([property: JsonPropertyName("context")] BrowsingContext.BrowsingContext Descriptor) : PartitionDescriptor; + + public record StorageKey : PartitionDescriptor + { + public string? UserContext { get; set; } - public string? SourceOrigin { get; set; } + public string? SourceOrigin { get; set; } + } } diff --git a/dotnet/src/webdriver/BiDi/Modules/Storage/PartitionKey.cs b/dotnet/src/webdriver/BiDi/Modules/Storage/PartitionKey.cs index 2d9ac37a41a22..30200db4b5f60 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Storage/PartitionKey.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Storage/PartitionKey.cs @@ -1,8 +1,10 @@ +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Storage; public class PartitionKey { - public string? UserContext { get; set; } + public Browser.UserContext? UserContext { get; set; } public string? SourceOrigin { get; set; } } diff --git a/dotnet/src/webdriver/BiDi/Modules/Storage/SetCookieCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Storage/SetCookieCommand.cs index f0dcf22904eba..7e7cb79824cbc 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Storage/SetCookieCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Storage/SetCookieCommand.cs @@ -1,6 +1,8 @@ using OpenQA.Selenium.BiDi.Communication; using System; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Storage; internal class SetCookieCommand(SetCookieCommandParameters @params) : Command(@params); diff --git a/dotnet/src/webdriver/BiDi/Modules/Storage/StorageModule.cs b/dotnet/src/webdriver/BiDi/Modules/Storage/StorageModule.cs index 249d7d37634d1..71969d9914c2a 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Storage/StorageModule.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Storage/StorageModule.cs @@ -1,6 +1,8 @@ using OpenQA.Selenium.BiDi.Communication; using System.Threading.Tasks; +#nullable enable + namespace OpenQA.Selenium.BiDi.Modules.Storage; public class StorageModule(Broker broker) : Module(broker) diff --git a/dotnet/src/webdriver/BiDi/Subscription.cs b/dotnet/src/webdriver/BiDi/Subscription.cs index 21995fee00dcf..8870b07fb18bf 100644 --- a/dotnet/src/webdriver/BiDi/Subscription.cs +++ b/dotnet/src/webdriver/BiDi/Subscription.cs @@ -3,22 +3,24 @@ using System.Collections.Generic; using System.Threading.Tasks; +#nullable enable + namespace OpenQA.Selenium.BiDi; public class Subscription : IAsyncDisposable { - private readonly Broker Broker; + private readonly Broker _broker; private readonly Communication.EventHandler _eventHandler; internal Subscription(Broker broker, Communication.EventHandler eventHandler) { - Broker = broker; + _broker = broker; _eventHandler = eventHandler; } public async Task UnsubscribeAsync() { - await Broker.UnsubscribeAsync(_eventHandler).ConfigureAwait(false); + await _broker.UnsubscribeAsync(_eventHandler).ConfigureAwait(false); } public async ValueTask DisposeAsync() diff --git a/dotnet/src/webdriver/BiDi/WebDriver.Extensions.cs b/dotnet/src/webdriver/BiDi/WebDriver.Extensions.cs index c039dd4087740..a3e7df31cec50 100644 --- a/dotnet/src/webdriver/BiDi/WebDriver.Extensions.cs +++ b/dotnet/src/webdriver/BiDi/WebDriver.Extensions.cs @@ -1,6 +1,8 @@ using OpenQA.Selenium.BiDi.Modules.BrowsingContext; using System.Threading.Tasks; +#nullable enable + namespace OpenQA.Selenium.BiDi; public static class WebDriverExtensions diff --git a/dotnet/test/common/BiDi/BiDiFixture.cs b/dotnet/test/common/BiDi/BiDiFixture.cs new file mode 100644 index 0000000000000..b7bf01de81b52 --- /dev/null +++ b/dotnet/test/common/BiDi/BiDiFixture.cs @@ -0,0 +1,54 @@ +using NUnit.Framework; +using OpenQA.Selenium.Environment; +using System.Threading.Tasks; + +namespace OpenQA.Selenium.BiDi; + +[Parallelizable(ParallelScope.All)] +[FixtureLifeCycle(LifeCycle.InstancePerTestCase)] +public class BiDiTestFixture +{ + protected IWebDriver driver; + protected BiDi bidi; + protected Modules.BrowsingContext.BrowsingContext context; + + protected UrlBuilder UrlBuilder { get; } = EnvironmentManager.Instance.UrlBuilder; + + [SetUp] + public async Task BiDiSetUp() + { + var options = new BiDiEnabledDriverOptions() + { + UseWebSocketUrl = true, + UnhandledPromptBehavior = UnhandledPromptBehavior.Ignore, + }; + + driver = EnvironmentManager.Instance.CreateDriverInstance(options); + + context = await driver.AsBiDiContextAsync(); + bidi = context.BiDi; + } + + [TearDown] + public async Task BiDiTearDown() + { + if (bidi is not null) + { + await bidi.DisposeAsync(); + } + + driver?.Dispose(); + } + + public class BiDiEnabledDriverOptions : DriverOptions + { + public override void AddAdditionalOption(string capabilityName, object capabilityValue) + { + } + + public override ICapabilities ToCapabilities() + { + return null; + } + } +} diff --git a/dotnet/test/common/BiDi/Browser/BrowserTest.cs b/dotnet/test/common/BiDi/Browser/BrowserTest.cs new file mode 100644 index 0000000000000..74bbd956848a1 --- /dev/null +++ b/dotnet/test/common/BiDi/Browser/BrowserTest.cs @@ -0,0 +1,43 @@ +using NUnit.Framework; +using System.Threading.Tasks; + +namespace OpenQA.Selenium.BiDi.Browser; + +class BrowserTest : BiDiTestFixture +{ + [Test] + public async Task CanCreateUserContext() + { + var userContext = await bidi.Browser.CreateUserContextAsync(); + + Assert.That(userContext, Is.Not.Null); + } + + [Test] + public async Task CanGetUserContexts() + { + var userContext1 = await bidi.Browser.CreateUserContextAsync(); + var userContext2 = await bidi.Browser.CreateUserContextAsync(); + + var userContexts = await bidi.Browser.GetUserContextsAsync(); + + Assert.That(userContexts, Is.Not.Null); + Assert.That(userContexts.Count, Is.GreaterThanOrEqualTo(2)); + Assert.That(userContexts, Does.Contain(userContext1)); + Assert.That(userContexts, Does.Contain(userContext2)); + } + + [Test] + public async Task CanRemoveUserContext() + { + var userContext1 = await bidi.Browser.CreateUserContextAsync(); + var userContext2 = await bidi.Browser.CreateUserContextAsync(); + + await userContext2.UserContext.RemoveAsync(); + + var userContexts = await bidi.Browser.GetUserContextsAsync(); + + Assert.That(userContexts, Does.Contain(userContext1)); + Assert.That(userContexts, Does.Not.Contain(userContext2)); + } +} diff --git a/dotnet/test/common/BiDi/BrowsingContext/BrowsingContextTest.cs b/dotnet/test/common/BiDi/BrowsingContext/BrowsingContextTest.cs new file mode 100644 index 0000000000000..510daceddfb11 --- /dev/null +++ b/dotnet/test/common/BiDi/BrowsingContext/BrowsingContextTest.cs @@ -0,0 +1,301 @@ +using NUnit.Framework; +using OpenQA.Selenium.BiDi.Modules.BrowsingContext; +using System.Linq; +using System.Threading.Tasks; + +namespace OpenQA.Selenium.BiDi.BrowsingContext; + +class BrowsingContextTest : BiDiTestFixture +{ + [Test] + public async Task CanCreateNewTab() + { + var tab = await bidi.BrowsingContext.CreateAsync(ContextType.Tab); + + Assert.That(tab, Is.Not.Null); + } + + [Test] + public async Task CanCreateNewTabWithReferencedContext() + { + var tab = await bidi.BrowsingContext.CreateAsync(ContextType.Tab, new() + { + ReferenceContext = context + }); + + Assert.That(tab, Is.Not.Null); + } + + [Test] + public async Task CanCreateNewWindow() + { + var window = await bidi.BrowsingContext.CreateAsync(ContextType.Window); + + Assert.That(window, Is.Not.Null); + } + + [Test] + public async Task CanCreateNewWindowWithReferencedContext() + { + var window = await bidi.BrowsingContext.CreateAsync(ContextType.Window, new() + { + ReferenceContext = context + }); + + Assert.That(window, Is.Not.Null); + } + + [Test] + public async Task CanCreateContextWithAllParameters() + { + var userContext = await bidi.Browser.CreateUserContextAsync(); + + var window = await bidi.BrowsingContext.CreateAsync(ContextType.Window, new() + { + ReferenceContext = context, + UserContext = userContext.UserContext, + Background = true + }); + + Assert.That(window, Is.Not.Null); + } + + [Test] + public async Task CanNavigateToUrl() + { + var info = await context.NavigateAsync(UrlBuilder.WhereIs("/bidi/logEntryAdded.html")); + + Assert.That(info.Url, Does.Contain("/bidi/logEntryAdded.html")); + } + + [Test] + public async Task CanNavigateToUrlWithReadinessState() + { + var info = await context.NavigateAsync(UrlBuilder.WhereIs("/bidi/logEntryAdded.html"), new() + { + Wait = ReadinessState.Complete + }); + + Assert.That(info, Is.Not.Null); + Assert.That(info.Url, Does.Contain("/bidi/logEntryAdded.html")); + } + + [Test] + public async Task CanGetTreeWithChild() + { + await context.NavigateAsync(UrlBuilder.WhereIs("iframes.html"), new() { Wait = ReadinessState.Complete }); + + var tree = await context.GetTreeAsync(); + + Assert.That(tree, Has.Count.EqualTo(1)); + Assert.That(tree[0].Context, Is.EqualTo(context)); + Assert.That(tree[0].Children, Has.Count.EqualTo(1)); + Assert.That(tree[0].Children[0].Url, Does.Contain("formPage.html")); + } + + [Test] + public async Task CanGetTreeWithDepth() + { + await context.NavigateAsync(UrlBuilder.WhereIs("iframes.html"), new() { Wait = ReadinessState.Complete }); + + var tree = await context.GetTreeAsync(new() { MaxDepth = 0 }); + + Assert.That(tree, Has.Count.EqualTo(1)); + Assert.That(tree[0].Context, Is.EqualTo(context)); + Assert.That(tree[0].Children, Is.Null); + } + + [Test] + public async Task CanGetTreeTopLevel() + { + var window1 = await bidi.BrowsingContext.CreateAsync(ContextType.Window); + var window2 = await bidi.BrowsingContext.CreateAsync(ContextType.Window); + + var tree = await bidi.BrowsingContext.GetTreeAsync(); + + Assert.That(tree, Has.Count.GreaterThanOrEqualTo(2)); + } + + [Test] + public async Task CanCloseWindow() + { + var window = await bidi.BrowsingContext.CreateAsync(ContextType.Window); + + await window.CloseAsync(); + + var tree = await bidi.BrowsingContext.GetTreeAsync(); + + Assert.That(tree.Select(i => i.Context), Does.Not.Contain(window)); + } + + [Test] + public async Task CanCloseTab() + { + var tab = await bidi.BrowsingContext.CreateAsync(ContextType.Tab); + + await tab.CloseAsync(); + + var tree = await bidi.BrowsingContext.GetTreeAsync(); + + Assert.That(tree.Select(i => i.Context), Does.Not.Contain(tab)); + } + + [Test] + public async Task CanActivate() + { + await context.ActivateAsync(); + + // TODO: Add assertion when https://w3c.github.io/webdriver-bidi/#type-browser-ClientWindowInfo is implemented + } + + [Test] + public async Task CanReload() + { + string url = UrlBuilder.WhereIs("/bidi/logEntryAdded.html"); + + await context.NavigateAsync(url, new() { Wait = ReadinessState.Complete }); + + var info = await context.ReloadAsync(); + + Assert.That(info, Is.Not.Null); + Assert.That(info.Url, Does.Contain("/bidi/logEntryAdded.html")); + } + + [Test] + public async Task CanReloadWithReadinessState() + { + string url = UrlBuilder.WhereIs("/bidi/logEntryAdded.html"); + + await context.NavigateAsync(url, new() { Wait = ReadinessState.Complete }); + + var info = await context.ReloadAsync(new() + { + Wait = ReadinessState.Complete + }); + + Assert.That(info, Is.Not.Null); + Assert.That(info.Url, Does.Contain("/bidi/logEntryAdded.html")); + } + + [Test] + public async Task CanHandleUserPrompt() + { + await context.NavigateAsync(UrlBuilder.WhereIs("alerts.html"), new() { Wait = ReadinessState.Complete }); + + driver.FindElement(By.Id("alert")).Click(); + + await context.HandleUserPromptAsync(); + } + + [Test] + public async Task CanAcceptUserPrompt() + { + await context.NavigateAsync(UrlBuilder.WhereIs("alerts.html"), new() { Wait = ReadinessState.Complete }); + + driver.FindElement(By.Id("alert")).Click(); + + await context.HandleUserPromptAsync(new() + { + Accept = true + }); + } + + [Test] + public async Task CanDismissUserPrompt() + { + await context.NavigateAsync(UrlBuilder.WhereIs("alerts.html"), new() { Wait = ReadinessState.Complete }); + + driver.FindElement(By.Id("alert")).Click(); + + await context.HandleUserPromptAsync(new() + { + Accept = false + }); + } + + [Test] + public async Task CanPassUserTextToPrompt() + { + await context.NavigateAsync(UrlBuilder.WhereIs("alerts.html"), new() { Wait = ReadinessState.Complete }); + + driver.FindElement(By.Id("alert")).Click(); + + await context.HandleUserPromptAsync(new() + { + UserText = "Selenium automates browsers" + }); + } + + [Test] + public async Task CanCaptureScreenshot() + { + var screenshot = await context.CaptureScreenshotAsync(); + + Assert.That(screenshot, Is.Not.Null); + Assert.That(screenshot.Data, Is.Not.Empty); + } + + [Test] + public async Task CanCaptureScreenshotWithParameters() + { + var screenshot = await context.CaptureScreenshotAsync(new() + { + Origin = Origin.Document, + Clip = new ClipRectangle.Box(5, 5, 10, 10) + }); + + Assert.That(screenshot, Is.Not.Null); + Assert.That(screenshot.Data, Is.Not.Empty); + } + + [Test] + public async Task CanCaptureScreenshotOfViewport() + { + var screenshot = await context.CaptureScreenshotAsync(new() + { + Origin = Origin.Viewport, + Clip = new ClipRectangle.Box(5, 5, 10, 10) + }); + + Assert.That(screenshot, Is.Not.Null); + Assert.That(screenshot.Data, Is.Not.Empty); + } + + [Test] + public async Task CanCaptureScreenshotOfElement() + { + await context.NavigateAsync(UrlBuilder.WhereIs("formPage.html"), new() { Wait = ReadinessState.Complete }); + + var nodes = await context.LocateNodesAsync(new Locator.Css("#checky")); + + var screenshot = await context.CaptureScreenshotAsync(new() + { + // TODO: Seems Node implements ISharedReference + Clip = new ClipRectangle.Element(new Modules.Script.SharedReference(nodes[0].SharedId)) + }); + + Assert.That(screenshot, Is.Not.Null); + Assert.That(screenshot.Data, Is.Not.Empty); + } + + [Test] + public async Task CanSetViewport() + { + await context.SetViewportAsync(new() { Viewport = new(250, 300) }); + } + + [Test] + public async Task CanSetViewportWithDevicePixelRatio() + { + await context.SetViewportAsync(new() { Viewport = new(250, 300), DevicePixelRatio = 5 }); + } + + [Test] + public async Task CanPrintPage() + { + var pdf = await context.PrintAsync(); + + Assert.That(pdf, Is.Not.Null); + Assert.That(pdf.Data, Is.Not.Empty); + } +} diff --git a/dotnet/test/common/BiDi/Input/CombinedInputActionsTest.cs b/dotnet/test/common/BiDi/Input/CombinedInputActionsTest.cs new file mode 100644 index 0000000000000..cb832cdeb9e41 --- /dev/null +++ b/dotnet/test/common/BiDi/Input/CombinedInputActionsTest.cs @@ -0,0 +1,55 @@ +using NUnit.Framework; +using OpenQA.Selenium.BiDi.Modules.BrowsingContext; +using OpenQA.Selenium.BiDi.Modules.Input; +using System.Threading.Tasks; + +namespace OpenQA.Selenium.BiDi.Input; + +class CombinedInputActionsTest : BiDiTestFixture +{ + //[Test] + public async Task Paint() + { + driver.Url = "https://kleki.com/"; + + await Task.Delay(3000); + + await context.Input.PerformActionsAsync([new PointerActions { + new Pointer.Move(300, 300), + new Pointer.Down(0), + new Pointer.Move(400, 400) { Duration = 2000, Width = 1, Twist = 1 }, + new Pointer.Up(0), + }]); + + await context.Input.PerformActionsAsync([new KeyActions { + new Key.Down('U'), + new Key.Up('U'), + new Pause { Duration = 3000 } + }]); + + await context.Input.PerformActionsAsync([new PointerActions { + new Pointer.Move(300, 300), + new Pointer.Down(0), + new Pointer.Move(400, 400) { Duration = 2000 }, + new Pointer.Up(0), + }]); + + await Task.Delay(3000); + } + + [Test] + public async Task TestShiftClickingOnMultiSelectionList() + { + driver.Url = UrlBuilder.WhereIs("formSelectionPage.html"); + + var options = await context.LocateNodesAsync(new Locator.Css("option")); + + await context.Input.PerformActionsAsync([ + new PointerActions + { + new Pointer.Down(1), + new Pointer.Up(1), + } + ]); + } +} diff --git a/dotnet/test/common/BiDi/Input/DefaultKeyboardTest.cs b/dotnet/test/common/BiDi/Input/DefaultKeyboardTest.cs new file mode 100644 index 0000000000000..f226719e17c0a --- /dev/null +++ b/dotnet/test/common/BiDi/Input/DefaultKeyboardTest.cs @@ -0,0 +1,88 @@ +//using NUnit.Framework; +//using OpenQA.Selenium.BiDi.Modules.BrowsingContext; +//using OpenQA.Selenium.BiDi.Modules.Input; +//using System.Threading.Tasks; + +//namespace OpenQA.Selenium.BiDi.Input; + +//class DefaultKeyboardTest : BiDiTestFixture +//{ +// [Test] +// public async Task TestBasicKeyboardInput() +// { +// driver.Url = UrlBuilder.WhereIs("single_text_input.html"); + +// var input = (await context.LocateNodesAsync(new Locator.Css("#textInput")))[0]; + +// await context.Input.PerformActionsAsync(new SequentialSourceActions() +// .PointerMove(0, 0, new() { Origin = new Modules.Input.Origin.Element(new Modules.Script.SharedReference(input.SharedId)) }) +// .PointerDown(0) +// .PointerUp(0) +// .Type("abc def")); + +// Assert.That(driver.FindElement(By.Id("textInput")).GetAttribute("value"), Is.EqualTo("abc def")); +// } + +// [Test] +// public async Task TestSendingKeyDownOnly() +// { +// driver.Url = UrlBuilder.WhereIs("key_logger.html"); + +// var input = (await context.LocateNodesAsync(new Locator.Css("#theworks")))[0]; + +// await context.Input.PerformActionsAsync(new SequentialSourceActions() +// .PointerMove(0, 0, new() { Origin = new Modules.Input.Origin.Element(new Modules.Script.SharedReference(input.SharedId)) }) +// .PointerDown(0) +// .PointerUp(0) +// .KeyDown(Key.Shift)); + +// Assert.That(driver.FindElement(By.Id("result")).Text, Does.EndWith("keydown")); +// } + +// [Test] +// public async Task TestSendingKeyUp() +// { +// driver.Url = UrlBuilder.WhereIs("key_logger.html"); + +// var input = (await context.LocateNodesAsync(new Locator.Css("#theworks")))[0]; + +// await context.Input.PerformActionsAsync(new SequentialSourceActions() +// .PointerMove(0, 0, new() { Origin = new Modules.Input.Origin.Element(new Modules.Script.SharedReference(input.SharedId)) }) +// .PointerDown(0) +// .PointerUp(0) +// .KeyDown(Key.Shift) +// .KeyUp(Key.Shift)); + +// Assert.That(driver.FindElement(By.Id("result")).Text, Does.EndWith("keyup")); +// } + +// [Test] +// public async Task TestSendingKeysWithShiftPressed() +// { +// driver.Url = UrlBuilder.WhereIs("key_logger.html"); + +// var input = (await context.LocateNodesAsync(new Locator.Css("#theworks")))[0]; + +// await context.Input.PerformActionsAsync(new SequentialSourceActions() +// .PointerMove(0, 0, new() { Origin = new Modules.Input.Origin.Element(new Modules.Script.SharedReference(input.SharedId)) }) +// .PointerDown(0) +// .PointerUp(0) +// .KeyDown(Key.Shift) +// .Type("ab") +// .KeyUp(Key.Shift)); + +// Assert.That(driver.FindElement(By.Id("result")).Text, Does.EndWith("keydown keydown keypress keyup keydown keypress keyup keyup")); +// Assert.That(driver.FindElement(By.Id("theworks")).GetAttribute("value"), Is.EqualTo("AB")); +// } + +// [Test] +// public async Task TestSendingKeysToActiveElement() +// { +// driver.Url = UrlBuilder.WhereIs("bodyTypingTest.html"); + +// await context.Input.PerformActionsAsync(new SequentialSourceActions().Type("ab")); + +// Assert.That(driver.FindElement(By.Id("body_result")).Text, Does.EndWith("keypress keypress")); +// Assert.That(driver.FindElement(By.Id("result")).Text, Is.EqualTo(" ")); +// } +//} diff --git a/dotnet/test/common/BiDi/Input/DefaultMouseTest.cs b/dotnet/test/common/BiDi/Input/DefaultMouseTest.cs new file mode 100644 index 0000000000000..c7408a83101f1 --- /dev/null +++ b/dotnet/test/common/BiDi/Input/DefaultMouseTest.cs @@ -0,0 +1,49 @@ +//using NUnit.Framework; +//using OpenQA.Selenium.BiDi.Modules.BrowsingContext; +//using OpenQA.Selenium.BiDi.Modules.Input; +//using System.Threading.Tasks; + +//namespace OpenQA.Selenium.BiDi.Input; + +//class DefaultMouseTest : BiDiTestFixture +//{ +// [Test] +// public async Task PerformDragAndDropWithMouse() +// { +// driver.Url = UrlBuilder.WhereIs("draggableLists.html"); + +// await context.Input.PerformActionsAsync([ +// new KeyActions +// { +// Actions = +// { +// new Key.Down('A'), +// new Key.Up('B') +// } +// } +// ]); + +// await context.Input.PerformActionsAsync([new KeyActions +// { +// new Key.Down('A'), +// new Key.Down('B'), +// new Pause() +// }]); + +// await context.Input.PerformActionsAsync([new PointerActions +// { +// new Pointer.Down(0), +// new Pointer.Up(0), +// }]); +// } + +// //[Test] +// public async Task PerformCombined() +// { +// await context.NavigateAsync("https://nuget.org", new() { Wait = ReadinessState.Complete }); + +// await context.Input.PerformActionsAsync(new SequentialSourceActions().Type("Hello").Pause(2000).KeyDown(Key.Shift).Type("World")); + +// await Task.Delay(3000); +// } +//} diff --git a/dotnet/test/common/BiDi/Log/LogTest.cs b/dotnet/test/common/BiDi/Log/LogTest.cs new file mode 100644 index 0000000000000..f67621bfc3b43 --- /dev/null +++ b/dotnet/test/common/BiDi/Log/LogTest.cs @@ -0,0 +1,75 @@ +using NUnit.Framework; +using OpenQA.Selenium.BiDi.Modules.Log; +using System; +using System.Threading.Tasks; + +namespace OpenQA.Selenium.BiDi.Log; + +class LogTest : BiDiTestFixture +{ + [Test] + public async Task CanListenToConsoleLog() + { + TaskCompletionSource tcs = new(); + + await using var subscription = await context.Log.OnEntryAddedAsync(tcs.SetResult); + + driver.Url = UrlBuilder.WhereIs("bidi/logEntryAdded.html"); + driver.FindElement(By.Id("consoleLog")).Click(); + + var logEntry = await tcs.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + Assert.That(logEntry, Is.Not.Null); + Assert.That(logEntry.Source, Is.Not.Null); + Assert.That(logEntry.Source.Context, Is.EqualTo(context)); + Assert.That(logEntry.Source.Realm, Is.Not.Null); + Assert.That(logEntry.Text, Is.EqualTo("Hello, world!")); + Assert.That(logEntry.Level, Is.EqualTo(Level.Info)); + Assert.That(logEntry, Is.AssignableFrom()); + + var consoleLogEntry = logEntry as Entry.Console; + + Assert.That(consoleLogEntry.Method, Is.EqualTo("log")); + + Assert.That(consoleLogEntry.Args, Is.Not.Null); + Assert.That(consoleLogEntry.Args, Has.Count.EqualTo(1)); + Assert.That(consoleLogEntry.Args[0], Is.AssignableFrom()); + } + + [Test] + public async Task CanListenToJavascriptLog() + { + TaskCompletionSource tcs = new(); + + await using var subscription = await context.Log.OnEntryAddedAsync(tcs.SetResult); + + driver.Url = UrlBuilder.WhereIs("bidi/logEntryAdded.html"); + driver.FindElement(By.Id("jsException")).Click(); + + var logEntry = await tcs.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + Assert.That(logEntry, Is.Not.Null); + Assert.That(logEntry.Source, Is.Not.Null); + Assert.That(logEntry.Source.Context, Is.EqualTo(context)); + Assert.That(logEntry.Source.Realm, Is.Not.Null); + Assert.That(logEntry.Text, Is.EqualTo("Error: Not working")); + Assert.That(logEntry.Level, Is.EqualTo(Level.Error)); + Assert.That(logEntry, Is.AssignableFrom()); + } + + [Test] + public async Task CanRetrieveStacktrace() + { + TaskCompletionSource tcs = new(); + + await using var subscription = await bidi.Log.OnEntryAddedAsync(tcs.SetResult); + + driver.Url = UrlBuilder.WhereIs("bidi/logEntryAdded.html"); + driver.FindElement(By.Id("logWithStacktrace")).Click(); + + var logEntry = await tcs.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + Assert.That(logEntry, Is.Not.Null); + Assert.That(logEntry.StackTrace, Is.Not.Null); + } +} diff --git a/dotnet/test/common/BiDi/Network/NetworkEventsTest.cs b/dotnet/test/common/BiDi/Network/NetworkEventsTest.cs new file mode 100644 index 0000000000000..230351ba436df --- /dev/null +++ b/dotnet/test/common/BiDi/Network/NetworkEventsTest.cs @@ -0,0 +1,132 @@ +using NUnit.Framework; +using OpenQA.Selenium.BiDi.Modules.BrowsingContext; +using OpenQA.Selenium.BiDi.Modules.Network; +using System; +using System.Threading.Tasks; + +namespace OpenQA.Selenium.BiDi.Network; + +class NetworkEventsTest : BiDiTestFixture +{ + [Test] + public async Task CanListenToBeforeRequestSentEvent() + { + TaskCompletionSource tcs = new(); + + await using var subscription = await context.Network.OnBeforeRequestSentAsync(tcs.SetResult); + + await context.NavigateAsync(UrlBuilder.WhereIs("bidi/logEntryAdded.html"), new() { Wait = ReadinessState.Complete }); + + var req = await tcs.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + Assert.That(req.Context, Is.EqualTo(context)); + Assert.That(req.Request, Is.Not.Null); + Assert.That(req.Request.Method, Is.EqualTo("GET")); + Assert.That(req.Request.Url, Does.Contain("bidi/logEntryAdded.html")); + Assert.That(req.Initiator.Type, Is.EqualTo(InitiatorType.Other)); + } + + [Test] + public async Task CanListenToResponseStartedEvent() + { + TaskCompletionSource tcs = new(); + + await using var subscription = await context.Network.OnResponseStartedAsync(tcs.SetResult); + + await context.NavigateAsync(UrlBuilder.WhereIs("bidi/logEntryAdded.html"), new() { Wait = ReadinessState.Complete }); + + var res = await tcs.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + Assert.That(res.Context, Is.EqualTo(context)); + Assert.That(res.Request, Is.Not.Null); + Assert.That(res.Request.Method, Is.EqualTo("GET")); + Assert.That(res.Request.Url, Does.Contain("bidi/logEntryAdded.html")); + Assert.That(res.Response.Headers, Is.Not.Empty); + Assert.That(res.Response.Status, Is.EqualTo(200)); + } + + [Test] + public async Task CanListenToResponseCompletedEvent() + { + TaskCompletionSource tcs = new(); + + await using var subscription = await context.Network.OnResponseCompletedAsync(tcs.SetResult); + + await context.NavigateAsync(UrlBuilder.WhereIs("bidi/logEntryAdded.html"), new() { Wait = ReadinessState.Complete }); + + var res = await tcs.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + Assert.That(res.Context, Is.EqualTo(context)); + Assert.That(res.Request, Is.Not.Null); + Assert.That(res.Request.Method, Is.EqualTo("GET")); + Assert.That(res.Request.Url, Does.Contain("bidi/logEntryAdded.html")); + Assert.That(res.Response.Url, Does.Contain("bidi/logEntryAdded.html")); + Assert.That(res.Response.Headers, Is.Not.Empty); + Assert.That(res.Response.Status, Is.EqualTo(200)); + } + + [Test] + public async Task CanListenToBeforeRequestSentEventWithCookie() + { + TaskCompletionSource tcs = new(); + + await context.NavigateAsync(UrlBuilder.WhereIs("bidi/logEntryAdded.html"), new() { Wait = ReadinessState.Complete }); + + driver.Manage().Cookies.AddCookie(new("foo", "bar")); + + await using var subscription = await bidi.Network.OnBeforeRequestSentAsync(tcs.SetResult); + + await context.ReloadAsync(); + + var req = await tcs.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + Assert.That(req.Request.Cookies.Count, Is.EqualTo(1)); + Assert.That(req.Request.Cookies[0].Name, Is.EqualTo("foo")); + Assert.That((req.Request.Cookies[0].Value as BytesValue.String).Value, Is.EqualTo("bar")); + } + + [Test] + [IgnoreBrowser(Selenium.Browser.Chrome)] + [IgnoreBrowser(Selenium.Browser.Edge)] + public async Task CanListenToOnAuthRequiredEvent() + { + TaskCompletionSource tcs = new(); + + await using var subscription = await context.Network.OnAuthRequiredAsync(tcs.SetResult); + + driver.Url = UrlBuilder.WhereIs("basicAuth"); + + var res = await tcs.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + Assert.That(res.Context, Is.EqualTo(context)); + Assert.That(res.Request, Is.Not.Null); + Assert.That(res.Request.Method, Is.EqualTo("GET")); + Assert.That(res.Request.Url, Does.Contain("basicAuth")); + Assert.That(res.Response.Headers, Is.Not.Null.And.Count.GreaterThanOrEqualTo(1)); + Assert.That(res.Response.Status, Is.EqualTo(401)); + } + + [Test] + public async Task CanListenToFetchError() + { + TaskCompletionSource tcs = new(); + + await using var subscription = await context.Network.OnFetchErrorAsync(tcs.SetResult); + + try + { + await context.NavigateAsync("https://not_a_valid_url.test", new() { Wait = ReadinessState.Complete }); + } + catch (Exception) { } + + var res = await tcs.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + Assert.That(res.Context, Is.EqualTo(context)); + Assert.That(res.Request, Is.Not.Null); + Assert.That(res.Request.Method, Is.EqualTo("GET")); + Assert.That(res.Request.Url, Does.Contain("https://not_a_valid_url.test")); + Assert.That(res.Request.Headers.Count, Is.GreaterThanOrEqualTo(1)); + Assert.That(res.Navigation, Is.Not.Null); + Assert.That(res.ErrorText, Does.Contain("net::ERR_NAME_NOT_RESOLVED").Or.Contain("NS_ERROR_UNKNOWN_HOST")); + } +} diff --git a/dotnet/test/common/BiDi/Network/NetworkTest.cs b/dotnet/test/common/BiDi/Network/NetworkTest.cs new file mode 100644 index 0000000000000..b743378c385ea --- /dev/null +++ b/dotnet/test/common/BiDi/Network/NetworkTest.cs @@ -0,0 +1,195 @@ +using NUnit.Framework; +using OpenQA.Selenium.BiDi.Modules.BrowsingContext; +using OpenQA.Selenium.BiDi.Modules.Network; +using System.Threading.Tasks; + +namespace OpenQA.Selenium.BiDi.Network; + +class NetworkTest : BiDiTestFixture +{ + [Test] + public async Task CanAddIntercept() + { + await using var intercept = await bidi.Network.InterceptRequestAsync(e => Task.CompletedTask); + + Assert.That(intercept, Is.Not.Null); + } + + [Test] + public async Task CanAddInterceptStringUrlPattern() + { + await using var intercept = await bidi.Network.InterceptRequestAsync(e => Task.CompletedTask, new() + { + UrlPatterns = [ + new UrlPattern.String("http://localhost:4444"), + "http://localhost:4444/" + ] + }); + + Assert.That(intercept, Is.Not.Null); + } + + [Test] + public async Task CanAddInterceptUrlPattern() + { + await using var intercept = await bidi.Network.InterceptRequestAsync(e => Task.CompletedTask, interceptOptions: new() + { + UrlPatterns = [new UrlPattern.Pattern() + { + Hostname = "localhost", + Protocol = "http" + }] + }); + + Assert.That(intercept, Is.Not.Null); + } + + [Test] + public async Task CanContinueRequest() + { + int times = 0; + await using var intercept = await bidi.Network.InterceptRequestAsync(async e => + { + times++; + + await e.Request.Request.ContinueAsync(); + }); + + await context.NavigateAsync(UrlBuilder.WhereIs("bidi/logEntryAdded.html"), new() { Wait = ReadinessState.Complete }); + + Assert.That(intercept, Is.Not.Null); + Assert.That(times, Is.GreaterThan(0)); + } + + [Test] + public async Task CanContinueResponse() + { + int times = 0; + + await using var intercept = await bidi.Network.InterceptResponseAsync(async e => + { + times++; + + await e.Request.Request.ContinueResponseAsync(); + }); + + await context.NavigateAsync(UrlBuilder.WhereIs("bidi/logEntryAdded.html"), new() { Wait = ReadinessState.Complete }); + + Assert.That(intercept, Is.Not.Null); + Assert.That(times, Is.GreaterThan(0)); + } + + [Test] + public async Task CanProvideResponse() + { + int times = 0; + + await using var intercept = await bidi.Network.InterceptRequestAsync(async e => + { + times++; + + await e.Request.Request.ProvideResponseAsync(); + }); + + await context.NavigateAsync(UrlBuilder.WhereIs("bidi/logEntryAdded.html"), new() { Wait = ReadinessState.Complete }); + + Assert.That(intercept, Is.Not.Null); + Assert.That(times, Is.GreaterThan(0)); + } + + [Test] + public async Task CanProvideResponseWithParameters() + { + int times = 0; + + await using var intercept = await bidi.Network.InterceptRequestAsync(async e => + { + times++; + + await e.Request.Request.ProvideResponseAsync(new() { Body = """ + + + Hello + + + + + """ }); + }); + + await context.NavigateAsync(UrlBuilder.WhereIs("bidi/logEntryAdded.html"), new() { Wait = ReadinessState.Complete }); + + Assert.That(intercept, Is.Not.Null); + Assert.That(times, Is.GreaterThan(0)); + Assert.That(driver.Title, Is.EqualTo("Hello")); + } + + [Test] + public async Task CanRemoveIntercept() + { + var intercept = await bidi.Network.InterceptRequestAsync(_ => Task.CompletedTask); + + await intercept.RemoveAsync(); + + // or + + intercept = await context.Network.InterceptRequestAsync(_ => Task.CompletedTask); + + await intercept.DisposeAsync(); + } + + [Test] + public async Task CanContinueWithAuthCredentials() + { + await using var intercept = await bidi.Network.InterceptAuthAsync(async e => + { + //TODO Seems it would be better to have method which takes abstract options + await e.Request.Request.ContinueWithAuthAsync(new AuthCredentials.Basic("test", "test")); + }); + + await context.NavigateAsync(UrlBuilder.WhereIs("basicAuth"), new() { Wait = ReadinessState.Complete }); + + Assert.That(driver.FindElement(By.CssSelector("h1")).Text, Is.EqualTo("authorized")); + } + + [Test] + [IgnoreBrowser(Selenium.Browser.Firefox)] + public async Task CanContinueWithDefaultCredentials() + { + await using var intercept = await bidi.Network.InterceptAuthAsync(async e => + { + await e.Request.Request.ContinueWithAuthAsync(new ContinueWithDefaultAuthOptions()); + }); + + var action = async () => await context.NavigateAsync(UrlBuilder.WhereIs("basicAuth"), new() { Wait = ReadinessState.Complete }); + + Assert.That(action, Throws.TypeOf().With.Message.Contain("net::ERR_INVALID_AUTH_CREDENTIALS")); + } + + [Test] + [IgnoreBrowser(Selenium.Browser.Firefox)] + public async Task CanContinueWithCanceledCredentials() + { + await using var intercept = await bidi.Network.InterceptAuthAsync(async e => + { + await e.Request.Request.ContinueWithAuthAsync(new ContinueWithCancelledAuthOptions()); + }); + + var action = async () => await context.NavigateAsync(UrlBuilder.WhereIs("basicAuth"), new() { Wait = ReadinessState.Complete }); + + Assert.That(action, Throws.TypeOf().With.Message.Contain("net::ERR_HTTP_RESPONSE_CODE_FAILURE")); + } + + [Test] + public async Task CanFailRequest() + { + await using var intercept = await bidi.Network.InterceptRequestAsync(async e => + { + await e.Request.Request.FailAsync(); + }); + + var action = async () => await context.NavigateAsync(UrlBuilder.WhereIs("basicAuth"), new() { Wait = ReadinessState.Complete }); + + Assert.That(action, Throws.TypeOf().With.Message.Contain("net::ERR_FAILED").Or.Message.Contain("NS_ERROR_ABORT")); + } +} diff --git a/dotnet/test/common/BiDi/Script/CallFunctionParameterTest.cs b/dotnet/test/common/BiDi/Script/CallFunctionParameterTest.cs new file mode 100644 index 0000000000000..3fc11764fca2e --- /dev/null +++ b/dotnet/test/common/BiDi/Script/CallFunctionParameterTest.cs @@ -0,0 +1,203 @@ +using NUnit.Framework; +using OpenQA.Selenium.BiDi.Modules.Script; +using System.Threading.Tasks; + +namespace OpenQA.Selenium.BiDi.Script; + +class CallFunctionParameterTest : BiDiTestFixture +{ + [Test] + public async Task CanCallFunctionWithDeclaration() + { + var res = await context.Script.CallFunctionAsync("() => { return 1 + 2; }", false); + + Assert.That(res, Is.Not.Null); + Assert.That(res.Realm, Is.Not.Null); + Assert.That((res.Result as RemoteValue.Number).Value, Is.EqualTo(3)); + } + + [Test] + public async Task CanCallFunctionWithDeclarationImplicitCast() + { + var res = await context.Script.CallFunctionAsync("() => { return 1 + 2; }", false); + + Assert.That(res, Is.EqualTo(3)); + } + + [Test] + public async Task CanEvaluateScriptWithUserActivationTrue() + { + await context.Script.EvaluateAsync("window.open();", true, new() { UserActivation = true }); + + var res = await context.Script.CallFunctionAsync(""" + () => navigator.userActivation.isActive && navigator.userActivation.hasBeenActive + """, true, new() { UserActivation = true }); + + Assert.That(res, Is.True); + } + + [Test] + public async Task CanEvaluateScriptWithUserActivationFalse() + { + await context.Script.EvaluateAsync("window.open();", true); + + var res = await context.Script.CallFunctionAsync(""" + () => navigator.userActivation.isActive && navigator.userActivation.hasBeenActive + """, true); + + Assert.That(res, Is.False); + } + + [Test] + public async Task CanCallFunctionWithArguments() + { + var res = await context.Script.CallFunctionAsync("(...args)=>{return args}", false, new() + { + Arguments = ["abc", 42] + }); + + Assert.That(res.Result, Is.AssignableFrom()); + Assert.That((string)(res.Result as RemoteValue.Array).Value[0], Is.EqualTo("abc")); + Assert.That((int)(res.Result as RemoteValue.Array).Value[1], Is.EqualTo(42)); + } + + [Test] + public async Task CanCallFunctionToGetIFrameBrowsingContext() + { + driver.Url = UrlBuilder.WhereIs("click_too_big_in_frame.html"); + + var res = await context.Script.CallFunctionAsync(""" + () => document.querySelector('iframe[id="iframe1"]').contentWindow + """, false); + + Assert.That(res, Is.Not.Null); + Assert.That(res.Result, Is.AssignableFrom()); + Assert.That((res.Result as RemoteValue.WindowProxy).Value, Is.Not.Null); + } + + [Test] + public async Task CanCallFunctionToGetElement() + { + driver.Url = UrlBuilder.WhereIs("bidi/logEntryAdded.html"); + + var res = await context.Script.CallFunctionAsync(""" + () => document.getElementById("consoleLog") + """, false); + + Assert.That(res, Is.Not.Null); + Assert.That(res.Result, Is.AssignableFrom()); + Assert.That((res.Result as RemoteValue.Node).Value, Is.Not.Null); + } + + [Test] + public async Task CanCallFunctionWithAwaitPromise() + { + var res = await context.Script.CallFunctionAsync(""" + async function() { + await new Promise(r => setTimeout(() => r(), 0)); + return "SOME_DELAYED_RESULT"; + } + """, awaitPromise: true); + + Assert.That(res, Is.EqualTo("SOME_DELAYED_RESULT")); + } + + [Test] + public async Task CanCallFunctionWithAwaitPromiseFalse() + { + var res = await context.Script.CallFunctionAsync(""" + async function() { + await new Promise(r => setTimeout(() => r(), 0)); + return "SOME_DELAYED_RESULT"; + } + """, awaitPromise: false); + + Assert.That(res, Is.Not.Null); + Assert.That(res.Result, Is.AssignableFrom()); + } + + [Test] + public async Task CanCallFunctionWithThisParameter() + { + var thisParameter = new LocalValue.Object([["some_property", 42]]); + + var res = await context.Script.CallFunctionAsync(""" + function(){return this.some_property} + """, false, new() { This = thisParameter }); + + Assert.That(res, Is.EqualTo(42)); + } + + [Test] + public async Task CanCallFunctionWithOwnershipRoot() + { + var res = await context.Script.CallFunctionAsync("async function(){return {a:1}}", true, new() + { + ResultOwnership = ResultOwnership.Root + }); + + Assert.That(res, Is.Not.Null); + Assert.That((res.Result as RemoteValue.Object).Handle, Is.Not.Null); + Assert.That((string)(res.Result as RemoteValue.Object).Value[0][0], Is.EqualTo("a")); + Assert.That((int)(res.Result as RemoteValue.Object).Value[0][1], Is.EqualTo(1)); + } + + [Test] + public async Task CanCallFunctionWithOwnershipNone() + { + var res = await context.Script.CallFunctionAsync("async function(){return {a:1}}", true, new() + { + ResultOwnership = ResultOwnership.None + }); + + Assert.That(res, Is.Not.Null); + Assert.That((res.Result as RemoteValue.Object).Handle, Is.Null); + Assert.That((string)(res.Result as RemoteValue.Object).Value[0][0], Is.EqualTo("a")); + Assert.That((int)(res.Result as RemoteValue.Object).Value[0][1], Is.EqualTo(1)); + } + + [Test] + public void CanCallFunctionThatThrowsException() + { + var action = () => context.Script.CallFunctionAsync("))) !!@@## some invalid JS script (((", false); + + Assert.That(action, Throws.InstanceOf().And.Message.Contain("SyntaxError:")); + } + + [Test] + public async Task CanCallFunctionInASandBox() + { + // Make changes without sandbox + await context.Script.CallFunctionAsync("() => { window.foo = 1; }", true); + + var res = await context.Script.CallFunctionAsync("() => window.foo", true, targetOptions: new() { Sandbox = "sandbox" }); + + Assert.That(res.Result, Is.AssignableFrom()); + + // Make changes in the sandbox + await context.Script.CallFunctionAsync("() => { window.foo = 2; }", true, targetOptions: new() { Sandbox = "sandbox" }); + + // Check if the changes are present in the sandbox + res = await context.Script.CallFunctionAsync("() => window.foo", true, targetOptions: new() { Sandbox = "sandbox" }); + + Assert.That(res.Result, Is.AssignableFrom()); + Assert.That((res.Result as RemoteValue.Number).Value, Is.EqualTo(2)); + } + + [Test] + public async Task CanCallFunctionInARealm() + { + await bidi.BrowsingContext.CreateAsync(Modules.BrowsingContext.ContextType.Tab); + + var realms = await bidi.Script.GetRealmsAsync(); + + await bidi.Script.CallFunctionAsync("() => { window.foo = 3; }", true, new Target.Realm(realms[0].Realm)); + await bidi.Script.CallFunctionAsync("() => { window.foo = 5; }", true, new Target.Realm(realms[1].Realm)); + + var res1 = await bidi.Script.CallFunctionAsync("() => window.foo", true, new Target.Realm(realms[0].Realm)); + var res2 = await bidi.Script.CallFunctionAsync("() => window.foo", true, new Target.Realm(realms[1].Realm)); + + Assert.That(res1, Is.EqualTo(3)); + Assert.That(res2, Is.EqualTo(5)); + } +} diff --git a/dotnet/test/common/BiDi/Script/EvaluateParametersTest.cs b/dotnet/test/common/BiDi/Script/EvaluateParametersTest.cs new file mode 100644 index 0000000000000..bb526ff9a4d89 --- /dev/null +++ b/dotnet/test/common/BiDi/Script/EvaluateParametersTest.cs @@ -0,0 +1,109 @@ +using NUnit.Framework; +using OpenQA.Selenium.BiDi.Modules.Script; +using System.Threading.Tasks; + +namespace OpenQA.Selenium.BiDi.Script; + +class EvaluateParametersTest : BiDiTestFixture +{ + [Test] + public async Task CanEvaluateScript() + { + var res = await context.Script.EvaluateAsync("1 + 2", false); + + Assert.That(res, Is.Not.Null); + Assert.That(res.Realm, Is.Not.Null); + Assert.That((res.Result as RemoteValue.Number).Value, Is.EqualTo(3)); + } + + [Test] + public async Task CanEvaluateScriptImplicitCast() + { + var res = await context.Script.EvaluateAsync("1 + 2", false); + + Assert.That(res, Is.EqualTo(3)); + } + + [Test] + public async Task СanEvaluateScriptWithUserActivationTrue() + { + await context.Script.EvaluateAsync("window.open();", true, new() { UserActivation = true }); + + var res = await context.Script.EvaluateAsync(""" + navigator.userActivation.isActive && navigator.userActivation.hasBeenActive + """, true, new() { UserActivation = true }); + + Assert.That(res, Is.True); + } + + [Test] + public async Task СanEvaluateScriptWithUserActivationFalse() + { + await context.Script.EvaluateAsync("window.open();", true, new() { UserActivation = true }); + + var res = await context.Script.EvaluateAsync(""" + navigator.userActivation.isActive && navigator.userActivation.hasBeenActive + """, true, new() { UserActivation = false }); + + Assert.That(res, Is.False); + } + + [Test] + public void CanCallFunctionThatThrowsException() + { + var action = () => context.Script.EvaluateAsync("))) !!@@## some invalid JS script (((", false); + + Assert.That(action, Throws.InstanceOf().And.Message.Contain("SyntaxError:")); + } + + [Test] + public async Task CanEvaluateScriptWithResulWithOwnership() + { + var res = await context.Script.EvaluateAsync("Promise.resolve({a:1})", true, new() + { + ResultOwnership = ResultOwnership.Root + }); + + Assert.That(res, Is.Not.Null); + Assert.That((res.Result as RemoteValue.Object).Handle, Is.Not.Null); + Assert.That((string)(res.Result as RemoteValue.Object).Value[0][0], Is.EqualTo("a")); + Assert.That((int)(res.Result as RemoteValue.Object).Value[0][1], Is.EqualTo(1)); + } + + [Test] + public async Task CanEvaluateInASandBox() + { + // Make changes without sandbox + await context.Script.EvaluateAsync("window.foo = 1", true); + + var res = await context.Script.EvaluateAsync("window.foo", true, targetOptions: new() { Sandbox = "sandbox" }); + + Assert.That(res.Result, Is.AssignableFrom()); + + // Make changes in the sandbox + await context.Script.EvaluateAsync("window.foo = 2", true, targetOptions: new() { Sandbox = "sandbox" }); + + // Check if the changes are present in the sandbox + res = await context.Script.EvaluateAsync("window.foo", true, targetOptions: new() { Sandbox = "sandbox" }); + + Assert.That(res.Result, Is.AssignableFrom()); + Assert.That((res.Result as RemoteValue.Number).Value, Is.EqualTo(2)); + } + + [Test] + public async Task CanEvaluateInARealm() + { + await bidi.BrowsingContext.CreateAsync(Modules.BrowsingContext.ContextType.Tab); + + var realms = await bidi.Script.GetRealmsAsync(); + + await bidi.Script.EvaluateAsync("window.foo = 3", true, new Target.Realm(realms[0].Realm)); + await bidi.Script.EvaluateAsync("window.foo = 5", true, new Target.Realm(realms[1].Realm)); + + var res1 = await bidi.Script.EvaluateAsync("window.foo", true, new Target.Realm(realms[0].Realm)); + var res2 = await bidi.Script.EvaluateAsync("window.foo", true, new Target.Realm(realms[1].Realm)); + + Assert.That(res1, Is.EqualTo(3)); + Assert.That(res2, Is.EqualTo(5)); + } +} diff --git a/dotnet/test/common/BiDi/Script/ScriptCommandsTest.cs b/dotnet/test/common/BiDi/Script/ScriptCommandsTest.cs new file mode 100644 index 0000000000000..c013fbbbed2d4 --- /dev/null +++ b/dotnet/test/common/BiDi/Script/ScriptCommandsTest.cs @@ -0,0 +1,150 @@ +using NUnit.Framework; +using OpenQA.Selenium.BiDi.Modules.Script; +using System; +using System.Threading.Tasks; + +namespace OpenQA.Selenium.BiDi.Script; + +class ScriptCommandsTest : BiDiTestFixture +{ + [Test] + public async Task CanGetAllRealms() + { + _ = await bidi.BrowsingContext.CreateAsync(Modules.BrowsingContext.ContextType.Window); + + var realms = await bidi.Script.GetRealmsAsync(); + + Assert.That(realms, Is.Not.Null); + Assert.That(realms.Count, Is.EqualTo(2)); + + Assert.That(realms[0], Is.AssignableFrom()); + Assert.That(realms[0].Realm, Is.Not.Null); + + Assert.That(realms[1], Is.AssignableFrom()); + Assert.That(realms[1].Realm, Is.Not.Null); + } + + [Test] + public async Task CanGetAllRealmsByType() + { + _ = await bidi.BrowsingContext.CreateAsync(Modules.BrowsingContext.ContextType.Window); + + var realms = await bidi.Script.GetRealmsAsync(new() { Type = RealmType.Window }); + + Assert.That(realms, Is.Not.Null); + Assert.That(realms.Count, Is.EqualTo(2)); + + Assert.That(realms[0], Is.AssignableFrom()); + Assert.That(realms[0].Realm, Is.Not.Null); + + Assert.That(realms[1], Is.AssignableFrom()); + Assert.That(realms[1].Realm, Is.Not.Null); + } + + [Test] + public async Task CanGetRealmInBrowsingContext() + { + var tab = await bidi.BrowsingContext.CreateAsync(Modules.BrowsingContext.ContextType.Tab); + + var realms = await tab.Script.GetRealmsAsync(); + + var tabRealm = realms[0] as RealmInfo.Window; + + Assert.That(tabRealm, Is.Not.Null); + Assert.That(tabRealm.Context, Is.EqualTo(tab)); + } + + [Test] + public async Task CanGetRealmInBrowsingContextByType() + { + var tab = await bidi.BrowsingContext.CreateAsync(Modules.BrowsingContext.ContextType.Tab); + + var realms = await tab.Script.GetRealmsAsync(new() { Type = RealmType.Window }); + + var tabRealm = realms[0] as RealmInfo.Window; + + Assert.That(tabRealm, Is.Not.Null); + Assert.That(tabRealm.Context, Is.EqualTo(tab)); + } + + [Test] + public async Task CanAddPreloadScript() + { + var preloadScript = await bidi.Script.AddPreloadScriptAsync("() => { console.log('preload_script_console_text') }"); + + Assert.That(preloadScript, Is.Not.Null); + + TaskCompletionSource tcs = new(); + + await context.Log.OnEntryAddedAsync(tcs.SetResult); + + await context.ReloadAsync(new() { Wait = Modules.BrowsingContext.ReadinessState.Interactive }); + + var entry = await tcs.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + Assert.That(entry.Level, Is.EqualTo(Modules.Log.Level.Info)); + Assert.That(entry.Text, Is.EqualTo("preload_script_console_text")); + } + + [Test] + public async Task CanAddPreloadScriptWithArguments() + { + var preloadScript = await bidi.Script.AddPreloadScriptAsync("(channel) => channel('will_be_send', 'will_be_ignored')", new() + { + Arguments = [new LocalValue.Channel(new(new("channel_name")))] + }); + + Assert.That(preloadScript, Is.Not.Null); + } + + + [Test] + public async Task CanAddPreloadScriptWithChannelOptions() + { + var preloadScript = await bidi.Script.AddPreloadScriptAsync("(channel) => channel('will_be_send', 'will_be_ignored')", new() + { + Arguments = [new LocalValue.Channel(new(new("channel_name")) + { + SerializationOptions = new() + { + MaxDomDepth = 0 + }, + Ownership = ResultOwnership.Root + })] + }); + + Assert.That(preloadScript, Is.Not.Null); + } + + [Test] + public async Task CanAddPreloadScriptInASandbox() + { + var preloadScript = await bidi.Script.AddPreloadScriptAsync("() => { window.bar = 2; }", new() { Sandbox = "sandbox" }); + + Assert.That(preloadScript, Is.Not.Null); + + await context.ReloadAsync(new() { Wait = Modules.BrowsingContext.ReadinessState.Interactive }); + + var bar = await context.Script.EvaluateAsync("window.bar", true, targetOptions: new() { Sandbox = "sandbox" }); + + Assert.That(bar, Is.EqualTo(2)); + } + + [Test] + public async Task CanRemovePreloadedScript() + { + var preloadScript = await context.Script.AddPreloadScriptAsync("() => { window.bar = 2; }"); + + await context.ReloadAsync(new() { Wait = Modules.BrowsingContext.ReadinessState.Interactive }); + + var bar = await context.Script.EvaluateAsync("window.bar", true); + + Assert.That(bar, Is.EqualTo(2)); + + await preloadScript.RemoveAsync(); + + var resultAfterRemoval = await context.Script.EvaluateAsync("window.bar", true, targetOptions: new() { Sandbox = "sandbox" }); + + Assert.That(resultAfterRemoval.Result, Is.AssignableFrom()); + } +} diff --git a/dotnet/test/common/BiDi/Script/ScriptEventsTest.cs b/dotnet/test/common/BiDi/Script/ScriptEventsTest.cs new file mode 100644 index 0000000000000..48fc3b5686371 --- /dev/null +++ b/dotnet/test/common/BiDi/Script/ScriptEventsTest.cs @@ -0,0 +1,63 @@ +using NUnit.Framework; +using OpenQA.Selenium.BiDi.Modules.Script; +using System; +using System.Threading.Tasks; + +namespace OpenQA.Selenium.BiDi.Script; + +class ScriptEventsTest : BiDiTestFixture +{ + [Test] + public async Task CanListenToChannelMessage() + { + TaskCompletionSource tcs = new(); + + await bidi.Script.OnMessageAsync(tcs.SetResult); + + await context.Script.CallFunctionAsync("(channel) => channel('foo')", false, new() + { + Arguments = [new LocalValue.Channel(new(new("channel_name")))] + }); + + var message = await tcs.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + Assert.That(message, Is.Not.Null); + Assert.That(message.Channel.Id, Is.EqualTo("channel_name")); + Assert.That((string)message.Data, Is.EqualTo("foo")); + Assert.That(message.Source, Is.Not.Null); + Assert.That(message.Source.Realm, Is.Not.Null); + Assert.That(message.Source.Context, Is.EqualTo(context)); + } + + [Test] + public async Task CanListenToRealmCreatedEvent() + { + TaskCompletionSource tcs = new(); + + await bidi.Script.OnRealmCreatedAsync(tcs.SetResult); + + await bidi.BrowsingContext.CreateAsync(Modules.BrowsingContext.ContextType.Window); + + var realmInfo = await tcs.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + Assert.That(realmInfo, Is.Not.Null); + Assert.That(realmInfo, Is.AssignableFrom()); + Assert.That(realmInfo.Realm, Is.Not.Null); + } + + [Test] + public async Task CanListenToRealmDestroyedEvent() + { + TaskCompletionSource tcs = new(); + + await bidi.Script.OnRealmDestroyedAsync(tcs.SetResult); + + var ctx = await bidi.BrowsingContext.CreateAsync(Modules.BrowsingContext.ContextType.Window); + await ctx.CloseAsync(); + + var args = await tcs.Task.WaitAsync(TimeSpan.FromSeconds(5)); + + Assert.That(args, Is.Not.Null); + Assert.That(args.Realm, Is.Not.Null); + } +} diff --git a/dotnet/test/common/BiDi/Storage/StorageTest.cs b/dotnet/test/common/BiDi/Storage/StorageTest.cs new file mode 100644 index 0000000000000..2f9877c4ca1aa --- /dev/null +++ b/dotnet/test/common/BiDi/Storage/StorageTest.cs @@ -0,0 +1,161 @@ +using NUnit.Framework; +using OpenQA.Selenium.BiDi.Modules.Network; +using System; +using System.Threading.Tasks; + +namespace OpenQA.Selenium.BiDi.Storage; + +class StorageTest : BiDiTestFixture +{ + [Test] + public async Task CanGetCookieByName() + { + driver.Url = UrlBuilder.WhereIs("animals"); + + var cookies = await bidi.Storage.GetCookiesAsync(new() + { + Filter = new() + { + Name = Guid.NewGuid().ToString(), + Value = "set" + } + }); + + Assert.That(cookies, Is.Not.Null); + Assert.That(cookies, Is.Empty); + } + + [Test] + public async Task CanGetCookieInDefaultUserContext() + { + driver.Url = UrlBuilder.WhereIs("animals"); + + var userContexts = await bidi.Browser.GetUserContextsAsync(); + + var cookies = await context.Storage.GetCookiesAsync(new() + { + Filter = new() + { + Name = Guid.NewGuid().ToString(), + Value = "set" + } + }); + + Assert.That(cookies, Is.Not.Null); + Assert.That(cookies, Is.Empty); + Assert.That(cookies.PartitionKey.UserContext, Is.EqualTo(userContexts[0].UserContext)); + } + + [Test] + public async Task CanAddCookie() + { + driver.Url = UrlBuilder.WhereIs("animals"); + + var partitionKey = await context.Storage.SetCookieAsync(new("fish", "cod", UrlBuilder.HostName)); + + Assert.That(partitionKey, Is.Not.Null); + } + + [Test] + public async Task CanAddAndGetCookie() + { + driver.Url = UrlBuilder.WhereIs("animals"); + + var expiry = DateTime.Now.AddDays(1); + + await context.Storage.SetCookieAsync(new("fish", "cod", UrlBuilder.HostName) + { + Path = "/common/animals", + HttpOnly = true, + Secure = false, + SameSite = SameSite.Lax, + Expiry = expiry + }); + + var cookies = await context.Storage.GetCookiesAsync(); + + Assert.That(cookies, Is.Not.Null); + Assert.That(cookies.Count, Is.EqualTo(1)); + + var cookie = cookies[0]; + + Assert.That(cookie.Name, Is.EqualTo("fish")); + Assert.That((cookie.Value as BytesValue.String).Value, Is.EqualTo("cod")); + Assert.That(cookie.Path, Is.EqualTo("/common/animals")); + Assert.That(cookie.HttpOnly, Is.True); + Assert.That(cookie.Secure, Is.False); + Assert.That(cookie.SameSite, Is.EqualTo(SameSite.Lax)); + Assert.That(cookie.Size, Is.EqualTo(7)); + // Assert.That(cookie.Expiry, Is.EqualTo(expiry)); // chrome issue + } + + [Test] + public async Task CanGetAllCookies() + { + driver.Url = UrlBuilder.WhereIs("animals"); + + driver.Manage().Cookies.AddCookie(new("key1", "value1")); + driver.Manage().Cookies.AddCookie(new("key2", "value2")); + + var cookies = await bidi.Storage.GetCookiesAsync(); + + Assert.That(cookies, Is.Not.Null); + Assert.That(cookies.Count, Is.EqualTo(2)); + Assert.That(cookies[0].Name, Is.EqualTo("key1")); + Assert.That(cookies[1].Name, Is.EqualTo("key2")); + } + + [Test] + public async Task CanDeleteAllCookies() + { + driver.Url = UrlBuilder.WhereIs("animals"); + + driver.Manage().Cookies.AddCookie(new("key1", "value1")); + driver.Manage().Cookies.AddCookie(new("key2", "value2")); + + var result = await bidi.Storage.DeleteCookiesAsync(); + + Assert.That(result, Is.Not.Null); + + var cookies = await bidi.Storage.GetCookiesAsync(); + + Assert.That(cookies, Is.Not.Null); + Assert.That(cookies.Count, Is.EqualTo(0)); + } + + [Test] + public async Task CanDeleteCookieWithName() + { + driver.Url = UrlBuilder.WhereIs("animals"); + + driver.Manage().Cookies.AddCookie(new("key1", "value1")); + driver.Manage().Cookies.AddCookie(new("key2", "value2")); + + var result = await bidi.Storage.DeleteCookiesAsync(new() { Filter = new() { Name = "key1" } }); + + Assert.That(result, Is.Not.Null); + + var cookies = await bidi.Storage.GetCookiesAsync(); + + Assert.That(cookies, Is.Not.Null); + Assert.That(cookies.Count, Is.EqualTo(1)); + Assert.That(cookies[0].Name, Is.EqualTo("key2")); + } + + [Test] + public async Task AddCookiesWithDifferentPathsThatAreRelatedToOurs() + { + driver.Url = UrlBuilder.WhereIs("animals"); + + await context.Storage.SetCookieAsync(new("fish", "cod", UrlBuilder.HostName) + { + Path = "/common/animals" + }); + + driver.Url = UrlBuilder.WhereIs("simpleTest"); + + var result = driver.Manage().Cookies.AllCookies; + + Assert.That(result, Is.Empty); + } +} diff --git a/dotnet/test/common/Environment/DriverFactory.cs b/dotnet/test/common/Environment/DriverFactory.cs index 8ce615235dc7d..5708ebda6495d 100644 --- a/dotnet/test/common/Environment/DriverFactory.cs +++ b/dotnet/test/common/Environment/DriverFactory.cs @@ -67,12 +67,6 @@ public IWebDriver CreateDriverWithOptions(Type driverType, DriverOptions driverO { browser = Browser.Chrome; options = GetDriverOptions(driverType, driverOptions); - // Disabling this since we do not have any BiDi tests currently. - //options.UseWebSocketUrl = true; - - // If BiDi is enabled above then the undhandler prompt behaviour needs to set accordingly. - // Reasoning : https://github.com/SeleniumHQ/selenium/pull/14429#issuecomment-2311614822 - //options.UnhandledPromptBehavior = UnhandledPromptBehavior.Ignore; var chromeOptions = (ChromeOptions)options; chromeOptions.AddArguments("--no-sandbox", "--disable-dev-shm-usage"); @@ -188,6 +182,8 @@ protected void OnDriverLaunching(DriverService service, DriverOptions options) options.ScriptTimeout = overriddenOptions.ScriptTimeout; options.PageLoadTimeout = overriddenOptions.PageLoadTimeout; options.ImplicitWaitTimeout = overriddenOptions.ImplicitWaitTimeout; + + options.UseWebSocketUrl = overriddenOptions.UseWebSocketUrl; } return options; From ddfb3d8a87bd5faa95fc344c506e565170b1f4ff Mon Sep 17 00:00:00 2001 From: Swastik Baranwal Date: Mon, 28 Oct 2024 15:04:06 +0530 Subject: [PATCH 023/135] [py] webkitgtk: log_path -> log_output (#14618) * [py] webkitgtk: log_path -> log_output * apply suggestion * add warning for old para --------- Co-authored-by: Sri Harsha <12621691+harsha509@users.noreply.github.com> Co-authored-by: Diego Molina --- py/selenium/webdriver/webkitgtk/service.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/py/selenium/webdriver/webkitgtk/service.py b/py/selenium/webdriver/webkitgtk/service.py index 92cea26c535f3..5f42d31486143 100644 --- a/py/selenium/webdriver/webkitgtk/service.py +++ b/py/selenium/webdriver/webkitgtk/service.py @@ -15,6 +15,7 @@ # specific language governing permissions and limitations # under the License. import typing +import warnings from selenium.webdriver.common import service @@ -28,7 +29,7 @@ class Service(service.Service): :param executable_path: install path of the WebKitWebDriver executable, defaults to `WebKitWebDriver`. :param port: Port for the service to run on, defaults to 0 where the operating system will decide. :param service_args: (Optional) List of args to be passed to the subprocess when launching the executable. - :param log_path: (Optional) File path for the file to be opened and passed as the subprocess stdout/stderr handler. + :param log_output: (Optional) File path for the file to be opened and passed as the subprocess stdout/stderr handler. :param env: (Optional) Mapping of environment variables for the new process, defaults to `os.environ`. """ @@ -37,16 +38,20 @@ def __init__( executable_path: str = DEFAULT_EXECUTABLE_PATH, port: int = 0, log_path: typing.Optional[str] = None, + log_output: typing.Optional[str] = None, service_args: typing.Optional[typing.List[str]] = None, env: typing.Optional[typing.Mapping[str, str]] = None, **kwargs, ) -> None: self.service_args = service_args or [] - log_file = open(log_path, "wb") if log_path else None + if log_path is not None: + warnings.warn("log_path is deprecated, use log_output instead", DeprecationWarning, stacklevel=2) + log_path = open(log_path, "wb") + log_output = open(log_output, "wb") if log_output else None super().__init__( executable_path=executable_path, port=port, - log_file=log_file, + log_output=log_path or log_output, env=env, **kwargs, ) From 5d3414da801493da68fa07ac9d22b6d01ff30452 Mon Sep 17 00:00:00 2001 From: Nikolay Borisenko <22616990+nvborisenko@users.noreply.github.com> Date: Mon, 28 Oct 2024 13:21:13 +0300 Subject: [PATCH 024/135] [dotnet] Make classic WebDriver commands/responses AOT compatible (#14574) --- dotnet/src/webdriver/Command.cs | 41 ++++- .../Internal/ResponseValueJsonConverter.cs | 146 +++++++++++------- dotnet/src/webdriver/Response.cs | 10 +- 3 files changed, 134 insertions(+), 63 deletions(-) diff --git a/dotnet/src/webdriver/Command.cs b/dotnet/src/webdriver/Command.cs index d12274ca90d7a..409c393860d6c 100644 --- a/dotnet/src/webdriver/Command.cs +++ b/dotnet/src/webdriver/Command.cs @@ -28,15 +28,16 @@ namespace OpenQA.Selenium ///
public class Command { + private SessionId commandSessionId; + private string commandName; + private Dictionary commandParameters = new Dictionary(); + private readonly static JsonSerializerOptions s_jsonSerializerOptions = new() { + TypeInfoResolver = CommandJsonSerializerContext.Default, Converters = { new ResponseValueJsonConverter() } }; - private SessionId commandSessionId; - private string commandName; - private Dictionary commandParameters = new Dictionary(); - /// /// Initializes a new instance of the class using a command name and a JSON-encoded string for the parameters. /// @@ -101,7 +102,7 @@ public string ParametersAsJsonString string parametersString = string.Empty; if (this.commandParameters != null && this.commandParameters.Count > 0) { - parametersString = JsonSerializer.Serialize(this.commandParameters); + parametersString = JsonSerializer.Serialize(this.commandParameters, s_jsonSerializerOptions); } if (string.IsNullOrEmpty(parametersString)) @@ -133,4 +134,34 @@ private static Dictionary ConvertParametersFromJson(string value return parameters; } } + + // Built-in types + [JsonSerializable(typeof(bool))] + [JsonSerializable(typeof(byte))] + [JsonSerializable(typeof(sbyte))] + [JsonSerializable(typeof(char))] + [JsonSerializable(typeof(decimal))] + [JsonSerializable(typeof(double))] + [JsonSerializable(typeof(float))] + [JsonSerializable(typeof(int))] + [JsonSerializable(typeof(uint))] + [JsonSerializable(typeof(nint))] + [JsonSerializable(typeof(nuint))] + [JsonSerializable(typeof(long))] + [JsonSerializable(typeof(ulong))] + [JsonSerializable(typeof(short))] + [JsonSerializable(typeof(ushort))] + + [JsonSerializable(typeof(string))] + + // Selenium WebDriver types + [JsonSerializable(typeof(char[]))] + [JsonSerializable(typeof(byte[]))] + [JsonSerializable(typeof(Dictionary))] + [JsonSerializable(typeof(Cookie))] + [JsonSerializable(typeof(Proxy))] + internal partial class CommandJsonSerializerContext : JsonSerializerContext + { + + } } diff --git a/dotnet/src/webdriver/Internal/ResponseValueJsonConverter.cs b/dotnet/src/webdriver/Internal/ResponseValueJsonConverter.cs index 9967d790c55c9..6b888a788236b 100644 --- a/dotnet/src/webdriver/Internal/ResponseValueJsonConverter.cs +++ b/dotnet/src/webdriver/Internal/ResponseValueJsonConverter.cs @@ -30,75 +30,107 @@ internal class ResponseValueJsonConverter : JsonConverter { public override object Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { - return this.ProcessToken(ref reader, options); + return ProcessReadToken(ref reader, options); } public override void Write(Utf8JsonWriter writer, object value, JsonSerializerOptions options) { - JsonSerializer.Serialize(writer, value, options); + switch (value) + { + case null: + writer.WriteNullValue(); + break; + case Enum: + writer.WriteNumberValue(Convert.ToInt64(value)); + break; + case IEnumerable list: + writer.WriteStartArray(); + foreach (var item in list) + { + Write(writer, item, options); + } + writer.WriteEndArray(); + break; + case IDictionary dictionary: + writer.WriteStartObject(); + foreach (var pair in dictionary) + { + writer.WritePropertyName(pair.Key); + Write(writer, pair.Value, options); + } + writer.WriteEndObject(); + break; + case object obj: + JsonSerializer.Serialize(writer, obj, options.GetTypeInfo(obj.GetType())); + break; + } } - private object ProcessToken(ref Utf8JsonReader reader, JsonSerializerOptions options) + private static object ProcessReadToken(ref Utf8JsonReader reader, JsonSerializerOptions options) { // Recursively processes a token. This is required for elements that next other elements. - object processedObject = null; + object processedObject; - if (reader.TokenType == JsonTokenType.StartObject) + switch (reader.TokenType) { - Dictionary dictionaryValue = new Dictionary(); - while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) - { - string elementKey = reader.GetString(); - reader.Read(); - dictionaryValue.Add(elementKey, this.ProcessToken(ref reader, options)); - } + case JsonTokenType.StartObject: + { + Dictionary dictionaryValue = []; + while (reader.Read() && reader.TokenType != JsonTokenType.EndObject) + { + string elementKey = reader.GetString(); + reader.Read(); + dictionaryValue.Add(elementKey, ProcessReadToken(ref reader, options)); + } - processedObject = dictionaryValue; - } - else if (reader.TokenType == JsonTokenType.StartArray) - { - List arrayValue = new List(); - while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) - { - arrayValue.Add(this.ProcessToken(ref reader, options)); - } + processedObject = dictionaryValue; + break; + } - processedObject = arrayValue.ToArray(); - } - else if (reader.TokenType == JsonTokenType.Null) - { - processedObject = null; - } - else if (reader.TokenType == JsonTokenType.False) - { - processedObject = false; - } - else if (reader.TokenType == JsonTokenType.True) - { - processedObject = true; - } - else if (reader.TokenType == JsonTokenType.String) - { - processedObject = reader.GetString(); - } - else if (reader.TokenType == JsonTokenType.Number) - { - if (reader.TryGetInt64(out long longValue)) - { - processedObject = longValue; - } - else if (reader.TryGetDouble(out double doubleValue)) - { - processedObject = doubleValue; - } - else - { - throw new JsonException($"Unrecognized '{JsonElement.ParseValue(ref reader)}' token as a number value."); - } - } - else - { - throw new JsonException($"Unrecognized '{reader.TokenType}' token type while parsing command response."); + case JsonTokenType.StartArray: + { + List arrayValue = []; + while (reader.Read() && reader.TokenType != JsonTokenType.EndArray) + { + arrayValue.Add(ProcessReadToken(ref reader, options)); + } + + processedObject = arrayValue.ToArray(); + break; + } + + case JsonTokenType.Null: + processedObject = null; + break; + case JsonTokenType.False: + processedObject = false; + break; + case JsonTokenType.True: + processedObject = true; + break; + case JsonTokenType.String: + processedObject = reader.GetString(); + break; + case JsonTokenType.Number: + { + if (reader.TryGetInt64(out long longValue)) + { + processedObject = longValue; + } + else if (reader.TryGetDouble(out double doubleValue)) + { + processedObject = doubleValue; + } + else + { + throw new JsonException($"Unrecognized '{JsonElement.ParseValue(ref reader)}' token as a number value."); + } + + break; + } + + default: + throw new JsonException($"Unrecognized '{reader.TokenType}' token type while parsing command response."); } return processedObject; diff --git a/dotnet/src/webdriver/Response.cs b/dotnet/src/webdriver/Response.cs index 674a6488135b4..ebfd47e2cfa1b 100644 --- a/dotnet/src/webdriver/Response.cs +++ b/dotnet/src/webdriver/Response.cs @@ -21,6 +21,7 @@ using System.Collections.Generic; using System.Globalization; using System.Text.Json; +using System.Text.Json.Serialization; namespace OpenQA.Selenium { @@ -31,7 +32,8 @@ public class Response { private readonly static JsonSerializerOptions s_jsonSerializerOptions = new() { - Converters = { new ResponseValueJsonConverter() } + TypeInfoResolver = ResponseJsonSerializerContext.Default, + Converters = { new ResponseValueJsonConverter() } // we still need it to make `Object` as `Dictionary` }; private object responseValue; @@ -208,4 +210,10 @@ public override string ToString() return string.Format(CultureInfo.InvariantCulture, "({0} {1}: {2})", this.SessionId, this.Status, this.Value); } } + + [JsonSerializable(typeof(Dictionary))] + internal partial class ResponseJsonSerializerContext : JsonSerializerContext + { + + } } From 6b40d9ea765d4cdc3d4a61f7f13a87a2b2e6a037 Mon Sep 17 00:00:00 2001 From: Sandeep Suryaprasad <26169602+sandeepsuryaprasad@users.noreply.github.com> Date: Mon, 28 Oct 2024 18:19:02 +0530 Subject: [PATCH 025/135] [py] moved mypy settings from `mypy.ini` to `pyproject.toml` (#14253) fixed linting issues Co-authored-by: Diego Molina Co-authored-by: Viet Nguyen Duc --- py/mypy.ini | 39 --------------------------------------- py/pyproject.toml | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 39 deletions(-) delete mode 100644 py/mypy.ini diff --git a/py/mypy.ini b/py/mypy.ini deleted file mode 100644 index 9ccefe45dd10c..0000000000000 --- a/py/mypy.ini +++ /dev/null @@ -1,39 +0,0 @@ -; The aim in future here is we would be able to turn (most) of these flags on, however the typing technical -; debt is quite colossal right now. For now we should maybe get everything working with the config here -; then look at going after partially or completely untyped defs as a phase-2. -[mypy] -files = selenium -; warn about per-module sections in the config file that do not match any files processed. -warn_unused_configs = True -; disallows subclassing of typing.Any. -disallow_subclassing_any = False -; disallow usage of generic types that do not specify explicit type parameters. -disallow_any_generics = False -; disallow calling functions without type annotations from functions that have type annotations. -disallow_untyped_calls = False -; disallow defining functions without type annotations or with incomplete annotations. -disallow_untyped_defs = False -; disallow defining functions with incomplete type annotations. -disallow_incomplete_defs = False -; type-checks the interior of functions without type annotations. -check_untyped_defs = False -; reports an error whenever a function with type annotations is decorated with a decorator without annotations. -disallow_untyped_decorators = False -; changes the treatment of arguments with a default value of None by not implicitly making their type `typing.Optional`. -no_implicit_optional = False -; warns about casting an expression to it's inferred type. -warn_redundant_casts = True -; warns about unneeded `# type: ignore` comments. -warn_unused_ignores = True -; warns when returning a value with typing.Any from a function with a non typing.Any return type. -warn_return_any = False -; Shows a warning when encountering any code inferred to be unreachable after performing type analysis. -warn_unreachable = False - -[mypy-trio_websocket] -; suppress error messages about imports that cannot be resolved. -ignore_missing_imports = True - -[mypy-_winreg] -; suppress error messages about imports that cannot be resolved. -ignore_missing_imports = True diff --git a/py/pyproject.toml b/py/pyproject.toml index c17be72be8eb3..87d451bbf987f 100644 --- a/py/pyproject.toml +++ b/py/pyproject.toml @@ -19,3 +19,45 @@ markers = [ ] python_files = ["test_*.py", "*_test.py"] testpaths = ["test"] + +# mypy global options +[tool.mypy] +# The aim in future here is we would be able to turn (most) of these flags on, however the typing technical +# debt is quite colossal right now. For now we should maybe get everything working with the config here +# then look at going after partially or completely untyped defs as a phase-2. +files = "selenium" +# warn about per-module sections in the config file that do not match any files processed. +warn_unused_configs = true +# disallows subclassing of typing.Any. +disallow_subclassing_any = false +# disallow usage of generic types that do not specify explicit type parameters. +disallow_any_generics = false +# disallow calling functions without type annotations from functions that have type annotations. +disallow_untyped_calls = false +# disallow defining functions without type annotations or with incomplete annotations. +disallow_untyped_defs = false +# disallow defining functions with incomplete type annotations. +disallow_incomplete_defs = false +# type-checks the interior of functions without type annotations. +check_untyped_defs = false +# reports an error whenever a function with type annotations is decorated with a decorator without annotations. +disallow_untyped_decorators = false +# changes the treatment of arguments with a default value of None by not implicitly making their type `typing.Optional`. +no_implicit_optional = false +# warns about casting an expression to it's inferred type. +warn_redundant_casts = true +# warns about unneeded `# type: ignore` comments. +warn_unused_ignores = true +# warns when returning a value with typing.Any from a function with a non typing.Any return type. +warn_return_any = false +# Shows a warning when encountering any code inferred to be unreachable after performing type analysis. +warn_unreachable = false + +# mypy module specific options +[[tool.mypy.trio_websocket]] +# suppress error messages about imports that cannot be resolved. +ignore_missing_imports = true + +[[tool.mypy._winreg]] +# suppress error messages about imports that cannot be resolved. +ignore_missing_imports = true From b2702ca20d68c53e53ae9627440d41f641a7c068 Mon Sep 17 00:00:00 2001 From: Nikolay Borisenko <22616990+nvborisenko@users.noreply.github.com> Date: Mon, 28 Oct 2024 21:36:43 +0300 Subject: [PATCH 026/135] [dotnet] Treat SM's logs always as Trace to avoid SM writing at Info level (#14667) --- dotnet/src/webdriver/SeleniumManager.cs | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/dotnet/src/webdriver/SeleniumManager.cs b/dotnet/src/webdriver/SeleniumManager.cs index 4b28f7862d138..60c8cd5255389 100644 --- a/dotnet/src/webdriver/SeleniumManager.cs +++ b/dotnet/src/webdriver/SeleniumManager.cs @@ -195,28 +195,12 @@ private static ResultResponse RunCommand(string fileName, string arguments) if (jsonResponse.Logs is not null) { - foreach (var entry in jsonResponse.Logs) + // Treat SM's logs always as Trace to avoid SM writing at Info level + if (_logger.IsEnabled(LogEventLevel.Trace)) { - switch (entry.Level) + foreach (var entry in jsonResponse.Logs) { - case "WARN": - if (_logger.IsEnabled(LogEventLevel.Warn)) - { - _logger.Warn(entry.Message); - } - break; - case "DEBUG": - if (_logger.IsEnabled(LogEventLevel.Debug)) - { - _logger.Debug(entry.Message); - } - break; - case "INFO": - if (_logger.IsEnabled(LogEventLevel.Info)) - { - _logger.Info(entry.Message); - } - break; + _logger.Trace($"{entry.Level} {entry.Message}"); } } } From 68f82b3302b6d1e7975dc0bdaea99f5f43f1db63 Mon Sep 17 00:00:00 2001 From: Priyansh Garg Date: Tue, 29 Oct 2024 00:11:41 +0530 Subject: [PATCH 027/135] [js]: Fix sendKeys command fail on FileDetector.handleFile error. (#14663) Fix sendKeys command failing on FileDetector handleFile error. Co-authored-by: David Burns Co-authored-by: Sri Harsha <12621691+harsha509@users.noreply.github.com> --- .../node/selenium-webdriver/lib/webdriver.js | 1 + .../test/lib/webdriver_test.js | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/javascript/node/selenium-webdriver/lib/webdriver.js b/javascript/node/selenium-webdriver/lib/webdriver.js index cb60563695a06..e004e4505c1e4 100644 --- a/javascript/node/selenium-webdriver/lib/webdriver.js +++ b/javascript/node/selenium-webdriver/lib/webdriver.js @@ -2752,6 +2752,7 @@ class WebElement { keys = await this.driver_.fileDetector_.handleFile(this.driver_, keys.join('')) } catch (ex) { this.log_.severe('Error trying parse string as a file with file detector; sending keys instead' + ex) + keys = keys.join('') } return this.execute_( diff --git a/javascript/node/selenium-webdriver/test/lib/webdriver_test.js b/javascript/node/selenium-webdriver/test/lib/webdriver_test.js index f850c3e4fcac8..419fdf6f80212 100644 --- a/javascript/node/selenium-webdriver/test/lib/webdriver_test.js +++ b/javascript/node/selenium-webdriver/test/lib/webdriver_test.js @@ -932,6 +932,32 @@ describe('WebDriver', function () { return driver.findElement(By.id('foo')).sendKeys('original/', 'path') }) + + it('sendKeysWithAFileDetector_handlerError', function () { + let executor = new FakeExecutor() + .expect(CName.FIND_ELEMENT, { + using: 'css selector', + value: '*[id="foo"]', + }) + .andReturnSuccess(WebElement.buildId('one')) + .expect(CName.SEND_KEYS_TO_ELEMENT, { + id: WebElement.buildId('one'), + text: 'original/path', + value: 'original/path'.split(''), + }) + .andReturnSuccess() + .end() + + let driver = executor.createDriver() + let handleFile = function (d, path) { + assert.strictEqual(driver, d) + assert.strictEqual(path, 'original/path') + return Promise.reject('unhandled file error') + } + driver.setFileDetector({ handleFile }) + + return driver.findElement(By.id('foo')).sendKeys('original/', 'path') + }) }) describe('switchTo()', function () { From b01041fd8e1f134a098dca73b0265aaa18ad3257 Mon Sep 17 00:00:00 2001 From: Navin Chandra <98466550+navin772@users.noreply.github.com> Date: Tue, 29 Oct 2024 03:45:04 +0530 Subject: [PATCH 028/135] [py]: set consistent polling across java and python for `WebDriverWait` methods (#14626) Co-authored-by: Sri Harsha <12621691+harsha509@users.noreply.github.com> --- py/selenium/webdriver/support/wait.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/py/selenium/webdriver/support/wait.py b/py/selenium/webdriver/support/wait.py index 949b47238d20e..35bd74a695eb8 100644 --- a/py/selenium/webdriver/support/wait.py +++ b/py/selenium/webdriver/support/wait.py @@ -99,9 +99,9 @@ def until(self, method: Callable[[D], Union[Literal[False], T]], message: str = except self._ignored_exceptions as exc: screen = getattr(exc, "screen", None) stacktrace = getattr(exc, "stacktrace", None) - time.sleep(self._poll) if time.monotonic() > end_time: break + time.sleep(self._poll) raise TimeoutException(message, screen, stacktrace) def until_not(self, method: Callable[[D], T], message: str = "") -> Union[T, Literal[True]]: @@ -122,7 +122,7 @@ def until_not(self, method: Callable[[D], T], message: str = "") -> Union[T, Lit return value except self._ignored_exceptions: return True - time.sleep(self._poll) if time.monotonic() > end_time: break + time.sleep(self._poll) raise TimeoutException(message) From e9e684d86b68516fbd1922ce1885907fdb41df65 Mon Sep 17 00:00:00 2001 From: joerg1985 <16140691+joerg1985@users.noreply.github.com> Date: Tue, 29 Oct 2024 13:55:02 +0100 Subject: [PATCH 029/135] [grid] limit the number of websocket connections per session (#14410) Co-authored-by: Viet Nguyen Duc --- .../org/openqa/selenium/grid/node/Node.java | 11 +++++ .../grid/node/ProxyNodeWebsockets.java | 7 +++ .../grid/node/TryAcquireConnection.java | 45 +++++++++++++++++++ .../selenium/grid/node/config/NodeFlags.java | 9 ++++ .../grid/node/config/NodeOptions.java | 10 +++++ .../selenium/grid/node/k8s/OneShotNode.java | 15 ++++++- .../selenium/grid/node/local/LocalNode.java | 33 +++++++++++++- .../grid/node/local/LocalNodeFactory.java | 3 +- .../selenium/grid/node/local/SessionSlot.java | 9 ++++ .../selenium/grid/node/remote/RemoteNode.java | 12 +++++ .../grid/distributor/AddingNodesTest.java | 5 +++ 11 files changed, 154 insertions(+), 5 deletions(-) create mode 100644 java/src/org/openqa/selenium/grid/node/TryAcquireConnection.java diff --git a/java/src/org/openqa/selenium/grid/node/Node.java b/java/src/org/openqa/selenium/grid/node/Node.java index 09fe7d02ae9f5..bc2b5c75b5ab7 100644 --- a/java/src/org/openqa/selenium/grid/node/Node.java +++ b/java/src/org/openqa/selenium/grid/node/Node.java @@ -101,6 +101,12 @@ * by {@code sessionId}. This returns a boolean. * * + * POST + * /se/grid/node/connection/{sessionId} + * Allows the node to be ask about whether or not new websocket connections are allowed for the {@link Session} + * identified by {@code sessionId}. This returns a boolean. + * + * * * * /session/{sessionId}/* * The request is forwarded to the {@link Session} identified by {@code sessionId}. When the @@ -172,6 +178,9 @@ protected Node( get("/se/grid/node/owner/{sessionId}") .to(params -> new IsSessionOwner(this, sessionIdFrom(params))) .with(spanDecorator("node.is_session_owner").andThen(requiresSecret)), + post("/se/grid/node/connection/{sessionId}") + .to(params -> new TryAcquireConnection(this, sessionIdFrom(params))) + .with(spanDecorator("node.is_session_owner").andThen(requiresSecret)), delete("/se/grid/node/session/{sessionId}") .to(params -> new StopNodeSession(this, sessionIdFrom(params))) .with(spanDecorator("node.stop_session").andThen(requiresSecret)), @@ -244,6 +253,8 @@ public TemporaryFilesystem getDownloadsFilesystem(UUID uuid) throws IOException public abstract boolean isSessionOwner(SessionId id); + public abstract boolean tryAcquireConnection(SessionId id); + public abstract boolean isSupporting(Capabilities capabilities); public abstract NodeStatus getStatus(); diff --git a/java/src/org/openqa/selenium/grid/node/ProxyNodeWebsockets.java b/java/src/org/openqa/selenium/grid/node/ProxyNodeWebsockets.java index e3f656c069125..eff13dc5a40f5 100644 --- a/java/src/org/openqa/selenium/grid/node/ProxyNodeWebsockets.java +++ b/java/src/org/openqa/selenium/grid/node/ProxyNodeWebsockets.java @@ -94,6 +94,13 @@ public Optional> apply(String uri, Consumer downstrea return Optional.empty(); } + // ensure one session does not open to many connections, this might have a negative impact on + // the grid health + if (!node.tryAcquireConnection(id)) { + LOG.warning("Too many websocket connections initiated by " + id); + return Optional.empty(); + } + Session session = node.getSession(id); Capabilities caps = session.getCapabilities(); LOG.fine("Scanning for endpoint: " + caps); diff --git a/java/src/org/openqa/selenium/grid/node/TryAcquireConnection.java b/java/src/org/openqa/selenium/grid/node/TryAcquireConnection.java new file mode 100644 index 0000000000000..6c8822bea84cd --- /dev/null +++ b/java/src/org/openqa/selenium/grid/node/TryAcquireConnection.java @@ -0,0 +1,45 @@ +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package org.openqa.selenium.grid.node; + +import static org.openqa.selenium.remote.http.Contents.asJson; + +import com.google.common.collect.ImmutableMap; +import java.io.UncheckedIOException; +import org.openqa.selenium.internal.Require; +import org.openqa.selenium.remote.SessionId; +import org.openqa.selenium.remote.http.HttpHandler; +import org.openqa.selenium.remote.http.HttpRequest; +import org.openqa.selenium.remote.http.HttpResponse; + +class TryAcquireConnection implements HttpHandler { + + private final Node node; + private final SessionId id; + + TryAcquireConnection(Node node, SessionId id) { + this.node = Require.nonNull("Node", node); + this.id = Require.nonNull("Session id", id); + } + + @Override + public HttpResponse execute(HttpRequest req) throws UncheckedIOException { + return new HttpResponse() + .setContent(asJson(ImmutableMap.of("value", node.tryAcquireConnection(id)))); + } +} diff --git a/java/src/org/openqa/selenium/grid/node/config/NodeFlags.java b/java/src/org/openqa/selenium/grid/node/config/NodeFlags.java index 800a0798a4e17..b56e57b3dcb97 100644 --- a/java/src/org/openqa/selenium/grid/node/config/NodeFlags.java +++ b/java/src/org/openqa/selenium/grid/node/config/NodeFlags.java @@ -18,6 +18,7 @@ package org.openqa.selenium.grid.node.config; import static org.openqa.selenium.grid.config.StandardGridRoles.NODE_ROLE; +import static org.openqa.selenium.grid.node.config.NodeOptions.DEFAULT_CONNECTION_LIMIT; import static org.openqa.selenium.grid.node.config.NodeOptions.DEFAULT_DETECT_DRIVERS; import static org.openqa.selenium.grid.node.config.NodeOptions.DEFAULT_DRAIN_AFTER_SESSION_COUNT; import static org.openqa.selenium.grid.node.config.NodeOptions.DEFAULT_ENABLE_BIDI; @@ -77,6 +78,14 @@ public class NodeFlags implements HasRoles { @ConfigValue(section = NODE_SECTION, name = "session-timeout", example = "60") public int sessionTimeout = DEFAULT_SESSION_TIMEOUT; + @Parameter( + names = {"--connection-limit-per-session"}, + description = + "Let X be the maximum number of websocket connections per session.This will ensure one" + + " session is not able to exhaust the connection limit of the host") + @ConfigValue(section = NODE_SECTION, name = "connection-limit-per-session", example = "8") + public int connectionLimitPerSession = DEFAULT_CONNECTION_LIMIT; + @Parameter( names = {"--detect-drivers"}, arity = 1, diff --git a/java/src/org/openqa/selenium/grid/node/config/NodeOptions.java b/java/src/org/openqa/selenium/grid/node/config/NodeOptions.java index 7317f6e7c8870..ff8fc6d76667a 100644 --- a/java/src/org/openqa/selenium/grid/node/config/NodeOptions.java +++ b/java/src/org/openqa/selenium/grid/node/config/NodeOptions.java @@ -73,6 +73,7 @@ public class NodeOptions { public static final int DEFAULT_HEARTBEAT_PERIOD = 60; public static final int DEFAULT_SESSION_TIMEOUT = 300; public static final int DEFAULT_DRAIN_AFTER_SESSION_COUNT = 0; + public static final int DEFAULT_CONNECTION_LIMIT = 10; public static final boolean DEFAULT_ENABLE_CDP = true; public static final boolean DEFAULT_ENABLE_BIDI = true; static final String NODE_SECTION = "node"; @@ -262,6 +263,15 @@ public int getMaxSessions() { return Math.min(maxSessions, DEFAULT_MAX_SESSIONS); } + public int getConnectionLimitPerSession() { + int connectionLimit = + config + .getInt(NODE_SECTION, "connection-limit-per-session") + .orElse(DEFAULT_CONNECTION_LIMIT); + Require.positive("Session connection limit", connectionLimit); + return connectionLimit; + } + public Duration getSessionTimeout() { // If the user sets 10s or less, we default to 10s. int seconds = diff --git a/java/src/org/openqa/selenium/grid/node/k8s/OneShotNode.java b/java/src/org/openqa/selenium/grid/node/k8s/OneShotNode.java index d293d1c6ba78c..af8c05cf7a7c1 100644 --- a/java/src/org/openqa/selenium/grid/node/k8s/OneShotNode.java +++ b/java/src/org/openqa/selenium/grid/node/k8s/OneShotNode.java @@ -34,6 +34,7 @@ import java.util.Optional; import java.util.ServiceLoader; import java.util.UUID; +import java.util.concurrent.atomic.AtomicInteger; import java.util.logging.Logger; import java.util.stream.StreamSupport; import org.openqa.selenium.Capabilities; @@ -98,6 +99,8 @@ public class OneShotNode extends Node { private final Duration heartbeatPeriod; private final URI gridUri; private final UUID slotId = UUID.randomUUID(); + private final int connectionLimitPerSession; + private final AtomicInteger connectionCounter = new AtomicInteger(); private RemoteWebDriver driver; private SessionId sessionId; private HttpClient client; @@ -114,7 +117,8 @@ private OneShotNode( URI uri, URI gridUri, Capabilities stereotype, - WebDriverInfo driverInfo) { + WebDriverInfo driverInfo, + int connectionLimitPerSession) { super(tracer, id, uri, registrationSecret, Require.positive(sessionTimeout)); this.heartbeatPeriod = heartbeatPeriod; @@ -122,6 +126,7 @@ private OneShotNode( this.gridUri = Require.nonNull("Public Grid URI", gridUri); this.stereotype = ImmutableCapabilities.copyOf(Require.nonNull("Stereotype", stereotype)); this.driverInfo = Require.nonNull("Driver info", driverInfo); + this.connectionLimitPerSession = connectionLimitPerSession; new JMXHelper().register(this); } @@ -177,7 +182,8 @@ public static Node create(Config config) { .getPublicGridUri() .orElseThrow(() -> new ConfigException("Unable to determine public grid address")), stereotype, - driverInfo); + driverInfo, + nodeOptions.getConnectionLimitPerSession()); } @Override @@ -357,6 +363,11 @@ public boolean isSessionOwner(SessionId id) { return driver != null && sessionId.equals(id); } + @Override + public boolean tryAcquireConnection(SessionId id) { + return sessionId.equals(id) && connectionLimitPerSession > connectionCounter.getAndIncrement(); + } + @Override public boolean isSupporting(Capabilities capabilities) { return driverInfo.isSupporting(capabilities); diff --git a/java/src/org/openqa/selenium/grid/node/local/LocalNode.java b/java/src/org/openqa/selenium/grid/node/local/LocalNode.java index 7304db8a87847..b42c557c91008 100644 --- a/java/src/org/openqa/selenium/grid/node/local/LocalNode.java +++ b/java/src/org/openqa/selenium/grid/node/local/LocalNode.java @@ -59,6 +59,7 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicLong; import java.util.logging.Level; import java.util.logging.Logger; import java.util.stream.Collectors; @@ -127,6 +128,7 @@ public class LocalNode extends Node { private final int configuredSessionCount; private final boolean cdpEnabled; private final boolean managedDownloadsEnabled; + private final int connectionLimitPerSession; private final boolean bidiEnabled; private final AtomicBoolean drainAfterSessions = new AtomicBoolean(); @@ -153,7 +155,8 @@ protected LocalNode( Duration heartbeatPeriod, List factories, Secret registrationSecret, - boolean managedDownloadsEnabled) { + boolean managedDownloadsEnabled, + int connectionLimitPerSession) { super( tracer, new NodeId(UUID.randomUUID()), @@ -176,6 +179,7 @@ protected LocalNode( this.cdpEnabled = cdpEnabled; this.bidiEnabled = bidiEnabled; this.managedDownloadsEnabled = managedDownloadsEnabled; + this.connectionLimitPerSession = connectionLimitPerSession; this.healthCheck = healthCheck == null @@ -579,6 +583,24 @@ public boolean isSessionOwner(SessionId id) { return currentSessions.getIfPresent(id) != null; } + @Override + public boolean tryAcquireConnection(SessionId id) throws NoSuchSessionException { + SessionSlot slot = currentSessions.getIfPresent(id); + + if (slot == null) { + return false; + } + + if (connectionLimitPerSession == -1) { + // no limit + return true; + } + + AtomicLong counter = slot.getConnectionCounter(); + + return connectionLimitPerSession > counter.getAndIncrement(); + } + @Override public Session getSession(SessionId id) throws NoSuchSessionException { Require.nonNull("Session ID", id); @@ -987,6 +1009,7 @@ public static class Builder { private HealthCheck healthCheck; private Duration heartbeatPeriod = Duration.ofSeconds(NodeOptions.DEFAULT_HEARTBEAT_PERIOD); private boolean managedDownloadsEnabled = false; + private int connectionLimitPerSession = -1; private Builder(Tracer tracer, EventBus bus, URI uri, URI gridUri, Secret registrationSecret) { this.tracer = Require.nonNull("Tracer", tracer); @@ -1041,6 +1064,11 @@ public Builder enableManagedDownloads(boolean enable) { return this; } + public Builder connectionLimitPerSession(int connectionLimitPerSession) { + this.connectionLimitPerSession = connectionLimitPerSession; + return this; + } + public LocalNode build() { return new LocalNode( tracer, @@ -1057,7 +1085,8 @@ public LocalNode build() { heartbeatPeriod, factories.build(), registrationSecret, - managedDownloadsEnabled); + managedDownloadsEnabled, + connectionLimitPerSession); } public Advanced advanced() { diff --git a/java/src/org/openqa/selenium/grid/node/local/LocalNodeFactory.java b/java/src/org/openqa/selenium/grid/node/local/LocalNodeFactory.java index 4224b2483f9db..600f516b02992 100644 --- a/java/src/org/openqa/selenium/grid/node/local/LocalNodeFactory.java +++ b/java/src/org/openqa/selenium/grid/node/local/LocalNodeFactory.java @@ -70,7 +70,8 @@ public static Node create(Config config) { .enableCdp(nodeOptions.isCdpEnabled()) .enableBiDi(nodeOptions.isBiDiEnabled()) .enableManagedDownloads(nodeOptions.isManagedDownloadsEnabled()) - .heartbeatPeriod(nodeOptions.getHeartbeatPeriod()); + .heartbeatPeriod(nodeOptions.getHeartbeatPeriod()) + .connectionLimitPerSession(nodeOptions.getConnectionLimitPerSession()); List> builders = new ArrayList<>(); ServiceLoader.load(DriverService.Builder.class).forEach(builders::add); diff --git a/java/src/org/openqa/selenium/grid/node/local/SessionSlot.java b/java/src/org/openqa/selenium/grid/node/local/SessionSlot.java index 5b84accc84c31..3c51b785c13c0 100644 --- a/java/src/org/openqa/selenium/grid/node/local/SessionSlot.java +++ b/java/src/org/openqa/selenium/grid/node/local/SessionSlot.java @@ -21,6 +21,7 @@ import java.util.ServiceLoader; import java.util.UUID; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicLong; import java.util.function.Function; import java.util.function.Predicate; import java.util.logging.Level; @@ -59,6 +60,7 @@ public class SessionSlot private final AtomicBoolean reserved = new AtomicBoolean(false); private final boolean supportingCdp; private final boolean supportingBiDi; + private final AtomicLong connectionCounter; private ActiveSession currentSession; public SessionSlot(EventBus bus, Capabilities stereotype, SessionFactory factory) { @@ -68,6 +70,7 @@ public SessionSlot(EventBus bus, Capabilities stereotype, SessionFactory factory this.factory = Require.nonNull("Session factory", factory); this.supportingCdp = isSlotSupportingCdp(this.stereotype); this.supportingBiDi = isSlotSupportingBiDi(this.stereotype); + this.connectionCounter = new AtomicLong(); } public UUID getId() { @@ -112,6 +115,7 @@ public void stop() { LOG.log(Level.WARNING, "Unable to cleanly close session", e); } currentSession = null; + connectionCounter.set(0); release(); bus.fire(new SessionClosedEvent(id)); LOG.info(String.format("Stopping session %s", id)); @@ -148,6 +152,7 @@ public Either apply(CreateSessionRequest sess if (possibleSession.isRight()) { ActiveSession session = possibleSession.right(); currentSession = session; + connectionCounter.set(0); return Either.right(session); } else { return Either.left(possibleSession.left()); @@ -185,4 +190,8 @@ public boolean hasRelayFactory() { public boolean isRelayServiceUp() { return hasRelayFactory() && ((RelaySessionFactory) factory).isServiceUp(); } + + public AtomicLong getConnectionCounter() { + return connectionCounter; + } } diff --git a/java/src/org/openqa/selenium/grid/node/remote/RemoteNode.java b/java/src/org/openqa/selenium/grid/node/remote/RemoteNode.java index ae7cc8e1af9fb..5df5da5969c42 100644 --- a/java/src/org/openqa/selenium/grid/node/remote/RemoteNode.java +++ b/java/src/org/openqa/selenium/grid/node/remote/RemoteNode.java @@ -174,6 +174,18 @@ public boolean isSessionOwner(SessionId id) { return Boolean.TRUE.equals(Values.get(res, Boolean.class)); } + @Override + public boolean tryAcquireConnection(SessionId id) { + Require.nonNull("Session ID", id); + + HttpRequest req = new HttpRequest(POST, "/se/grid/node/connection/" + id); + HttpTracing.inject(tracer, tracer.getCurrentContext(), req); + + HttpResponse res = client.with(addSecret).execute(req); + + return Boolean.TRUE.equals(Values.get(res, Boolean.class)); + } + @Override public Session getSession(SessionId id) throws NoSuchSessionException { Require.nonNull("Session ID", id); diff --git a/java/test/org/openqa/selenium/grid/distributor/AddingNodesTest.java b/java/test/org/openqa/selenium/grid/distributor/AddingNodesTest.java index 0649e1bbee235..1485d04fca4c6 100644 --- a/java/test/org/openqa/selenium/grid/distributor/AddingNodesTest.java +++ b/java/test/org/openqa/selenium/grid/distributor/AddingNodesTest.java @@ -445,6 +445,11 @@ public boolean isSessionOwner(SessionId id) { return running != null && running.getId().equals(id); } + @Override + public boolean tryAcquireConnection(SessionId id) { + return false; + } + @Override public boolean isSupporting(Capabilities capabilities) { return Objects.equals("cake", capabilities.getCapability("cheese")); From 8e95ea95676b5ea79c3becc3b51d1160279cd4c2 Mon Sep 17 00:00:00 2001 From: Sandeep Suryaprasad <26169602+sandeepsuryaprasad@users.noreply.github.com> Date: Tue, 29 Oct 2024 18:27:50 +0530 Subject: [PATCH 030/135] [py] moved `isort`, `black` and `docformatter` settings from `tox.ini` file to `pyproject.toml` (#14671) * moved isort,black and docformatter settings to pyproject.toml * moved isort, black and docformatter settings to pyproject.toml * removed redundant pytest settings from setup.cfg --- py/pyproject.toml | 16 ++++++++++++++++ py/setup.cfg | 5 ----- py/tox.ini | 11 ----------- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/py/pyproject.toml b/py/pyproject.toml index 87d451bbf987f..8a5e26071de6a 100644 --- a/py/pyproject.toml +++ b/py/pyproject.toml @@ -61,3 +61,19 @@ ignore_missing_imports = true [[tool.mypy._winreg]] # suppress error messages about imports that cannot be resolved. ignore_missing_imports = true + +[tool.isort] +# isort is a common python tool for keeping imports nicely formatted. +# Automatically keep imports alphabetically sorted, on single lines in +# PEP recommended sections (https://peps.python.org/pep-0008/#imports) +# files or individual lines can be ignored via `# isort:skip|# isort:skip_file`. +profile = "black" +py_version=38 +force_single_line = true + +[tool.black] +line-length = 120 +target-version = ['py38'] + +[tool.docformatter] +recursive = true diff --git a/py/setup.cfg b/py/setup.cfg index 0cda7cace9e8c..c8eb38080b7d3 100644 --- a/py/setup.cfg +++ b/py/setup.cfg @@ -4,8 +4,3 @@ exclude = .tox,docs/source/conf.py,*venv extend-ignore = E501, E203 # This does nothing for now as E501 is ignored. max-line-length = 120 - -[tool:pytest] -addopts = -ra -python_files = test_*.py *_tests.py -testpaths = test diff --git a/py/tox.ini b/py/tox.ini index f454af1ee3347..fefb4daa3997f 100644 --- a/py/tox.ini +++ b/py/tox.ini @@ -25,17 +25,6 @@ deps = trio-typing==0.7.0 commands = mypy --install-types {posargs} - -[isort] -; isort is a common python tool for keeping imports nicely formatted. -; Automatically keep imports alphabetically sorted, on single lines in -; PEP recommended sections (https://peps.python.org/pep-0008/#imports) -; files or individual lines can be ignored via `# isort:skip|# isort:skip_file`. -profile = black -py_version=38 -force_single_line = True - - [testenv:linting-ci] ; checks linting for CI with stricter exiting when failing. skip_install = true From 9b8cfb1c7e5777c887743751253d3770e61d374d Mon Sep 17 00:00:00 2001 From: BlitzDestroyer <143762104+BlitzDestroyer@users.noreply.github.com> Date: Tue, 29 Oct 2024 08:59:51 -0500 Subject: [PATCH 031/135] [dotnet] Fixed typo in ResponseData MymeType -> MimeType (#14670) fixed typo in ResponseData MymeType -> MimeType --- dotnet/src/webdriver/BiDi/Modules/Network/ResponseData.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/ResponseData.cs b/dotnet/src/webdriver/BiDi/Modules/Network/ResponseData.cs index 6096bda7fd8a6..3d21c2c202fe8 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/ResponseData.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/ResponseData.cs @@ -11,7 +11,7 @@ public record ResponseData(string Url, string StatusText, bool FromCache, IReadOnlyList
Headers, - string MymeType, + string MimeType, long BytesReceived, long? HeadersSize, long? BodySize, From f391cd018c2735a13da10c8bb6d455211ee8a787 Mon Sep 17 00:00:00 2001 From: Simon Benzer <69980130+shbenzer@users.noreply.github.com> Date: Tue, 29 Oct 2024 10:21:47 -0400 Subject: [PATCH 032/135] [py] Added more internal logging for CDP (#14668) Co-authored-by: Viet Nguyen Duc --- py/selenium/webdriver/common/bidi/cdp.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/py/selenium/webdriver/common/bidi/cdp.py b/py/selenium/webdriver/common/bidi/cdp.py index c4cb0feeedf40..c9ed47825e4da 100644 --- a/py/selenium/webdriver/common/bidi/cdp.py +++ b/py/selenium/webdriver/common/bidi/cdp.py @@ -211,13 +211,19 @@ async def execute(self, cmd: typing.Generator[dict, T, typing.Any]) -> T: if self.session_id: request["sessionId"] = self.session_id request_str = json.dumps(request) + if logger.isEnabledFor(logging.DEBUG): + logger.debug(f"Sending CDP message: {cmd_id} {cmd_event}: {request_str}") try: await self.ws.send_message(request_str) except WsConnectionClosed as wcc: raise CdpConnectionClosed(wcc.reason) from None await cmd_event.wait() response = self.inflight_result.pop(cmd_id) + if logger.isEnabledFor(logging.DEBUG): + logger.debug(f"Received CDP message: {response}") if isinstance(response, Exception): + if logger.isEnabledFor(logging.DEBUG): + logger.debug(f"Exception raised by {cmd_event} message: {type(response).__name__}") raise response return response From e7c09a2cb2b0951f2c2c1907b11f732f00257e44 Mon Sep 17 00:00:00 2001 From: joerg1985 <16140691+joerg1985@users.noreply.github.com> Date: Tue, 29 Oct 2024 23:36:32 +0100 Subject: [PATCH 033/135] [grid] enable the httpclient to perform async requests #14403 (#14409) Co-authored-by: Viet Nguyen Duc --- .../selenium/remote/http/HttpClient.java | 5 + .../remote/http/jdk/JdkHttpClient.java | 91 +++++++++++++------ .../remote/internal/HttpClientTestBase.java | 30 ++++++ 3 files changed, 99 insertions(+), 27 deletions(-) diff --git a/java/src/org/openqa/selenium/remote/http/HttpClient.java b/java/src/org/openqa/selenium/remote/http/HttpClient.java index ee7f8613a64ea..6cc86a6418a2f 100644 --- a/java/src/org/openqa/selenium/remote/http/HttpClient.java +++ b/java/src/org/openqa/selenium/remote/http/HttpClient.java @@ -23,6 +23,7 @@ import java.net.URL; import java.util.ServiceLoader; import java.util.Set; +import java.util.concurrent.CompletableFuture; import java.util.stream.Collectors; import java.util.stream.StreamSupport; import org.openqa.selenium.internal.Require; @@ -32,6 +33,10 @@ public interface HttpClient extends Closeable, HttpHandler { WebSocket openSocket(HttpRequest request, WebSocket.Listener listener); + default CompletableFuture executeAsync(HttpRequest req) { + return CompletableFuture.supplyAsync(() -> execute(req)); + } + default void close() {} interface Factory { diff --git a/java/src/org/openqa/selenium/remote/http/jdk/JdkHttpClient.java b/java/src/org/openqa/selenium/remote/http/jdk/JdkHttpClient.java index 51e4ede37d563..0fee3531ce6c0 100644 --- a/java/src/org/openqa/selenium/remote/http/jdk/JdkHttpClient.java +++ b/java/src/org/openqa/selenium/remote/http/jdk/JdkHttpClient.java @@ -44,6 +44,7 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.Future; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.Supplier; @@ -369,9 +370,64 @@ private URI getWebSocketUri(HttpRequest request) throws URISyntaxException { return uri; } + @Override + public CompletableFuture executeAsync(HttpRequest request) { + // the facade for this http request + CompletableFuture cf = new CompletableFuture<>(); + + // the actual http request + Future future = + executorService.submit( + () -> { + try { + HttpResponse response = handler.execute(request); + + cf.complete(response); + } catch (Throwable t) { + cf.completeExceptionally(t); + } + }); + + // try to interrupt the http request in case of a timeout, to avoid + // https://bugs.openjdk.org/browse/JDK-8258397 + cf.exceptionally( + (throwable) -> { + if (throwable instanceof java.util.concurrent.TimeoutException) { + // interrupts the thread + future.cancel(true); + } + + // nobody will read this result + return null; + }); + + // will complete exceptionally with a java.util.concurrent.TimeoutException + return cf.orTimeout(readTimeout.toMillis(), TimeUnit.MILLISECONDS); + } + @Override public HttpResponse execute(HttpRequest req) throws UncheckedIOException { - return handler.execute(req); + try { + // executeAsync does define a timeout, no need to use a timeout here + return executeAsync(req).get(); + } catch (CancellationException e) { + throw new WebDriverException(e.getMessage(), e); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new WebDriverException(e.getMessage(), e); + } catch (ExecutionException e) { + Throwable cause = e.getCause(); + + if (cause instanceof java.util.concurrent.TimeoutException) { + throw new TimeoutException(cause); + } else if (cause instanceof RuntimeException) { + throw (RuntimeException) cause; + } else if (cause instanceof Error) { + throw (Error) cause; + } + + throw new WebDriverException((cause != null) ? cause : e); + } } private HttpResponse execute0(HttpRequest req) throws UncheckedIOException { @@ -390,34 +446,13 @@ private HttpResponse execute0(HttpRequest req) throws UncheckedIOException { // - avoid a downgrade of POST requests, see the javadoc of j.n.h.HttpClient.Redirect // - not run into https://bugs.openjdk.org/browse/JDK-8304701 for (int i = 0; i < 100; i++) { - java.net.http.HttpRequest request = messages.createRequest(req, method, rawUri); - java.net.http.HttpResponse response; - - // use sendAsync to not run into https://bugs.openjdk.org/browse/JDK-8258397 - CompletableFuture> future = - client.sendAsync(request, byteHandler); - - try { - response = future.get(readTimeout.toMillis(), TimeUnit.MILLISECONDS); - } catch (CancellationException e) { - throw new WebDriverException(e.getMessage(), e); - } catch (ExecutionException e) { - Throwable cause = e.getCause(); - - if (cause instanceof HttpTimeoutException) { - throw new TimeoutException(cause); - } else if (cause instanceof IOException) { - throw (IOException) cause; - } else if (cause instanceof RuntimeException) { - throw (RuntimeException) cause; - } - - throw new WebDriverException((cause != null) ? cause : e); - } catch (java.util.concurrent.TimeoutException e) { - future.cancel(true); - throw new TimeoutException(e); + if (Thread.interrupted()) { + throw new InterruptedException("http request has been interrupted"); } + java.net.http.HttpRequest request = messages.createRequest(req, method, rawUri); + java.net.http.HttpResponse response = client.send(request, byteHandler); + switch (response.statusCode()) { case 303: method = HttpMethod.GET; @@ -454,6 +489,8 @@ private HttpResponse execute0(HttpRequest req) throws UncheckedIOException { } throw new ProtocolException("Too many redirects: 101"); + } catch (HttpTimeoutException e) { + throw new TimeoutException(e); } catch (IOException e) { throw new UncheckedIOException(e); } catch (InterruptedException e) { diff --git a/java/test/org/openqa/selenium/remote/internal/HttpClientTestBase.java b/java/test/org/openqa/selenium/remote/internal/HttpClientTestBase.java index a50b4c11f75e3..3379772a8db1e 100644 --- a/java/test/org/openqa/selenium/remote/internal/HttpClientTestBase.java +++ b/java/test/org/openqa/selenium/remote/internal/HttpClientTestBase.java @@ -35,6 +35,7 @@ import java.util.List; import java.util.Map; import java.util.TreeMap; +import java.util.concurrent.atomic.AtomicInteger; import java.util.logging.Logger; import java.util.stream.StreamSupport; import org.junit.jupiter.api.AfterAll; @@ -233,6 +234,35 @@ public void shouldAllowConfigurationFromSystemProperties() { } } + @Test + public void shouldStopRequestAfterTimeout() throws InterruptedException { + AtomicInteger counter = new AtomicInteger(); + + delegate = + req -> { + counter.incrementAndGet(); + try { + Thread.sleep(1600); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + } + HttpResponse response = new HttpResponse(); + response.setStatus(302); + response.addHeader("Location", "/"); + return response; + }; + ClientConfig clientConfig = ClientConfig.defaultConfig().readTimeout(Duration.ofMillis(800)); + + try (HttpClient client = + createFactory().createClient(clientConfig.baseUri(URI.create(server.whereIs("/"))))) { + HttpRequest request = new HttpRequest(GET, "/delayed"); + assertThatExceptionOfType(TimeoutException.class).isThrownBy(() -> client.execute(request)); + Thread.sleep(4200); + + assertThat(counter.get()).isEqualTo(1); + } + } + private HttpResponse getResponseWithHeaders(final Multimap headers) { return executeWithinServer( new HttpRequest(GET, "/foo"), From 5be3015ef43f8e81019e7c0d7bec65b840a5a5cc Mon Sep 17 00:00:00 2001 From: Viet Nguyen Duc Date: Wed, 30 Oct 2024 00:42:34 +0000 Subject: [PATCH 034/135] [ci][rb] Fix remote tests (#14679) Signed-off-by: Viet Nguyen Duc --- .../selenium/webdriver/remote/driver_spec.rb | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/rb/spec/integration/selenium/webdriver/remote/driver_spec.rb b/rb/spec/integration/selenium/webdriver/remote/driver_spec.rb index 36038859cd303..671aa1720fef3 100644 --- a/rb/spec/integration/selenium/webdriver/remote/driver_spec.rb +++ b/rb/spec/integration/selenium/webdriver/remote/driver_spec.rb @@ -83,10 +83,12 @@ module Remote it 'errors when not set', {except: {browser: :firefox, reason: 'grid always sets true and firefox returns it'}, exclude: {browser: :safari, reason: 'grid hangs'}} do - expect { - driver.downloadable_files - }.to raise_exception(Error::WebDriverError, - 'You must enable downloads in order to work with downloadable files.') + reset_driver!(enable_downloads: false) do |driver| + expect { + driver.downloadable_files + }.to raise_exception(Error::WebDriverError, + 'You must enable downloads in order to work with downloadable files.') + end end private From 69f9e5eae1cfcabd794327bef2f81102f213fae6 Mon Sep 17 00:00:00 2001 From: Selenium CI Bot Date: Wed, 30 Oct 2024 05:23:39 +0100 Subject: [PATCH 035/135] [build] Prepare for release of Selenium 4.26.0 (#14665) * Update pinned browser versions * Update supported versions for Chrome DevTools * Update selenium manager version * Update authors file * FIX CHANGELOGS BEFORE MERGING! Update versions and change logs to release Selenium 4.26.0 --------- Signed-off-by: Viet Nguyen Duc Co-authored-by: Selenium CI Bot Co-authored-by: Nikolay Borisenko <22616990+nvborisenko@users.noreply.github.com> Co-authored-by: Viet Nguyen Duc --- .github/release.yml | 2 +- AUTHORS | 5 + MODULE.bazel | 60 +-- Rakefile | 4 +- .../chromium/{v127 => v130}/BUILD.bazel | 0 .../{v127 => v130}/browser_protocol.pdl | 378 ++++++++++++++++-- .../chromium/{v127 => v130}/js_protocol.pdl | 0 common/repositories.bzl | 50 +-- common/selenium_manager.bzl | 12 +- dotnet/CHANGELOG | 14 + dotnet/selenium-dotnet-version.bzl | 4 +- .../src/webdriver/DevTools/DevToolsDomains.cs | 2 +- .../V127Domains.cs => v130/V130Domains.cs} | 22 +- .../V130JavaScript.cs} | 16 +- .../{v127/V127Log.cs => v130/V130Log.cs} | 14 +- .../V127Network.cs => v130/V130Network.cs} | 24 +- .../V127Target.cs => v130/V130Target.cs} | 14 +- .../StableChannelChromeDriver.cs | 2 +- .../common/DevTools/DevToolsConsoleTest.cs | 2 +- .../test/common/DevTools/DevToolsLogTest.cs | 2 +- .../common/DevTools/DevToolsNetworkTest.cs | 2 +- .../DevTools/DevToolsPerformanceTest.cs | 2 +- .../common/DevTools/DevToolsProfilerTest.cs | 2 +- .../common/DevTools/DevToolsSecurityTest.cs | 2 +- .../test/common/DevTools/DevToolsTabsTest.cs | 2 +- .../common/DevTools/DevToolsTargetTest.cs | 4 +- java/CHANGELOG | 18 + java/maven_install.json | 281 +++++++------ .../devtools/{v127 => v130}/BUILD.bazel | 2 +- .../v130CdpInfo.java} | 8 +- .../v130Domains.java} | 26 +- .../v127Events.java => v130/v130Events.java} | 18 +- .../v130Javascript.java} | 14 +- .../{v127/v127Log.java => v130/v130Log.java} | 10 +- .../v130Network.java} | 20 +- .../v127Target.java => v130/v130Target.java} | 24 +- .../org/openqa/selenium/devtools/versions.bzl | 2 +- java/version.bzl | 2 +- .../node/selenium-webdriver/BUILD.bazel | 4 +- javascript/node/selenium-webdriver/CHANGES.md | 7 + .../node/selenium-webdriver/package.json | 2 +- py/BUILD.bazel | 4 +- py/CHANGES | 15 + py/docs/source/conf.py | 2 +- py/selenium/__init__.py | 2 +- py/selenium/webdriver/__init__.py | 2 +- py/setup.py | 2 +- rb/CHANGES | 7 + rb/Gemfile.lock | 28 +- rb/lib/selenium/devtools/BUILD.bazel | 2 +- rb/lib/selenium/devtools/version.rb | 2 +- rb/lib/selenium/webdriver/version.rb | 2 +- rust/CHANGELOG.md | 4 + scripts/github-actions/release_header.md | 3 +- 54 files changed, 775 insertions(+), 379 deletions(-) rename common/devtools/chromium/{v127 => v130}/BUILD.bazel (100%) rename common/devtools/chromium/{v127 => v130}/browser_protocol.pdl (97%) rename common/devtools/chromium/{v127 => v130}/js_protocol.pdl (100%) rename dotnet/src/webdriver/DevTools/{v127/V127Domains.cs => v130/V130Domains.cs} (78%) rename dotnet/src/webdriver/DevTools/{v127/V127JavaScript.cs => v130/V130JavaScript.cs} (94%) rename dotnet/src/webdriver/DevTools/{v127/V127Log.cs => v130/V130Log.cs} (88%) rename dotnet/src/webdriver/DevTools/{v127/V127Network.cs => v130/V130Network.cs} (95%) rename dotnet/src/webdriver/DevTools/{v127/V127Target.cs => v130/V130Target.cs} (94%) rename java/src/org/openqa/selenium/devtools/{v127 => v130}/BUILD.bazel (98%) rename java/src/org/openqa/selenium/devtools/{v127/v127CdpInfo.java => v130/v130CdpInfo.java} (86%) rename java/src/org/openqa/selenium/devtools/{v127/v127Domains.java => v130/v130Domains.java} (77%) rename java/src/org/openqa/selenium/devtools/{v127/v127Events.java => v130/v130Events.java} (86%) rename java/src/org/openqa/selenium/devtools/{v127/v127Javascript.java => v130/v130Javascript.java} (85%) rename java/src/org/openqa/selenium/devtools/{v127/v127Log.java => v130/v130Log.java} (89%) rename java/src/org/openqa/selenium/devtools/{v127/v127Network.java => v130/v130Network.java} (92%) rename java/src/org/openqa/selenium/devtools/{v127/v127Target.java => v130/v130Target.java} (83%) diff --git a/.github/release.yml b/.github/release.yml index 8f13b55a4e290..95dee31ec9630 100644 --- a/.github/release.yml +++ b/.github/release.yml @@ -1,6 +1,6 @@ changelog: exclude: labels: - -dependencies + - dependencies authors: - selenium-ci diff --git a/AUTHORS b/AUTHORS index 6ed08840399de..c5dd7ca1b1756 100644 --- a/AUTHORS +++ b/AUTHORS @@ -91,6 +91,7 @@ Ashley Trinh Aslak Hellesøy asmundak Atsushi Tatsuma +Augustin Gottlieb <33221555+aguspe@users.noreply.github.com> Augustin Gottlieb Pequeno <33221555+aguspe@users.noreply.github.com> Aurélien Pupier Austin Michael Wilkins <42476341+amwilkins@users.noreply.github.com> @@ -106,6 +107,7 @@ bgermann bhecquet bhkwan Bill Agee +BlitzDestroyer <143762104+BlitzDestroyer@users.noreply.github.com> bob Bob Baron Bob Lubecker @@ -199,6 +201,7 @@ Darrin Cherry Dave Hoover Dave Hunt daviande +David Bernhard David Burns David English David Fischer @@ -696,6 +699,7 @@ PombaM Potapov Dmitriy Prakhar Rawat praveendvd <45095911+praveendvd@users.noreply.github.com> +Priyansh Garg Puja Jagani Pulkit Sharma Pydi Chandra @@ -719,6 +723,7 @@ richard.hines RichCrook richseviora Rishav Trivedi +Rob Brackett Rob Richardson Rob Wu Robert Elliot diff --git a/MODULE.bazel b/MODULE.bazel index 3ab1515e9c3fb..a1b464caee2c5 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -177,48 +177,48 @@ maven.install( "com.google.auto:auto-common:1.2.2", "com.google.auto.service:auto-service:1.1.1", "com.google.auto.service:auto-service-annotations:1.1.1", - "com.google.googlejavaformat:google-java-format:jar:1.23.0", + "com.google.googlejavaformat:google-java-format:jar:1.24.0", "com.graphql-java:graphql-java:22.3", "dev.failsafe:failsafe:3.3.2", - "io.grpc:grpc-context:1.66.0", + "io.grpc:grpc-context:1.68.0", "io.lettuce:lettuce-core:6.4.0.RELEASE", - "io.netty:netty-buffer:4.1.113.Final", - "io.netty:netty-codec-http:4.1.113.Final", - "io.netty:netty-codec-http2:4.1.113.Final", - "io.netty:netty-common:4.1.113.Final", - "io.netty:netty-handler:4.1.113.Final", - "io.netty:netty-handler-proxy:4.1.113.Final", - "io.netty:netty-transport:4.1.113.Final", - "io.opentelemetry:opentelemetry-api:1.42.1", - "io.opentelemetry:opentelemetry-context:1.42.1", - "io.opentelemetry:opentelemetry-exporter-logging:1.42.1", - "io.opentelemetry:opentelemetry-sdk:1.42.1", - "io.opentelemetry:opentelemetry-sdk-common:1.42.1", - "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:1.42.1", - "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:1.42.1", - "io.opentelemetry:opentelemetry-sdk-testing:1.42.1", - "io.opentelemetry:opentelemetry-sdk-trace:1.42.1", + "io.netty:netty-buffer:4.1.114.Final", + "io.netty:netty-codec-http:4.1.114.Final", + "io.netty:netty-codec-http2:4.1.114.Final", + "io.netty:netty-common:4.1.114.Final", + "io.netty:netty-handler:4.1.114.Final", + "io.netty:netty-handler-proxy:4.1.114.Final", + "io.netty:netty-transport:4.1.114.Final", + "io.opentelemetry:opentelemetry-api:1.43.0", + "io.opentelemetry:opentelemetry-context:1.43.0", + "io.opentelemetry:opentelemetry-exporter-logging:1.43.0", + "io.opentelemetry:opentelemetry-sdk:1.43.0", + "io.opentelemetry:opentelemetry-sdk-common:1.43.0", + "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure:1.43.0", + "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi:1.43.0", + "io.opentelemetry:opentelemetry-sdk-testing:1.43.0", + "io.opentelemetry:opentelemetry-sdk-trace:1.43.0", "io.opentelemetry.semconv:opentelemetry-semconv:1.25.0-alpha", "io.ous:jtoml:2.0.0", "it.ozimov:embedded-redis:0.7.3", - "net.bytebuddy:byte-buddy:1.15.1", - "org.htmlunit:htmlunit-core-js:4.4.0", + "net.bytebuddy:byte-buddy:1.15.7", + "org.htmlunit:htmlunit-core-js:4.5.0", "org.apache.commons:commons-exec:1.4.0", - "org.apache.logging.log4j:log4j-core:2.24.0", + "org.apache.logging.log4j:log4j-core:2.24.1", "org.assertj:assertj-core:3.26.3", "org.bouncycastle:bcpkix-jdk18on:1.78.1", "org.eclipse.mylyn.github:org.eclipse.egit.github.core:2.1.5", "org.hsqldb:hsqldb:2.7.3", "org.jspecify:jspecify:1.0.0", - "org.junit.jupiter:junit-jupiter-api:5.11.0", - "org.junit.jupiter:junit-jupiter-engine:5.11.0", - "org.junit.jupiter:junit-jupiter-params:5.11.0", - "org.junit.platform:junit-platform-launcher:1.11.0", - "org.junit.platform:junit-platform-reporting:1.11.0", - "org.junit.platform:junit-platform-commons:1.11.0", - "org.junit.platform:junit-platform-engine:1.11.0", - "org.mockito:mockito-core:5.13.0", - "org.redisson:redisson:3.36.0", + "org.junit.jupiter:junit-jupiter-api:5.11.3", + "org.junit.jupiter:junit-jupiter-engine:5.11.3", + "org.junit.jupiter:junit-jupiter-params:5.11.3", + "org.junit.platform:junit-platform-launcher:1.11.3", + "org.junit.platform:junit-platform-reporting:1.11.3", + "org.junit.platform:junit-platform-commons:1.11.3", + "org.junit.platform:junit-platform-engine:1.11.3", + "org.mockito:mockito-core:5.14.2", + "org.redisson:redisson:3.37.0", "org.slf4j:slf4j-api:2.0.16", "org.slf4j:slf4j-jdk14:2.0.16", "org.zeromq:jeromq:0.6.0", diff --git a/Rakefile b/Rakefile index 57486c7976f03..24f41e429f1cd 100644 --- a/Rakefile +++ b/Rakefile @@ -99,7 +99,7 @@ JAVA_RELEASE_TARGETS = %w[ //java/src/org/openqa/selenium/chromium:chromium.publish //java/src/org/openqa/selenium/devtools/v128:v128.publish //java/src/org/openqa/selenium/devtools/v129:v129.publish - //java/src/org/openqa/selenium/devtools/v127:v127.publish + //java/src/org/openqa/selenium/devtools/v130:v130.publish //java/src/org/openqa/selenium/devtools/v85:v85.publish //java/src/org/openqa/selenium/edge:edge.publish //java/src/org/openqa/selenium/firefox:firefox.publish @@ -791,7 +791,7 @@ namespace :dotnet do sh 'docfx dotnet/docs/docfx.json' rescue StandardError case $CHILD_STATUS.exitstatus - when 127 + when 130 raise 'Ensure the dotnet/tools directory is added to your PATH environment variable (e.g., `~/.dotnet/tools`)' when 255 puts '.NET documentation build failed, likely because of DevTools namespacing. This is ok; continuing' diff --git a/common/devtools/chromium/v127/BUILD.bazel b/common/devtools/chromium/v130/BUILD.bazel similarity index 100% rename from common/devtools/chromium/v127/BUILD.bazel rename to common/devtools/chromium/v130/BUILD.bazel diff --git a/common/devtools/chromium/v127/browser_protocol.pdl b/common/devtools/chromium/v130/browser_protocol.pdl similarity index 97% rename from common/devtools/chromium/v127/browser_protocol.pdl rename to common/devtools/chromium/v130/browser_protocol.pdl index f1ac9eeb5d46c..8a9325e6f6528 100644 --- a/common/devtools/chromium/v127/browser_protocol.pdl +++ b/common/devtools/chromium/v130/browser_protocol.pdl @@ -156,6 +156,7 @@ experimental domain Accessibility flowto labelledby owns + url # A node in the accessibility tree. type AXNode extends object @@ -742,6 +743,7 @@ experimental domain Audits NoRegisterTriggerHeader NoRegisterOsSourceHeader NoRegisterOsTriggerHeader + NavigationRegistrationUniqueScopeAlreadySet type SharedDictionaryError extends string enum @@ -802,7 +804,6 @@ experimental domain Audits type GenericIssueErrorType extends string enum - CrossOriginPortalPostMessageError FormLabelForNameError FormDuplicateIdForInputError FormInputWithNoLabelError @@ -891,7 +892,9 @@ experimental domain Audits ClientMetadataNoResponse ClientMetadataInvalidResponse ClientMetadataInvalidContentType + IdpNotPotentiallyTrustworthy DisabledInSettings + DisabledInFlags ErrorFetchingSignin InvalidSigninResponse AccountsHttpNotFound @@ -914,6 +917,7 @@ experimental domain Audits NotSignedInWithIdp MissingTransientUserActivation ReplacedByButtonMode + InvalidFieldsSpecified RelyingPartyOriginIsOpaque TypeNotMatching @@ -1099,13 +1103,20 @@ experimental domain Audits parameters InspectorIssue issue -# Defines commands and events for browser extensions. Available if the client -# is connected using the --remote-debugging-pipe flag and -# the --enable-unsafe-extension-debugging flag is set. +# Defines commands and events for browser extensions. experimental domain Extensions + # Storage areas. + type StorageArea extends string + enum + session + local + sync + managed # Installs an unpacked extension from the filesystem similar to # --load-extension CLI flags. Returns extension ID once the extension - # has been installed. + # has been installed. Available if the client is connected using the + # --remote-debugging-pipe flag and the --enable-unsafe-extension-debugging + # flag is set. command loadUnpacked parameters # Absolute file path. @@ -1113,6 +1124,44 @@ experimental domain Extensions returns # Extension id. string id + # Gets data from extension storage in the given `storageArea`. If `keys` is + # specified, these are used to filter the result. + command getStorageItems + parameters + # ID of extension. + string id + # StorageArea to retrieve data from. + StorageArea storageArea + # Keys to retrieve. + optional array of string keys + returns + object data + # Removes `keys` from extension storage in the given `storageArea`. + command removeStorageItems + parameters + # ID of extension. + string id + # StorageArea to remove data from. + StorageArea storageArea + # Keys to remove. + array of string keys + # Clears extension storage in the given `storageArea`. + command clearStorageItems + parameters + # ID of extension. + string id + # StorageArea to remove data from. + StorageArea storageArea + # Sets `values` in extension storage in the given `storageArea`. The provided `values` + # will be merged with existing values in the storage area. + command setStorageItems + parameters + # ID of extension. + string id + # StorageArea to set data in. + StorageArea storageArea + # Values to set. + object values # Defines commands and events for Autofill. experimental domain Autofill @@ -1344,6 +1393,7 @@ domain Browser videoCapturePanTiltZoom wakeLockScreen wakeLockSystem + webAppInstallation windowManagement experimental type PermissionSetting extends string @@ -1366,6 +1416,8 @@ domain Browser optional boolean userVisibleOnly # For "clipboard" permission, may specify allowWithoutSanitization. optional boolean allowWithoutSanitization + # For "fullscreen" permission, must specify allowWithoutGesture:true. + optional boolean allowWithoutGesture # For "camera" permission, may specify panTiltZoom. optional boolean panTiltZoom @@ -2006,13 +2058,6 @@ experimental domain CSS # Associated style declaration. CSSStyle style - # CSS position-fallback rule representation. - deprecated type CSSPositionFallbackRule extends object - properties - Value name - # List of keyframes. - array of CSSTryRule tryRules - # CSS @position-try rule representation. type CSSPositionTryRule extends object properties @@ -2025,6 +2070,7 @@ experimental domain CSS StyleSheetOrigin origin # Associated style declaration. CSSStyle style + boolean active # CSS keyframes rule representation. type CSSKeyframesRule extends object @@ -2198,10 +2244,11 @@ experimental domain CSS optional array of InheritedPseudoElementMatches inheritedPseudoElements # A list of CSS keyframed animations matching this node. optional array of CSSKeyframesRule cssKeyframesRules - # A list of CSS position fallbacks matching this node. - deprecated optional array of CSSPositionFallbackRule cssPositionFallbackRules - # A list of CSS @position-try rules matching this node, based on the position-try-options property. + # A list of CSS @position-try rules matching this node, based on the position-try-fallbacks property. optional array of CSSPositionTryRule cssPositionTryRules + # Index of the active fallback in the applied position-try-fallback property, + # will not be set if there is no active position-try fallback. + optional integer activePositionFallbackIndex # A list of CSS at-property rules matching this node. optional array of CSSPropertyRule cssPropertyRules # A list of CSS property registrations matching this node. @@ -2632,6 +2679,7 @@ domain DOM after marker backdrop + column selection search-text target-text @@ -2641,6 +2689,8 @@ domain DOM first-line-inherited scroll-marker scroll-marker-group + scroll-next-button + scroll-prev-button scrollbar scrollbar-thumb scrollbar-button @@ -2654,6 +2704,12 @@ domain DOM view-transition-image-pair view-transition-old view-transition-new + placeholder + file-selector-button + details-content + select-fallback-button + select-fallback-button-text + picker # Shadow root type. type ShadowRootType extends string @@ -2758,6 +2814,13 @@ domain DOM optional boolean isSVG optional CompatibilityMode compatibilityMode optional BackendNode assignedSlot + experimental optional boolean isScrollable + + # A structure to hold the top-level node of a detached tree and an array of its retained descendants. + type DetachedElementInfo extends object + properties + Node treeNode + array of NodeId retainedNodeIds # A structure holding an RGBA color. type RGBA extends object @@ -3269,6 +3332,12 @@ domain DOM returns string path + # Returns list of detached nodes + experimental command getDetachedDomNodes + returns + # The list of detached nodes + array of DetachedElementInfo detachedNodes + # Enables console to refer to the node with given id via $x (see Command Line API for more details # $x functions). experimental command setInspectedNode @@ -3435,6 +3504,14 @@ domain DOM # Called when top layer elements are changed. experimental event topLayerElementsUpdated + # Fired when a node's scrollability state changes. + experimental event scrollableFlagUpdated + parameters + # The id of the node. + DOM.NodeId nodeId + # If the node is scrollable. + boolean isScrollable + # Called when a pseudo element is removed from an element. experimental event pseudoElementRemoved parameters @@ -4176,6 +4253,21 @@ domain Emulation optional SensorReadingXYZ xyz optional SensorReadingQuaternion quaternion + experimental type PressureSource extends string + enum + cpu + + experimental type PressureState extends string + enum + nominal + fair + serious + critical + + experimental type PressureMetadata extends object + properties + optional boolean available + # Tells whether emulation is supported. deprecated command canEmulate returns @@ -4345,6 +4437,24 @@ domain Emulation SensorType type SensorReading reading + # Overrides a pressure source of a given type, as used by the Compute + # Pressure API, so that updates to PressureObserver.observe() are provided + # via setPressureStateOverride instead of being retrieved from + # platform-provided telemetry data. + experimental command setPressureSourceOverrideEnabled + parameters + boolean enabled + PressureSource source + optional PressureMetadata metadata + + # Provides a given pressure state that will be processed and eventually be + # delivered to PressureObserver users. |source| must have been previously + # overridden by setPressureSourceOverrideEnabled. + experimental command setPressureStateOverride + parameters + PressureSource source + PressureState state + # Overrides the Idle state. command setIdleOverride parameters @@ -4553,6 +4663,42 @@ domain IO # UUID of the specified Blob. string uuid +experimental domain FileSystem + depends on Network + depends on Storage + + type File extends object + properties + string name + # Timestamp + Network.TimeSinceEpoch lastModified + # Size in bytes + number size + string type + + type Directory extends object + properties + string name + array of string nestedDirectories + # Files that are directly nested under this directory. + array of File nestedFiles + + type BucketFileSystemLocator extends object + properties + # Storage key + Storage.SerializedStorageKey storageKey + # Bucket name. Not passing a `bucketName` will retrieve the default Bucket. (https://developer.mozilla.org/en-US/docs/Web/API/Storage_API#storage_buckets) + optional string bucketName + # Path to the directory using each path component as an array item. + array of string pathComponents + + command getDirectory + parameters + BucketFileSystemLocator bucketFileSystemLocator + returns + # Returns the directory object at the path. + Directory directory + experimental domain IndexedDB depends on Runtime depends on Storage @@ -5394,12 +5540,21 @@ experimental domain Memory moderate critical + # Retruns current DOM object counters. command getDOMCounters returns integer documents integer nodes integer jsEventListeners + # Retruns DOM object counters after preparing renderer for leak detection. + command getDOMCountersForLeakDetection + returns + # DOM object counters. + array of DOMCounter counters + + # Prepares for leak detection by terminating workers, stopping spellcheckers, + # dropping non-essential internal caches, running garbage collections, etc. command prepareForLeakDetection # Simulate OomIntervention by purging V8 memory. @@ -5475,6 +5630,15 @@ experimental domain Memory # Size of the module in bytes. number size + # DOM object counter data. + type DOMCounter extends object + properties + # Object name. Note: object names should be presumed volatile and clients should not expect + # the returned names to be consistent across runs. + string name + # Object count. + integer count + # Network domain allows tracking network activities of the page. It exposes information about http, # file, data and other requests and responses, their headers, bodies, timing, etc. domain Network @@ -6212,6 +6376,8 @@ domain Network TPCDMetadata # The cookie should have been blocked by 3PCD but is exempted by Deprecation Trial mitigation. TPCDDeprecationTrial + # The cookie should have been blocked by 3PCD but is exempted by Top-level Deprecation Trial mitigation. + TopLevelTPCDDeprecationTrial # The cookie should have been blocked by 3PCD but is exempted by heuristics mitigation. TPCDHeuristics # The cookie should have been blocked by 3PCD but is exempted by Enterprise Policy. @@ -6220,8 +6386,6 @@ domain Network StorageAccess # The cookie should have been blocked by 3PCD but is exempted by Top-level Storage Access API. TopLevelStorageAccess - # The cookie should have been blocked by 3PCD but is exempted by CORS opt-in. - CorsOptIn # The cookie should have been blocked by 3PCD but is exempted by the first-party URL scheme. Scheme @@ -7118,6 +7282,9 @@ domain Network # The number of obtained Trust Tokens on a successful "Issuance" operation. optional integer issuedTokenCount + # Fired once security policy has been updated. + experimental event policyUpdated + # Fired once when parsing the .wbn file has succeeded. # The event contains the information about the web bundle contents. experimental event subresourceWebBundleMetadataReceived @@ -7170,6 +7337,7 @@ domain Network UnsafeNone SameOriginPlusCoep RestrictPropertiesPlusCoep + NoopenerAllowPopups experimental type CrossOriginOpenerPolicyStatus extends object properties @@ -7882,6 +8050,7 @@ domain Page experimental type PermissionsPolicyFeature extends string enum accelerometer + all-screens-capture ambient-light-sensor attribution-reporting autoplay @@ -7915,8 +8084,10 @@ domain Page clipboard-read clipboard-write compute-pressure + controlled-frame cross-origin-isolated deferred-fetch + digital-credentials-get direct-sockets display-capture document-domain @@ -7937,11 +8108,13 @@ domain Page keyboard-map local-fonts magnetometer + media-playback-while-not-visible microphone midi otp-credentials payment picture-in-picture + popins private-aggregation private-state-token-issuance private-state-token-redemption @@ -7962,6 +8135,7 @@ domain Page usb usb-unrestricted vertical-scroll + web-app-installation web-printing web-share window-management @@ -8274,14 +8448,16 @@ domain Page experimental type ClientNavigationReason extends string enum + anchorClick formSubmissionGet formSubmissionPost httpHeaderRefresh - scriptInitiated + initialFrameNavigation metaTagRefresh + other pageBlockInterstitial reload - anchorClick + scriptInitiated experimental type ClientNavigationDisposition extends string enum @@ -9059,6 +9235,13 @@ domain Page # A new frame target will be created (see Target.attachedToTarget). swap + # Fired before frame subtree is detached. Emitted before any frame of the + # subtree is actually detached. + experimental event frameSubtreeWillBeDetached + parameters + # Id of the frame that is the root of the subtree that will be detached. + FrameId frameId + # The type of a frameNavigated event. experimental type NavigationType extends string enum @@ -9284,7 +9467,6 @@ domain Page Printing WebDatabase PictureInPicture - Portal SpeechRecognizer IdleManager PaymentManager @@ -9317,6 +9499,7 @@ domain Page ContentWebUSB ContentMediaSessionService ContentScreenReader + ContentDiscarded # See components/back_forward_cache/back_forward_cache_disable.h for explanations. EmbedderPopupBlockerTabHelper @@ -9402,6 +9585,15 @@ domain Page FrameId frameId # Frame's new url. string url + # Navigation type + enum navigationType + # Navigation due to fragment navigation. + fragment + # Navigation due to history API usage. + historyApi + # Navigation due to other reasons. + other + # Compressed image data requested by the `startScreencast`. experimental event screencastFrame @@ -10474,6 +10666,31 @@ experimental domain Storage exact modulus + experimental type AttributionReportingAggregatableDebugReportingData extends object + properties + UnsignedInt128AsBase16 keyPiece + # number instead of integer because not all uint32 can be represented by + # int + number value + array of string types + + experimental type AttributionReportingAggregatableDebugReportingConfig extends object + properties + # number instead of integer because not all uint32 can be represented by + # int, only present for source registrations + optional number budget + UnsignedInt128AsBase16 keyPiece + array of AttributionReportingAggregatableDebugReportingData debugData + optional string aggregationCoordinatorOrigin + + experimental type AttributionScopesData extends object + properties + array of string values + # number instead of integer because not all uint32 can be represented by + # int + number limit + number maxEventStates + experimental type AttributionReportingSourceRegistration extends object properties Network.TimeSinceEpoch time @@ -10492,6 +10709,9 @@ experimental domain Storage array of AttributionReportingAggregationKeysEntry aggregationKeys optional UnsignedInt64AsBase10 debugKey AttributionReportingTriggerDataMatching triggerDataMatching + SignedInt64AsBase10 destinationLimitPriority + AttributionReportingAggregatableDebugReportingConfig aggregatableDebugReportingConfig + optional AttributionScopesData scopesData experimental type AttributionReportingSourceRegistrationResult extends string enum @@ -10507,7 +10727,10 @@ experimental domain Storage destinationBothLimitsReached reportingOriginsPerSiteLimitReached exceedsMaxChannelCapacity + exceedsMaxScopesChannelCapacity exceedsMaxTriggerStateCardinality + exceedsMaxEventStatesLimit + destinationPerDayReportingLimitReached experimental event attributionReportingSourceRegistered parameters @@ -10525,6 +10748,8 @@ experimental domain Storage # number instead of integer because not all uint32 can be represented by # int number value + UnsignedInt64AsBase10 filteringId + experimental type AttributionReportingAggregatableValueEntry extends object properties @@ -10557,10 +10782,13 @@ experimental domain Storage array of AttributionReportingEventTriggerData eventTriggerData array of AttributionReportingAggregatableTriggerData aggregatableTriggerData array of AttributionReportingAggregatableValueEntry aggregatableValues + integer aggregatableFilteringIdMaxBytes boolean debugReporting optional string aggregationCoordinatorOrigin AttributionReportingSourceRegistrationTimeConfig sourceRegistrationTimeConfig optional string triggerContextId + AttributionReportingAggregatableDebugReportingConfig aggregatableDebugReportingConfig + array of string scopes experimental type AttributionReportingEventLevelResult extends string enum @@ -10788,7 +11016,7 @@ domain Target experimental optional Page.FrameId openerFrameId experimental optional Browser.BrowserContextID browserContextId # Provides additional details for specific target types. For example, for - # the type of "page", this may be set to "portal" or "prerender". + # the type of "page", this may be set to "prerender". experimental optional string subtype # A filter used by target query/discovery/auto-attach operations. @@ -12176,6 +12404,9 @@ experimental domain Preload JavaScriptInterfaceAdded JavaScriptInterfaceRemoved AllPrerenderingCanceled + WindowClosed + SlowNetwork + OtherPrerenderedPageActivated # Fired when a preload enabled state is updated. event preloadEnabledStateUpdated @@ -12209,7 +12440,6 @@ experimental domain Preload PrefetchFailedMIMENotSupported PrefetchFailedNetError PrefetchFailedNon2XX - PrefetchFailedPerPageLimitExceeded PrefetchEvictedAfterCandidateRemoved PrefetchEvictedForNewerPrefetch PrefetchHeldback @@ -12340,7 +12570,7 @@ experimental domain FedCm parameters # Allows callers to disable the promise rejection delay that would # normally happen, if this is unimportant to what's being tested. - # (step 4 of https://w3c-fedid.github.io/FedCM/#browser-api-rp-sign-in) + # (step 4 of https://fedidcg.github.io/FedCM/#browser-api-rp-sign-in) optional boolean disableRejectionDelay command disable @@ -12416,7 +12646,7 @@ experimental domain PWA # manifestId. optional string installUrlOrBundleUrl - # Uninstals the given manifest_id and closes any opened app windows. + # Uninstalls the given manifest_id and closes any opened app windows. command uninstall parameters string manifestId @@ -12438,7 +12668,7 @@ experimental domain PWA # used to attach to via Target.attachToTarget or similar APIs. # If some files in the parameters cannot be handled by the web app, they will # be ignored. If none of the files can be handled, this API returns an error. - # If no files provided as the parameter, this API also returns an error. + # If no files are provided as the parameter, this API also returns an error. # # According to the definition of the file handlers in the manifest file, one # Target.TargetID may represent a page handling one or more files. The order @@ -12455,7 +12685,103 @@ experimental domain PWA # Opens the current page in its web app identified by the manifest id, needs # to be called on a page target. This function returns immediately without - # waiting for the app finishing loading. + # waiting for the app to finish loading. command openCurrentPageInApp parameters string manifestId + + # If user prefers opening the app in browser or an app window. + type DisplayMode extends string + enum + standalone + browser + + # Changes user settings of the web app identified by its manifestId. If the + # app was not installed, this command returns an error. Unset parameters will + # be ignored; unrecognized values will cause an error. + # + # Unlike the ones defined in the manifest files of the web apps, these + # settings are provided by the browser and controlled by the users, they + # impact the way the browser handling the web apps. + # + # See the comment of each parameter. + command changeAppUserSettings + parameters + string manifestId + # If user allows the links clicked on by the user in the app's scope, or + # extended scope if the manifest has scope extensions and the flags + # `DesktopPWAsLinkCapturingWithScopeExtensions` and + # `WebAppEnableScopeExtensions` are enabled. + # + # Note, the API does not support resetting the linkCapturing to the + # initial value, uninstalling and installing the web app again will reset + # it. + # + # TODO(crbug.com/339453269): Setting this value on ChromeOS is not + # supported yet. + optional boolean linkCapturing + optional DisplayMode displayMode + +# This domain allows configuring virtual Bluetooth devices to test +# the web-bluetooth API. +experimental domain BluetoothEmulation + # Indicates the various states of Central. + type CentralState extends string + enum + absent + powered-off + powered-on + + # Stores the manufacturer data + type ManufacturerData extends object + properties + # Company identifier + # https://bitbucket.org/bluetooth-SIG/public/src/main/assigned_numbers/company_identifiers/company_identifiers.yaml + # https://usb.org/developers + integer key + # Manufacturer-specific data + binary data + + # Stores the byte data of the advertisement packet sent by a Bluetooth device. + type ScanRecord extends object + properties + optional string name + optional array of string uuids + # Stores the external appearance description of the device. + optional integer appearance + # Stores the transmission power of a broadcasting device. + optional integer txPower + # Key is the company identifier and the value is an array of bytes of + # manufacturer specific data. + optional array of ManufacturerData manufacturerData + + # Stores the advertisement packet information that is sent by a Bluetooth device. + type ScanEntry extends object + properties + string deviceAddress + integer rssi + ScanRecord scanRecord + + # Enable the BluetoothEmulation domain. + command enable + parameters + # State of the simulated central. + CentralState state + + # Disable the BluetoothEmulation domain. + command disable + + # Simulates a peripheral with |address|, |name| and |knownServiceUuids| + # that has already been connected to the system. + command simulatePreconnectedPeripheral + parameters + string address + string name + array of ManufacturerData manufacturerData + array of string knownServiceUuids + + # Simulates an advertisement packet described in |entry| being received by + # the central. + command simulateAdvertisement + parameters + ScanEntry entry diff --git a/common/devtools/chromium/v127/js_protocol.pdl b/common/devtools/chromium/v130/js_protocol.pdl similarity index 100% rename from common/devtools/chromium/v127/js_protocol.pdl rename to common/devtools/chromium/v130/js_protocol.pdl diff --git a/common/repositories.bzl b/common/repositories.bzl index 1a9e782144475..5003c5dd480ca 100644 --- a/common/repositories.bzl +++ b/common/repositories.bzl @@ -11,8 +11,8 @@ def pin_browsers(): http_archive( name = "linux_firefox", - url = "https://ftp.mozilla.org/pub/firefox/releases/131.0/linux-x86_64/en-US/firefox-131.0.tar.bz2", - sha256 = "4ca8504a62a31472ecb8c3a769d4301dd4ac692d4cc5d51b8fe2cf41e7b11106", + url = "https://ftp.mozilla.org/pub/firefox/releases/132.0/linux-x86_64/en-US/firefox-132.0.tar.bz2", + sha256 = "e3a6f9a68ac72f5df01fac8c97c6de1a353af4b350b8c8b49b2c26c1fbbb2538", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -33,8 +33,8 @@ js_library( dmg_archive( name = "mac_firefox", - url = "https://ftp.mozilla.org/pub/firefox/releases/131.0/mac/en-US/Firefox%20131.0.dmg", - sha256 = "cd243b44746f56ee2042572cccab2736c0c6d419f85f90ad163a4ba04979ccb2", + url = "https://ftp.mozilla.org/pub/firefox/releases/132.0/mac/en-US/Firefox%20132.0.dmg", + sha256 = "5924171ce774ba8d102ddb45c573ff8acd4e0c289b62597f941ca58d79289704", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -50,8 +50,8 @@ js_library( http_archive( name = "linux_beta_firefox", - url = "https://ftp.mozilla.org/pub/firefox/releases/132.0b2/linux-x86_64/en-US/firefox-132.0b2.tar.bz2", - sha256 = "f4fb251b50661f27a5f4d87a3dc2839ed329793e232aca47b146d84384208167", + url = "https://ftp.mozilla.org/pub/firefox/releases/133.0b1/linux-x86_64/en-US/firefox-133.0b1.tar.bz2", + sha256 = "e61434729b6c0be2cc1d27b6c1847f54c1b228a49a4480260de1e10ca2a115c2", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -72,8 +72,8 @@ js_library( dmg_archive( name = "mac_beta_firefox", - url = "https://ftp.mozilla.org/pub/firefox/releases/132.0b2/mac/en-US/Firefox%20132.0b2.dmg", - sha256 = "b7be772dc40c7065580e8556f7f037ae1f2960be0276c6f04ed453d4543712a1", + url = "https://ftp.mozilla.org/pub/firefox/releases/133.0b1/mac/en-US/Firefox%20133.0b1.dmg", + sha256 = "999529fe32c8630c234b6cff09a204a1c178ca8fc1a4e17c66097b943a87ebc4", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -123,10 +123,10 @@ js_library( pkg_archive( name = "mac_edge", - url = "https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/1077769e-236a-4f55-801d-2f782881fe18/MicrosoftEdge-129.0.2792.65.pkg", - sha256 = "a89a37ddfd655c47a44401a157c6a903f04a87622b64faa86d3897f5506f7481", + url = "https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/4e27a0ec-f389-48c0-a4a4-3f1993c5a461/MicrosoftEdge-130.0.2849.56.pkg", + sha256 = "e33831f893e659a3f40f496ea62be85a65e4f085268df9425352a2d3067287a8", move = { - "MicrosoftEdge-129.0.2792.65.pkg/Payload/Microsoft Edge.app": "Edge.app", + "MicrosoftEdge-130.0.2849.56.pkg/Payload/Microsoft Edge.app": "Edge.app", }, build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") @@ -143,8 +143,8 @@ js_library( deb_archive( name = "linux_edge", - url = "https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/microsoft-edge-stable_129.0.2792.65-1_amd64.deb", - sha256 = "c6e0ad1e9b44d821b86a263b82edac596dca9b8a9f07413f2ff3c100221a28e7", + url = "https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/microsoft-edge-stable_130.0.2849.56-1_amd64.deb", + sha256 = "fb1231f65c43a22b399c0aed30c827d67c0a8b075c1a6cc2cd1353ebcc660adb", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -165,8 +165,8 @@ js_library( http_archive( name = "linux_edgedriver", - url = "https://msedgedriver.azureedge.net/129.0.2792.65/edgedriver_linux64.zip", - sha256 = "36811ca6700532a98c27f696f79aa06762d882408645e6d6a09f3ed2673a6951", + url = "https://msedgedriver.azureedge.net/130.0.2849.56/edgedriver_linux64.zip", + sha256 = "c5aa82d87750a6f49b741790a432194ff91d0a232c54eb5507a526f45146f440", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -182,8 +182,8 @@ js_library( http_archive( name = "mac_edgedriver", - url = "https://msedgedriver.azureedge.net/129.0.2792.65/edgedriver_mac64.zip", - sha256 = "53d7dd53564cf20aaf51d505b364f28d30a83d38b87a08d6bf22d26e04d17c2b", + url = "https://msedgedriver.azureedge.net/130.0.2849.56/edgedriver_mac64.zip", + sha256 = "97141db0a53b22356094ff4d7a806a19ab816499366539e633a32fc4af8da2a3", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -199,8 +199,8 @@ js_library( http_archive( name = "linux_chrome", - url = "https://storage.googleapis.com/chrome-for-testing-public/129.0.6668.89/linux64/chrome-linux64.zip", - sha256 = "fd61ba345c840c6d5404d8abdb42c5d86832b212e9bc401a72dc86495c0cd7d3", + url = "https://storage.googleapis.com/chrome-for-testing-public/130.0.6723.91/linux64/chrome-linux64.zip", + sha256 = "9190cc0540c9f59df5e81aae48d0e048dca6f7343266cee17d956931d844b1e7", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -221,8 +221,8 @@ js_library( http_archive( name = "mac_chrome", - url = "https://storage.googleapis.com/chrome-for-testing-public/129.0.6668.89/mac-x64/chrome-mac-x64.zip", - sha256 = "dd67b65ed1eac994032b02d48c6aaeef7c0a20ba0450bf124e2fb558a1ab4a1b", + url = "https://storage.googleapis.com/chrome-for-testing-public/130.0.6723.91/mac-x64/chrome-mac-x64.zip", + sha256 = "1706e6f0671a78fa75d9567577c38e7d6848da9144c83ccba80fc840d2347cd3", strip_prefix = "chrome-mac-x64", patch_cmds = [ "mv 'Google Chrome for Testing.app' Chrome.app", @@ -243,8 +243,8 @@ js_library( http_archive( name = "linux_chromedriver", - url = "https://storage.googleapis.com/chrome-for-testing-public/129.0.6668.89/linux64/chromedriver-linux64.zip", - sha256 = "0dafb169734d3fc79171cabcecb07131bfb6a1727859118b756a020211b6c804", + url = "https://storage.googleapis.com/chrome-for-testing-public/130.0.6723.91/linux64/chromedriver-linux64.zip", + sha256 = "a8c94cea296c22a9bc1b928b138b8655bfecd9b372652c909b1b2af841ca5ff7", strip_prefix = "chromedriver-linux64", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") @@ -261,8 +261,8 @@ js_library( http_archive( name = "mac_chromedriver", - url = "https://storage.googleapis.com/chrome-for-testing-public/129.0.6668.89/mac-x64/chromedriver-mac-x64.zip", - sha256 = "71663c3f70fe3eb2256c474c60fa7ee1c15065f38b6c679e6c2d46960e774b1e", + url = "https://storage.googleapis.com/chrome-for-testing-public/130.0.6723.91/mac-x64/chromedriver-mac-x64.zip", + sha256 = "e2e137e1ff7d7d3886e4526ad319c4a1da90bcd4f601af247ac60ec58e38c570", strip_prefix = "chromedriver-mac-x64", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") diff --git a/common/selenium_manager.bzl b/common/selenium_manager.bzl index bb0133c12e949..50f890f1e2029 100644 --- a/common/selenium_manager.bzl +++ b/common/selenium_manager.bzl @@ -6,22 +6,22 @@ def selenium_manager(): http_file( name = "download_sm_linux", executable = True, - sha256 = "d4d775c38f5403d4a719e69903e6f70d15d2454d03da80ad6b82515a4ebfb986", - url = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-dffb534/selenium-manager-linux", + sha256 = "97ab346b907a813c236f1c6b9eb0e1b878702374b0768894415629c2cf05d97e", + url = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-33ad1b2/selenium-manager-linux", ) http_file( name = "download_sm_macos", executable = True, - sha256 = "2d6b20c603c4ca913423b3725cdc7ffa7e6a1554c9c161e3da226b186ba71054", - url = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-dffb534/selenium-manager-macos", + sha256 = "ef27b5c2d274dc4ab4417334116a1530571edc3deaf4740068e35484e275f28a", + url = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-33ad1b2/selenium-manager-macos", ) http_file( name = "download_sm_windows", executable = True, - sha256 = "58c47a131fd4323c647a95cb37baeafc5a14a536885ccc152457e87a4fd2188d", - url = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-dffb534/selenium-manager-windows.exe", + sha256 = "15113137d8d0d3648be9948c52e56e1f4c605bc5d9623962991198e8d0d413b6", + url = "https://github.com/SeleniumHQ/selenium_manager_artifacts/releases/download/selenium-manager-33ad1b2/selenium-manager-windows.exe", ) def _selenium_manager_artifacts_impl(_ctx): diff --git a/dotnet/CHANGELOG b/dotnet/CHANGELOG index a237ec48e7f02..70c0383aba8d9 100644 --- a/dotnet/CHANGELOG +++ b/dotnet/CHANGELOG @@ -1,3 +1,17 @@ +v4.26.0 +====== +* [bidi] Fix web socket communication for .net framework +* Don't include http headers in internal logs (#14546) +* Don't write trace log message when waiting until driver service is initialized (#14557) +* Support GetLog command by Remote Web Driver (#14549) +* Add more internal logs around CDP DevTools communication (#14558) +* Interactions with Selenium Manager are AOT compatible (#14481) +* Allow setting of PageDimensions and PageMargins in PrintOptions directly (#14593) +* Fix devtools check in `NetworkManager` to determine CDP is supported (#14638) +* Lazy-load Selenium manager binary location (#14639) +* [bidi] Second round of BiDi implementation (#14566) +* Add CDP for Chrome 130 and remove 127 + v4.25.0 ====== * Add CDP for Chrome 129 and remove 126 diff --git a/dotnet/selenium-dotnet-version.bzl b/dotnet/selenium-dotnet-version.bzl index aad327babbc0d..d4ecd22884cf1 100644 --- a/dotnet/selenium-dotnet-version.bzl +++ b/dotnet/selenium-dotnet-version.bzl @@ -1,6 +1,6 @@ # BUILD FILE SYNTAX: STARLARK -SE_VERSION = "4.26.0-nightly202409202352" +SE_VERSION = "4.26.0" ASSEMBLY_VERSION = "4.0.0.0" SUPPORTED_NET_STANDARD_VERSIONS = ["netstandard2.0"] @@ -8,7 +8,7 @@ SUPPORTED_DEVTOOLS_VERSIONS = [ "v85", "v128", "v129", - "v127", + "v130", ] ASSEMBLY_COMPANY = "Selenium Committers" diff --git a/dotnet/src/webdriver/DevTools/DevToolsDomains.cs b/dotnet/src/webdriver/DevTools/DevToolsDomains.cs index f29e5eecaaf09..633997c63460a 100644 --- a/dotnet/src/webdriver/DevTools/DevToolsDomains.cs +++ b/dotnet/src/webdriver/DevTools/DevToolsDomains.cs @@ -35,7 +35,7 @@ public abstract class DevToolsDomains // added to this dictionary. private static readonly Dictionary SupportedDevToolsVersions = new Dictionary() { - { 127, typeof(V127.V127Domains) }, + { 130, typeof(V130.V130Domains) }, { 129, typeof(V129.V129Domains) }, { 128, typeof(V128.V128Domains) }, { 85, typeof(V85.V85Domains) } diff --git a/dotnet/src/webdriver/DevTools/v127/V127Domains.cs b/dotnet/src/webdriver/DevTools/v130/V130Domains.cs similarity index 78% rename from dotnet/src/webdriver/DevTools/v127/V127Domains.cs rename to dotnet/src/webdriver/DevTools/v130/V130Domains.cs index 80f7ba6be7e34..e25e338268203 100644 --- a/dotnet/src/webdriver/DevTools/v127/V127Domains.cs +++ b/dotnet/src/webdriver/DevTools/v130/V130Domains.cs @@ -1,4 +1,4 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one // or more contributor license agreements. See the NOTICE file // distributed with this work for additional information @@ -15,20 +15,20 @@ // See the License for the specific language governing permissions and // limitations under the License. -namespace OpenQA.Selenium.DevTools.V127 +namespace OpenQA.Selenium.DevTools.V130 { /// - /// Class containing the domain implementation for version 127 of the DevTools Protocol. + /// Class containing the domain implementation for version 130 of the DevTools Protocol. /// - public class V127Domains : DevToolsDomains + public class V130Domains : DevToolsDomains { private DevToolsSessionDomains domains; /// - /// Initializes a new instance of the V127Domains class. + /// Initializes a new instance of the V130Domains class. /// /// The DevToolsSession to use with this set of domains. - public V127Domains(DevToolsSession session) + public V130Domains(DevToolsSession session) { this.domains = new DevToolsSessionDomains(session); } @@ -36,7 +36,7 @@ public V127Domains(DevToolsSession session) /// /// Gets the DevTools Protocol version for which this class is valid. /// - public static int DevToolsVersion => 127; + public static int DevToolsVersion => 130; /// /// Gets the version-specific domains for the DevTools session. This value must be cast to a version specific type to be at all useful. @@ -46,21 +46,21 @@ public V127Domains(DevToolsSession session) /// /// Gets the object used for manipulating network information in the browser. /// - public override DevTools.Network Network => new V127Network(domains.Network, domains.Fetch); + public override DevTools.Network Network => new V130Network(domains.Network, domains.Fetch); /// /// Gets the object used for manipulating the browser's JavaScript execution. /// - public override JavaScript JavaScript => new V127JavaScript(domains.Runtime, domains.Page); + public override JavaScript JavaScript => new V130JavaScript(domains.Runtime, domains.Page); /// /// Gets the object used for manipulating DevTools Protocol targets. /// - public override DevTools.Target Target => new V127Target(domains.Target); + public override DevTools.Target Target => new V130Target(domains.Target); /// /// Gets the object used for manipulating the browser's logs. /// - public override DevTools.Log Log => new V127Log(domains.Log); + public override DevTools.Log Log => new V130Log(domains.Log); } } diff --git a/dotnet/src/webdriver/DevTools/v127/V127JavaScript.cs b/dotnet/src/webdriver/DevTools/v130/V130JavaScript.cs similarity index 94% rename from dotnet/src/webdriver/DevTools/v127/V127JavaScript.cs rename to dotnet/src/webdriver/DevTools/v130/V130JavaScript.cs index 7476ad37f2362..74a508ae60520 100644 --- a/dotnet/src/webdriver/DevTools/v127/V127JavaScript.cs +++ b/dotnet/src/webdriver/DevTools/v130/V130JavaScript.cs @@ -1,4 +1,4 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one // or more contributor license agreements. See the NOTICE file // distributed with this work for additional information @@ -15,28 +15,28 @@ // See the License for the specific language governing permissions and // limitations under the License. -using OpenQA.Selenium.DevTools.V127.Page; -using OpenQA.Selenium.DevTools.V127.Runtime; +using OpenQA.Selenium.DevTools.V130.Page; +using OpenQA.Selenium.DevTools.V130.Runtime; using System; using System.Collections.Generic; using System.Threading.Tasks; -namespace OpenQA.Selenium.DevTools.V127 +namespace OpenQA.Selenium.DevTools.V130 { /// - /// Class containing the JavaScript implementation for version 127 of the DevTools Protocol. + /// Class containing the JavaScript implementation for version 130 of the DevTools Protocol. /// - public class V127JavaScript : JavaScript + public class V130JavaScript : JavaScript { private RuntimeAdapter runtime; private PageAdapter page; /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// /// The DevTools Protocol adapter for the Runtime domain. /// The DevTools Protocol adapter for the Page domain. - public V127JavaScript(RuntimeAdapter runtime, PageAdapter page) + public V130JavaScript(RuntimeAdapter runtime, PageAdapter page) { this.runtime = runtime; this.page = page; diff --git a/dotnet/src/webdriver/DevTools/v127/V127Log.cs b/dotnet/src/webdriver/DevTools/v130/V130Log.cs similarity index 88% rename from dotnet/src/webdriver/DevTools/v127/V127Log.cs rename to dotnet/src/webdriver/DevTools/v130/V130Log.cs index 991b205db4e42..cc8d62e546da3 100644 --- a/dotnet/src/webdriver/DevTools/v127/V127Log.cs +++ b/dotnet/src/webdriver/DevTools/v130/V130Log.cs @@ -1,4 +1,4 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one // or more contributor license agreements. See the NOTICE file // distributed with this work for additional information @@ -15,23 +15,23 @@ // See the License for the specific language governing permissions and // limitations under the License. -using OpenQA.Selenium.DevTools.V127.Log; +using OpenQA.Selenium.DevTools.V130.Log; using System.Threading.Tasks; -namespace OpenQA.Selenium.DevTools.V127 +namespace OpenQA.Selenium.DevTools.V130 { /// - /// Class containing the browser's log as referenced by version 127 of the DevTools Protocol. + /// Class containing the browser's log as referenced by version 130 of the DevTools Protocol. /// - public class V127Log : DevTools.Log + public class V130Log : DevTools.Log { private LogAdapter adapter; /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// /// The adapter for the Log domain. - public V127Log(LogAdapter adapter) + public V130Log(LogAdapter adapter) { this.adapter = adapter; this.adapter.EntryAdded += OnAdapterEntryAdded; diff --git a/dotnet/src/webdriver/DevTools/v127/V127Network.cs b/dotnet/src/webdriver/DevTools/v130/V130Network.cs similarity index 95% rename from dotnet/src/webdriver/DevTools/v127/V127Network.cs rename to dotnet/src/webdriver/DevTools/v130/V130Network.cs index b31fa466d7efd..1d6554c315a0e 100644 --- a/dotnet/src/webdriver/DevTools/v127/V127Network.cs +++ b/dotnet/src/webdriver/DevTools/v130/V130Network.cs @@ -1,4 +1,4 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one // or more contributor license agreements. See the NOTICE file // distributed with this work for additional information @@ -16,29 +16,29 @@ // limitations under the License. // -using OpenQA.Selenium.DevTools.V127.Fetch; -using OpenQA.Selenium.DevTools.V127.Network; +using OpenQA.Selenium.DevTools.V130.Fetch; +using OpenQA.Selenium.DevTools.V130.Network; using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; -namespace OpenQA.Selenium.DevTools.V127 +namespace OpenQA.Selenium.DevTools.V130 { /// - /// Class providing functionality for manipulating network calls using version 127 of the DevTools Protocol + /// Class providing functionality for manipulating network calls using version 130 of the DevTools Protocol /// - public class V127Network : DevTools.Network + public class V130Network : DevTools.Network { private FetchAdapter fetch; private NetworkAdapter network; /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// /// The adapter for the Network domain. /// The adapter for the Fetch domain. - public V127Network(NetworkAdapter network, FetchAdapter fetch) + public V130Network(NetworkAdapter network, FetchAdapter fetch) { this.network = network; this.fetch = fetch; @@ -216,9 +216,9 @@ public override async Task ContinueWithAuth(string requestId, string userName, s await fetch.ContinueWithAuth(new ContinueWithAuthCommandSettings() { RequestId = requestId, - AuthChallengeResponse = new V127.Fetch.AuthChallengeResponse() + AuthChallengeResponse = new V130.Fetch.AuthChallengeResponse() { - Response = V127.Fetch.AuthChallengeResponseResponseValues.ProvideCredentials, + Response = V130.Fetch.AuthChallengeResponseResponseValues.ProvideCredentials, Username = userName, Password = password } @@ -235,9 +235,9 @@ public override async Task CancelAuth(string requestId) await fetch.ContinueWithAuth(new ContinueWithAuthCommandSettings() { RequestId = requestId, - AuthChallengeResponse = new OpenQA.Selenium.DevTools.V127.Fetch.AuthChallengeResponse() + AuthChallengeResponse = new OpenQA.Selenium.DevTools.V130.Fetch.AuthChallengeResponse() { - Response = V127.Fetch.AuthChallengeResponseResponseValues.CancelAuth + Response = V130.Fetch.AuthChallengeResponseResponseValues.CancelAuth } }).ConfigureAwait(false); } diff --git a/dotnet/src/webdriver/DevTools/v127/V127Target.cs b/dotnet/src/webdriver/DevTools/v130/V130Target.cs similarity index 94% rename from dotnet/src/webdriver/DevTools/v127/V127Target.cs rename to dotnet/src/webdriver/DevTools/v130/V130Target.cs index 977b569b276b1..99e4d87729663 100644 --- a/dotnet/src/webdriver/DevTools/v127/V127Target.cs +++ b/dotnet/src/webdriver/DevTools/v130/V130Target.cs @@ -1,4 +1,4 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one // or more contributor license agreements. See the NOTICE file // distributed with this work for additional information @@ -16,26 +16,26 @@ // limitations under the License. // -using OpenQA.Selenium.DevTools.V127.Target; +using OpenQA.Selenium.DevTools.V130.Target; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Threading.Tasks; -namespace OpenQA.Selenium.DevTools.V127 +namespace OpenQA.Selenium.DevTools.V130 { /// - /// Class providing functionality for manipulating targets for version 127 of the DevTools Protocol + /// Class providing functionality for manipulating targets for version 130 of the DevTools Protocol /// - public class V127Target : DevTools.Target + public class V130Target : DevTools.Target { private TargetAdapter adapter; /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// /// The adapter for the Target domain. - public V127Target(TargetAdapter adapter) + public V130Target(TargetAdapter adapter) { this.adapter = adapter; adapter.DetachedFromTarget += OnDetachedFromTarget; diff --git a/dotnet/test/common/CustomDriverConfigs/StableChannelChromeDriver.cs b/dotnet/test/common/CustomDriverConfigs/StableChannelChromeDriver.cs index 718ae0f6c6473..3c336df0166b1 100644 --- a/dotnet/test/common/CustomDriverConfigs/StableChannelChromeDriver.cs +++ b/dotnet/test/common/CustomDriverConfigs/StableChannelChromeDriver.cs @@ -20,7 +20,7 @@ public StableChannelChromeDriver(ChromeDriverService service, ChromeOptions opti public static ChromeOptions DefaultOptions { - get { return new ChromeOptions() { BrowserVersion = "129" }; } + get { return new ChromeOptions() { BrowserVersion = "130" }; } } } } diff --git a/dotnet/test/common/DevTools/DevToolsConsoleTest.cs b/dotnet/test/common/DevTools/DevToolsConsoleTest.cs index a2437fb1c37cc..b3d6c959512ff 100644 --- a/dotnet/test/common/DevTools/DevToolsConsoleTest.cs +++ b/dotnet/test/common/DevTools/DevToolsConsoleTest.cs @@ -6,7 +6,7 @@ namespace OpenQA.Selenium.DevTools { - using CurrentCdpVersion = V129; + using CurrentCdpVersion = V130; [TestFixture] public class DevToolsConsoleTest : DevToolsTestFixture diff --git a/dotnet/test/common/DevTools/DevToolsLogTest.cs b/dotnet/test/common/DevTools/DevToolsLogTest.cs index 096eac7fc662e..e1f05af80409a 100644 --- a/dotnet/test/common/DevTools/DevToolsLogTest.cs +++ b/dotnet/test/common/DevTools/DevToolsLogTest.cs @@ -6,7 +6,7 @@ namespace OpenQA.Selenium.DevTools { - using CurrentCdpVersion = V129; + using CurrentCdpVersion = V130; [TestFixture] public class DevToolsLogTest : DevToolsTestFixture diff --git a/dotnet/test/common/DevTools/DevToolsNetworkTest.cs b/dotnet/test/common/DevTools/DevToolsNetworkTest.cs index 81436eb26178c..d9fb0269ab681 100644 --- a/dotnet/test/common/DevTools/DevToolsNetworkTest.cs +++ b/dotnet/test/common/DevTools/DevToolsNetworkTest.cs @@ -6,7 +6,7 @@ namespace OpenQA.Selenium.DevTools { - using CurrentCdpVersion = V129; + using CurrentCdpVersion = V130; [TestFixture] public class DevToolsNetworkTest : DevToolsTestFixture diff --git a/dotnet/test/common/DevTools/DevToolsPerformanceTest.cs b/dotnet/test/common/DevTools/DevToolsPerformanceTest.cs index b23ef6a6825b6..6b7ea7954432e 100644 --- a/dotnet/test/common/DevTools/DevToolsPerformanceTest.cs +++ b/dotnet/test/common/DevTools/DevToolsPerformanceTest.cs @@ -3,7 +3,7 @@ namespace OpenQA.Selenium.DevTools { - using CurrentCdpVersion = V129; + using CurrentCdpVersion = V130; [TestFixture] public class DevToolsPerformanceTest : DevToolsTestFixture diff --git a/dotnet/test/common/DevTools/DevToolsProfilerTest.cs b/dotnet/test/common/DevTools/DevToolsProfilerTest.cs index fa90ffb9761d2..fed67173d3c66 100644 --- a/dotnet/test/common/DevTools/DevToolsProfilerTest.cs +++ b/dotnet/test/common/DevTools/DevToolsProfilerTest.cs @@ -5,7 +5,7 @@ namespace OpenQA.Selenium.DevTools { - using CurrentCdpVersion = V129; + using CurrentCdpVersion = V130; [TestFixture] public class DevToolsProfilerTest : DevToolsTestFixture diff --git a/dotnet/test/common/DevTools/DevToolsSecurityTest.cs b/dotnet/test/common/DevTools/DevToolsSecurityTest.cs index 1cde50c30cc0b..ede5071b6621b 100644 --- a/dotnet/test/common/DevTools/DevToolsSecurityTest.cs +++ b/dotnet/test/common/DevTools/DevToolsSecurityTest.cs @@ -6,7 +6,7 @@ namespace OpenQA.Selenium.DevTools { - using CurrentCdpVersion = V129; + using CurrentCdpVersion = V130; [TestFixture] public class DevToolsSecurityTest : DevToolsTestFixture diff --git a/dotnet/test/common/DevTools/DevToolsTabsTest.cs b/dotnet/test/common/DevTools/DevToolsTabsTest.cs index bfac7ab874486..d71c9ed596abb 100644 --- a/dotnet/test/common/DevTools/DevToolsTabsTest.cs +++ b/dotnet/test/common/DevTools/DevToolsTabsTest.cs @@ -3,7 +3,7 @@ namespace OpenQA.Selenium.DevTools { - using CurrentCdpVersion = V129; + using CurrentCdpVersion = V130; [TestFixture] public class DevToolsTabsTest : DevToolsTestFixture diff --git a/dotnet/test/common/DevTools/DevToolsTargetTest.cs b/dotnet/test/common/DevTools/DevToolsTargetTest.cs index a7bb2a98d2bfb..fa31474612254 100644 --- a/dotnet/test/common/DevTools/DevToolsTargetTest.cs +++ b/dotnet/test/common/DevTools/DevToolsTargetTest.cs @@ -6,12 +6,12 @@ namespace OpenQA.Selenium.DevTools { - using CurrentCdpVersion = V129; + using CurrentCdpVersion = V130; [TestFixture] public class DevToolsTargetTest : DevToolsTestFixture { - private int id = 129; + private int id = 130; [Test] [IgnoreBrowser(Selenium.Browser.IE, "IE does not support Chrome DevTools Protocol")] diff --git a/java/CHANGELOG b/java/CHANGELOG index 9daf9573fc362..98cf2a20a00a6 100644 --- a/java/CHANGELOG +++ b/java/CHANGELOG @@ -1,3 +1,21 @@ +v4.26.0 +====== +* Add CDP for Chrome 130 and remove 127 +* Add PAC proxy url to arguments for Selenium Manager (#14506) +* Prevent closing the stdin, stdout, stderr streams (#14569) +* Increasing of properties scope for better Appium compatibility (#14183) +* Fix decoding of line endings (#14539) +* Fix SpotBugs findings in `ChromiumDriver` and `PortProber` (#14589) +* Fix `v*Network.java` conditions (#14585) +* [grid] Enable the httpclient to perform async requests (#14409) +* [grid] Limit the number of websocket connections per session (#14410) +* [grid] Improvement for Node handling (#14628) +* [grid] Add node sessionTimeout to Grid status (#14582) +* [grid] Capability se:vncEnabled value based on list of vnc-env-var (#14584) +* [grid] UI Sessions list view sort Duration in ascending by default (#14599) +* [grid] UI Liveview disconnect noVNC websocket when closing dialog (#14598) +* [grid] UI Overview is able to sort Nodes capabilities (#14571) + v4.25.0 ====== * Add CDP for Chrome 129 and remove 126 diff --git a/java/maven_install.json b/java/maven_install.json index 04f5468f594a2..9034f3dee04b2 100644 --- a/java/maven_install.json +++ b/java/maven_install.json @@ -1,13 +1,13 @@ { "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL", - "__INPUT_ARTIFACTS_HASH": 1327312787, - "__RESOLVED_ARTIFACTS_HASH": -2038995232, + "__INPUT_ARTIFACTS_HASH": 282748108, + "__RESOLVED_ARTIFACTS_HASH": 1016391538, "conflict_resolution": { "com.google.code.gson:gson:2.8.9": "com.google.code.gson:gson:2.11.0", "com.google.errorprone:error_prone_annotations:2.3.2": "com.google.errorprone:error_prone_annotations:2.28.0", "com.google.guava:guava:31.1-jre": "com.google.guava:guava:33.3.1-jre", "com.google.j2objc:j2objc-annotations:1.3": "com.google.j2objc:j2objc-annotations:3.0.0", - "org.mockito:mockito-core:4.3.1": "org.mockito:mockito-core:5.13.0" + "org.mockito:mockito-core:4.3.1": "org.mockito:mockito-core:5.14.2" }, "artifacts": { "com.beust:jcommander": { @@ -40,31 +40,31 @@ }, "com.fasterxml.jackson.core:jackson-annotations": { "shasums": { - "jar": "873a606e23507969f9bbbea939d5e19274a88775ea5a169ba7e2d795aa5156e1", - "sources": "c647697c578c4126e0ccae72924b641a824dddfce6db9935e4a4daefd59d06f2" + "jar": "a09367d2eeb526873abf737ff754c5085f82073a382ee72c3bbe15412217671f", + "sources": "506c61d1efe6cf7aff5ec13a4b87532185e7a872dc2ffea66dc57bdcc1108f15" }, - "version": "2.17.2" + "version": "2.18.0" }, "com.fasterxml.jackson.core:jackson-core": { "shasums": { - "jar": "721a189241dab0525d9e858e5cb604d3ecc0ede081e2de77d6f34fa5779a5b46", - "sources": "abd7bfe1f3ae15c6e56409555954a10424e5bfc0ac3119449647347bded0032b" + "jar": "215bbd7c8fd65be504cb92ff3aa1c4b790fc7b14cca72f4546aac4143c101bb5", + "sources": "afb36a31e0038a31d79e30719315ad5c7a1e140443ef400108d104d72c943162" }, - "version": "2.17.2" + "version": "2.18.0" }, "com.fasterxml.jackson.core:jackson-databind": { "shasums": { - "jar": "c04993f33c0f845342653784f14f38373d005280e6359db5f808701cfae73c0c", - "sources": "09fb0d67d3c9fc3c03adef0ca87df3dee7e7a7db8ffd331dcdf09f62b6b66342" + "jar": "2bf1927b7f3224683ed0157a1ec3b0ede75179da3e597d78c572d56ed00f9f3c", + "sources": "0531788c8193e81e40e16ff7c16401d7c5cb629ed493bb13d091d980bc425123" }, - "version": "2.17.2" + "version": "2.18.0" }, "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml": { "shasums": { - "jar": "941bcd8b1381bb3b0d726fab41624fa8ece0ee7b6cf2860ad95e8157ce673376", - "sources": "d0938b1f8df14edff08e3ea3e6f65658f6d4506e0e13ea13a6f3f59941ba0a34" + "jar": "1e14646be85443e9be00c18fe7d67b71953edaed97ce0b30ce822279933aeaca", + "sources": "6fb2e6b2b39e2a93787f5d8ce3ea851623af6f1ecdbce2a724732936ade12fd4" }, - "version": "2.17.2" + "version": "2.18.0" }, "com.github.javaparser:javaparser-core": { "shasums": { @@ -145,10 +145,10 @@ }, "com.google.googlejavaformat:google-java-format": { "shasums": { - "jar": "f9c5f181faee5c7b380feb96c1a94bec0c55859baeb2d14e9a47d92d40bef021", - "sources": "d3a4c8d7a2349396342033f2a9ee0632ae840523c84f67f63503d01d9cd841ac" + "jar": "9a4e0b9f4ec4d71a8a1d3641fd481118100fda2eeab712dbdfd4b2a06e9de4ce", + "sources": "d4dfd144c7dceca98cfa479591398160558c0311750eed069ebd796cda420d55" }, - "version": "1.23.0" + "version": "1.24.0" }, "com.google.guava:failureaccess": { "shasums": { @@ -243,17 +243,17 @@ }, "io.grpc:grpc-api": { "shasums": { - "jar": "8fadb1f4f0a18971c082497f34cbb78a51897ca8af4b212aa2a99c7de9ad995c", - "sources": "6d0df2072702a1badfaaab3cce14f2629d4eaec85cf696347561bec19736ce8c" + "jar": "b5120a11da5ce5ddfab019bbb69f5868529c9b5def1ba5b283251cc95fb3ba91", + "sources": "3e4b31496f2c8b7cd51b425af767c72d44b38fdbb56a6e8c247acb8a721c4e8c" }, - "version": "1.66.0" + "version": "1.68.0" }, "io.grpc:grpc-context": { "shasums": { - "jar": "7b7521aa2116014d08dc08825e13d70eac8eb646d09dd44980b6f4d1883e6713", - "sources": "c4638347d6d0964eb7a3987cd9d943554cbdf5e334b26f6d119dfc0e85fb1899" + "jar": "45f85a394466f963f1f7a5c5555e6dda35efd05ce1c687203a217d7048f6f089", + "sources": "31d4fc1054b5c0bc75924e82ca425dcf624f895e7525da900b94cfa87a2bea53" }, - "version": "1.66.0" + "version": "1.68.0" }, "io.lettuce:lettuce-core": { "shasums": { @@ -264,94 +264,94 @@ }, "io.netty:netty-buffer": { "shasums": { - "jar": "a85c198180a8de997e8f64a62e054946a39af0708466c1bd67747d393d2feee1", - "sources": "b21b7a03dd5ab0af84def551fcbaf26d61f2e9e8a0b9581b067a7722f1e5322c" + "jar": "436ea25725d92c1f590a857d46dc1c8f5c54d7f2775984db2655e5e3bc0d97c9", + "sources": "62bec4230845ec978832f602b9a118b57955cf816da07b99fccd33430d5da3a8" }, - "version": "4.1.113.Final" + "version": "4.1.114.Final" }, "io.netty:netty-codec": { "shasums": { - "jar": "c7669cbeda2b5c6284627b7ffafd6f1014a96639013b26ebb9d6bcb828f76542", - "sources": "e54247ed6809b0368fe21dcd2ff0f15f0dffc427e4691f82db9eec0ee0541006" + "jar": "71d145491456b53212e38e24787bbbed0c77d850f7352e24e535d26a6eea913b", + "sources": "f0bc1dcab04f9c9fb9fb5450eb1636c7c99b67a772ceb7896e80094400e8c74c" }, - "version": "4.1.113.Final" + "version": "4.1.114.Final" }, "io.netty:netty-codec-dns": { "shasums": { - "jar": "8939e59890dba2b72f720811c15034178449f2ce0ff3daf7942f0fb488d7ee6b", - "sources": "9e07213699ba113086cc8e059cdfb9e3acc68f461d8bc28446e97d68a09073be" + "jar": "65d9690298403ada696a7cbf9ebab2106e9d6a9056ae51d5fda7c4c553d9a21a", + "sources": "edf01b849d83b8f6bbd754ed324e418a2c8cabf8659fa5316b285580307b85dd" }, - "version": "4.1.112.Final" + "version": "4.1.113.Final" }, "io.netty:netty-codec-http": { "shasums": { - "jar": "bd5ebc6435d78d6fc96b36545d7e5ef00ec1045fd87ef367a9bc951c76400490", - "sources": "233477291b8fc8defa9b93cbc92021e6ceeca1dd5ef1e85701cb1810b5a231f3" + "jar": "56150ce900f6d931fce37a7fb05d7d75478d6d0b8b556a21781972eb9c3ed7df", + "sources": "69a06bd827300e88736660df76fc1d590379f2a161ca1fbc6aaaf8e1c9554ada" }, - "version": "4.1.113.Final" + "version": "4.1.114.Final" }, "io.netty:netty-codec-http2": { "shasums": { - "jar": "15e37fe28b31d92b77edb804ffe6d194bce330be194b77b3911afad03b21a07c", - "sources": "7e2c9bc7e789dc06f3cafdd7c0a8c882e3ac0a5810d4fb053a54396b8eeb960b" + "jar": "e3e45427a46a8d5b03307a5bcd2eab3706b8b8d903c6a056fa3d1c9bf9738f24", + "sources": "e8e3f6c709ddcef83bfff99b144bc532e235dc8bdd685621179a7a08ddb763bd" }, - "version": "4.1.113.Final" + "version": "4.1.114.Final" }, "io.netty:netty-codec-socks": { "shasums": { - "jar": "d871bfd5d9c648b640fa26fbe4bab82d05583f6f359f5428995cd4b91d3407cb", - "sources": "d8beecbd55020e25b88840fe72b9a125168416b4f1db9f3c628a5fa0bf4ac8a3" + "jar": "2e48cb5af7cae82acbb8dcb7b0c9d67b9dddff3d6dd262cb8911fd4b5fd62ee2", + "sources": "2d90b45bc6f02c2c708c1773aae010b344b260bb4b033fbd01d054aed56f9c9e" }, - "version": "4.1.113.Final" + "version": "4.1.114.Final" }, "io.netty:netty-common": { "shasums": { - "jar": "c0fb22d47111cb06aac2af67fe55e2e216a49fd00e767f4acb7488b280f8c327", - "sources": "ed34484d83860c3721c709bb38abd2a1f91c8edea18d59fd4e89da1e96b4d911" + "jar": "d6b053b3b27cc568207f254902dcb6f95dd238c1b9d55ef719d2c4f8eb476223", + "sources": "fac8937c115808c600fcae35964e54ae4eef344b81c22f8de8913ca95ddbcebf" }, - "version": "4.1.113.Final" + "version": "4.1.114.Final" }, "io.netty:netty-handler": { "shasums": { - "jar": "7a583c4fe5880504d1257a4a6bfe6a635cd34ffe18aab0e4caabbf17d104f172", - "sources": "968ead1589c79ab5488b031f4564ee4f2cb0d0c17e9cf9b42ad826ed74e85293" + "jar": "57be25ec6c8fa7052fe90119373d8bc979cd37fa0070a135c0e69f5f8e0ddad0", + "sources": "f07c13c7bd69f481136983bdf722fe64be29405065842010669d443455379c24" }, - "version": "4.1.113.Final" + "version": "4.1.114.Final" }, "io.netty:netty-handler-proxy": { "shasums": { - "jar": "78e7890ca04255785fb441c4ba7bc4954536b4aa58622fa86f6dc8b6004cca59", - "sources": "ce3511277296605cb26a4e963655bdcd7bbf222c238ec868cb7922022a93291a" + "jar": "35555b41624c8384de773bc3d17eb2447f5449842119db0435a366372aceefd1", + "sources": "af00561a494ad88a960b02ffae8153bd7c04cd2aa87183e884ad146fee67cda9" }, - "version": "4.1.113.Final" + "version": "4.1.114.Final" }, "io.netty:netty-resolver": { "shasums": { - "jar": "b2c110a547e7dc6e2b27017ea4ef98416d7d832d2cf40625d0273b90e61df8ab", - "sources": "2bcdae61be836aac497ec1d1a232f22a541a8d51436d20dcb12413019029ab63" + "jar": "19661e7f1dbdee97fe99a227fbed0696d29c3cdf3f8f2d9839a790695c2bf0ac", + "sources": "83ddf3e14d989e90d28811e7c2697dfef35061fe63b8939ddaf42e5c91235681" }, - "version": "4.1.113.Final" + "version": "4.1.114.Final" }, "io.netty:netty-resolver-dns": { "shasums": { - "jar": "ad918df020ba6e10aeecc0b47133754d0c2616aa44d414bcb876d61bd704e56d", - "sources": "bfcfdcda25dcf603044c2923a418cf357d205f480161c7ff2c7f8edfcd307d4c" + "jar": "65c3bd4569bbe7d3d9b7b9991ac5fd2b1336d6f7a19e76fc60aa23a9bfe3b8f9", + "sources": "cfb42f6612adce6345ee5eca93fe4f5bf6540314fd3c2b8c561c255ac3299d53" }, - "version": "4.1.112.Final" + "version": "4.1.113.Final" }, "io.netty:netty-transport": { "shasums": { - "jar": "cb8b97ff77d7c5f1c591c84d2dee3389a0eaa63a3137b7b8c0c64e1dbada6688", - "sources": "36b22629d6dae03c6358fcef069471fd339fd66002094c5b22eaf2dfe90bb529" + "jar": "2a8609fe6a8b4c9d5965c6b901777b4bd0b26600647ee2aa7d4d93f4d5c780de", + "sources": "dd4923fb040730ea5ddb4cb66a0e236ffe75385a201badd7902a99e5fad81ee4" }, - "version": "4.1.113.Final" + "version": "4.1.114.Final" }, "io.netty:netty-transport-native-unix-common": { "shasums": { - "jar": "804640095390c1284a1ad537207c6d5b391cfb798a7ef976e5b238fcd9c08ea3", - "sources": "6c1eefb4fec3fe864cee47dbabd7b7ea4dbf693efaf67e0070f8d71447f1fadc" + "jar": "fd64c07c9e068f80dc271f6277278246328a171be669abdfe0bc8b2226d980de", + "sources": "84e5081550855aa7567a215b94fdc6cd7e8c62dabc9503fc2c3c72e0c3855a48" }, - "version": "4.1.113.Final" + "version": "4.1.114.Final" }, "io.opentelemetry.semconv:opentelemetry-semconv": { "shasums": { @@ -362,87 +362,87 @@ }, "io.opentelemetry:opentelemetry-api": { "shasums": { - "jar": "6b0f9d067260ea3ed6c3960352b80800b993cb3962fa6fb1b6383cd04c3c0874", - "sources": "0c3c8c37171fa4eb7e2201cb575fee8ae5eb681890b849e3ef42c7d793eec841" + "jar": "4d08915aa1590bd64b3fced39bae06489e3f597c4bf7fa12f413e13c5a98be39", + "sources": "e8d0fbee6a7a19408e776bda9caecb2a4adeedf64cc196cfefd977837eb27300" }, - "version": "1.42.1" + "version": "1.43.0" }, "io.opentelemetry:opentelemetry-api-incubator": { "shasums": { - "jar": "2d5f478fe5971dc6cc454b483f84151280559f1e1a4b8dabea346fd425b6ad47", - "sources": "b924e38a40889978363ad07385d86e67a1112df4e5118578dd1c088d1ef110c3" + "jar": "a64d48638cdd4324e5ffab80c85784173f8c5068f059c07d8380f428d7c39ec8", + "sources": "871b4ef83803384b4a4ce794ea7b2384e0df70c8a15dc48afcf318525d7547f0" }, - "version": "1.42.1-alpha" + "version": "1.43.0-alpha" }, "io.opentelemetry:opentelemetry-context": { "shasums": { - "jar": "fc8f47bc94bec89a3dbdbcf631470fb7fd7d3e628b10d43bc376f17ebde4b405", - "sources": "143f5c77ced023235554da06e4c39b732d995f9599bf518bf4dae4a1bc9ae0bc" + "jar": "83d54bed8a7aa74a8648d43974c743f470c9ceab3dea57f26a938667a2dc0160", + "sources": "6cbaf1ff211bd61fd5ac2dd5762e18db56913035c43c963c3863eeff2bb25888" }, - "version": "1.42.1" + "version": "1.43.0" }, "io.opentelemetry:opentelemetry-exporter-logging": { "shasums": { - "jar": "f4e85c2756ff27accc1e90f221465149c3a0528d286701ed4aec70794daa72b3", - "sources": "6a71e942cd904192c81b1dc31f745439ad3b32f44713d56ea3286fae977932d1" + "jar": "68dff3d10b0875db8fa4c137f3e1f42f3fde8470f87463feae9c10acdcef7e32", + "sources": "652b5381cdba31eff8b8d402a296b03bdf49da423db0135251aee23794d5903d" }, - "version": "1.42.1" + "version": "1.43.0" }, "io.opentelemetry:opentelemetry-sdk": { "shasums": { - "jar": "df28b75c2df629c8971fd4afb59036d4861dc96789e6760a54a4266499ced5fb", - "sources": "2071f11cdc2caf4814b3ad60d2b49e578cee4d67676c693ff9d646e1073e07cd" + "jar": "99fd821997190e9fa1a6f6820b8cedd8e38297ab727b3b98db4d86ab518c0155", + "sources": "d798a21f2338674cd9dc7249d67963f7328b9a0a702c91f65c9d20b4b1eff664" }, - "version": "1.42.1" + "version": "1.43.0" }, "io.opentelemetry:opentelemetry-sdk-common": { "shasums": { - "jar": "0cb2f9e93291ccfe7099ed424b7616e7e80ee51fdbbff99d2b2365f52428b179", - "sources": "62af024af0f5f13ee3f9640356073bf6dd819b47548f6fc2ceda90d34bc8b5e2" + "jar": "8d0cc91322e85ea6f71dbf5d35f829808958fd0427e0c43aa3fdd2e94e56a48b", + "sources": "e240713669cc161a6898c9c405fdf0903f69ff35abde95827d1f6660df58c0cc" }, - "version": "1.42.1" + "version": "1.43.0" }, "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure": { "shasums": { - "jar": "ce1186edb83c68e5fb91877cf018a75703153befa36ce6628b11f603f681e00e", - "sources": "787e25715d13f38d02e2f77d741b0df6643fc7f3800646d6ee32671e3846db5e" + "jar": "c731376048e1b2c89cf184227abfdb2e5baafb687fa4091901e97b4f3e8c6985", + "sources": "0cc04966769b3b65c8df3769ef90908eae77aa16fb6f82895d4ff80a4a198d75" }, - "version": "1.42.1" + "version": "1.43.0" }, "io.opentelemetry:opentelemetry-sdk-extension-autoconfigure-spi": { "shasums": { - "jar": "fe095e16871b942cae7fed6e0b3bbff462111fe62fe31ccd34d7542f8ebcfe90", - "sources": "4dd4752c749d50487ab0e5753dfbf9289a3efb5768c73fe5e575239513338a80" + "jar": "ae0b08fbe8b3146ff2a8e14cc48af418d6f8f808527d00406b0778748cd07f24", + "sources": "c92792a6f691b68f513ae3b9d4a1bc97299881b08399f3fb1900e947e5434dca" }, - "version": "1.42.1" + "version": "1.43.0" }, "io.opentelemetry:opentelemetry-sdk-logs": { "shasums": { - "jar": "e8229fe1305ad76a879d2dcccffb189308423fc45602bd20715dae9e52862bc0", - "sources": "c632f4d62c801d516e60d4899679de715d2897d4fffd7c737e26fba7ee60a452" + "jar": "5465297bac529a32be7c3e37bc854f1f683df967551cc092397deaa2596f4462", + "sources": "234fb21e31806e054c53044cf97d82786390b3634cc94fd42b4fe5c12d86a553" }, - "version": "1.42.1" + "version": "1.43.0" }, "io.opentelemetry:opentelemetry-sdk-metrics": { "shasums": { - "jar": "0144c6f2845c25baab653764b365d178f589cd9d427d8a30ea06dafdf75576c5", - "sources": "3a8d6977adc1b792cc00fdee48701efe4e3c5a7609aa2e4a62d46654ed530a56" + "jar": "b3cd4906157c559005d6890441d367730c337ad4d860adeee7ceda1106cfc245", + "sources": "d7523f6dbeb161fd4f0dabf1c6e414ab3eac153479acb95547155f5b16f8e557" }, - "version": "1.42.1" + "version": "1.43.0" }, "io.opentelemetry:opentelemetry-sdk-testing": { "shasums": { - "jar": "402267cbc8fc93bbea0f85212e95ac7d3cf7e29c9f26dd88e9c43f7e1ef45280", - "sources": "7caeaa8d20e562450ef76672530af6c9dd49e3003071e5e8530d9bb86360aa42" + "jar": "37512f646f55312cc0a646a0b508495d993d818aae2df5403497c5a096cd5571", + "sources": "bf62824394d155329ce095e4ad64cb6d3b2daf3f7a4b5c15dea21c5e3196ba5b" }, - "version": "1.42.1" + "version": "1.43.0" }, "io.opentelemetry:opentelemetry-sdk-trace": { "shasums": { - "jar": "23a4ab8ed8cfb32cc3ef3a2bc921eb8e9f2c6c73e0bf184061c68b4fc2c98b02", - "sources": "bb7b29c5d7587e1ff0ce34b8162ad0c852eb000f27932995390588be8dcc7719" + "jar": "7e28072cf33eaa7d5e5f3ab2f8b2e51e54d24e0fe3dae3482769b0f6ff0dfcfc", + "sources": "b75d547249b04ad5163c17253018159f3f40a99d6d89719a82d11eb3d64588f1" }, - "version": "1.42.1" + "version": "1.43.0" }, "io.ous:jtoml": { "shasums": { @@ -495,17 +495,17 @@ }, "net.bytebuddy:byte-buddy": { "shasums": { - "jar": "cc5f178f37ef83339b7ec93e8d0bed6b0730871cdb39c663527ddeae4a54a825", - "sources": "fca376d0298b5528dda33b06378a8820c6e9029e4ab19c89b64d2344cb4ae700" + "jar": "7f77ee7ae0a6f420218546424a92fc6c964ed5788b21a2559d6be177c5e1a718", + "sources": "d19281fa34e46008ff096ec955659f94c81df9a3301109e33503ac15f9e1c44d" }, - "version": "1.15.1" + "version": "1.15.7" }, "net.bytebuddy:byte-buddy-agent": { "shasums": { - "jar": "3399a0fdf7ba3f1386ebf831a706037428f1b1af81d653c25cf8a8fde2e4d2ea", - "sources": "e1851c192c949dac8e84e935ebec97e95a96af0c51c84451a9fa4667ef047188" + "jar": "1d76defd159a564b9cb7a968d0dea27367b8b70ebde75a968e7ef1921bc75ee4", + "sources": "8a7e537a5c2a932a6d73dcec9aa8d5388d33ab3aa91ea410aeea5228dcfe9745" }, - "version": "1.15.0" + "version": "1.15.4" }, "net.sf.saxon:Saxon-HE": { "shasums": { @@ -565,17 +565,17 @@ }, "org.apache.logging.log4j:log4j-api": { "shasums": { - "jar": "de99b52578c62ee0125dd345e7121502facfe29294314ae684a4a12314c4e55a", - "sources": "1678a06935bdb4fc9f43af6ada2b495e284517c7f5a44d9a653cddb395c8b4e1" + "jar": "6e77bb229fc8dcaf09038beeb5e9030b22e9e01b51b458b0183ce669ebcc92ef", + "sources": "e01afccb47c9340abba621f1cd93e05a092525614071a446c3958f2cd9f48bf6" }, - "version": "2.24.0" + "version": "2.24.1" }, "org.apache.logging.log4j:log4j-core": { "shasums": { - "jar": "3f5b93c80f0f3d2e8cfb166a7d64ec589f8c9326fa0d7c41d74d63b28f6fd62e", - "sources": "48f975893afb7ba045583c9c4de965809b1ddd3a2948cf16ac003a86ee4b2d56" + "jar": "00bcf388472ca80a687014181763b66d777177f22cbbf179fd60e1b1ac9bc9b0", + "sources": "b5b4eafe913e457160a3c19773c7f59e132a62b1c74ab9fa744ebc6f9ba9bc9a" }, - "version": "2.24.0" + "version": "2.24.1" }, "org.apiguardian:apiguardian-api": { "shasums": { @@ -642,10 +642,10 @@ }, "org.htmlunit:htmlunit-core-js": { "shasums": { - "jar": "1acde070d8419a402da6fc30a16e5e348831ba6e323c31b2777e733593ead8c6", - "sources": "396abdec68dae0c18362e059bbc31fdd01f19d4865ca561d603ed13b84279e73" + "jar": "70c9a224a75670a6d135e65deac885462e34a6756559170527cffcd613f3ca1a", + "sources": "87645340ab720096be5267b9ac820d60d968f690c024e8190be2942afe027309" }, - "version": "4.4.0" + "version": "4.5.0" }, "org.jodd:jodd-util": { "shasums": { @@ -663,59 +663,59 @@ }, "org.junit.jupiter:junit-jupiter-api": { "shasums": { - "jar": "42aa202fc862f76cc5af65b47b1c0b1961cdd79cd2216405a6dfa2bd20b20974", - "sources": "cbcd62ebf6d19b118eb69055ccf3cdedbdb349f42f9721446dd6958b19cc8c6a" + "jar": "5d8147a60f49453973e250ed68701b7ff055964fe2462fc2cb1ec1d6d44889ba", + "sources": "7f6a333b8c4e5c2d29c76c52883dfe2484145b8b2fc20346f8880b9e087f6336" }, - "version": "5.11.0" + "version": "5.11.3" }, "org.junit.jupiter:junit-jupiter-engine": { "shasums": { - "jar": "7012423383d0c79d0347c5cf2bd1996c30a12240fb729e0cdfa954852ec693cc", - "sources": "ab10b3e1cc9f694bbea76a9b2ca6f21ccaa4b2bab45a520673ca9b03ce2f5bb4" + "jar": "e62420c99f7c0d59a2159a2ef63e61877e9c80bd722c03ca8bf3bdcea050a589", + "sources": "b2343451cf7f9cd0044b4a614adca1dd88f3a9265256c88a4a6f3b68e65075c8" }, - "version": "5.11.0" + "version": "5.11.3" }, "org.junit.jupiter:junit-jupiter-params": { "shasums": { - "jar": "92ccae2d72e8cc7ac4d3a912fd1a8fecc5e3040a62ac6c667a07a6f55b8023eb", - "sources": "db6d5e95e5909e64ec4cb4b72d2360b0264ed9d07aa50d86a9c525d09907ce9e" + "jar": "0f798ebec744c4e6605fd4f2072f41a8e989e2d469e21db5aa67cf799c0b51ec", + "sources": "073ce1b0f7fa3ee1e89e301e5f92078058ce7702ba662652cc3932d9573137bc" }, - "version": "5.11.0" + "version": "5.11.3" }, "org.junit.platform:junit-platform-commons": { "shasums": { - "jar": "609333a4545f9018eb0c59071efd30663a9e9fdce528121b65a04c27e5fc26a7", - "sources": "47be9d7484beba0cd2cac767a2fb4cfbaafc4f386e916a843dfe3dd1c4eff5c5" + "jar": "be262964b0b6b48de977c61d4f931df8cf61e80e750cc3f3a0a39cdd21c1008c", + "sources": "a2f0c562a7fe4066044d93bb20ce527b4669c1ddaefca2244a53356db747c5e2" }, - "version": "1.11.0" + "version": "1.11.3" }, "org.junit.platform:junit-platform-engine": { "shasums": { - "jar": "a7e67279c651c516949512b506916475a6d9e284cd4f4c30d029b4ad73a944d8", - "sources": "46109b01147fb8435c5a16c1d7e71d3e76f4b428e50bacf0763aa40814c17c39" + "jar": "0043f72f611664735da8dc9a308bf12ecd2236b05339351c4741edb4d8fab0da", + "sources": "96acc7bc533f52421a149faff2e3e9d6958d167f4200da74815b208f9846a615" }, - "version": "1.11.0" + "version": "1.11.3" }, "org.junit.platform:junit-platform-launcher": { "shasums": { - "jar": "a44535e639814236844e2247204f89247d13af0cebdea53a42314100dfde19ce", + "jar": "b4727459201b0011beb0742bd807421a1fc8426b116193031ed87825bc2d4f04", "sources": "e560e5e7bc6eed184774f75a7b36b824e20ec818be4b991213c0d31aff4260c5" }, - "version": "1.11.0" + "version": "1.11.3" }, "org.junit.platform:junit-platform-reporting": { "shasums": { - "jar": "e46b5a6420dfd25d7c18ab0c0d1cc0616fc5e057949bb877a847c8afbfa64cd6", + "jar": "b8e19dbebcae7d1ff30b9d767047fbf3694027c33dfa423b371693b7f6679ed1", "sources": "d19baa18b721ae6750004afdf63aefaf9d8ce2646752ec5c0346abe7d744086b" }, - "version": "1.11.0" + "version": "1.11.3" }, "org.mockito:mockito-core": { "shasums": { - "jar": "f8a6dad9511fbc809c493b1840414e42172335e414bdbabe643dd2d53dae9a7e", - "sources": "5bb0e8cdc11586a0305c3e2af7f1dacafaffc96df8226f83d099d0c9eeba95de" + "jar": "2296141c1e1f2e1ae35c08d36a9ab4563ecd66e03533fe82630a764e7aa49182", + "sources": "32f318184ab3795885743f23d8be0da7fe856e3e360b518083f8b366a44d2b33" }, - "version": "5.13.0" + "version": "5.14.2" }, "org.objenesis:objenesis": { "shasums": { @@ -775,10 +775,10 @@ }, "org.redisson:redisson": { "shasums": { - "jar": "7c031183fa0b3070467dad51131ab57b70dcef961156a68a949de432cc248d6b", - "sources": "d3aac121720386669d625b6b89601ece83ea2e7ab8d15540be5f6a59328d245b" + "jar": "c9840ce1cc8ccf03e95ac6901add9e6342711caf5a1c00f52687b960d979209b", + "sources": "a26f27c9386b38d72d539e21664bc331db2c5b014b925226cb2227c9625057ee" }, - "version": "3.36.0" + "version": "3.37.0" }, "org.slf4j:slf4j-api": { "shasums": { @@ -1208,8 +1208,8 @@ "com.fasterxml.jackson.core.exc", "com.fasterxml.jackson.core.filter", "com.fasterxml.jackson.core.format", + "com.fasterxml.jackson.core.internal.shaded.fdp.v2_18_0", "com.fasterxml.jackson.core.io", - "com.fasterxml.jackson.core.io.doubleparser", "com.fasterxml.jackson.core.io.schubfach", "com.fasterxml.jackson.core.json", "com.fasterxml.jackson.core.json.async", @@ -2614,7 +2614,6 @@ "org.htmlunit.corejs.javascript.debug", "org.htmlunit.corejs.javascript.jdk18", "org.htmlunit.corejs.javascript.json", - "org.htmlunit.corejs.javascript.optimizer", "org.htmlunit.corejs.javascript.regexp", "org.htmlunit.corejs.javascript.serialize", "org.htmlunit.corejs.javascript.tools", diff --git a/java/src/org/openqa/selenium/devtools/v127/BUILD.bazel b/java/src/org/openqa/selenium/devtools/v130/BUILD.bazel similarity index 98% rename from java/src/org/openqa/selenium/devtools/v127/BUILD.bazel rename to java/src/org/openqa/selenium/devtools/v130/BUILD.bazel index 3c97faa8a798a..169f88a358e6b 100644 --- a/java/src/org/openqa/selenium/devtools/v127/BUILD.bazel +++ b/java/src/org/openqa/selenium/devtools/v130/BUILD.bazel @@ -2,7 +2,7 @@ load("//common:defs.bzl", "copy_file") load("//java:defs.bzl", "java_export", "java_library") load("//java:version.bzl", "SE_VERSION") -cdp_version = "v127" +cdp_version = "v130" java_export( name = cdp_version, diff --git a/java/src/org/openqa/selenium/devtools/v127/v127CdpInfo.java b/java/src/org/openqa/selenium/devtools/v130/v130CdpInfo.java similarity index 86% rename from java/src/org/openqa/selenium/devtools/v127/v127CdpInfo.java rename to java/src/org/openqa/selenium/devtools/v130/v130CdpInfo.java index cef17b8d05d04..fe9227f90b64e 100644 --- a/java/src/org/openqa/selenium/devtools/v127/v127CdpInfo.java +++ b/java/src/org/openqa/selenium/devtools/v130/v130CdpInfo.java @@ -15,15 +15,15 @@ // specific language governing permissions and limitations // under the License. -package org.openqa.selenium.devtools.v127; +package org.openqa.selenium.devtools.v130; import com.google.auto.service.AutoService; import org.openqa.selenium.devtools.CdpInfo; @AutoService(CdpInfo.class) -public class v127CdpInfo extends CdpInfo { +public class v130CdpInfo extends CdpInfo { - public v127CdpInfo() { - super(127, v127Domains::new); + public v130CdpInfo() { + super(130, v130Domains::new); } } diff --git a/java/src/org/openqa/selenium/devtools/v127/v127Domains.java b/java/src/org/openqa/selenium/devtools/v130/v130Domains.java similarity index 77% rename from java/src/org/openqa/selenium/devtools/v127/v127Domains.java rename to java/src/org/openqa/selenium/devtools/v130/v130Domains.java index 5d2f4744ddb60..a6ab737b71a04 100644 --- a/java/src/org/openqa/selenium/devtools/v127/v127Domains.java +++ b/java/src/org/openqa/selenium/devtools/v130/v130Domains.java @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -package org.openqa.selenium.devtools.v127; +package org.openqa.selenium.devtools.v130; import org.openqa.selenium.devtools.DevTools; import org.openqa.selenium.devtools.idealized.Domains; @@ -26,21 +26,21 @@ import org.openqa.selenium.devtools.idealized.target.Target; import org.openqa.selenium.internal.Require; -public class v127Domains implements Domains { +public class v130Domains implements Domains { - private final v127Javascript js; - private final v127Events events; - private final v127Log log; - private final v127Network network; - private final v127Target target; + private final v130Javascript js; + private final v130Events events; + private final v130Log log; + private final v130Network network; + private final v130Target target; - public v127Domains(DevTools devtools) { + public v130Domains(DevTools devtools) { Require.nonNull("DevTools", devtools); - events = new v127Events(devtools); - js = new v127Javascript(devtools); - log = new v127Log(); - network = new v127Network(devtools); - target = new v127Target(); + events = new v130Events(devtools); + js = new v130Javascript(devtools); + log = new v130Log(); + network = new v130Network(devtools); + target = new v130Target(); } @Override diff --git a/java/src/org/openqa/selenium/devtools/v127/v127Events.java b/java/src/org/openqa/selenium/devtools/v130/v130Events.java similarity index 86% rename from java/src/org/openqa/selenium/devtools/v127/v127Events.java rename to java/src/org/openqa/selenium/devtools/v130/v130Events.java index 45b630cab3a64..9d5329796952f 100644 --- a/java/src/org/openqa/selenium/devtools/v127/v127Events.java +++ b/java/src/org/openqa/selenium/devtools/v130/v130Events.java @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -package org.openqa.selenium.devtools.v127; +package org.openqa.selenium.devtools.v130; import java.time.Instant; import java.util.List; @@ -28,15 +28,15 @@ import org.openqa.selenium.devtools.events.ConsoleEvent; import org.openqa.selenium.devtools.idealized.Events; import org.openqa.selenium.devtools.idealized.runtime.model.RemoteObject; -import org.openqa.selenium.devtools.v127.runtime.Runtime; -import org.openqa.selenium.devtools.v127.runtime.model.ConsoleAPICalled; -import org.openqa.selenium.devtools.v127.runtime.model.ExceptionDetails; -import org.openqa.selenium.devtools.v127.runtime.model.ExceptionThrown; -import org.openqa.selenium.devtools.v127.runtime.model.StackTrace; +import org.openqa.selenium.devtools.v130.runtime.Runtime; +import org.openqa.selenium.devtools.v130.runtime.model.ConsoleAPICalled; +import org.openqa.selenium.devtools.v130.runtime.model.ExceptionDetails; +import org.openqa.selenium.devtools.v130.runtime.model.ExceptionThrown; +import org.openqa.selenium.devtools.v130.runtime.model.StackTrace; -public class v127Events extends Events { +public class v130Events extends Events { - public v127Events(DevTools devtools) { + public v130Events(DevTools devtools) { super(devtools); } @@ -77,7 +77,7 @@ protected ConsoleEvent toConsoleEvent(ConsoleAPICalled event) { protected JavascriptException toJsException(ExceptionThrown event) { ExceptionDetails details = event.getExceptionDetails(); Optional maybeTrace = details.getStackTrace(); - Optional maybeException = + Optional maybeException = details.getException(); String message = diff --git a/java/src/org/openqa/selenium/devtools/v127/v127Javascript.java b/java/src/org/openqa/selenium/devtools/v130/v130Javascript.java similarity index 85% rename from java/src/org/openqa/selenium/devtools/v127/v127Javascript.java rename to java/src/org/openqa/selenium/devtools/v130/v130Javascript.java index 4a803b2fca88b..537e2eb735a0f 100644 --- a/java/src/org/openqa/selenium/devtools/v127/v127Javascript.java +++ b/java/src/org/openqa/selenium/devtools/v130/v130Javascript.java @@ -15,21 +15,21 @@ // specific language governing permissions and limitations // under the License. -package org.openqa.selenium.devtools.v127; +package org.openqa.selenium.devtools.v130; import java.util.Optional; import org.openqa.selenium.devtools.Command; import org.openqa.selenium.devtools.DevTools; import org.openqa.selenium.devtools.Event; import org.openqa.selenium.devtools.idealized.Javascript; -import org.openqa.selenium.devtools.v127.page.Page; -import org.openqa.selenium.devtools.v127.page.model.ScriptIdentifier; -import org.openqa.selenium.devtools.v127.runtime.Runtime; -import org.openqa.selenium.devtools.v127.runtime.model.BindingCalled; +import org.openqa.selenium.devtools.v130.page.Page; +import org.openqa.selenium.devtools.v130.page.model.ScriptIdentifier; +import org.openqa.selenium.devtools.v130.runtime.Runtime; +import org.openqa.selenium.devtools.v130.runtime.model.BindingCalled; -public class v127Javascript extends Javascript { +public class v130Javascript extends Javascript { - public v127Javascript(DevTools devtools) { + public v130Javascript(DevTools devtools) { super(devtools); } diff --git a/java/src/org/openqa/selenium/devtools/v127/v127Log.java b/java/src/org/openqa/selenium/devtools/v130/v130Log.java similarity index 89% rename from java/src/org/openqa/selenium/devtools/v127/v127Log.java rename to java/src/org/openqa/selenium/devtools/v130/v130Log.java index 8c5a1db4860a7..f665b4325a9c4 100644 --- a/java/src/org/openqa/selenium/devtools/v127/v127Log.java +++ b/java/src/org/openqa/selenium/devtools/v130/v130Log.java @@ -15,19 +15,19 @@ // specific language governing permissions and limitations // under the License. -package org.openqa.selenium.devtools.v127; +package org.openqa.selenium.devtools.v130; import java.util.function.Function; import java.util.logging.Level; import org.openqa.selenium.devtools.Command; import org.openqa.selenium.devtools.ConverterFunctions; import org.openqa.selenium.devtools.Event; -import org.openqa.selenium.devtools.v127.log.Log; -import org.openqa.selenium.devtools.v127.log.model.LogEntry; -import org.openqa.selenium.devtools.v127.runtime.model.Timestamp; +import org.openqa.selenium.devtools.v130.log.Log; +import org.openqa.selenium.devtools.v130.log.model.LogEntry; +import org.openqa.selenium.devtools.v130.runtime.model.Timestamp; import org.openqa.selenium.json.JsonInput; -public class v127Log implements org.openqa.selenium.devtools.idealized.log.Log { +public class v130Log implements org.openqa.selenium.devtools.idealized.log.Log { @Override public Command enable() { diff --git a/java/src/org/openqa/selenium/devtools/v127/v127Network.java b/java/src/org/openqa/selenium/devtools/v130/v130Network.java similarity index 92% rename from java/src/org/openqa/selenium/devtools/v127/v127Network.java rename to java/src/org/openqa/selenium/devtools/v130/v130Network.java index 769c646c40e7b..62ee7845f1451 100644 --- a/java/src/org/openqa/selenium/devtools/v127/v127Network.java +++ b/java/src/org/openqa/selenium/devtools/v130/v130Network.java @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -package org.openqa.selenium.devtools.v127; +package org.openqa.selenium.devtools.v130; import static java.net.HttpURLConnection.HTTP_OK; @@ -30,35 +30,35 @@ import org.openqa.selenium.devtools.DevToolsException; import org.openqa.selenium.devtools.Event; import org.openqa.selenium.devtools.idealized.Network; -import org.openqa.selenium.devtools.v127.fetch.Fetch; -import org.openqa.selenium.devtools.v127.fetch.model.*; -import org.openqa.selenium.devtools.v127.network.model.Request; +import org.openqa.selenium.devtools.v130.fetch.Fetch; +import org.openqa.selenium.devtools.v130.fetch.model.*; +import org.openqa.selenium.devtools.v130.network.model.Request; import org.openqa.selenium.internal.Either; import org.openqa.selenium.remote.http.HttpRequest; import org.openqa.selenium.remote.http.HttpResponse; -public class v127Network extends Network { +public class v130Network extends Network { - private static final Logger LOG = Logger.getLogger(v127Network.class.getName()); + private static final Logger LOG = Logger.getLogger(v130Network.class.getName()); - public v127Network(DevTools devTools) { + public v130Network(DevTools devTools) { super(devTools); } @Override protected Command setUserAgentOverride(UserAgent userAgent) { - return org.openqa.selenium.devtools.v127.network.Network.setUserAgentOverride( + return org.openqa.selenium.devtools.v130.network.Network.setUserAgentOverride( userAgent.userAgent(), userAgent.acceptLanguage(), userAgent.platform(), Optional.empty()); } @Override protected Command enableNetworkCaching() { - return org.openqa.selenium.devtools.v127.network.Network.setCacheDisabled(false); + return org.openqa.selenium.devtools.v130.network.Network.setCacheDisabled(false); } @Override protected Command disableNetworkCaching() { - return org.openqa.selenium.devtools.v127.network.Network.setCacheDisabled(true); + return org.openqa.selenium.devtools.v130.network.Network.setCacheDisabled(true); } @Override diff --git a/java/src/org/openqa/selenium/devtools/v127/v127Target.java b/java/src/org/openqa/selenium/devtools/v130/v130Target.java similarity index 83% rename from java/src/org/openqa/selenium/devtools/v127/v127Target.java rename to java/src/org/openqa/selenium/devtools/v130/v130Target.java index 84831ac44ab6b..e64a8987d36be 100644 --- a/java/src/org/openqa/selenium/devtools/v127/v127Target.java +++ b/java/src/org/openqa/selenium/devtools/v130/v130Target.java @@ -15,7 +15,7 @@ // specific language governing permissions and limitations // under the License. -package org.openqa.selenium.devtools.v127; +package org.openqa.selenium.devtools.v130; import java.util.List; import java.util.Map; @@ -28,21 +28,21 @@ import org.openqa.selenium.devtools.idealized.browser.model.BrowserContextID; import org.openqa.selenium.devtools.idealized.target.model.SessionID; import org.openqa.selenium.devtools.idealized.target.model.TargetID; -import org.openqa.selenium.devtools.v127.target.Target; -import org.openqa.selenium.devtools.v127.target.model.TargetInfo; +import org.openqa.selenium.devtools.v130.target.Target; +import org.openqa.selenium.devtools.v130.target.model.TargetInfo; import org.openqa.selenium.json.JsonInput; import org.openqa.selenium.json.TypeToken; -public class v127Target implements org.openqa.selenium.devtools.idealized.target.Target { +public class v130Target implements org.openqa.selenium.devtools.idealized.target.Target { @Override public Command detachFromTarget( Optional sessionId, Optional targetId) { return Target.detachFromTarget( sessionId.map( - id -> new org.openqa.selenium.devtools.v127.target.model.SessionID(id.toString())), + id -> new org.openqa.selenium.devtools.v130.target.model.SessionID(id.toString())), targetId.map( - id -> new org.openqa.selenium.devtools.v127.target.model.TargetID(id.toString()))); + id -> new org.openqa.selenium.devtools.v130.target.model.TargetID(id.toString()))); } @Override @@ -74,19 +74,19 @@ public Command detachFromTarget( @Override public Command attachToTarget(TargetID targetId) { - Function mapper = + Function mapper = ConverterFunctions.map( - "sessionId", org.openqa.selenium.devtools.v127.target.model.SessionID.class); + "sessionId", org.openqa.selenium.devtools.v130.target.model.SessionID.class); return new Command<>( "Target.attachToTarget", Map.of( "targetId", - new org.openqa.selenium.devtools.v127.target.model.TargetID(targetId.toString()), + new org.openqa.selenium.devtools.v130.target.model.TargetID(targetId.toString()), "flatten", true), input -> { - org.openqa.selenium.devtools.v127.target.model.SessionID id = mapper.apply(input); + org.openqa.selenium.devtools.v130.target.model.SessionID id = mapper.apply(input); return new SessionID(id.toString()); }); } @@ -101,9 +101,9 @@ public Event detached() { return new Event<>( "Target.detachedFromTarget", input -> { - Function converter = + Function converter = ConverterFunctions.map( - "targetId", org.openqa.selenium.devtools.v127.target.model.TargetID.class); + "targetId", org.openqa.selenium.devtools.v130.target.model.TargetID.class); return new TargetID(converter.apply(input).toString()); }); } diff --git a/java/src/org/openqa/selenium/devtools/versions.bzl b/java/src/org/openqa/selenium/devtools/versions.bzl index 32e5565a8a838..59129be697b12 100644 --- a/java/src/org/openqa/selenium/devtools/versions.bzl +++ b/java/src/org/openqa/selenium/devtools/versions.bzl @@ -2,7 +2,7 @@ CDP_VERSIONS = [ "v85", # Required by Firefox "v128", "v129", - "v127", + "v130", ] CDP_DEPS = ["//java/src/org/openqa/selenium/devtools/%s" % v for v in CDP_VERSIONS] diff --git a/java/version.bzl b/java/version.bzl index 20171265cb335..ccde019f14cbd 100644 --- a/java/version.bzl +++ b/java/version.bzl @@ -1,2 +1,2 @@ -SE_VERSION = "4.26.0-SNAPSHOT" +SE_VERSION = "4.26.0" TOOLS_JAVA_VERSION = "17" diff --git a/javascript/node/selenium-webdriver/BUILD.bazel b/javascript/node/selenium-webdriver/BUILD.bazel index 1cb3a28ab17ab..992befa374e1b 100644 --- a/javascript/node/selenium-webdriver/BUILD.bazel +++ b/javascript/node/selenium-webdriver/BUILD.bazel @@ -11,13 +11,13 @@ load("//javascript/private:browsers.bzl", "BROWSERS") npm_link_all_packages(name = "node_modules") -VERSION = "4.26.0-nightly202409202352" +VERSION = "4.26.0" BROWSER_VERSIONS = [ "v85", "v128", "v129", - "v127", + "v130", ] js_library( diff --git a/javascript/node/selenium-webdriver/CHANGES.md b/javascript/node/selenium-webdriver/CHANGES.md index 765a6a53a8cb3..451efc75eb701 100644 --- a/javascript/node/selenium-webdriver/CHANGES.md +++ b/javascript/node/selenium-webdriver/CHANGES.md @@ -1,3 +1,10 @@ +## 4.26.0 + +- Add CDP for Chrome 130 and remove 127 +- Fix sendKeys command fail on FileDetector.handleFile error (#14663) +- Update dependencies to latest versions to resolve security alerts +- Close BiDi websocket connection (#14507) + ## 4.25.0 - Add CDP for Chrome 129 and remove 126 diff --git a/javascript/node/selenium-webdriver/package.json b/javascript/node/selenium-webdriver/package.json index 31f7b92c3eeed..f7926661daaec 100644 --- a/javascript/node/selenium-webdriver/package.json +++ b/javascript/node/selenium-webdriver/package.json @@ -1,6 +1,6 @@ { "name": "selenium-webdriver", - "version": "4.26.0-nightly202409202352", + "version": "4.26.0", "description": "The official WebDriver JavaScript bindings from the Selenium project", "license": "Apache-2.0", "keywords": [ diff --git a/py/BUILD.bazel b/py/BUILD.bazel index e2ba6dd2019f1..1aa16588308d8 100644 --- a/py/BUILD.bazel +++ b/py/BUILD.bazel @@ -62,13 +62,13 @@ compile_pip_requirements( ], ) -SE_VERSION = "4.26.0.dev202409202351" +SE_VERSION = "4.26.0" BROWSER_VERSIONS = [ "v85", "v128", "v129", - "v127", + "v130", ] TEST_DEPS = [ diff --git a/py/CHANGES b/py/CHANGES index a4e6fd42cb226..3d1ab8eaa0efb 100644 --- a/py/CHANGES +++ b/py/CHANGES @@ -1,3 +1,18 @@ +Selenium 4.26.0 +* Add CDP for Chrome 130 and remove 127 +* Added more internal logging for CDP (#14668) +* Set consistent polling across java and python for `WebDriverWait` methods (#14626) +* webkitgtk: log_path -> log_output (#14618) +* Implement configurable configuration class for the http client (#13286) +* Better compatibility with Appium-python (#14587) +* Avoid waiting indefinitely on a frozen chromedriver process (#14578) +* Allow logging diagnose in safari driver (#14606) +* Remote connection throws response status code when data is empty (#14601) +* Remove deprecated parameter from EdgeService (#14563) +* Allow driver path to be set using ENV variables (#14528) +* Remove un-needed print (#14562) +* Fix a bug in `bidi/session.py` by removing mutable object as default value for function argument (#14286) + Selenium 4.25.0 * Add CDP for Chrome 129 and remove 126 * fix type errors for `service.py`, `cdp.py`, `webelement.py` and `remote_connection.py` (#14448) diff --git a/py/docs/source/conf.py b/py/docs/source/conf.py index d0f2f6b947180..469d5d1e601a1 100644 --- a/py/docs/source/conf.py +++ b/py/docs/source/conf.py @@ -58,7 +58,7 @@ # The short X.Y version. version = '4.26' # The full version, including alpha/beta/rc tags. -release = '4.26.0.dev202409202351' +release = '4.26.0' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/py/selenium/__init__.py b/py/selenium/__init__.py index e4c5adeea398b..14a79a3b9b944 100644 --- a/py/selenium/__init__.py +++ b/py/selenium/__init__.py @@ -16,4 +16,4 @@ # under the License. -__version__ = "4.26.0.dev202409202351" +__version__ = "4.26.0" diff --git a/py/selenium/webdriver/__init__.py b/py/selenium/webdriver/__init__.py index e61f321c187e0..6f8e843d7a375 100644 --- a/py/selenium/webdriver/__init__.py +++ b/py/selenium/webdriver/__init__.py @@ -44,7 +44,7 @@ from .wpewebkit.service import Service as WPEWebKitService # noqa from .wpewebkit.webdriver import WebDriver as WPEWebKit # noqa -__version__ = "4.26.0.dev202409202351" +__version__ = "4.26.0" # We need an explicit __all__ because the above won't otherwise be exported. __all__ = [ diff --git a/py/setup.py b/py/setup.py index 9cdd0712f7158..44107ed20783e 100755 --- a/py/setup.py +++ b/py/setup.py @@ -28,7 +28,7 @@ setup_args = { 'cmdclass': {'install': install}, 'name': 'selenium', - 'version': "4.26.0.dev202409202351", + 'version': "4.26.0", 'license': 'Apache 2.0', 'description': 'Official Python bindings for Selenium WebDriver.', 'long_description': open(join(abspath(dirname(__file__)), "README.rst")).read(), diff --git a/rb/CHANGES b/rb/CHANGES index 2711e0ada7c2d..00357fb0c0c52 100644 --- a/rb/CHANGES +++ b/rb/CHANGES @@ -1,3 +1,10 @@ +4.26.0 (2024-10-28) +========================= +* Add CDP for Chrome 130 and remove 127 +* Add missing RBS methods (#14621) +* Update Ruby BiDi script structs to match spec +* Add RBS type support for BiDi related classes (#14611) + 4.25.0 (2024-09-19) ========================= * Add CDP for Chrome 129 and remove 126 diff --git a/rb/Gemfile.lock b/rb/Gemfile.lock index 446dbdb16d988..1ccd495814df1 100644 --- a/rb/Gemfile.lock +++ b/rb/Gemfile.lock @@ -1,9 +1,9 @@ PATH remote: . specs: - selenium-devtools (0.129.0) + selenium-devtools (0.130.0) selenium-webdriver (~> 4.2) - selenium-webdriver (4.26.0.nightly) + selenium-webdriver (4.26.0) base64 (~> 0.2) logger (~> 1.4) rexml (~> 3.2, >= 3.2.5) @@ -13,7 +13,7 @@ PATH GEM remote: https://rubygems.org/ specs: - activesupport (7.2.1) + activesupport (7.2.1.2) base64 bigdecimal concurrent-ruby (~> 1.0, >= 1.3.1) @@ -54,12 +54,12 @@ GEM concurrent-ruby (~> 1.0) io-console (0.7.2) io-console (0.7.2-java) - irb (1.14.0) + irb (1.14.1) rdoc (>= 4.0.0) reline (>= 0.4.2) jar-dependencies (0.4.1) - json (2.7.2) - json (2.7.2-java) + json (2.7.4) + json (2.7.4-java) language_server-protocol (3.17.0.3) listen (3.9.0) rb-fsevent (~> 0.10, >= 0.10.3) @@ -77,13 +77,13 @@ GEM public_suffix (6.0.1) racc (1.8.1) racc (1.8.1-java) - rack (2.2.9) + rack (2.2.10) rainbow (3.1.1) rake (13.2.1) rb-fsevent (0.11.2) rb-inotify (0.11.1) ffi (~> 1.0) - rbs (3.5.3) + rbs (3.6.1) logger rchardet (1.8.0) rdoc (6.7.0) @@ -91,21 +91,21 @@ GEM regexp_parser (2.9.2) reline (0.5.10) io-console (~> 0.5) - rexml (3.3.7) + rexml (3.3.9) rspec (3.13.0) rspec-core (~> 3.13.0) rspec-expectations (~> 3.13.0) rspec-mocks (~> 3.13.0) - rspec-core (3.13.1) + rspec-core (3.13.2) rspec-support (~> 3.13.0) rspec-expectations (3.13.3) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) - rspec-mocks (3.13.1) + rspec-mocks (3.13.2) diff-lcs (>= 1.2.0, < 2.0) rspec-support (~> 3.13.0) rspec-support (3.13.1) - rubocop (1.66.1) + rubocop (1.67.0) json (~> 2.3) language_server-protocol (>= 3.17.0) parallel (~> 1.10) @@ -159,11 +159,11 @@ GEM tzinfo (2.0.6) concurrent-ruby (~> 1.0) unicode-display_width (2.6.0) - webmock (3.23.1) + webmock (3.24.0) addressable (>= 2.8.0) crack (>= 0.3.2) hashdiff (>= 0.4.0, < 2.0.0) - webrick (1.8.1) + webrick (1.8.2) websocket (1.2.11) yard (0.9.37) diff --git a/rb/lib/selenium/devtools/BUILD.bazel b/rb/lib/selenium/devtools/BUILD.bazel index 8aa9b187bdae8..c974adf9ba317 100644 --- a/rb/lib/selenium/devtools/BUILD.bazel +++ b/rb/lib/selenium/devtools/BUILD.bazel @@ -7,7 +7,7 @@ CDP_VERSIONS = [ "v85", "v128", "v129", - "v127", + "v130", ] rb_library( diff --git a/rb/lib/selenium/devtools/version.rb b/rb/lib/selenium/devtools/version.rb index be6d000d557c4..d75521bb415aa 100644 --- a/rb/lib/selenium/devtools/version.rb +++ b/rb/lib/selenium/devtools/version.rb @@ -19,6 +19,6 @@ module Selenium module DevTools - VERSION = '0.129.0' + VERSION = '0.130.0' end # DevTools end # Selenium diff --git a/rb/lib/selenium/webdriver/version.rb b/rb/lib/selenium/webdriver/version.rb index e99cd42fa460c..a40d4e0f85dfb 100644 --- a/rb/lib/selenium/webdriver/version.rb +++ b/rb/lib/selenium/webdriver/version.rb @@ -19,6 +19,6 @@ module Selenium module WebDriver - VERSION = '4.26.0.nightly' + VERSION = '4.26.0' end # WebDriver end # Selenium diff --git a/rust/CHANGELOG.md b/rust/CHANGELOG.md index b56d9cf5b207f..12049809f5d18 100644 --- a/rust/CHANGELOG.md +++ b/rust/CHANGELOG.md @@ -1,3 +1,7 @@ +0.4.26 +====== +* Selenium Manager checks invalid browser version (#14511) + 0.4.25 ====== diff --git a/scripts/github-actions/release_header.md b/scripts/github-actions/release_header.md index 357a1461dd907..f56da16681f6b 100644 --- a/scripts/github-actions/release_header.md +++ b/scripts/github-actions/release_header.md @@ -1,4 +1,5 @@ ## Detailed Changelogs by Component - **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**     |     **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**     |     **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**     |     **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**     |     **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/node/selenium-webdriver/CHANGES.md)**     |     **[IEDriver](https://github.com/SeleniumHQ/selenium/blob/trunk/cpp/iedriverserver/CHANGELOG)** + **[Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)**     |     **[Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)**     |     **[DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)**     |     **[Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)**     |     **[JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/node/selenium-webdriver/CHANGES.md)**     |     **[IEDriver](https://github.com/SeleniumHQ/selenium/blob/trunk/cpp/iedriverserver/CHANGELOG)**
+ From 8ccf0219d77a3144923d79e76e2b8fddd85b3e8f Mon Sep 17 00:00:00 2001 From: Viet Nguyen Duc Date: Wed, 30 Oct 2024 09:12:13 +0000 Subject: [PATCH 036/135] [ci] Fix pinned browsers fetch different msedgedriver version per OS (#14683) Signed-off-by: Viet Nguyen Duc --- common/repositories.bzl | 8 ++++---- scripts/pinned_browsers.py | 13 +++++++++---- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/common/repositories.bzl b/common/repositories.bzl index 5003c5dd480ca..7a2db8a0d440f 100644 --- a/common/repositories.bzl +++ b/common/repositories.bzl @@ -165,8 +165,8 @@ js_library( http_archive( name = "linux_edgedriver", - url = "https://msedgedriver.azureedge.net/130.0.2849.56/edgedriver_linux64.zip", - sha256 = "c5aa82d87750a6f49b741790a432194ff91d0a232c54eb5507a526f45146f440", + url = "https://msedgedriver.azureedge.net/130.0.2849.46/edgedriver_linux64.zip", + sha256 = "6a62b28e9373776ae7d3f6611f5dd126c454d73264c2bb826659d3283da57f27", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -182,8 +182,8 @@ js_library( http_archive( name = "mac_edgedriver", - url = "https://msedgedriver.azureedge.net/130.0.2849.56/edgedriver_mac64.zip", - sha256 = "97141db0a53b22356094ff4d7a806a19ab816499366539e633a32fc4af8da2a3", + url = "https://msedgedriver.azureedge.net/130.0.2849.61/edgedriver_mac64.zip", + sha256 = "82e761138b112bd57950f6b873d601cd4b1e9c8403663c0ffaad8e5b167efc17", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) diff --git a/scripts/pinned_browsers.py b/scripts/pinned_browsers.py index 70be06421e5f9..b41b169577f46 100755 --- a/scripts/pinned_browsers.py +++ b/scripts/pinned_browsers.py @@ -261,12 +261,15 @@ def edge(): def edgedriver(): - r = http.request("GET", "https://msedgedriver.azureedge.net/LATEST_STABLE") - v = r.data.decode("utf-16").strip() + r_stable = http.request("GET", "https://msedgedriver.azureedge.net/LATEST_STABLE") + stable_version = r_stable.data.decode("utf-16").strip() + major_version = stable_version.split('.')[0] + r = http.request("GET", f"https://msedgedriver.azureedge.net/LATEST_RELEASE_{major_version}_LINUX") + linux_version = r.data.decode("utf-16").strip() content = "" - linux = "https://msedgedriver.azureedge.net/%s/edgedriver_linux64.zip" % v + linux = "https://msedgedriver.azureedge.net/%s/edgedriver_linux64.zip" % linux_version sha = calculate_hash(linux) content = ( content @@ -291,7 +294,9 @@ def edgedriver(): % (linux, sha) ) - mac = "https://msedgedriver.azureedge.net/%s/edgedriver_mac64.zip" % v + r = http.request("GET", f"https://msedgedriver.azureedge.net/LATEST_RELEASE_{major_version}_MACOS") + macos_version = r.data.decode("utf-16").strip() + mac = "https://msedgedriver.azureedge.net/%s/edgedriver_mac64.zip" % macos_version sha = calculate_hash(mac) content = ( content From a1afc0132137754d8819531237d53dc13f1da098 Mon Sep 17 00:00:00 2001 From: Selenium CI Bot Date: Wed, 30 Oct 2024 12:19:03 +0000 Subject: [PATCH 037/135] Update mirror info (Wed Oct 30 12:19:03 UTC 2024) --- common/mirror/selenium | 43 ++++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 23 deletions(-) diff --git a/common/mirror/selenium b/common/mirror/selenium index 5c1e9a15d6f24..ebd4182371cd1 100644 --- a/common/mirror/selenium +++ b/common/mirror/selenium @@ -1,4 +1,24 @@ [ + { + "tag_name": "selenium-4.26.0", + "assets": [ + { + "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.26.0/selenium-dotnet-4.26.0.zip" + }, + { + "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.26.0/selenium-dotnet-strongnamed-4.26.0.zip" + }, + { + "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.26.0/selenium-java-4.26.0.zip" + }, + { + "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.26.0/selenium-server-4.26.0.jar" + }, + { + "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.26.0/selenium-server-4.26.0.zip" + } + ] + }, { "tag_name": "nightly", "assets": [ @@ -935,28 +955,5 @@ "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.0.0-rc-2/selenium-server-4.0.0-rc-2.zip" } ] - }, - { - "tag_name": "selenium-4.0.0-rc-1", - "assets": [ - { - "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.0.0-rc-1/selenium-dotnet-4.0.0-rc1.zip" - }, - { - "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.0.0-rc-1/selenium-dotnet-strongnamed-4.0.0-rc1.zip" - }, - { - "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.0.0-rc-1/selenium-html-runner-4.0.0-rc-1.jar" - }, - { - "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.0.0-rc-1/selenium-java-4.0.0-rc-1.zip" - }, - { - "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.0.0-rc-1/selenium-server-4.0.0-rc-1.jar" - }, - { - "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.0.0-rc-1/selenium-server-4.0.0-rc-1.zip" - } - ] } ] From db343b909b34ce720af3ba7f95c86e2154c8783b Mon Sep 17 00:00:00 2001 From: Diego Molina Date: Wed, 30 Oct 2024 14:44:02 +0100 Subject: [PATCH 038/135] [ci] Bumping version for nightly [skip ci] --- dotnet/selenium-dotnet-version.bzl | 2 +- java/version.bzl | 2 +- javascript/node/selenium-webdriver/BUILD.bazel | 2 +- javascript/node/selenium-webdriver/package.json | 2 +- py/BUILD.bazel | 2 +- py/docs/source/conf.py | 4 ++-- py/selenium/__init__.py | 2 +- py/selenium/webdriver/__init__.py | 2 +- py/setup.py | 2 +- rb/Gemfile.lock | 10 +++++----- rb/lib/selenium/webdriver/version.rb | 2 +- 11 files changed, 16 insertions(+), 16 deletions(-) diff --git a/dotnet/selenium-dotnet-version.bzl b/dotnet/selenium-dotnet-version.bzl index d4ecd22884cf1..08358ab30e988 100644 --- a/dotnet/selenium-dotnet-version.bzl +++ b/dotnet/selenium-dotnet-version.bzl @@ -1,6 +1,6 @@ # BUILD FILE SYNTAX: STARLARK -SE_VERSION = "4.26.0" +SE_VERSION = "4.27.0-nightly202410301443" ASSEMBLY_VERSION = "4.0.0.0" SUPPORTED_NET_STANDARD_VERSIONS = ["netstandard2.0"] diff --git a/java/version.bzl b/java/version.bzl index ccde019f14cbd..f882c57e1cd55 100644 --- a/java/version.bzl +++ b/java/version.bzl @@ -1,2 +1,2 @@ -SE_VERSION = "4.26.0" +SE_VERSION = "4.27.0-SNAPSHOT" TOOLS_JAVA_VERSION = "17" diff --git a/javascript/node/selenium-webdriver/BUILD.bazel b/javascript/node/selenium-webdriver/BUILD.bazel index 992befa374e1b..874c0b18b8bb1 100644 --- a/javascript/node/selenium-webdriver/BUILD.bazel +++ b/javascript/node/selenium-webdriver/BUILD.bazel @@ -11,7 +11,7 @@ load("//javascript/private:browsers.bzl", "BROWSERS") npm_link_all_packages(name = "node_modules") -VERSION = "4.26.0" +VERSION = "4.27.0-nightly202410301443" BROWSER_VERSIONS = [ "v85", diff --git a/javascript/node/selenium-webdriver/package.json b/javascript/node/selenium-webdriver/package.json index f7926661daaec..cb31db734d8ac 100644 --- a/javascript/node/selenium-webdriver/package.json +++ b/javascript/node/selenium-webdriver/package.json @@ -1,6 +1,6 @@ { "name": "selenium-webdriver", - "version": "4.26.0", + "version": "4.27.0-nightly202410301443", "description": "The official WebDriver JavaScript bindings from the Selenium project", "license": "Apache-2.0", "keywords": [ diff --git a/py/BUILD.bazel b/py/BUILD.bazel index 1aa16588308d8..89abaa9c19f44 100644 --- a/py/BUILD.bazel +++ b/py/BUILD.bazel @@ -62,7 +62,7 @@ compile_pip_requirements( ], ) -SE_VERSION = "4.26.0" +SE_VERSION = "4.27.0.dev202410301443" BROWSER_VERSIONS = [ "v85", diff --git a/py/docs/source/conf.py b/py/docs/source/conf.py index 469d5d1e601a1..131442f1b5f3c 100644 --- a/py/docs/source/conf.py +++ b/py/docs/source/conf.py @@ -56,9 +56,9 @@ # built documents. # # The short X.Y version. -version = '4.26' +version = '4.27' # The full version, including alpha/beta/rc tags. -release = '4.26.0' +release = '4.27.0.dev202410301443' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/py/selenium/__init__.py b/py/selenium/__init__.py index 14a79a3b9b944..860e3b4fb86d4 100644 --- a/py/selenium/__init__.py +++ b/py/selenium/__init__.py @@ -16,4 +16,4 @@ # under the License. -__version__ = "4.26.0" +__version__ = "4.27.0.dev202410301443" diff --git a/py/selenium/webdriver/__init__.py b/py/selenium/webdriver/__init__.py index 6f8e843d7a375..c45de6a75acaf 100644 --- a/py/selenium/webdriver/__init__.py +++ b/py/selenium/webdriver/__init__.py @@ -44,7 +44,7 @@ from .wpewebkit.service import Service as WPEWebKitService # noqa from .wpewebkit.webdriver import WebDriver as WPEWebKit # noqa -__version__ = "4.26.0" +__version__ = "4.27.0.dev202410301443" # We need an explicit __all__ because the above won't otherwise be exported. __all__ = [ diff --git a/py/setup.py b/py/setup.py index 44107ed20783e..d25b031cddfc4 100755 --- a/py/setup.py +++ b/py/setup.py @@ -28,7 +28,7 @@ setup_args = { 'cmdclass': {'install': install}, 'name': 'selenium', - 'version': "4.26.0", + 'version': "4.27.0.dev202410301443", 'license': 'Apache 2.0', 'description': 'Official Python bindings for Selenium WebDriver.', 'long_description': open(join(abspath(dirname(__file__)), "README.rst")).read(), diff --git a/rb/Gemfile.lock b/rb/Gemfile.lock index 1ccd495814df1..4aedfe0ed9f98 100644 --- a/rb/Gemfile.lock +++ b/rb/Gemfile.lock @@ -3,7 +3,7 @@ PATH specs: selenium-devtools (0.130.0) selenium-webdriver (~> 4.2) - selenium-webdriver (4.26.0) + selenium-webdriver (4.27.0.nightly) base64 (~> 0.2) logger (~> 1.4) rexml (~> 3.2, >= 3.2.5) @@ -58,8 +58,8 @@ GEM rdoc (>= 4.0.0) reline (>= 0.4.2) jar-dependencies (0.4.1) - json (2.7.4) - json (2.7.4-java) + json (2.7.5) + json (2.7.5-java) language_server-protocol (3.17.0.3) listen (3.9.0) rb-fsevent (~> 0.10, >= 0.10.3) @@ -115,7 +115,7 @@ GEM rubocop-ast (>= 1.32.2, < 2.0) ruby-progressbar (~> 1.7) unicode-display_width (>= 2.4.0, < 3.0) - rubocop-ast (1.32.3) + rubocop-ast (1.33.0) parser (>= 3.3.1.0) rubocop-capybara (2.21.0) rubocop (~> 1.41) @@ -196,4 +196,4 @@ DEPENDENCIES yard (~> 0.9.11, >= 0.9.36) BUNDLED WITH - 2.5.14 + 2.5.6 diff --git a/rb/lib/selenium/webdriver/version.rb b/rb/lib/selenium/webdriver/version.rb index a40d4e0f85dfb..3a8d951f55562 100644 --- a/rb/lib/selenium/webdriver/version.rb +++ b/rb/lib/selenium/webdriver/version.rb @@ -19,6 +19,6 @@ module Selenium module WebDriver - VERSION = '4.26.0' + VERSION = '4.27.0.nightly' end # WebDriver end # Selenium From 71753492d070eb910dafbacfb78e73c0f556e39e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Sautter?= Date: Wed, 30 Oct 2024 20:52:13 +0100 Subject: [PATCH 039/135] [grid] cancel pending request on client timeout --- .../netty/server/SeleniumHandler.java | 21 ++++++--- .../netty/server/NettyServerTest.java | 43 +++++++++++++++++++ 2 files changed, 59 insertions(+), 5 deletions(-) diff --git a/java/src/org/openqa/selenium/netty/server/SeleniumHandler.java b/java/src/org/openqa/selenium/netty/server/SeleniumHandler.java index a13ddc33ae68d..73dbd2a45aadf 100644 --- a/java/src/org/openqa/selenium/netty/server/SeleniumHandler.java +++ b/java/src/org/openqa/selenium/netty/server/SeleniumHandler.java @@ -19,8 +19,10 @@ import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; +import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; +import java.util.concurrent.Future; import org.openqa.selenium.internal.Require; import org.openqa.selenium.remote.ErrorFilter; import org.openqa.selenium.remote.http.HttpHandler; @@ -31,18 +33,27 @@ class SeleniumHandler extends SimpleChannelInboundHandler { private static final ExecutorService EXECUTOR = Executors.newCachedThreadPool(); private final HttpHandler seleniumHandler; + private Future lastOne; public SeleniumHandler(HttpHandler seleniumHandler) { super(HttpRequest.class); this.seleniumHandler = Require.nonNull("HTTP handler", seleniumHandler).with(new ErrorFilter()); + this.lastOne = CompletableFuture.completedFuture(null); } @Override protected void channelRead0(ChannelHandlerContext ctx, HttpRequest msg) { - EXECUTOR.submit( - () -> { - HttpResponse res = seleniumHandler.execute(msg); - ctx.writeAndFlush(res); - }); + lastOne = + EXECUTOR.submit( + () -> { + HttpResponse res = seleniumHandler.execute(msg); + ctx.writeAndFlush(res); + }); + } + + @Override + public void channelInactive(ChannelHandlerContext ctx) throws Exception { + lastOne.cancel(true); + super.channelInactive(ctx); } } diff --git a/java/test/org/openqa/selenium/netty/server/NettyServerTest.java b/java/test/org/openqa/selenium/netty/server/NettyServerTest.java index 04ba014a5be17..fd110c233e80e 100644 --- a/java/test/org/openqa/selenium/netty/server/NettyServerTest.java +++ b/java/test/org/openqa/selenium/netty/server/NettyServerTest.java @@ -28,14 +28,20 @@ import com.google.common.collect.ImmutableMap; import java.net.URL; +import java.time.Duration; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; +import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; +import org.openqa.selenium.TimeoutException; import org.openqa.selenium.grid.config.CompoundConfig; import org.openqa.selenium.grid.config.Config; import org.openqa.selenium.grid.config.MapConfig; import org.openqa.selenium.grid.server.BaseServerOptions; import org.openqa.selenium.grid.server.Server; import org.openqa.selenium.net.PortProber; +import org.openqa.selenium.remote.http.ClientConfig; import org.openqa.selenium.remote.http.HttpClient; import org.openqa.selenium.remote.http.HttpRequest; import org.openqa.selenium.remote.http.HttpResponse; @@ -141,6 +147,43 @@ void shouldNotBindToHost() { assertEquals("anyRandomHost", server.getUrl().getHost()); } + @Test + void doesInterruptPending() throws Exception { + CountDownLatch interrupted = new CountDownLatch(1); + Config cfg = new MapConfig(ImmutableMap.of()); + BaseServerOptions options = new BaseServerOptions(cfg); + + Server server = + new NettyServer( + options, + req -> { + try { + Thread.sleep(800); + } catch (InterruptedException ex) { + interrupted.countDown(); + } + return new HttpResponse(); + }) + .start(); + ClientConfig config = + ClientConfig.defaultConfig() + .readTimeout(Duration.ofMillis(400)) + .baseUri(server.getUrl().toURI()); + + // provoke a client timeout + Assertions.assertThrows( + TimeoutException.class, + () -> { + try (HttpClient client = HttpClient.Factory.createDefault().createClient(config)) { + HttpRequest request = new HttpRequest(DELETE, "/session"); + request.setHeader("Accept", "*/*"); + client.execute(request); + } + }); + + assertTrue(interrupted.await(1000, TimeUnit.MILLISECONDS), "The handling was interrupted"); + } + private void outputHeaders(HttpResponse res) { res.forEachHeader((name, value) -> System.out.printf("%s -> %s\n", name, value)); } From b9b384a40124bb2473cb63aed26f46a577377c60 Mon Sep 17 00:00:00 2001 From: Selenium CI Bot Date: Thu, 31 Oct 2024 00:20:04 +0000 Subject: [PATCH 040/135] Update mirror info (Thu Oct 31 00:20:04 UTC 2024) --- common/mirror/selenium | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/common/mirror/selenium b/common/mirror/selenium index ebd4182371cd1..16ba0f3f735a0 100644 --- a/common/mirror/selenium +++ b/common/mirror/selenium @@ -23,13 +23,13 @@ "tag_name": "nightly", "assets": [ { - "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/nightly/selenium-java-4.26.0-SNAPSHOT.zip" + "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/nightly/selenium-java-4.27.0-SNAPSHOT.zip" }, { - "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/nightly/selenium-server-4.26.0-SNAPSHOT.jar" + "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/nightly/selenium-server-4.27.0-SNAPSHOT.jar" }, { - "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/nightly/selenium-server-4.26.0-SNAPSHOT.zip" + "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/nightly/selenium-server-4.27.0-SNAPSHOT.zip" } ] }, From 961db5e5941b49c1ed5a8f32fb10fa08fac1ead0 Mon Sep 17 00:00:00 2001 From: Viet Nguyen Duc Date: Thu, 31 Oct 2024 12:58:50 +0000 Subject: [PATCH 041/135] [py] DeprecationWarning raised in default webdriver init (#14690) Signed-off-by: Viet Nguyen Duc --- py/selenium/webdriver/chromium/remote_connection.py | 3 +-- py/selenium/webdriver/firefox/remote_connection.py | 3 +-- py/selenium/webdriver/ie/webdriver.py | 5 +++-- py/selenium/webdriver/safari/remote_connection.py | 3 +-- py/selenium/webdriver/safari/webdriver.py | 5 +++-- 5 files changed, 9 insertions(+), 10 deletions(-) diff --git a/py/selenium/webdriver/chromium/remote_connection.py b/py/selenium/webdriver/chromium/remote_connection.py index 021c47737cd17..9874d6ed007c1 100644 --- a/py/selenium/webdriver/chromium/remote_connection.py +++ b/py/selenium/webdriver/chromium/remote_connection.py @@ -30,9 +30,8 @@ def __init__( ignore_proxy: Optional[bool] = False, client_config: Optional[ClientConfig] = None, ) -> None: + client_config = client_config or ClientConfig(remote_server_addr=remote_server_addr, keep_alive=keep_alive) super().__init__( - remote_server_addr=remote_server_addr, - keep_alive=keep_alive, ignore_proxy=ignore_proxy, client_config=client_config, ) diff --git a/py/selenium/webdriver/firefox/remote_connection.py b/py/selenium/webdriver/firefox/remote_connection.py index 502c144c41622..7aececb30607a 100644 --- a/py/selenium/webdriver/firefox/remote_connection.py +++ b/py/selenium/webdriver/firefox/remote_connection.py @@ -32,9 +32,8 @@ def __init__( ignore_proxy: Optional[bool] = False, client_config: Optional[ClientConfig] = None, ) -> None: + client_config = client_config or ClientConfig(remote_server_addr=remote_server_addr, keep_alive=keep_alive) super().__init__( - remote_server_addr=remote_server_addr, - keep_alive=keep_alive, ignore_proxy=ignore_proxy, client_config=client_config, ) diff --git a/py/selenium/webdriver/ie/webdriver.py b/py/selenium/webdriver/ie/webdriver.py index 11c137e509fe7..748ee3ea48a3e 100644 --- a/py/selenium/webdriver/ie/webdriver.py +++ b/py/selenium/webdriver/ie/webdriver.py @@ -16,6 +16,7 @@ # under the License. from selenium.webdriver.common.driver_finder import DriverFinder +from selenium.webdriver.remote.client_config import ClientConfig from selenium.webdriver.remote.remote_connection import RemoteConnection from selenium.webdriver.remote.webdriver import WebDriver as RemoteWebDriver @@ -49,10 +50,10 @@ def __init__( self.service.path = self.service.env_path() or DriverFinder(self.service, options).get_driver_path() self.service.start() + client_config = ClientConfig(remote_server_addr=self.service.service_url, keep_alive=keep_alive) executor = RemoteConnection( - remote_server_addr=self.service.service_url, - keep_alive=keep_alive, ignore_proxy=options._ignore_local_proxy, + client_config=client_config, ) try: diff --git a/py/selenium/webdriver/safari/remote_connection.py b/py/selenium/webdriver/safari/remote_connection.py index 05dbfb379b4c2..9ce9acbf623a1 100644 --- a/py/selenium/webdriver/safari/remote_connection.py +++ b/py/selenium/webdriver/safari/remote_connection.py @@ -32,9 +32,8 @@ def __init__( ignore_proxy: Optional[bool] = False, client_config: Optional[ClientConfig] = None, ) -> None: + client_config = client_config or ClientConfig(remote_server_addr=remote_server_addr, keep_alive=keep_alive) super().__init__( - remote_server_addr=remote_server_addr, - keep_alive=keep_alive, ignore_proxy=ignore_proxy, client_config=client_config, ) diff --git a/py/selenium/webdriver/safari/webdriver.py b/py/selenium/webdriver/safari/webdriver.py index 2c37a4bd7abde..737a451789244 100644 --- a/py/selenium/webdriver/safari/webdriver.py +++ b/py/selenium/webdriver/safari/webdriver.py @@ -16,6 +16,7 @@ # under the License. from selenium.common.exceptions import WebDriverException +from selenium.webdriver.remote.client_config import ClientConfig from selenium.webdriver.remote.webdriver import WebDriver as RemoteWebDriver from ..common.driver_finder import DriverFinder @@ -50,10 +51,10 @@ def __init__( if not self.service.reuse_service: self.service.start() + client_config = ClientConfig(remote_server_addr=self.service.service_url, keep_alive=keep_alive) executor = SafariRemoteConnection( - remote_server_addr=self.service.service_url, - keep_alive=keep_alive, ignore_proxy=options._ignore_local_proxy, + client_config=client_config, ) try: From e9ec0be0f666b1824eb95268fd98126ddd186217 Mon Sep 17 00:00:00 2001 From: Viet Nguyen Duc Date: Thu, 31 Oct 2024 13:22:00 +0000 Subject: [PATCH 042/135] [py] Remote connection use timeout from ClientConfig (#14692) Signed-off-by: Viet Nguyen Duc --- py/selenium/webdriver/chromium/remote_connection.py | 4 +++- py/selenium/webdriver/firefox/remote_connection.py | 4 +++- py/selenium/webdriver/ie/webdriver.py | 2 +- py/selenium/webdriver/remote/remote_connection.py | 6 +++--- py/selenium/webdriver/safari/remote_connection.py | 4 +++- py/selenium/webdriver/safari/webdriver.py | 2 +- 6 files changed, 14 insertions(+), 8 deletions(-) diff --git a/py/selenium/webdriver/chromium/remote_connection.py b/py/selenium/webdriver/chromium/remote_connection.py index 9874d6ed007c1..ea532cba8ddcd 100644 --- a/py/selenium/webdriver/chromium/remote_connection.py +++ b/py/selenium/webdriver/chromium/remote_connection.py @@ -30,7 +30,9 @@ def __init__( ignore_proxy: Optional[bool] = False, client_config: Optional[ClientConfig] = None, ) -> None: - client_config = client_config or ClientConfig(remote_server_addr=remote_server_addr, keep_alive=keep_alive) + client_config = client_config or ClientConfig( + remote_server_addr=remote_server_addr, keep_alive=keep_alive, timeout=120 + ) super().__init__( ignore_proxy=ignore_proxy, client_config=client_config, diff --git a/py/selenium/webdriver/firefox/remote_connection.py b/py/selenium/webdriver/firefox/remote_connection.py index 7aececb30607a..a749cce37dc62 100644 --- a/py/selenium/webdriver/firefox/remote_connection.py +++ b/py/selenium/webdriver/firefox/remote_connection.py @@ -32,7 +32,9 @@ def __init__( ignore_proxy: Optional[bool] = False, client_config: Optional[ClientConfig] = None, ) -> None: - client_config = client_config or ClientConfig(remote_server_addr=remote_server_addr, keep_alive=keep_alive) + client_config = client_config or ClientConfig( + remote_server_addr=remote_server_addr, keep_alive=keep_alive, timeout=120 + ) super().__init__( ignore_proxy=ignore_proxy, client_config=client_config, diff --git a/py/selenium/webdriver/ie/webdriver.py b/py/selenium/webdriver/ie/webdriver.py index 748ee3ea48a3e..4df2c989a5813 100644 --- a/py/selenium/webdriver/ie/webdriver.py +++ b/py/selenium/webdriver/ie/webdriver.py @@ -50,7 +50,7 @@ def __init__( self.service.path = self.service.env_path() or DriverFinder(self.service, options).get_driver_path() self.service.start() - client_config = ClientConfig(remote_server_addr=self.service.service_url, keep_alive=keep_alive) + client_config = ClientConfig(remote_server_addr=self.service.service_url, keep_alive=keep_alive, timeout=120) executor = RemoteConnection( ignore_proxy=options._ignore_local_proxy, client_config=client_config, diff --git a/py/selenium/webdriver/remote/remote_connection.py b/py/selenium/webdriver/remote/remote_connection.py index 57f38b5806574..72bd37d76a46c 100644 --- a/py/selenium/webdriver/remote/remote_connection.py +++ b/py/selenium/webdriver/remote/remote_connection.py @@ -375,7 +375,7 @@ def execute(self, command, params): LOGGER.debug("%s %s %s", command_info[0], url, str(trimmed)) return self._request(command_info[0], url, body=data) - def _request(self, method, url, body=None, timeout=120): + def _request(self, method, url, body=None): """Send an HTTP request to the remote server. :Args: @@ -397,12 +397,12 @@ def _request(self, method, url, body=None, timeout=120): body = None if self._client_config.keep_alive: - response = self._conn.request(method, url, body=body, headers=headers, timeout=timeout) + response = self._conn.request(method, url, body=body, headers=headers, timeout=self._client_config.timeout) statuscode = response.status else: conn = self._get_connection_manager() with conn as http: - response = http.request(method, url, body=body, headers=headers, timeout=timeout) + response = http.request(method, url, body=body, headers=headers, timeout=self._client_config.timeout) statuscode = response.status data = response.data.decode("UTF-8") LOGGER.debug("Remote response: status=%s | data=%s | headers=%s", response.status, data, response.headers) diff --git a/py/selenium/webdriver/safari/remote_connection.py b/py/selenium/webdriver/safari/remote_connection.py index 9ce9acbf623a1..cd8762da4ce92 100644 --- a/py/selenium/webdriver/safari/remote_connection.py +++ b/py/selenium/webdriver/safari/remote_connection.py @@ -32,7 +32,9 @@ def __init__( ignore_proxy: Optional[bool] = False, client_config: Optional[ClientConfig] = None, ) -> None: - client_config = client_config or ClientConfig(remote_server_addr=remote_server_addr, keep_alive=keep_alive) + client_config = client_config or ClientConfig( + remote_server_addr=remote_server_addr, keep_alive=keep_alive, timeout=120 + ) super().__init__( ignore_proxy=ignore_proxy, client_config=client_config, diff --git a/py/selenium/webdriver/safari/webdriver.py b/py/selenium/webdriver/safari/webdriver.py index 737a451789244..1480f5dfdd7bb 100644 --- a/py/selenium/webdriver/safari/webdriver.py +++ b/py/selenium/webdriver/safari/webdriver.py @@ -51,7 +51,7 @@ def __init__( if not self.service.reuse_service: self.service.start() - client_config = ClientConfig(remote_server_addr=self.service.service_url, keep_alive=keep_alive) + client_config = ClientConfig(remote_server_addr=self.service.service_url, keep_alive=keep_alive, timeout=120) executor = SafariRemoteConnection( ignore_proxy=options._ignore_local_proxy, client_config=client_config, From 2e479133b9ca45e1d6744a657598c3b3a0a70f52 Mon Sep 17 00:00:00 2001 From: Puja Jagani Date: Thu, 31 Oct 2024 19:23:15 +0530 Subject: [PATCH 043/135] [bidi][java] Fix the mode "closed" for a node --- java/src/org/openqa/selenium/bidi/script/NodeProperties.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/src/org/openqa/selenium/bidi/script/NodeProperties.java b/java/src/org/openqa/selenium/bidi/script/NodeProperties.java index b35c6b64299e9..a7243b21a526a 100644 --- a/java/src/org/openqa/selenium/bidi/script/NodeProperties.java +++ b/java/src/org/openqa/selenium/bidi/script/NodeProperties.java @@ -25,7 +25,7 @@ public class NodeProperties { private enum Mode { OPEN("open"), - CLOSE("close"); + CLOSED("closed"); private final String value; From bdfbb70f555b6492d9ba873865fbd2fa30cba90c Mon Sep 17 00:00:00 2001 From: Puja Jagani Date: Thu, 31 Oct 2024 19:23:39 +0530 Subject: [PATCH 044/135] [bidi][java] Enable tests for locating nodes from start nodes for Chrome and Edge --- .../openqa/selenium/bidi/browsingcontext/LocateNodesTest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/java/test/org/openqa/selenium/bidi/browsingcontext/LocateNodesTest.java b/java/test/org/openqa/selenium/bidi/browsingcontext/LocateNodesTest.java index 9b153e92954c8..c1f967ebc36ba 100644 --- a/java/test/org/openqa/selenium/bidi/browsingcontext/LocateNodesTest.java +++ b/java/test/org/openqa/selenium/bidi/browsingcontext/LocateNodesTest.java @@ -162,8 +162,6 @@ void canLocateNodesWithMaxNodeCount() { } @Test - @NotYetImplemented(CHROME) - @NotYetImplemented(EDGE) void canLocateNodesGivenStartNodes() { String handle = driver.getWindowHandle(); BrowsingContext browsingContext = new BrowsingContext(driver, handle); From 3a3c46b3c144b0a350dea3598481edd2761f11c5 Mon Sep 17 00:00:00 2001 From: Viet Nguyen Duc Date: Thu, 31 Oct 2024 15:45:18 +0000 Subject: [PATCH 045/135] [py] Add backward compatibility for AppiumConnection (#14696) Signed-off-by: Viet Nguyen Duc --- py/selenium/webdriver/remote/remote_connection.py | 15 +++++++++++++++ .../webdriver/remote/remote_connection_tests.py | 13 +++++++++++++ 2 files changed, 28 insertions(+) diff --git a/py/selenium/webdriver/remote/remote_connection.py b/py/selenium/webdriver/remote/remote_connection.py index 72bd37d76a46c..04786c39c2673 100644 --- a/py/selenium/webdriver/remote/remote_connection.py +++ b/py/selenium/webdriver/remote/remote_connection.py @@ -136,6 +136,18 @@ class RemoteConnection: """ browser_name = None + # Keep backward compatibility for AppiumConnection - https://github.com/SeleniumHQ/selenium/issues/14694 + import os + import socket + + import certifi + + _timeout = ( + float(os.getenv("GLOBAL_DEFAULT_TIMEOUT", str(socket.getdefaulttimeout()))) + if os.getenv("GLOBAL_DEFAULT_TIMEOUT") is not None + else socket.getdefaulttimeout() + ) + _ca_certs = os.getenv("REQUESTS_CA_BUNDLE") if "REQUESTS_CA_BUNDLE" in os.environ else certifi.where() _client_config: ClientConfig = None system = platform.system().lower() @@ -296,6 +308,9 @@ def __init__( init_args_for_pool_manager=init_args_for_pool_manager, ) + # Keep backward compatibility for AppiumConnection - https://github.com/SeleniumHQ/selenium/issues/14694 + RemoteConnection._timeout = self._client_config.timeout + RemoteConnection._ca_certs = self._client_config.ca_certs RemoteConnection._client_config = self._client_config if remote_server_addr: diff --git a/py/test/unit/selenium/webdriver/remote/remote_connection_tests.py b/py/test/unit/selenium/webdriver/remote/remote_connection_tests.py index e3d8e29f38e69..ea6281607b4be 100644 --- a/py/test/unit/selenium/webdriver/remote/remote_connection_tests.py +++ b/py/test/unit/selenium/webdriver/remote/remote_connection_tests.py @@ -307,6 +307,19 @@ def test_register_extra_headers(mock_request, remote_connection): assert headers["Foo"] == "bar" +def test_backwards_compatibility_with_appium_connection(): + # Keep backward compatibility for AppiumConnection - https://github.com/SeleniumHQ/selenium/issues/14694 + client_config = ClientConfig(remote_server_addr="http://remote", ca_certs="/path/to/cacert.pem", timeout=300) + remote_connection = RemoteConnection(client_config=client_config) + assert remote_connection._ca_certs == "/path/to/cacert.pem" + assert remote_connection._timeout == 300 + assert remote_connection._client_config == client_config + remote_connection.set_timeout(120) + assert remote_connection.get_timeout() == 120 + remote_connection.set_certificate_bundle_path("/path/to/cacert2.pem") + assert remote_connection.get_certificate_bundle_path() == "/path/to/cacert2.pem" + + def test_get_connection_manager_with_timeout_from_client_config(): remote_connection = RemoteConnection(remote_server_addr="http://remote", keep_alive=False) remote_connection.set_timeout(10) From 9c9d99a0d4833eef1f52938018e4de9c115e5642 Mon Sep 17 00:00:00 2001 From: Nikolay Borisenko <22616990+nvborisenko@users.noreply.github.com> Date: Thu, 31 Oct 2024 19:59:44 +0300 Subject: [PATCH 046/135] [dotnet] [bidi] Reveal browsing context module in bidi instance (#14684) --- dotnet/src/webdriver/BiDi/BiDi.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet/src/webdriver/BiDi/BiDi.cs b/dotnet/src/webdriver/BiDi/BiDi.cs index 34a9452dec144..0e0ed10c37036 100644 --- a/dotnet/src/webdriver/BiDi/BiDi.cs +++ b/dotnet/src/webdriver/BiDi/BiDi.cs @@ -39,7 +39,7 @@ internal BiDi(string url) } internal Modules.Session.SessionModule SessionModule => _sessionModule.Value; - internal Modules.BrowsingContext.BrowsingContextModule BrowsingContext => _browsingContextModule.Value; + public Modules.BrowsingContext.BrowsingContextModule BrowsingContext => _browsingContextModule.Value; public Modules.Browser.BrowserModule Browser => _browserModule.Value; public Modules.Network.NetworkModule Network => _networkModule.Value; internal Modules.Input.InputModule InputModule => _inputModule.Value; From 8aee746e762722087e95a580a0ddc06e12ceb841 Mon Sep 17 00:00:00 2001 From: Nikolay Borisenko <22616990+nvborisenko@users.noreply.github.com> Date: Thu, 31 Oct 2024 20:16:42 +0300 Subject: [PATCH 047/135] [dotnet] Fix adding cookies when ReturnedCookie class is used (#14697) --- dotnet/src/webdriver/Command.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet/src/webdriver/Command.cs b/dotnet/src/webdriver/Command.cs index 409c393860d6c..e6d7c422cbc1e 100644 --- a/dotnet/src/webdriver/Command.cs +++ b/dotnet/src/webdriver/Command.cs @@ -159,6 +159,7 @@ private static Dictionary ConvertParametersFromJson(string value [JsonSerializable(typeof(byte[]))] [JsonSerializable(typeof(Dictionary))] [JsonSerializable(typeof(Cookie))] + [JsonSerializable(typeof(ReturnedCookie))] [JsonSerializable(typeof(Proxy))] internal partial class CommandJsonSerializerContext : JsonSerializerContext { From 78b6ea416fc774da5ab0c837a11ed9cd03f0c09f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Sautter?= Date: Thu, 31 Oct 2024 18:26:03 +0100 Subject: [PATCH 048/135] [java] allow to cancel a pending http request --- .../remote/http/jdk/JdkHttpClient.java | 23 ++--- .../remote/internal/HttpClientTestBase.java | 86 ++++++++++++++++--- 2 files changed, 85 insertions(+), 24 deletions(-) diff --git a/java/src/org/openqa/selenium/remote/http/jdk/JdkHttpClient.java b/java/src/org/openqa/selenium/remote/http/jdk/JdkHttpClient.java index 0fee3531ce6c0..d0b9f76d41e57 100644 --- a/java/src/org/openqa/selenium/remote/http/jdk/JdkHttpClient.java +++ b/java/src/org/openqa/selenium/remote/http/jdk/JdkHttpClient.java @@ -388,17 +388,16 @@ public CompletableFuture executeAsync(HttpRequest request) { } }); - // try to interrupt the http request in case of a timeout, to avoid - // https://bugs.openjdk.org/browse/JDK-8258397 - cf.exceptionally( - (throwable) -> { - if (throwable instanceof java.util.concurrent.TimeoutException) { - // interrupts the thread + cf.whenComplete( + (result, throwable) -> { + if (throwable instanceof java.util.concurrent.CancellationException) { + // try to interrupt the http request in case someone canceled the future returned + future.cancel(true); + } else if (throwable instanceof java.util.concurrent.TimeoutException) { + // try to interrupt the http request in case of a timeout, to avoid + // https://bugs.openjdk.org/browse/JDK-8258397 future.cancel(true); } - - // nobody will read this result - return null; }); // will complete exceptionally with a java.util.concurrent.TimeoutException @@ -407,13 +406,15 @@ public CompletableFuture executeAsync(HttpRequest request) { @Override public HttpResponse execute(HttpRequest req) throws UncheckedIOException { + Future async = executeAsync(req); try { // executeAsync does define a timeout, no need to use a timeout here - return executeAsync(req).get(); + return async.get(); } catch (CancellationException e) { throw new WebDriverException(e.getMessage(), e); } catch (InterruptedException e) { Thread.currentThread().interrupt(); + async.cancel(true); throw new WebDriverException(e.getMessage(), e); } catch (ExecutionException e) { Throwable cause = e.getCause(); @@ -495,7 +496,7 @@ private HttpResponse execute0(HttpRequest req) throws UncheckedIOException { throw new UncheckedIOException(e); } catch (InterruptedException e) { Thread.currentThread().interrupt(); - throw new RuntimeException(e); + throw new WebDriverException(e.getMessage(), e); } finally { LOG.log( Level.FINE, diff --git a/java/test/org/openqa/selenium/remote/internal/HttpClientTestBase.java b/java/test/org/openqa/selenium/remote/internal/HttpClientTestBase.java index 3379772a8db1e..37ac78f1124a2 100644 --- a/java/test/org/openqa/selenium/remote/internal/HttpClientTestBase.java +++ b/java/test/org/openqa/selenium/remote/internal/HttpClientTestBase.java @@ -35,7 +35,9 @@ import java.util.List; import java.util.Map; import java.util.TreeMap; -import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; import java.util.logging.Logger; import java.util.stream.StreamSupport; import org.junit.jupiter.api.AfterAll; @@ -44,6 +46,7 @@ import org.openqa.selenium.BuildInfo; import org.openqa.selenium.Platform; import org.openqa.selenium.TimeoutException; +import org.openqa.selenium.WebDriverException; import org.openqa.selenium.environment.webserver.AppServer; import org.openqa.selenium.environment.webserver.NettyAppServer; import org.openqa.selenium.json.Json; @@ -234,32 +237,89 @@ public void shouldAllowConfigurationFromSystemProperties() { } } - @Test - public void shouldStopRequestAfterTimeout() throws InterruptedException { - AtomicInteger counter = new AtomicInteger(); + private ClientConfig prepareShouldStopTest( + CountDownLatch executing, CountDownLatch interrupted, int timeout) { + CountDownLatch unlock = new CountDownLatch(1); delegate = req -> { - counter.incrementAndGet(); try { - Thread.sleep(1600); + unlock.await(20, TimeUnit.SECONDS); } catch (InterruptedException ex) { Thread.currentThread().interrupt(); + throw new RuntimeException(ex); } - HttpResponse response = new HttpResponse(); - response.setStatus(302); - response.addHeader("Location", "/"); - return response; + + return new HttpResponse(); }; - ClientConfig clientConfig = ClientConfig.defaultConfig().readTimeout(Duration.ofMillis(800)); + + return ClientConfig.defaultConfig() + .withFilter( + (handler) -> + (request) -> { + try { + executing.countDown(); + return handler.execute(request); + } catch (WebDriverException ex) { + if (ex.getCause() instanceof InterruptedException) { + interrupted.countDown(); + } + + throw ex; + } finally { + unlock.countDown(); + } + }) + .readTimeout(Duration.ofMillis(timeout)); + } + + @Test + public void shouldStopRequestAfterTimeout() throws InterruptedException { + CountDownLatch executing = new CountDownLatch(1); + CountDownLatch interrupted = new CountDownLatch(1); + ClientConfig clientConfig = prepareShouldStopTest(executing, interrupted, 400); try (HttpClient client = createFactory().createClient(clientConfig.baseUri(URI.create(server.whereIs("/"))))) { HttpRequest request = new HttpRequest(GET, "/delayed"); + assertThatExceptionOfType(TimeoutException.class).isThrownBy(() -> client.execute(request)); - Thread.sleep(4200); + assertThat(interrupted.await(800, TimeUnit.MILLISECONDS)).isTrue(); + } + } + + @Test + public void shouldStopAsyncRequestAfterTimeout() throws InterruptedException { + CountDownLatch executing = new CountDownLatch(1); + CountDownLatch interrupted = new CountDownLatch(1); + ClientConfig clientConfig = prepareShouldStopTest(executing, interrupted, 400); + + try (HttpClient client = + createFactory().createClient(clientConfig.baseUri(URI.create(server.whereIs("/"))))) { + HttpRequest request = new HttpRequest(GET, "/delayed"); + // does intentionally not read the future + client.executeAsync(request); + assertThat(interrupted.await(800, TimeUnit.MILLISECONDS)).isTrue(); + } + } + + @Test + public void shouldStopRequestOnCancel() throws InterruptedException { + CountDownLatch executing = new CountDownLatch(1); + CountDownLatch interrupted = new CountDownLatch(1); + CountDownLatch unlock = new CountDownLatch(1); + ClientConfig clientConfig = prepareShouldStopTest(executing, interrupted, 4000); + + try (HttpClient client = + createFactory().createClient(clientConfig.baseUri(URI.create(server.whereIs("/"))))) { + HttpRequest request = new HttpRequest(GET, "/delayed"); + + Future future = client.executeAsync(request); - assertThat(counter.get()).isEqualTo(1); + assertThat(executing.await(800, TimeUnit.MILLISECONDS)).isTrue(); + assertThat(future.cancel(true)).isTrue(); + assertThat(interrupted.await(800, TimeUnit.MILLISECONDS)).isTrue(); + unlock.countDown(); } } From 70119edf892ed3346d95d1d1a99ab11a8acc800a Mon Sep 17 00:00:00 2001 From: Diego Molina Date: Thu, 31 Oct 2024 18:57:52 +0100 Subject: [PATCH 049/135] [dotnet] Bumping version for patch release --- dotnet/CHANGELOG | 5 +++++ dotnet/selenium-dotnet-version.bzl | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/dotnet/CHANGELOG b/dotnet/CHANGELOG index 70c0383aba8d9..ba87fcdaa96da 100644 --- a/dotnet/CHANGELOG +++ b/dotnet/CHANGELOG @@ -1,3 +1,8 @@ +v4.26.1 +====== +* [bidi] Reveal browsing context module in bidi instance (#14684) +* Fix adding cookies when ReturnedCookie class is used (#14697) + v4.26.0 ====== * [bidi] Fix web socket communication for .net framework diff --git a/dotnet/selenium-dotnet-version.bzl b/dotnet/selenium-dotnet-version.bzl index 08358ab30e988..95058bc0ec85e 100644 --- a/dotnet/selenium-dotnet-version.bzl +++ b/dotnet/selenium-dotnet-version.bzl @@ -1,6 +1,6 @@ # BUILD FILE SYNTAX: STARLARK -SE_VERSION = "4.27.0-nightly202410301443" +SE_VERSION = "4.26.1" ASSEMBLY_VERSION = "4.0.0.0" SUPPORTED_NET_STANDARD_VERSIONS = ["netstandard2.0"] From 965f6b1787e7dfd22a5050cd4f5b62e02c1689b3 Mon Sep 17 00:00:00 2001 From: Diego Molina Date: Thu, 31 Oct 2024 19:07:22 +0100 Subject: [PATCH 050/135] [dotnet] Bumping version for nightly --- dotnet/selenium-dotnet-version.bzl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dotnet/selenium-dotnet-version.bzl b/dotnet/selenium-dotnet-version.bzl index 95058bc0ec85e..eb9c52953feee 100644 --- a/dotnet/selenium-dotnet-version.bzl +++ b/dotnet/selenium-dotnet-version.bzl @@ -1,6 +1,6 @@ # BUILD FILE SYNTAX: STARLARK -SE_VERSION = "4.26.1" +SE_VERSION = "4.27.0-nightly202410311906" ASSEMBLY_VERSION = "4.0.0.0" SUPPORTED_NET_STANDARD_VERSIONS = ["netstandard2.0"] From 0ffecd401001f966bcae63b24a2458f646d435be Mon Sep 17 00:00:00 2001 From: Diego Molina Date: Thu, 31 Oct 2024 19:39:21 +0100 Subject: [PATCH 051/135] [py] Bumping version for patch release --- py/BUILD.bazel | 2 +- py/CHANGES | 5 +++++ py/docs/source/conf.py | 4 ++-- py/selenium/__init__.py | 2 +- py/selenium/webdriver/__init__.py | 2 +- py/setup.py | 2 +- 6 files changed, 11 insertions(+), 6 deletions(-) diff --git a/py/BUILD.bazel b/py/BUILD.bazel index 89abaa9c19f44..621d8d5bffd15 100644 --- a/py/BUILD.bazel +++ b/py/BUILD.bazel @@ -62,7 +62,7 @@ compile_pip_requirements( ], ) -SE_VERSION = "4.27.0.dev202410301443" +SE_VERSION = "4.26.1" BROWSER_VERSIONS = [ "v85", diff --git a/py/CHANGES b/py/CHANGES index 3d1ab8eaa0efb..b7dabbf9d6b9b 100644 --- a/py/CHANGES +++ b/py/CHANGES @@ -1,3 +1,8 @@ +Selenium 4.26.1 +* DeprecationWarning raised in default webdriver init (#14690) +* Remote connection use timeout from ClientConfig (#14692) +* Add backward compatibility for AppiumConnection (#14696) + Selenium 4.26.0 * Add CDP for Chrome 130 and remove 127 * Added more internal logging for CDP (#14668) diff --git a/py/docs/source/conf.py b/py/docs/source/conf.py index 131442f1b5f3c..1975da4428e7f 100644 --- a/py/docs/source/conf.py +++ b/py/docs/source/conf.py @@ -56,9 +56,9 @@ # built documents. # # The short X.Y version. -version = '4.27' +version = '4.26' # The full version, including alpha/beta/rc tags. -release = '4.27.0.dev202410301443' +release = '4.26.1' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/py/selenium/__init__.py b/py/selenium/__init__.py index 860e3b4fb86d4..5b008544cfc9c 100644 --- a/py/selenium/__init__.py +++ b/py/selenium/__init__.py @@ -16,4 +16,4 @@ # under the License. -__version__ = "4.27.0.dev202410301443" +__version__ = "4.26.1" diff --git a/py/selenium/webdriver/__init__.py b/py/selenium/webdriver/__init__.py index c45de6a75acaf..22cfc3ba7a28c 100644 --- a/py/selenium/webdriver/__init__.py +++ b/py/selenium/webdriver/__init__.py @@ -44,7 +44,7 @@ from .wpewebkit.service import Service as WPEWebKitService # noqa from .wpewebkit.webdriver import WebDriver as WPEWebKit # noqa -__version__ = "4.27.0.dev202410301443" +__version__ = "4.26.1" # We need an explicit __all__ because the above won't otherwise be exported. __all__ = [ diff --git a/py/setup.py b/py/setup.py index d25b031cddfc4..dd4449939f2c0 100755 --- a/py/setup.py +++ b/py/setup.py @@ -28,7 +28,7 @@ setup_args = { 'cmdclass': {'install': install}, 'name': 'selenium', - 'version': "4.27.0.dev202410301443", + 'version': "4.26.1", 'license': 'Apache 2.0', 'description': 'Official Python bindings for Selenium WebDriver.', 'long_description': open(join(abspath(dirname(__file__)), "README.rst")).read(), From efd1ce1561556997c7a3143b4bf0d7864501f327 Mon Sep 17 00:00:00 2001 From: Diego Molina Date: Thu, 31 Oct 2024 19:42:30 +0100 Subject: [PATCH 052/135] [py] Bumping version for nightly --- py/BUILD.bazel | 2 +- py/docs/source/conf.py | 4 ++-- py/selenium/__init__.py | 2 +- py/selenium/webdriver/__init__.py | 2 +- py/setup.py | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/py/BUILD.bazel b/py/BUILD.bazel index 621d8d5bffd15..ac44993213066 100644 --- a/py/BUILD.bazel +++ b/py/BUILD.bazel @@ -62,7 +62,7 @@ compile_pip_requirements( ], ) -SE_VERSION = "4.26.1" +SE_VERSION = "4.27.0.dev202410311942" BROWSER_VERSIONS = [ "v85", diff --git a/py/docs/source/conf.py b/py/docs/source/conf.py index 1975da4428e7f..1d5148a0508fa 100644 --- a/py/docs/source/conf.py +++ b/py/docs/source/conf.py @@ -56,9 +56,9 @@ # built documents. # # The short X.Y version. -version = '4.26' +version = '4.27' # The full version, including alpha/beta/rc tags. -release = '4.26.1' +release = '4.27.0.dev202410311942' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/py/selenium/__init__.py b/py/selenium/__init__.py index 5b008544cfc9c..e7ab5cc0b075e 100644 --- a/py/selenium/__init__.py +++ b/py/selenium/__init__.py @@ -16,4 +16,4 @@ # under the License. -__version__ = "4.26.1" +__version__ = "4.27.0.dev202410311942" diff --git a/py/selenium/webdriver/__init__.py b/py/selenium/webdriver/__init__.py index 22cfc3ba7a28c..b64471644e380 100644 --- a/py/selenium/webdriver/__init__.py +++ b/py/selenium/webdriver/__init__.py @@ -44,7 +44,7 @@ from .wpewebkit.service import Service as WPEWebKitService # noqa from .wpewebkit.webdriver import WebDriver as WPEWebKit # noqa -__version__ = "4.26.1" +__version__ = "4.27.0.dev202410311942" # We need an explicit __all__ because the above won't otherwise be exported. __all__ = [ diff --git a/py/setup.py b/py/setup.py index dd4449939f2c0..cd6b84b8e2c14 100755 --- a/py/setup.py +++ b/py/setup.py @@ -28,7 +28,7 @@ setup_args = { 'cmdclass': {'install': install}, 'name': 'selenium', - 'version': "4.26.1", + 'version': "4.27.0.dev202410311942", 'license': 'Apache 2.0', 'description': 'Official Python bindings for Selenium WebDriver.', 'long_description': open(join(abspath(dirname(__file__)), "README.rst")).read(), From 33c716986e5ad61164c002e1a5613755892cfa70 Mon Sep 17 00:00:00 2001 From: Alex Rodionov Date: Thu, 31 Oct 2024 12:27:50 -0700 Subject: [PATCH 053/135] [rb] Update minimum Ruby to 3.1 (#14685) 3.0 is EOL in Apr 2024 --- .github/workflows/ci-rbe.yml | 4 +- .github/workflows/ci-ruby.yml | 12 ++--- MODULE.bazel | 46 +++++++++---------- rb/.rubocop.yml | 2 +- rb/.ruby-version | 2 +- rb/README.md | 2 +- rb/lib/selenium/server.rb | 6 +-- rb/lib/selenium/webdriver/bidi.rb | 4 +- .../selenium/webdriver/bidi/log_inspector.rb | 8 ++-- .../has_network_interception.rb | 4 +- rb/lib/selenium/webdriver/common/logger.rb | 2 +- rb/lib/selenium/webdriver/common/script.rb | 8 ++-- rb/lib/selenium/webdriver/remote/bridge.rb | 4 +- rb/lib/selenium/webdriver/support/guards.rb | 4 +- rb/selenium-devtools.gemspec | 2 +- rb/selenium-webdriver.gemspec | 2 +- 16 files changed, 56 insertions(+), 56 deletions(-) diff --git a/.github/workflows/ci-rbe.yml b/.github/workflows/ci-rbe.yml index 382aea6409f2a..2e15949925580 100644 --- a/.github/workflows/ci-rbe.yml +++ b/.github/workflows/ci-rbe.yml @@ -15,7 +15,7 @@ jobs: with: name: Check format script run caching: false - ruby-version: jruby-9.4.5.0 + ruby-version: jruby-9.4.8.0 run: ./scripts/github-actions/check-format.sh test: @@ -25,5 +25,5 @@ jobs: with: name: All RBE tests caching: false - ruby-version: jruby-9.4.5.0 + ruby-version: jruby-9.4.8.0 run: ./scripts/github-actions/ci-build.sh diff --git a/.github/workflows/ci-ruby.yml b/.github/workflows/ci-ruby.yml index 419e17df5065c..88cf3512ebfba 100644 --- a/.github/workflows/ci-ruby.yml +++ b/.github/workflows/ci-ruby.yml @@ -39,17 +39,17 @@ jobs: fail-fast: false matrix: include: - - ruby-version: 3.0.6 + - ruby-version: 3.1.6 os: ubuntu - - ruby-version: 3.0.6 + - ruby-version: 3.1.6 os: windows - - ruby-version: 3.0.6 + - ruby-version: 3.1.6 os: macos - - ruby-version: 3.3.0 + - ruby-version: 3.3.5 os: ubuntu - - ruby-version: jruby-9.4.5.0 + - ruby-version: jruby-9.4.8.0 os: ubuntu - - ruby-version: truffleruby-23.1.1 + - ruby-version: truffleruby-24.1.1 os: ubuntu with: name: Unit Tests (${{ matrix.ruby-version }}, ${{ matrix.os }}) diff --git a/MODULE.bazel b/MODULE.bazel index a1b464caee2c5..b52df075394b5 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -25,7 +25,7 @@ bazel_dep(name = "rules_oci", version = "1.7.6") bazel_dep(name = "rules_pkg", version = "0.10.1") bazel_dep(name = "rules_python", version = "0.33.0") bazel_dep(name = "rules_proto", version = "6.0.0") -bazel_dep(name = "rules_ruby", version = "0.11.0") +bazel_dep(name = "rules_ruby", version = "0.13.0") linter = use_extension("@apple_rules_lint//lint:extensions.bzl", "linter") linter.configure( @@ -257,7 +257,7 @@ ruby.bundle_fetch( "//:rb/selenium-webdriver.gemspec", ], gem_checksums = { - "activesupport-7.2.1": "7557fa077a592a4f36f7ddacf4d9d71c34aff69ed20236b8a61c22d567da8c24", + "activesupport-7.2.1.2": "6c3f6ad50c4e52ce39d67aeda38f99e1372eca8b295987d072c19460ebce4cb1", "addressable-2.8.7": "462986537cf3735ab5f3c0f557f14155d778f4b43ea4f485a9deb9c8f7c58232", "ast-2.4.2": "1e280232e6a33754cde542bc5ef85520b74db2aac73ec14acef453784447cc12", "base64-0.2.0": "0f25e9b21a02a0cc0cea8ef92b2041035d39350946e8789c562b2d1a3da01507", @@ -267,7 +267,7 @@ ruby.bundle_fetch( "connection_pool-2.4.1": "0f40cf997091f1f04ff66da67eabd61a9fe0d4928b9a3645228532512fab62f4", "crack-1.0.0": "c83aefdb428cdc7b66c7f287e488c796f055c0839e6e545fec2c7047743c4a49", "csv-3.3.0": "0bbd1defdc31134abefed027a639b3723c2753862150f4c3ee61cab71b20d67d", - "curb-1.0.5": "2c4755dfb5d6190e9ebb4407b23ac5a5c2c226be1449e6d3bdf625656352efd1", + "curb-1.0.6": "b369434efa91dc7310d72a74f8a228a5b920e3d5a89b0a3097e4c6a905af6eb2", "debug-1.9.2": "48e026c0852c7a10c60263e2e527968308958e266231e36d64e3efcabec7e7fc", "diff-lcs-1.5.1": "273223dfb40685548436d32b4733aa67351769c7dea621da7d9dd4813e63ddfe", "drb-2.2.1": "e9d472bf785f558b96b25358bae115646da0dbfd45107ad858b0bc0d935cb340", @@ -277,45 +277,45 @@ ruby.bundle_fetch( "fileutils-1.7.2": "36a0fb324218263e52b486ad7408e9a295378fe8edc9fd343709e523c0980631", "git-1.19.1": "b0a422d9f6517353c48a330d6114de4db9e0c82dbe7202964a1d9f1fbc827d70", "hashdiff-1.1.1": "c7966316726e0ceefe9f5c6aef107ebc3ccfef8b6db55fe3934f046b2cf0936a", - "i18n-1.14.5": "26dcbc05e364b57e27ab430148b3377bc413987d34cc042336271d8f42e9d1b9", + "i18n-1.14.6": "dc229a74f5d181f09942dd60ab5d6e667f7392c4ee826f35096db36d1fe3614c", "io-console-0.7.2": "f0dccff252f877a4f60d04a4dc6b442b185ebffb4b320ab69212a92b48a7a221", "io-console-0.7.2-java": "73aa382f8832b116613ceaf57b8ff5bf73dfedcaf39f0aa5420e10f63a4543ed", - "irb-1.14.0": "53d805013bbd194874b8c13a56aca6aebcd11dd79166d88724f8a434fedde615", + "irb-1.14.1": "5975003b58d36efaf492380baa982ceedf5aed36967a4d5b40996bc5c66e80f8", "jar-dependencies-0.4.1": "b2df2f1ecbff15334ce20ea7fdd5b8d8161faab67761ff72c7647d728e40d387", - "json-2.7.2": "1898b5cbc81cd36c0fd4d0b7ad2682c39fb07c5ff682fc6265f678f550d4982c", - "json-2.7.2-java": "138e3038b5361b3d06ee2e8aa2be00bed0d0de4ef5f1553fc5935e5b93aca7ee", + "json-2.7.4": "9ea6258b4add3abd25df965515be8b19be417f58b8c42619c7f2d3e86c158ece", + "json-2.7.4-java": "5d5d1593d8727a66f2e4161710dde06ba7043c9b3fa9eea0889fdc0450a107cd", "language_server-protocol-3.17.0.3": "3d5c58c02f44a20d972957a9febe386d7e7468ab3900ce6bd2b563dd910c6b3f", "listen-3.9.0": "db9e4424e0e5834480385197c139cb6b0ae0ef28cc13310cfd1ca78377d59c67", - "logger-1.6.0": "0ab7c120262dd8de2a18cb8d377f1f318cbe98535160a508af9e7710ff43ef3e", + "logger-1.6.1": "3ad9587ed3940bf7897ea64a673971415523f4f7d6b22c5e3af5219705669653", "minitest-5.25.1": "3db6795a80634def1cf86fda79d2d83b59b25ce5e186fa675f73c565589d2ad8", "parallel-1.26.3": "d86babb7a2b814be9f4b81587bf0b6ce2da7d45969fab24d8ae4bf2bb4d4c7ef", - "parser-3.3.4.2": "71efa8690c2a1ff8937258ff5713add4894dcea8b4ba19055692e28a2469c9e6", + "parser-3.3.5.0": "f30ebb71b7830c2e7cdc4b2b0e0ec2234900e3fca3fe2fba47f78be759181ab3", "psych-5.1.2": "337322f58fc2bf24827d2b9bd5ab595f6a72971867d151bb39980060ea40a368", "psych-5.1.2-java": "1dd68dc609eddbc884e6892e11da942e16f7256bd30ebde9d35449d43043a6fe", "public_suffix-6.0.1": "61d44e1cab5cbbbe5b31068481cf16976dd0dc1b6b07bd95617ef8c5e3e00c6f", "racc-1.8.1": "4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f", "racc-1.8.1-java": "54f2e6d1e1b91c154013277d986f52a90e5ececbe91465d29172e49342732b98", - "rack-2.2.9": "fd6301a97a1c1e955e68f85c861fcb1cde6145a32c532e1ea321a72ff8cc4042", + "rack-2.2.10": "e4a5ee3f8f2ba45614a4498114d6dc7da1c51a0f0dd810d891906ea71d3aa72b", "rainbow-3.1.1": "039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a", "rake-13.2.1": "46cb38dae65d7d74b6020a4ac9d48afed8eb8149c040eccf0523bec91907059d", "rb-fsevent-0.11.2": "43900b972e7301d6570f64b850a5aa67833ee7d87b458ee92805d56b7318aefe", "rb-inotify-0.11.1": "a0a700441239b0ff18eb65e3866236cd78613d6b9f78fea1f9ac47a85e47be6e", - "rbs-3.5.3": "f262eea0db1e40eaa154266096b1a4272bc965a81d78acb0e54b58b4dc11f052", + "rbs-3.6.1": "ed7273d018556844583d1785ac54194e67eec594d68e317d57fa90ad035532c0", "rchardet-1.8.0": "693acd5253d5ade81a51940697955f6dd4bb2f0d245bda76a8e23deec70a52c7", "rdoc-6.7.0": "b17d5f0f57b0853d7b880d4360a32c7caf8dbb81f8503a36426df809e617f379", "regexp_parser-2.9.2": "5a27e767ad634f8a4b544520d5cd28a0db7aa1198a5d7c9d7e11d7b3d9066446", - "reline-0.5.9": "5d2dd7ed0fd078e79a05e4eaa47dc91b8dacec7358e9e1dd6d9c4636cff7d378", - "rexml-3.3.6": "7af0459d108dfd6ffa7d38c67c8464e200f5c9d476d4c6a3d1899e92808d63c6", + "reline-0.5.10": "1660c969a792ebd034e6ceee8ca628f3b6698dcdb34f7a282a5edda37b958166", + "rexml-3.3.9": "d71875b85299f341edf47d44df0212e7658cbdf35aeb69cefdb63f57af3137c9", "rspec-3.13.0": "d490914ac1d5a5a64a0e1400c1d54ddd2a501324d703b8cfe83f458337bab993", - "rspec-core-3.13.0": "557792b4e88da883d580342b263d9652b6a10a12d5bda9ef967b01a48f15454c", - "rspec-expectations-3.13.2": "565fb94ab39923c0fe6a16cfc9570d1821b741917a50800373fcbbb752c7a45a", - "rspec-mocks-3.13.1": "087189899c337937bcf1d66a50dc3fc999ac88335bbeba4d385c2a38c87d7b38", + "rspec-core-3.13.2": "94fbda6e4738e478f1c7532b7cc241272fcdc8b9eac03a97338b1122e4573300", + "rspec-expectations-3.13.3": "0e6b5af59b900147698ea0ff80456c4f2e69cac4394fbd392fbd1ca561f66c58", + "rspec-mocks-3.13.2": "2327335def0e1665325a9b617e3af9ae20272741d80ac550336309a7c59abdef", "rspec-support-3.13.1": "48877d4f15b772b7538f3693c22225f2eda490ba65a0515c4e7cf6f2f17de70f", - "rubocop-1.65.1": "3a239b71fcfdeb32c654f4b48c2e6aeb4f77b128e348fa9442184f207e70718d", - "rubocop-ast-1.32.1": "6a86ce3b7aa8ff8b600396d8f75ef5f85873b94bf0a1ae11607c19e65ced79c1", + "rubocop-1.67.0": "8ccca7226e76d0a9974af960ea446d1fb38adf0c491214294e2fed75a85c378c", + "rubocop-ast-1.32.3": "40201e861c73a3c2d59428c7627828ef81fb2f8a306bc4a1c1801452afe3fe0f", "rubocop-capybara-2.21.0": "5d264efdd8b6c7081a3d4889decf1451a1cfaaec204d81534e236bc825b280ab", "rubocop-factory_bot-2.26.1": "8de13cd4edcee5ca800f255188167ecef8dbfc3d1fae9f15734e9d2e755392aa", - "rubocop-performance-1.21.1": "5cf20002a544275ad6aa99abca4b945d2a2ed71be925c38fe83700360ed8734e", + "rubocop-performance-1.22.1": "9ed9737af1ee90655654b483e0eac4e64702139e85d33335bf744b57a309a679", "rubocop-rake-0.6.0": "56b6f22189af4b33d4f4e490a555c09f1281b02f4d48c3a61f6e8fe5f401d8db", "rubocop-rspec-2.31.0": "2bae19388d78e1ceace44cd95fd34f3209f4ef20cac1b168d0a1325cbba3d672", "rubocop-rspec_rails-2.29.1": "4ae95abbe9ca5a9b6d8be14e50d230fb5b6ba033b05d4c0981b5b76fc44988e4", @@ -328,11 +328,11 @@ ruby.bundle_fetch( "strscan-3.1.0-java": "8645aa76e017e21764c6df572d2d79fcc1672284014f5bdbd806278cdbcd11b0", "terminal-table-3.0.2": "f951b6af5f3e00203fb290a669e0a85c5dd5b051b3b023392ccfd67ba5abae91", "tzinfo-2.0.6": "8daf828cc77bcf7d63b0e3bdb6caa47e2272dcfaf4fbfe46f8c3a9df087a829b", - "unicode-display_width-2.5.0": "7e7681dcade1add70cb9fda20dd77f300b8587c81ebbd165d14fd93144ff0ab4", - "webmock-3.23.1": "0fa738c0767d1c4ec8cc57f6b21998f0c238c8a5b32450df1c847f2767140d95", - "webrick-1.8.1": "19411ec6912911fd3df13559110127ea2badd0c035f7762873f58afc803e158f", + "unicode-display_width-2.6.0": "12279874bba6d5e4d2728cef814b19197dbb10d7a7837a869bab65da943b7f5a", + "webmock-3.24.0": "be01357f6fc773606337ca79f3ba332b7d52cbe5c27587671abc0572dbec7122", + "webrick-1.8.2": "431746a349199546ff9dd272cae10849c865f938216e41c402a6489248f12f21", "websocket-1.2.11": "b7e7a74e2410b5e85c25858b26b3322f29161e300935f70a0e0d3c35e0462737", - "yard-0.9.36": "5505736c1b00c926f71053a606ab75f02070c5960d0778b901fe9d8b0a470be4", + "yard-0.9.37": "a6e910399e78e613f80ba9add9ba7c394b1a935f083cccbef82903a3d2a26992", }, gemfile = "//:rb/Gemfile", gemfile_lock = "//:rb/Gemfile.lock", diff --git a/rb/.rubocop.yml b/rb/.rubocop.yml index 14142a7db62a8..0e1f819a1d856 100644 --- a/rb/.rubocop.yml +++ b/rb/.rubocop.yml @@ -4,7 +4,7 @@ require: - rubocop-rspec AllCops: - TargetRubyVersion: 3.0 + TargetRubyVersion: 3.1 NewCops: enable Exclude: - !ruby/regexp /lib\/selenium\/devtools\/v\d+/ diff --git a/rb/.ruby-version b/rb/.ruby-version index 818bd47abfc91..9cec7165ab0a0 100644 --- a/rb/.ruby-version +++ b/rb/.ruby-version @@ -1 +1 @@ -3.0.6 +3.1.6 diff --git a/rb/README.md b/rb/README.md index 651b47dc6828a..aacb9db114b10 100644 --- a/rb/README.md +++ b/rb/README.md @@ -1,6 +1,6 @@ # selenium-webdriver -This gem provides Ruby bindings for Selenium and supports MRI >= 3.0. +This gem provides Ruby bindings for Selenium and supports MRI >= 3.1. ## Install diff --git a/rb/lib/selenium/server.rb b/rb/lib/selenium/server.rb index 7d031f26af07d..ad63ca25eb936 100644 --- a/rb/lib/selenium/server.rb +++ b/rb/lib/selenium/server.rb @@ -122,15 +122,15 @@ def available_assets end end - def net_http_start(address, &block) + def net_http_start(address, &) http_proxy = ENV.fetch('http_proxy', nil) || ENV.fetch('HTTP_PROXY', nil) if http_proxy http_proxy = "http://#{http_proxy}" unless http_proxy.start_with?('http://') uri = URI.parse(http_proxy) - Net::HTTP.start(address, nil, uri.host, uri.port, &block) + Net::HTTP.start(address, nil, uri.host, uri.port, &) else - Net::HTTP.start(address, use_ssl: true, &block) + Net::HTTP.start(address, use_ssl: true, &) end end diff --git a/rb/lib/selenium/webdriver/bidi.rb b/rb/lib/selenium/webdriver/bidi.rb index 0beb1d024578a..500f75859bc37 100644 --- a/rb/lib/selenium/webdriver/bidi.rb +++ b/rb/lib/selenium/webdriver/bidi.rb @@ -38,8 +38,8 @@ def callbacks @ws.callbacks end - def add_callback(event, &block) - @ws.add_callback(event, &block) + def add_callback(event, &) + @ws.add_callback(event, &) end def remove_callback(event, id) diff --git a/rb/lib/selenium/webdriver/bidi/log_inspector.rb b/rb/lib/selenium/webdriver/bidi/log_inspector.rb index 133666cec0f01..4c7ff02100a72 100644 --- a/rb/lib/selenium/webdriver/bidi/log_inspector.rb +++ b/rb/lib/selenium/webdriver/bidi/log_inspector.rb @@ -79,7 +79,7 @@ def on_javascript_exception(&block) end end - def on_log(filter_by = nil, &block) + def on_log(filter_by = nil, &) unless filter_by.nil? check_valid_filter(filter_by) @@ -89,14 +89,14 @@ def on_log(filter_by = nil, &block) return end - on(:entry_added, &block) + on(:entry_added, &) end private - def on(event, &block) + def on(event, &) event = EVENTS[event] if event.is_a?(Symbol) - @bidi.add_callback("log.#{event}", &block) + @bidi.add_callback("log.#{event}", &) end def check_valid_filter(filter_by) diff --git a/rb/lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb b/rb/lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb index 0cedd98ba3b52..3339426157d91 100644 --- a/rb/lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb +++ b/rb/lib/selenium/webdriver/common/driver_extensions/has_network_interception.rb @@ -59,9 +59,9 @@ module HasNetworkInterception # @yieldparam [Proc] continue block which proceeds with the request and optionally yields response # - def intercept(&block) + def intercept(&) @interceptor ||= DevTools::NetworkInterceptor.new(devtools) - @interceptor.intercept(&block) + @interceptor.intercept(&) end end # HasNetworkInterception end # DriverExtensions diff --git a/rb/lib/selenium/webdriver/common/logger.rb b/rb/lib/selenium/webdriver/common/logger.rb index 318d4e3110ab5..810b87a8e3c31 100644 --- a/rb/lib/selenium/webdriver/common/logger.rb +++ b/rb/lib/selenium/webdriver/common/logger.rb @@ -193,7 +193,7 @@ def create_logger(name, level:) def discard_or_log(level, message, id) id = Array(id) - return if (@ignored & id).any? + return if @ignored.intersect?(id) return if @allowed.any? && (@allowed & id).none? return if ::Logger::Severity.const_get(level.upcase) < @logger.level diff --git a/rb/lib/selenium/webdriver/common/script.rb b/rb/lib/selenium/webdriver/common/script.rb index 4b58b1bbea2c7..a637b75f6bda1 100644 --- a/rb/lib/selenium/webdriver/common/script.rb +++ b/rb/lib/selenium/webdriver/common/script.rb @@ -25,13 +25,13 @@ def initialize(bridge) end # @return [int] id of the handler - def add_console_message_handler(&block) - @log_handler.add_message_handler('console', &block) + def add_console_message_handler(&) + @log_handler.add_message_handler('console', &) end # @return [int] id of the handler - def add_javascript_error_handler(&block) - @log_handler.add_message_handler('javascript', &block) + def add_javascript_error_handler(&) + @log_handler.add_message_handler('javascript', &) end # @param [int] id of the handler previously added diff --git a/rb/lib/selenium/webdriver/remote/bridge.rb b/rb/lib/selenium/webdriver/remote/bridge.rb index a26bb4bd1fe22..1678065010108 100644 --- a/rb/lib/selenium/webdriver/remote/bridge.rb +++ b/rb/lib/selenium/webdriver/remote/bridge.rb @@ -35,10 +35,10 @@ class << self attr_reader :extra_commands attr_writer :element_class, :locator_converter - def add_command(name, verb, url, &block) + def add_command(name, verb, url, &) @extra_commands ||= {} @extra_commands[name] = [verb, url] - define_method(name, &block) + define_method(name, &) end def locator_converter diff --git a/rb/lib/selenium/webdriver/support/guards.rb b/rb/lib/selenium/webdriver/support/guards.rb index ad5e1f2c9efd8..f56850106396d 100644 --- a/rb/lib/selenium/webdriver/support/guards.rb +++ b/rb/lib/selenium/webdriver/support/guards.rb @@ -37,8 +37,8 @@ def initialize(example, bug_tracker: '', conditions: nil) @messages = {} end - def add_condition(name, condition = nil, &blk) - @guard_conditions << GuardCondition.new(name, condition, &blk) + def add_condition(name, condition = nil, &) + @guard_conditions << GuardCondition.new(name, condition, &) end def add_message(name, message) diff --git a/rb/selenium-devtools.gemspec b/rb/selenium-devtools.gemspec index 455966163f019..709efc6bcdb2c 100644 --- a/rb/selenium-devtools.gemspec +++ b/rb/selenium-devtools.gemspec @@ -27,7 +27,7 @@ Gem::Specification.new do |s| } s.required_rubygems_version = Gem::Requirement.new('> 1.3.1') if s.respond_to? :required_rubygems_version= - s.required_ruby_version = Gem::Requirement.new('>= 3.0') + s.required_ruby_version = Gem::Requirement.new('>= 3.1') s.files = [ 'LICENSE', diff --git a/rb/selenium-webdriver.gemspec b/rb/selenium-webdriver.gemspec index 64a92dcb358fc..b6c09f273c326 100644 --- a/rb/selenium-webdriver.gemspec +++ b/rb/selenium-webdriver.gemspec @@ -28,7 +28,7 @@ Gem::Specification.new do |s| } s.required_rubygems_version = Gem::Requirement.new('> 1.3.1') if s.respond_to? :required_rubygems_version= - s.required_ruby_version = Gem::Requirement.new('>= 3.0') + s.required_ruby_version = Gem::Requirement.new('>= 3.1') s.files = [ 'CHANGES', From ac523a5d0aa5a980a71c5adda3f4dafb0a560409 Mon Sep 17 00:00:00 2001 From: Simon Benzer <69980130+shbenzer@users.noreply.github.com> Date: Thu, 31 Oct 2024 16:07:12 -0400 Subject: [PATCH 054/135] [dotnet] Deprecate WebElement.GetAttribute() (#14676) --- dotnet/src/webdriver/IWebElement.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dotnet/src/webdriver/IWebElement.cs b/dotnet/src/webdriver/IWebElement.cs index 89261bdd88435..ffe56565fe8f1 100644 --- a/dotnet/src/webdriver/IWebElement.cs +++ b/dotnet/src/webdriver/IWebElement.cs @@ -16,6 +16,7 @@ // limitations under the License. //
+using System; using System.Drawing; namespace OpenQA.Selenium @@ -170,6 +171,7 @@ public interface IWebElement : ISearchContext /// /// /// Thrown when the target element is no longer valid in the document DOM. + [Obsolete("Use GetDomAttribute(string attributeName) or GetDomProperty(string propertyName). GetAttribute(string attributeName) will be removed in Selenium 6.")] string GetAttribute(string attributeName); /// From 30ff932b6ff704ac32e197b92098bf513404dad4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Sautter?= Date: Thu, 31 Oct 2024 22:26:10 +0100 Subject: [PATCH 055/135] [java] ensure the correct delegate is called by the server thread --- .../org/openqa/selenium/remote/internal/HttpClientTestBase.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/test/org/openqa/selenium/remote/internal/HttpClientTestBase.java b/java/test/org/openqa/selenium/remote/internal/HttpClientTestBase.java index 37ac78f1124a2..55f1b71de47a8 100644 --- a/java/test/org/openqa/selenium/remote/internal/HttpClientTestBase.java +++ b/java/test/org/openqa/selenium/remote/internal/HttpClientTestBase.java @@ -61,7 +61,7 @@ public abstract class HttpClientTestBase { protected abstract HttpClient.Factory createFactory(); - static HttpHandler delegate; + static volatile HttpHandler delegate; static AppServer server; private static final Logger LOG = Logger.getLogger(HttpClientTestBase.class.getName()); From 76fadd7359aeb57e6d74bae0c3c649b69f7daaf5 Mon Sep 17 00:00:00 2001 From: Selenium CI Bot Date: Fri, 1 Nov 2024 00:26:00 +0000 Subject: [PATCH 056/135] Update mirror info (Fri Nov 1 00:26:00 UTC 2024) --- common/mirror/selenium | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/common/mirror/selenium b/common/mirror/selenium index 16ba0f3f735a0..664bf8d6e5a1b 100644 --- a/common/mirror/selenium +++ b/common/mirror/selenium @@ -1,35 +1,35 @@ [ { - "tag_name": "selenium-4.26.0", + "tag_name": "nightly", "assets": [ { - "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.26.0/selenium-dotnet-4.26.0.zip" - }, - { - "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.26.0/selenium-dotnet-strongnamed-4.26.0.zip" - }, - { - "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.26.0/selenium-java-4.26.0.zip" + "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/nightly/selenium-java-4.27.0-SNAPSHOT.zip" }, { - "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.26.0/selenium-server-4.26.0.jar" + "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/nightly/selenium-server-4.27.0-SNAPSHOT.jar" }, { - "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.26.0/selenium-server-4.26.0.zip" + "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/nightly/selenium-server-4.27.0-SNAPSHOT.zip" } ] }, { - "tag_name": "nightly", + "tag_name": "selenium-4.26.0", "assets": [ { - "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/nightly/selenium-java-4.27.0-SNAPSHOT.zip" + "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.26.0/selenium-dotnet-4.26.0.zip" }, { - "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/nightly/selenium-server-4.27.0-SNAPSHOT.jar" + "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.26.0/selenium-dotnet-strongnamed-4.26.0.zip" }, { - "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/nightly/selenium-server-4.27.0-SNAPSHOT.zip" + "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.26.0/selenium-java-4.26.0.zip" + }, + { + "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.26.0/selenium-server-4.26.0.jar" + }, + { + "browser_download_url": "https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.26.0/selenium-server-4.26.0.zip" } ] }, From 7c389f9e12cf98dff0c1e8031f925d1d012138be Mon Sep 17 00:00:00 2001 From: Viet Nguyen Duc Date: Fri, 1 Nov 2024 02:54:22 +0000 Subject: [PATCH 057/135] [py] Fix TypeError when init Safari webdriver (#14699) * [py] Fix TypeError when init Safari webdriver * Try to enable test safari in CI --------- Signed-off-by: Viet Nguyen Duc --- .github/workflows/ci-python.yml | 12 ++++++++++++ py/selenium/webdriver/safari/webdriver.py | 5 ++--- py/test/selenium/webdriver/safari/launcher_tests.py | 1 + 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci-python.yml b/.github/workflows/ci-python.yml index 9749fd4e7ad82..cebe68597d063 100644 --- a/.github/workflows/ci-python.yml +++ b/.github/workflows/ci-python.yml @@ -86,3 +86,15 @@ jobs: browser: firefox cache-key: py-remote run: bazel test --local_test_jobs 1 --flaky_test_attempts 3 //py:test-remote + + safari-tests: + name: Safari Tests + needs: build + uses: ./.github/workflows/bazel.yml + with: + name: Integration Tests (safari) + browser: safari + os: macos + cache-key: py-safari + run: | + bazel test --local_test_jobs 1 --flaky_test_attempts 3 //py:test-safari-test/selenium/webdriver/safari/launcher_tests.py diff --git a/py/selenium/webdriver/safari/webdriver.py b/py/selenium/webdriver/safari/webdriver.py index 1480f5dfdd7bb..2c37a4bd7abde 100644 --- a/py/selenium/webdriver/safari/webdriver.py +++ b/py/selenium/webdriver/safari/webdriver.py @@ -16,7 +16,6 @@ # under the License. from selenium.common.exceptions import WebDriverException -from selenium.webdriver.remote.client_config import ClientConfig from selenium.webdriver.remote.webdriver import WebDriver as RemoteWebDriver from ..common.driver_finder import DriverFinder @@ -51,10 +50,10 @@ def __init__( if not self.service.reuse_service: self.service.start() - client_config = ClientConfig(remote_server_addr=self.service.service_url, keep_alive=keep_alive, timeout=120) executor = SafariRemoteConnection( + remote_server_addr=self.service.service_url, + keep_alive=keep_alive, ignore_proxy=options._ignore_local_proxy, - client_config=client_config, ) try: diff --git a/py/test/selenium/webdriver/safari/launcher_tests.py b/py/test/selenium/webdriver/safari/launcher_tests.py index 1d08a226d2fcd..77a57c313aa2e 100644 --- a/py/test/selenium/webdriver/safari/launcher_tests.py +++ b/py/test/selenium/webdriver/safari/launcher_tests.py @@ -52,6 +52,7 @@ def test_launch(self, driver): assert driver.capabilities["browserName"] == "safari" +@pytest.mark.skip(reason="Need to be updated") def test_launch_safari_with_legacy_flag(mocker, driver_class): import subprocess From cde43bcc398813a36142f01e026a34e0d71d1cbd Mon Sep 17 00:00:00 2001 From: Selenium CI Bot Date: Fri, 1 Nov 2024 04:26:41 +0100 Subject: [PATCH 058/135] [dotnet][rb][java][js][py] Automated Browser Version Update (#14559) Update pinned browser versions Co-authored-by: Selenium CI Bot --- common/repositories.bzl | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/common/repositories.bzl b/common/repositories.bzl index 7a2db8a0d440f..8498b0a000a6b 100644 --- a/common/repositories.bzl +++ b/common/repositories.bzl @@ -50,8 +50,8 @@ js_library( http_archive( name = "linux_beta_firefox", - url = "https://ftp.mozilla.org/pub/firefox/releases/133.0b1/linux-x86_64/en-US/firefox-133.0b1.tar.bz2", - sha256 = "e61434729b6c0be2cc1d27b6c1847f54c1b228a49a4480260de1e10ca2a115c2", + url = "https://ftp.mozilla.org/pub/firefox/releases/133.0b2/linux-x86_64/en-US/firefox-133.0b2.tar.bz2", + sha256 = "8f6806367d338095a0d8fc67f92f7314d2f520b4fe9455fc94cf9a417aa1ecb4", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -72,8 +72,8 @@ js_library( dmg_archive( name = "mac_beta_firefox", - url = "https://ftp.mozilla.org/pub/firefox/releases/133.0b1/mac/en-US/Firefox%20133.0b1.dmg", - sha256 = "999529fe32c8630c234b6cff09a204a1c178ca8fc1a4e17c66097b943a87ebc4", + url = "https://ftp.mozilla.org/pub/firefox/releases/133.0b2/mac/en-US/Firefox%20133.0b2.dmg", + sha256 = "313a31899877a782c74b6f460a544407d828effb779c80c6f5ac8fca8e5cb872", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -165,8 +165,8 @@ js_library( http_archive( name = "linux_edgedriver", - url = "https://msedgedriver.azureedge.net/130.0.2849.46/edgedriver_linux64.zip", - sha256 = "6a62b28e9373776ae7d3f6611f5dd126c454d73264c2bb826659d3283da57f27", + url = "https://msedgedriver.azureedge.net/130.0.2849.68/edgedriver_linux64.zip", + sha256 = "fd831ca9def2061be07e496d66c1b3ff8882b8c061615dc7f5122ffee05ee013", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) @@ -182,8 +182,8 @@ js_library( http_archive( name = "mac_edgedriver", - url = "https://msedgedriver.azureedge.net/130.0.2849.61/edgedriver_mac64.zip", - sha256 = "82e761138b112bd57950f6b873d601cd4b1e9c8403663c0ffaad8e5b167efc17", + url = "https://msedgedriver.azureedge.net/130.0.2849.68/edgedriver_mac64.zip", + sha256 = "0320730b275a89afeca1aebedf98f2cea47422dbfd47f643f2fd968f84832dc5", build_file_content = """ load("@aspect_rules_js//js:defs.bzl", "js_library") package(default_visibility = ["//visibility:public"]) From 39fee38510b6ea774e3a92ce3a5405920d5141b2 Mon Sep 17 00:00:00 2001 From: Simon Benzer <69980130+shbenzer@users.noreply.github.com> Date: Sat, 2 Nov 2024 18:02:24 -0400 Subject: [PATCH 059/135] [py] Fixed Flaky Upload Tests (#14706) --- py/test/selenium/webdriver/common/upload_tests.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/py/test/selenium/webdriver/common/upload_tests.py b/py/test/selenium/webdriver/common/upload_tests.py index f5521abd50fd8..df2906eecce74 100644 --- a/py/test/selenium/webdriver/common/upload_tests.py +++ b/py/test/selenium/webdriver/common/upload_tests.py @@ -21,6 +21,8 @@ from selenium.webdriver.common.by import By from selenium.webdriver.remote.webelement import WebElement +from selenium.webdriver.support import expected_conditions as EC +from selenium.webdriver.support.wait import WebDriverWait @pytest.fixture @@ -39,9 +41,8 @@ def test_can_upload_file(driver, pages, get_local_path): driver.find_element(By.ID, "upload").send_keys(get_local_path("test_file.txt")) driver.find_element(By.ID, "go").click() driver.switch_to.frame(driver.find_element(By.ID, "upload_target")) - body = driver.find_element(By.CSS_SELECTOR, "body").text - assert "test_file.txt" in body + WebDriverWait(driver, 10).until(EC.text_to_be_present_in_element((By.CSS_SELECTOR, "body"), "test_file.txt")) def test_can_upload_two_files(driver, pages, get_local_path): @@ -50,10 +51,9 @@ def test_can_upload_two_files(driver, pages, get_local_path): driver.find_element(By.ID, "upload").send_keys(two_file_paths) driver.find_element(By.ID, "go").click() driver.switch_to.frame(driver.find_element(By.ID, "upload_target")) - body = driver.find_element(By.CSS_SELECTOR, "body").text - assert "test_file.txt" in body - assert "test_file2.txt" in body + WebDriverWait(driver, 10).until(EC.text_to_be_present_in_element((By.CSS_SELECTOR, "body"), "test_file.txt")) + WebDriverWait(driver, 10).until(EC.text_to_be_present_in_element((By.CSS_SELECTOR, "body"), "test_file2.txt")) @pytest.mark.xfail_firefox From 0219666ce1bffd30b43efe4d339ee8ca964f3448 Mon Sep 17 00:00:00 2001 From: Simon Benzer <69980130+shbenzer@users.noreply.github.com> Date: Sat, 2 Nov 2024 18:05:10 -0400 Subject: [PATCH 060/135] [py] Fixed Flaky Bidi Test (#14701) --- py/test/selenium/webdriver/common/bidi_tests.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/py/test/selenium/webdriver/common/bidi_tests.py b/py/test/selenium/webdriver/common/bidi_tests.py index cfa34a55a6cae..6872bc211f4ba 100644 --- a/py/test/selenium/webdriver/common/bidi_tests.py +++ b/py/test/selenium/webdriver/common/bidi_tests.py @@ -18,7 +18,6 @@ from selenium.webdriver.common.by import By from selenium.webdriver.common.log import Log -from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.ui import WebDriverWait @@ -76,8 +75,6 @@ async def test_collect_log_mutations(driver, pages): WebDriverWait(driver, 10).until( lambda d: d.find_element(By.ID, "revealed").value_of_css_property("display") != "none" ) - WebDriverWait(driver, 5).until(EC.visibility_of(driver.find_element(By.ID, "revealed"))) - assert event["attribute_name"] == "style" assert event["current_value"] == "" assert event["old_value"] == "display:none;" From f56b3d07d932f81bafc80b90d9b3cb059fba133e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Sautter?= Date: Sun, 3 Nov 2024 20:31:23 +0100 Subject: [PATCH 061/135] [grid] prevent NPE in handling request with unsupported http method --- java/src/org/openqa/selenium/netty/server/RequestConverter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/src/org/openqa/selenium/netty/server/RequestConverter.java b/java/src/org/openqa/selenium/netty/server/RequestConverter.java index d245530963922..6cb1c91ab3eb5 100644 --- a/java/src/org/openqa/selenium/netty/server/RequestConverter.java +++ b/java/src/org/openqa/selenium/netty/server/RequestConverter.java @@ -96,7 +96,7 @@ protected void channelRead0(ChannelHandlerContext ctx, HttpObject msg) throws Ex length = -1; } - if (msg instanceof HttpContent) { + if (request != null && msg instanceof HttpContent) { ByteBuf buf = ((HttpContent) msg).content().retain(); int nBytes = buf.readableBytes(); From bb3053ba23a5798fa65fd2bb52bbb174ac0a98d2 Mon Sep 17 00:00:00 2001 From: Simon Benzer <69980130+shbenzer@users.noreply.github.com> Date: Sun, 3 Nov 2024 14:40:42 -0500 Subject: [PATCH 062/135] [py] Added Deprecation of WebElement.get_attribute() per #13334 (#14675) --- py/selenium/webdriver/remote/webelement.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/py/selenium/webdriver/remote/webelement.py b/py/selenium/webdriver/remote/webelement.py index 08c772eaad56e..e5a3adad0d7b4 100644 --- a/py/selenium/webdriver/remote/webelement.py +++ b/py/selenium/webdriver/remote/webelement.py @@ -173,6 +173,13 @@ def get_attribute(self, name) -> str | None: # Check if the "active" CSS class is applied to an element. is_active = "active" in target_element.get_attribute("class") """ + + warnings.warn( + "using WebElement.get_attribute() has been deprecated. Please use get_dom_attribute() instead.", + DeprecationWarning, + stacklevel=2, + ) + if getAttribute_js is None: _load_js() attribute_value = self.parent.execute_script( From f9d3096dc38e02586c43e0b6541485e1e9a4f5c8 Mon Sep 17 00:00:00 2001 From: Navin Chandra <98466550+navin772@users.noreply.github.com> Date: Mon, 4 Nov 2024 16:37:51 +0530 Subject: [PATCH 063/135] [py] add a new ExtendedHandler in webserver.py (#14705) --- .../selenium/webdriver/common/webserver.py | 78 +++++++++---------- 1 file changed, 36 insertions(+), 42 deletions(-) diff --git a/py/test/selenium/webdriver/common/webserver.py b/py/test/selenium/webdriver/common/webserver.py index 5a227c1722f6c..bd108dade8278 100644 --- a/py/test/selenium/webdriver/common/webserver.py +++ b/py/test/selenium/webdriver/common/webserver.py @@ -59,27 +59,43 @@ def updir(): class HtmlOnlyHandler(BaseHTTPRequestHandler): - """Http handler.""" + """Handler for HTML responses and JSON files.""" + + def _serve_page(self, page_number): + """Serve a dynamically generated HTML page.""" + html = f"""Page{page_number} + Page number {page_number} +

top

+ """ + return html.encode("utf-8") + + def _serve_file(self, file_path): + """Serve a file from the HTML root directory.""" + with open(file_path, encoding="latin-1") as f: + return f.read().encode("utf-8") + + def _send_response(self, content_type="text/html"): + """Send a response.""" + self.send_response(200) + self.send_header("Content-type", content_type) + self.end_headers() def do_GET(self): """GET method handler.""" try: path = self.path[1:].split("?")[0] - if path[:5] == "page/": - html = """Page{page_number} - Page number {page_number} -

top - """.format( - page_number=path[5:] - ) - html = html.encode("utf-8") + file_path = os.path.join(HTML_ROOT, path) + if path.startswith("page/"): + html = self._serve_page(path[5:]) + self._send_response("text/html") + self.wfile.write(html) + elif os.path.isfile(file_path): + content_type = "application/json" if file_path.endswith(".json") else "text/html" + content = self._serve_file(file_path) + self._send_response(content_type) + self.wfile.write(content) else: - with open(os.path.join(HTML_ROOT, path), encoding="latin-1") as f: - html = f.read().encode("utf-8") - self.send_response(200) - self.send_header("Content-type", "text/html") - self.end_headers() - self.wfile.write(html) + self.send_error(404, f"File Not Found: {path}") except OSError: self.send_error(404, f"File Not Found: {path}") @@ -87,34 +103,12 @@ def do_POST(self): """POST method handler.""" try: remaining_bytes = int(self.headers["content-length"]) - contents = "" - line = self.rfile.readline() - contents += line.decode("utf-8") - remaining_bytes -= len(line) - line = self.rfile.readline() - contents += line.decode("utf-8") - remaining_bytes -= len(line) - fn = re.findall(r'Content-Disposition.*name="upload"; filename="(.*)"', line.decode("utf-8")) - if not fn: - self.send_error(500, f"File not found. {contents}") + contents = self.rfile.read(remaining_bytes).decode("utf-8") + fn_match = re.search(r'Content-Disposition.*name="upload"; filename="(.*)"', contents) + if not fn_match: + self.send_error(500, f"File not found in content. {contents}") return - line = self.rfile.readline() - remaining_bytes -= len(line) - contents += line.decode("utf-8") - line = self.rfile.readline() - remaining_bytes -= len(line) - contents += line.decode("utf-8") - preline = self.rfile.readline() - remaining_bytes -= len(preline) - while remaining_bytes > 0: - line = self.rfile.readline() - remaining_bytes -= len(line) - contents += line.decode("utf-8") - - self.send_response(200) - self.send_header("Content-type", "text/html") - self.end_headers() - + self._send_response("text/html") self.wfile.write( f""" {contents} From 71bc491039bbd688e0a6c1407597aded33dc1471 Mon Sep 17 00:00:00 2001 From: Swastik Baranwal Date: Mon, 4 Nov 2024 16:41:04 +0530 Subject: [PATCH 064/135] [py] add safari service tests (#14700) This also cleans up the running of Safari tests --------- Signed-off-by: Viet Nguyen Duc Co-authored-by: Viet Nguyen Duc Co-authored-by: David Burns --- .github/workflows/ci-python.yml | 3 +- .../selenium/webdriver/common/alerts_tests.py | 1 + .../webdriver/common/api_example_tests.py | 1 + .../webdriver/common/interactions_tests.py | 4 ++ .../common/interactions_with_device_tests.py | 4 ++ .../common/position_and_size_tests.py | 2 + .../common/selenium_manager_tests.py | 11 +++- .../selenium/webdriver/common/upload_tests.py | 6 +- .../webdriver/common/w3c_interaction_tests.py | 2 + .../webdriver/common/webdriverwait_tests.py | 1 + .../common/window_switching_tests.py | 1 + py/test/selenium/webdriver/safari/__init__.py | 16 +++++ .../webdriver/safari/safari_service_tests.py | 59 +++++++++++++++++++ 13 files changed, 105 insertions(+), 6 deletions(-) create mode 100644 py/test/selenium/webdriver/safari/__init__.py create mode 100644 py/test/selenium/webdriver/safari/safari_service_tests.py diff --git a/.github/workflows/ci-python.yml b/.github/workflows/ci-python.yml index cebe68597d063..e826cab4a91f0 100644 --- a/.github/workflows/ci-python.yml +++ b/.github/workflows/ci-python.yml @@ -96,5 +96,4 @@ jobs: browser: safari os: macos cache-key: py-safari - run: | - bazel test --local_test_jobs 1 --flaky_test_attempts 3 //py:test-safari-test/selenium/webdriver/safari/launcher_tests.py + run: bazel test --local_test_jobs 1 --flaky_test_attempts 3 //py:test-safari diff --git a/py/test/selenium/webdriver/common/alerts_tests.py b/py/test/selenium/webdriver/common/alerts_tests.py index ea37e0e3d5371..9479df88fadf5 100644 --- a/py/test/selenium/webdriver/common/alerts_tests.py +++ b/py/test/selenium/webdriver/common/alerts_tests.py @@ -294,6 +294,7 @@ def test_alert_should_not_allow_additional_commands_if_dismissed(driver, pages): @pytest.mark.xfail_remote(reason="https://bugzilla.mozilla.org/show_bug.cgi?id=1279211") @pytest.mark.xfail_chrome @pytest.mark.xfail_edge +@pytest.mark.xfail_safari def test_unexpected_alert_present_exception_contains_alert_text(driver, pages): pages.load("alerts.html") driver.find_element(by=By.ID, value="alert").click() diff --git a/py/test/selenium/webdriver/common/api_example_tests.py b/py/test/selenium/webdriver/common/api_example_tests.py index 7b8a4cedee3d8..40b3d2b7a2f01 100644 --- a/py/test/selenium/webdriver/common/api_example_tests.py +++ b/py/test/selenium/webdriver/common/api_example_tests.py @@ -240,6 +240,7 @@ def test_is_element_displayed(driver, pages): @pytest.mark.xfail_chrome +@pytest.mark.xfail_safari def test_move_window_position(driver, pages): pages.load("blank.html") loc = driver.get_window_position() diff --git a/py/test/selenium/webdriver/common/interactions_tests.py b/py/test/selenium/webdriver/common/interactions_tests.py index 8c2ad03fc8d6f..7ffe0e9dc4e0b 100644 --- a/py/test/selenium/webdriver/common/interactions_tests.py +++ b/py/test/selenium/webdriver/common/interactions_tests.py @@ -253,6 +253,7 @@ def test_can_pause(driver, pages): @pytest.mark.xfail_firefox @pytest.mark.xfail_remote +@pytest.mark.xfail_safari def test_can_scroll_to_element(driver, pages): pages.load("scrolling_tests/frame_with_nested_scrolling_frame_out_of_view.html") iframe = driver.find_element(By.TAG_NAME, "iframe") @@ -266,6 +267,7 @@ def test_can_scroll_to_element(driver, pages): @pytest.mark.xfail_firefox @pytest.mark.xfail_remote +@pytest.mark.xfail_safari def test_can_scroll_from_element_by_amount(driver, pages): pages.load("scrolling_tests/frame_with_nested_scrolling_frame_out_of_view.html") iframe = driver.find_element(By.TAG_NAME, "iframe") @@ -280,6 +282,7 @@ def test_can_scroll_from_element_by_amount(driver, pages): @pytest.mark.xfail_firefox @pytest.mark.xfail_remote +@pytest.mark.xfail_safari def test_can_scroll_from_element_with_offset_by_amount(driver, pages): pages.load("scrolling_tests/frame_with_nested_scrolling_frame_out_of_view.html") footer = driver.find_element(By.TAG_NAME, "footer") @@ -314,6 +317,7 @@ def test_can_scroll_from_viewport_by_amount(driver, pages): assert _in_viewport(driver, footer) +@pytest.mark.xfail_safari def test_can_scroll_from_viewport_with_offset_by_amount(driver, pages): pages.load("scrolling_tests/frame_with_nested_scrolling_frame.html") scroll_origin = ScrollOrigin.from_viewport(10, 10) diff --git a/py/test/selenium/webdriver/common/interactions_with_device_tests.py b/py/test/selenium/webdriver/common/interactions_with_device_tests.py index 926b93c641e44..f82f3967a0776 100644 --- a/py/test/selenium/webdriver/common/interactions_with_device_tests.py +++ b/py/test/selenium/webdriver/common/interactions_with_device_tests.py @@ -247,6 +247,7 @@ def test_can_pause_with_pointer(driver, pages): @pytest.mark.xfail_firefox @pytest.mark.xfail_remote +@pytest.mark.xfail_safari def test_can_scroll_to_element_with_wheel(driver, pages): pages.load("scrolling_tests/frame_with_nested_scrolling_frame_out_of_view.html") iframe = driver.find_element(By.TAG_NAME, "iframe") @@ -262,6 +263,7 @@ def test_can_scroll_to_element_with_wheel(driver, pages): @pytest.mark.xfail_firefox @pytest.mark.xfail_remote +@pytest.mark.xfail_safari def test_can_scroll_from_element_by_amount_with_wheel(driver, pages): pages.load("scrolling_tests/frame_with_nested_scrolling_frame_out_of_view.html") iframe = driver.find_element(By.TAG_NAME, "iframe") @@ -278,6 +280,7 @@ def test_can_scroll_from_element_by_amount_with_wheel(driver, pages): @pytest.mark.xfail_firefox @pytest.mark.xfail_remote +@pytest.mark.xfail_safari def test_can_scroll_from_element_with_offset_by_amount_with_wheel(driver, pages): pages.load("scrolling_tests/frame_with_nested_scrolling_frame_out_of_view.html") footer = driver.find_element(By.TAG_NAME, "footer") @@ -320,6 +323,7 @@ def test_can_scroll_from_viewport_by_amount_with_wheel(driver, pages): @pytest.mark.xfail_firefox +@pytest.mark.xfail_safari def test_can_scroll_from_viewport_with_offset_by_amount_with_wheel(driver, pages): pages.load("scrolling_tests/frame_with_nested_scrolling_frame.html") scroll_origin = ScrollOrigin.from_viewport(10, 10) diff --git a/py/test/selenium/webdriver/common/position_and_size_tests.py b/py/test/selenium/webdriver/common/position_and_size_tests.py index a438c0f5e0c88..081c51358a517 100644 --- a/py/test/selenium/webdriver/common/position_and_size_tests.py +++ b/py/test/selenium/webdriver/common/position_and_size_tests.py @@ -53,6 +53,7 @@ def test_should_get_coordinates_of_an_invisible_element(driver, pages): _check_location(element.location, x=0, y=0) +@pytest.mark.xfail_safari def test_should_scroll_page_and_get_coordinates_of_an_element_that_is_out_of_view_port(driver, pages): pages.load("coordinates_tests/page_with_element_out_of_view.html") element = driver.find_element(By.ID, "box") @@ -89,6 +90,7 @@ def test_should_get_coordinates_of_an_element_in_anested_frame(driver, pages): _check_location(element.location, x=10, y=10) +@pytest.mark.xfail_safari def test_should_get_coordinates_of_an_element_with_fixed_position(driver, pages): pages.load("coordinates_tests/page_with_fixed_element.html") element = driver.find_element(By.ID, "fixed") diff --git a/py/test/selenium/webdriver/common/selenium_manager_tests.py b/py/test/selenium/webdriver/common/selenium_manager_tests.py index 8692644cee0c4..67239bf87a67d 100644 --- a/py/test/selenium/webdriver/common/selenium_manager_tests.py +++ b/py/test/selenium/webdriver/common/selenium_manager_tests.py @@ -15,6 +15,7 @@ # specific language governing permissions and limitations # under the License. import json +import platform import sys from pathlib import Path from unittest import mock @@ -59,10 +60,14 @@ def test_uses_windows(monkeypatch): def test_uses_linux(monkeypatch): monkeypatch.setattr(sys, "platform", "linux") - binary = SeleniumManager()._get_binary() - project_root = Path(selenium.__file__).parent.parent - assert binary == project_root.joinpath("selenium/webdriver/common/linux/selenium-manager") + if platform.machine() == "arm64": + with pytest.raises(WebDriverException, match="Unsupported platform/architecture combination: linux/arm64"): + SeleniumManager()._get_binary() + else: + binary = SeleniumManager()._get_binary() + project_root = Path(selenium.__file__).parent.parent + assert binary == project_root.joinpath("selenium/webdriver/common/linux/selenium-manager") def test_uses_mac(monkeypatch): diff --git a/py/test/selenium/webdriver/common/upload_tests.py b/py/test/selenium/webdriver/common/upload_tests.py index df2906eecce74..642085790e303 100644 --- a/py/test/selenium/webdriver/common/upload_tests.py +++ b/py/test/selenium/webdriver/common/upload_tests.py @@ -16,6 +16,7 @@ # under the License. import os +import textwrap import pytest @@ -30,11 +31,13 @@ def get_local_path(): current_dir = os.path.dirname(os.path.realpath(__file__)) def wrapped(filename): - return os.path.join(current_dir, filename) + full_path = os.path.join(current_dir, filename) + return textwrap.fill(full_path, width=512) return wrapped +@pytest.mark.xfail_safari def test_can_upload_file(driver, pages, get_local_path): pages.load("upload.html") @@ -45,6 +48,7 @@ def test_can_upload_file(driver, pages, get_local_path): WebDriverWait(driver, 10).until(EC.text_to_be_present_in_element((By.CSS_SELECTOR, "body"), "test_file.txt")) +@pytest.mark.xfail_safari def test_can_upload_two_files(driver, pages, get_local_path): pages.load("upload.html") two_file_paths = get_local_path("test_file.txt") + "\n" + get_local_path("test_file2.txt") diff --git a/py/test/selenium/webdriver/common/w3c_interaction_tests.py b/py/test/selenium/webdriver/common/w3c_interaction_tests.py index d0a00ac26a2d4..5376265ede3bb 100644 --- a/py/test/selenium/webdriver/common/w3c_interaction_tests.py +++ b/py/test/selenium/webdriver/common/w3c_interaction_tests.py @@ -176,6 +176,7 @@ def test_dragging_element_with_mouse_fires_events(driver, pages): @pytest.mark.xfail_firefox @pytest.mark.xfail_remote +@pytest.mark.xfail_safari def test_pen_pointer_properties(driver, pages): pages.load("pointerActionsPage.html") @@ -223,6 +224,7 @@ def test_pen_pointer_properties(driver, pages): @pytest.mark.xfail_firefox @pytest.mark.xfail_remote +@pytest.mark.xfail_safari def test_touch_pointer_properties(driver, pages): pages.load("pointerActionsPage.html") pointerArea = driver.find_element(By.CSS_SELECTOR, "#pointerArea") diff --git a/py/test/selenium/webdriver/common/webdriverwait_tests.py b/py/test/selenium/webdriver/common/webdriverwait_tests.py index 14019d185e8b0..f332933e4241c 100644 --- a/py/test/selenium/webdriver/common/webdriverwait_tests.py +++ b/py/test/selenium/webdriver/common/webdriverwait_tests.py @@ -35,6 +35,7 @@ def throw_sere(driver): @pytest.mark.xfail_chrome(reason="https://bugs.chromium.org/p/chromedriver/issues/detail?id=4743") @pytest.mark.xfail_edge(reason="https://bugs.chromium.org/p/chromedriver/issues/detail?id=4743") +@pytest.mark.xfail_safari def test_should_fail_with_invalid_selector_exception(driver, pages): pages.load("dynamic.html") with pytest.raises(InvalidSelectorException): diff --git a/py/test/selenium/webdriver/common/window_switching_tests.py b/py/test/selenium/webdriver/common/window_switching_tests.py index 1e2359cd52b36..2883ab2c55f69 100644 --- a/py/test/selenium/webdriver/common/window_switching_tests.py +++ b/py/test/selenium/webdriver/common/window_switching_tests.py @@ -130,6 +130,7 @@ def test_should_throw_no_such_window_exception_on_any_element_operation_if_awind element.text +@pytest.mark.xfail_safari def test_clicking_on_abutton_that_closes_an_open_window_does_not_cause_the_browser_to_hang(driver, pages): pages.load("xhtmlTest.html") current = driver.current_window_handle diff --git a/py/test/selenium/webdriver/safari/__init__.py b/py/test/selenium/webdriver/safari/__init__.py new file mode 100644 index 0000000000000..a5b1e6f85a09e --- /dev/null +++ b/py/test/selenium/webdriver/safari/__init__.py @@ -0,0 +1,16 @@ +# Licensed to the Software Freedom Conservancy (SFC) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The SFC licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. diff --git a/py/test/selenium/webdriver/safari/safari_service_tests.py b/py/test/selenium/webdriver/safari/safari_service_tests.py new file mode 100644 index 0000000000000..494cbe6be6143 --- /dev/null +++ b/py/test/selenium/webdriver/safari/safari_service_tests.py @@ -0,0 +1,59 @@ +# Licensed to the Software Freedom Conservancy (SFC) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The SFC licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. + +import os + +import pytest + +from selenium.webdriver.safari.service import Service + + +@pytest.fixture +def service(): + return Service() + + +@pytest.mark.usefixtures("service") +class TestSafariDriverService: + service_path = "/path/to/safaridriver" + + @pytest.fixture(autouse=True) + def setup_and_teardown(self): + os.environ["SE_SAFARIDRIVER"] = self.service_path + yield + os.environ.pop("SE_SAFARIDRIVER", None) + + def test_uses_path_from_env_variable(self, service): + assert "safaridriver" in service.path + + def test_updates_path_after_setting_env_variable(self, service): + new_path = "/foo/bar" + os.environ["SE_SAFARIDRIVER"] = new_path + service.executable_path = self.service_path # Simulating the update + + assert "safaridriver" in service.executable_path + + +def test_enable_logging(): + enable_logging = True + service = Service(enable_logging=enable_logging) + assert "--diagnose" in service.service_args + + +def test_service_url(): + service = Service(port=1313) + assert service.service_url == "http://localhost:1313" From 9f664c6f23364cc5822f7b891c8133b0d75c2de0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Sautter?= Date: Mon, 4 Nov 2024 17:19:37 +0100 Subject: [PATCH 065/135] [grid] check session ownership once --- .../grid/node/ForwardWebDriverCommand.java | 16 +++++++++++----- java/src/org/openqa/selenium/grid/node/Node.java | 7 +------ .../openqa/selenium/grid/router/StressTest.java | 5 +++++ 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/java/src/org/openqa/selenium/grid/node/ForwardWebDriverCommand.java b/java/src/org/openqa/selenium/grid/node/ForwardWebDriverCommand.java index fadcfff4c80fd..65be23ab4aadc 100644 --- a/java/src/org/openqa/selenium/grid/node/ForwardWebDriverCommand.java +++ b/java/src/org/openqa/selenium/grid/node/ForwardWebDriverCommand.java @@ -17,11 +17,11 @@ package org.openqa.selenium.grid.node; -import static java.net.HttpURLConnection.HTTP_INTERNAL_ERROR; +import static java.net.HttpURLConnection.HTTP_NOT_FOUND; import static org.openqa.selenium.remote.HttpSessionId.getSessionId; import static org.openqa.selenium.remote.http.Contents.asJson; -import com.google.common.collect.ImmutableMap; +import java.util.Map; import org.openqa.selenium.internal.Require; import org.openqa.selenium.remote.SessionId; import org.openqa.selenium.remote.http.HttpHandler; @@ -48,10 +48,16 @@ public HttpResponse execute(HttpRequest req) { return node.executeWebDriverCommand(req); } return new HttpResponse() - .setStatus(HTTP_INTERNAL_ERROR) + .setStatus(HTTP_NOT_FOUND) .setContent( asJson( - ImmutableMap.of( - "error", String.format("Session not found in node %s", node.getId())))); + Map.of( + "value", + Map.of( + "error", "invalid session id", + "message", + "Cannot find session with id: " + + getSessionId(req.getUri()).orElse(null), + "stacktrace", "")))); } } diff --git a/java/src/org/openqa/selenium/grid/node/Node.java b/java/src/org/openqa/selenium/grid/node/Node.java index bc2b5c75b5ab7..68767fa0a26b9 100644 --- a/java/src/org/openqa/selenium/grid/node/Node.java +++ b/java/src/org/openqa/selenium/grid/node/Node.java @@ -154,12 +154,7 @@ protected Node( combine( // "getSessionId" is aggressive about finding session ids, so this needs to be the last // route that is checked. - matching( - req -> - getSessionId(req.getUri()) - .map(SessionId::new) - .map(sessionId -> this.getSession(sessionId) != null) - .orElse(false)) + matching(req -> getSessionId(req.getUri()).map(SessionId::new).isPresent()) .to(() -> new ForwardWebDriverCommand(this)) .with(spanDecorator("node.forward_command")), new CustomLocatorHandler(this, registrationSecret, customLocators), diff --git a/java/test/org/openqa/selenium/grid/router/StressTest.java b/java/test/org/openqa/selenium/grid/router/StressTest.java index 3be76395e4f01..d64244b19c606 100644 --- a/java/test/org/openqa/selenium/grid/router/StressTest.java +++ b/java/test/org/openqa/selenium/grid/router/StressTest.java @@ -77,6 +77,11 @@ public void setupServers() { + "\n" + "session-timeout = 11" + "\n" + + "overwrite-max-sessions = true" + + "\n" + + "max-sessions = " + + Runtime.getRuntime().availableProcessors() * 2 + + "\n" + "enable-managed-downloads = true"))); tearDowns.add(deployment); From 431c4124a8120559badd3ba5460ff813901b0710 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Sautter?= Date: Mon, 4 Nov 2024 18:14:25 +0100 Subject: [PATCH 066/135] [grid] check session ownership once --- .../grid/node/ForwardWebDriverCommandTest.java | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/java/test/org/openqa/selenium/grid/node/ForwardWebDriverCommandTest.java b/java/test/org/openqa/selenium/grid/node/ForwardWebDriverCommandTest.java index 8f0df29251870..e52f5d7d45e77 100644 --- a/java/test/org/openqa/selenium/grid/node/ForwardWebDriverCommandTest.java +++ b/java/test/org/openqa/selenium/grid/node/ForwardWebDriverCommandTest.java @@ -17,12 +17,12 @@ package org.openqa.selenium.grid.node; -import static java.net.HttpURLConnection.HTTP_INTERNAL_ERROR; +import static java.net.HttpURLConnection.HTTP_NOT_FOUND; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.mockito.Mockito.*; import static org.openqa.selenium.remote.http.Contents.asJson; -import com.google.common.collect.ImmutableMap; +import java.util.Map; import java.util.UUID; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; @@ -69,11 +69,18 @@ void testExecuteWithInvalidSessionOwner() { HttpResponse actualResponse = command.execute(mockRequest); HttpResponse expectResponse = new HttpResponse() - .setStatus(HTTP_INTERNAL_ERROR) + .setStatus(HTTP_NOT_FOUND) .setContent( asJson( - ImmutableMap.of( - "error", String.format("Session not found in node %s", mockNode.getId())))); + Map.of( + "value", + Map.of( + "error", + "invalid session id", + "message", + "Cannot find session with id: " + sessionId, + "stacktrace", + "")))); assertEquals(expectResponse.getStatus(), actualResponse.getStatus()); assertEquals(expectResponse.getContentEncoding(), actualResponse.getContentEncoding()); } From 97c51183d975e5ff1a785bffd0c9b9cd02744ef2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Sautter?= Date: Mon, 4 Nov 2024 19:06:01 +0100 Subject: [PATCH 067/135] [grid] check session ownership once --- .../openqa/selenium/grid/node/NodeTest.java | 20 ++++++------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/java/test/org/openqa/selenium/grid/node/NodeTest.java b/java/test/org/openqa/selenium/grid/node/NodeTest.java index c2a66d2162c4b..b9e8fcc7399de 100644 --- a/java/test/org/openqa/selenium/grid/node/NodeTest.java +++ b/java/test/org/openqa/selenium/grid/node/NodeTest.java @@ -23,8 +23,6 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.assertj.core.api.InstanceOfAssertFactories.MAP; -import static org.junit.jupiter.api.Assertions.assertThrows; -import static org.junit.jupiter.api.Assertions.assertTrue; import static org.openqa.selenium.json.Json.MAP_TYPE; import static org.openqa.selenium.remote.http.Contents.string; import static org.openqa.selenium.remote.http.HttpMethod.DELETE; @@ -402,20 +400,14 @@ void shouldOnlyRespondToWebDriverCommandsForSessionsTheNodeOwns() { assertThat(node2.matches(req2)).isTrue(); // Assert that should not respond to commands for sessions Node 1 does not own - NoSuchSessionException exception = - assertThrows(NoSuchSessionException.class, () -> node.execute(req2)); - assertTrue( - exception - .getMessage() - .startsWith(String.format("Cannot find session with id: %s", session2.getId()))); + HttpResponse res1 = node.execute(req2); + assertThat(res1.getStatus()).isEqualTo(404); + assertThat(Contents.string(res1)).contains("invalid session id"); // Assert that should not respond to commands for sessions Node 2 does not own - NoSuchSessionException exception2 = - assertThrows(NoSuchSessionException.class, () -> node2.execute(req)); - assertTrue( - exception2 - .getMessage() - .startsWith(String.format("Cannot find session with id: %s", session.getId()))); + HttpResponse res2 = node2.execute(req); + assertThat(res2.getStatus()).isEqualTo(404); + assertThat(Contents.string(res2)).contains("invalid session id"); } @Test From 53836c7e8c08bbfc1793f192f867123de59bc893 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Sautter?= Date: Mon, 4 Nov 2024 19:15:30 +0100 Subject: [PATCH 068/135] [java] use annotations to restart the driver in unittests --- .../org/openqa/selenium/WebNetworkTest.java | 38 +++++++----------- .../org/openqa/selenium/WebScriptTest.java | 40 ++++++++----------- .../javascript/JavaScriptTestSuite.java | 13 ------ 3 files changed, 32 insertions(+), 59 deletions(-) diff --git a/java/test/org/openqa/selenium/WebNetworkTest.java b/java/test/org/openqa/selenium/WebNetworkTest.java index 8036b5edce59b..3ad732b8ff6b2 100644 --- a/java/test/org/openqa/selenium/WebNetworkTest.java +++ b/java/test/org/openqa/selenium/WebNetworkTest.java @@ -22,33 +22,19 @@ import java.net.URI; import java.util.function.Predicate; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.openqa.selenium.environment.webserver.AppServer; -import org.openqa.selenium.environment.webserver.NettyAppServer; import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.testing.Ignore; import org.openqa.selenium.testing.JupiterTestBase; +import org.openqa.selenium.testing.NeedsFreshDriver; import org.openqa.selenium.testing.drivers.Browser; class WebNetworkTest extends JupiterTestBase { private String page; - private AppServer server; - - @BeforeEach - public void setUp() { - server = new NettyAppServer(); - server.start(); - } - - @AfterEach - public void cleanUp() { - driver.quit(); - } @Test + @NeedsFreshDriver @Ignore(Browser.CHROME) @Ignore(Browser.EDGE) void canAddAuthenticationHandler() { @@ -56,13 +42,14 @@ void canAddAuthenticationHandler() { .network() .addAuthenticationHandler(new UsernameAndPassword("test", "test")); - page = server.whereIs("basicAuth"); + page = appServer.whereIs("basicAuth"); driver.get(page); assertThat(driver.findElement(By.tagName("h1")).getText()).isEqualTo("authorized"); } @Test + @NeedsFreshDriver @Ignore(Browser.CHROME) @Ignore(Browser.EDGE) void canAddAuthenticationHandlerWithFilter() { @@ -72,13 +59,14 @@ void canAddAuthenticationHandlerWithFilter() { .network() .addAuthenticationHandler(filter, new UsernameAndPassword("test", "test")); - page = server.whereIs("basicAuth"); + page = appServer.whereIs("basicAuth"); driver.get(page); assertThat(driver.findElement(By.tagName("h1")).getText()).isEqualTo("authorized"); } @Test + @NeedsFreshDriver @Ignore(Browser.CHROME) @Ignore(Browser.EDGE) void canAddMultipleAuthenticationHandlersWithFilter() { @@ -92,13 +80,14 @@ void canAddMultipleAuthenticationHandlersWithFilter() { .addAuthenticationHandler( uri -> uri.getPath().contains("test"), new UsernameAndPassword("test1", "test1")); - page = server.whereIs("basicAuth"); + page = appServer.whereIs("basicAuth"); driver.get(page); assertThat(driver.findElement(By.tagName("h1")).getText()).isEqualTo("authorized"); } @Test + @NeedsFreshDriver @Ignore(Browser.CHROME) @Ignore(Browser.EDGE) void canAddMultipleAuthenticationHandlersWithTheSameFilter() { @@ -112,13 +101,14 @@ void canAddMultipleAuthenticationHandlersWithTheSameFilter() { .addAuthenticationHandler( uri -> uri.getPath().contains("basicAuth"), new UsernameAndPassword("test", "test")); - page = server.whereIs("basicAuth"); + page = appServer.whereIs("basicAuth"); driver.get(page); assertThat(driver.findElement(By.tagName("h1")).getText()).isEqualTo("authorized"); } @Test + @NeedsFreshDriver @Ignore(Browser.CHROME) @Ignore(Browser.EDGE) void canRemoveAuthenticationHandler() { @@ -128,7 +118,7 @@ void canRemoveAuthenticationHandler() { .addAuthenticationHandler(new UsernameAndPassword("test", "test")); ((RemoteWebDriver) driver).network().removeAuthenticationHandler(id); - page = server.whereIs("basicAuth"); + page = appServer.whereIs("basicAuth"); driver.get(page); assertThatExceptionOfType(UnhandledAlertException.class) @@ -136,11 +126,12 @@ void canRemoveAuthenticationHandler() { } @Test + @NeedsFreshDriver @Ignore(Browser.CHROME) @Ignore(Browser.EDGE) void canRemoveAuthenticationHandlerThatDoesNotExist() { ((RemoteWebDriver) driver).network().removeAuthenticationHandler(5); - page = server.whereIs("basicAuth"); + page = appServer.whereIs("basicAuth"); driver.get(page); assertThatExceptionOfType(UnhandledAlertException.class) @@ -148,6 +139,7 @@ void canRemoveAuthenticationHandlerThatDoesNotExist() { } @Test + @NeedsFreshDriver @Ignore(Browser.CHROME) @Ignore(Browser.EDGE) void canClearAuthenticationHandlers() { @@ -165,7 +157,7 @@ void canClearAuthenticationHandlers() { .addAuthenticationHandler(new UsernameAndPassword("test1", "test1")); ((RemoteWebDriver) driver).network().clearAuthenticationHandlers(); - page = server.whereIs("basicAuth"); + page = appServer.whereIs("basicAuth"); driver.get(page); assertThatExceptionOfType(UnhandledAlertException.class) diff --git a/java/test/org/openqa/selenium/WebScriptTest.java b/java/test/org/openqa/selenium/WebScriptTest.java index bf7bcae431b66..29522eb060e9c 100644 --- a/java/test/org/openqa/selenium/WebScriptTest.java +++ b/java/test/org/openqa/selenium/WebScriptTest.java @@ -28,43 +28,29 @@ import java.util.concurrent.atomic.AtomicReference; import java.util.function.Consumer; import org.assertj.core.api.Assertions; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.openqa.selenium.bidi.log.ConsoleLogEntry; import org.openqa.selenium.bidi.log.JavascriptLogEntry; import org.openqa.selenium.bidi.log.LogLevel; -import org.openqa.selenium.environment.webserver.AppServer; -import org.openqa.selenium.environment.webserver.NettyAppServer; import org.openqa.selenium.remote.DomMutation; import org.openqa.selenium.remote.RemoteWebDriver; import org.openqa.selenium.support.ui.WebDriverWait; import org.openqa.selenium.testing.JupiterTestBase; +import org.openqa.selenium.testing.NeedsFreshDriver; class WebScriptTest extends JupiterTestBase { String page; - private AppServer server; - - @BeforeEach - public void setUp() { - server = new NettyAppServer(); - server.start(); - } - - @AfterEach - public void cleanUp() { - driver.quit(); - } @Test + @NeedsFreshDriver void canAddConsoleMessageHandler() throws ExecutionException, InterruptedException, TimeoutException { CompletableFuture future = new CompletableFuture<>(); long id = ((RemoteWebDriver) driver).script().addConsoleMessageHandler(future::complete); - page = server.whereIs("/bidi/logEntryAdded.html"); + page = appServer.whereIs("/bidi/logEntryAdded.html"); driver.get(page); driver.findElement(By.id("consoleLog")).click(); @@ -81,6 +67,7 @@ void canAddConsoleMessageHandler() } @Test + @NeedsFreshDriver void canRemoveConsoleMessageHandler() throws ExecutionException, InterruptedException, TimeoutException { CompletableFuture future1 = new CompletableFuture<>(); @@ -96,7 +83,7 @@ void canRemoveConsoleMessageHandler() // Removing the second consumer, so it will no longer get the console message. ((RemoteWebDriver) driver).script().removeConsoleMessageHandler(id2); - page = server.whereIs("/bidi/logEntryAdded.html"); + page = appServer.whereIs("/bidi/logEntryAdded.html"); driver.get(page); driver.findElement(By.id("consoleLog")).click(); @@ -113,12 +100,13 @@ void canRemoveConsoleMessageHandler() } @Test + @NeedsFreshDriver void canAddJsErrorHandler() throws ExecutionException, InterruptedException, TimeoutException { CompletableFuture future = new CompletableFuture<>(); long id = ((RemoteWebDriver) driver).script().addJavaScriptErrorHandler(future::complete); - page = server.whereIs("/bidi/logEntryAdded.html"); + page = appServer.whereIs("/bidi/logEntryAdded.html"); driver.get(page); driver.findElement(By.id("jsException")).click(); @@ -132,6 +120,7 @@ void canAddJsErrorHandler() throws ExecutionException, InterruptedException, Tim } @Test + @NeedsFreshDriver void canRemoveJsErrorHandler() throws ExecutionException, InterruptedException, TimeoutException { CompletableFuture future1 = new CompletableFuture<>(); CompletableFuture future2 = new CompletableFuture<>(); @@ -146,7 +135,7 @@ void canRemoveJsErrorHandler() throws ExecutionException, InterruptedException, // Removing the second consumer, so it will no longer get the JS error. ((RemoteWebDriver) driver).script().removeJavaScriptErrorHandler(id2); - page = server.whereIs("/bidi/logEntryAdded.html"); + page = appServer.whereIs("/bidi/logEntryAdded.html"); driver.get(page); driver.findElement(By.id("jsException")).click(); @@ -166,6 +155,7 @@ void canRemoveJsErrorHandler() throws ExecutionException, InterruptedException, } @Test + @NeedsFreshDriver void canAddMultipleHandlers() throws ExecutionException, InterruptedException, TimeoutException { CompletableFuture future1 = new CompletableFuture<>(); CompletableFuture future2 = new CompletableFuture<>(); @@ -177,7 +167,7 @@ void canAddMultipleHandlers() throws ExecutionException, InterruptedException, T long id1 = ((RemoteWebDriver) driver).script().addJavaScriptErrorHandler(consumer1); long id2 = ((RemoteWebDriver) driver).script().addJavaScriptErrorHandler(consumer2); - page = server.whereIs("/bidi/logEntryAdded.html"); + page = appServer.whereIs("/bidi/logEntryAdded.html"); driver.get(page); driver.findElement(By.id("jsException")).click(); @@ -193,6 +183,7 @@ void canAddMultipleHandlers() throws ExecutionException, InterruptedException, T } @Test + @NeedsFreshDriver void canAddDomMutationHandler() throws InterruptedException { AtomicReference seen = new AtomicReference<>(); CountDownLatch latch = new CountDownLatch(1); @@ -220,6 +211,7 @@ void canAddDomMutationHandler() throws InterruptedException { } @Test + @NeedsFreshDriver void canRemoveDomMutationHandler() throws InterruptedException { AtomicReference seen = new AtomicReference<>(); CountDownLatch latch = new CountDownLatch(1); @@ -247,6 +239,7 @@ void canRemoveDomMutationHandler() throws InterruptedException { } @Test + @NeedsFreshDriver void canPinScript() throws ExecutionException, InterruptedException, TimeoutException { CompletableFuture future = new CompletableFuture<>(); @@ -254,7 +247,7 @@ void canPinScript() throws ExecutionException, InterruptedException, TimeoutExce long id = ((RemoteWebDriver) driver).script().addConsoleMessageHandler(future::complete); - page = server.whereIs("/bidi/logEntryAdded.html"); + page = appServer.whereIs("/bidi/logEntryAdded.html"); driver.get(page); ConsoleLogEntry logEntry = future.get(5, TimeUnit.SECONDS); @@ -265,6 +258,7 @@ void canPinScript() throws ExecutionException, InterruptedException, TimeoutExce } @Test + @NeedsFreshDriver void canUnpinScript() throws ExecutionException, InterruptedException, TimeoutException { CountDownLatch latch = new CountDownLatch(2); @@ -276,7 +270,7 @@ void canUnpinScript() throws ExecutionException, InterruptedException, TimeoutEx .script() .addConsoleMessageHandler(consoleLogEntry -> latch.countDown()); - page = server.whereIs("/bidi/logEntryAdded.html"); + page = appServer.whereIs("/bidi/logEntryAdded.html"); driver.get(page); diff --git a/java/test/org/openqa/selenium/javascript/JavaScriptTestSuite.java b/java/test/org/openqa/selenium/javascript/JavaScriptTestSuite.java index a9052a500b8a3..4e067e0ec09bb 100644 --- a/java/test/org/openqa/selenium/javascript/JavaScriptTestSuite.java +++ b/java/test/org/openqa/selenium/javascript/JavaScriptTestSuite.java @@ -30,14 +30,11 @@ import java.util.function.Function; import java.util.function.Supplier; import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DynamicTest; import org.junit.jupiter.api.TestFactory; import org.openqa.selenium.WebDriver; import org.openqa.selenium.build.InProject; import org.openqa.selenium.environment.GlobalTestEnvironment; -import org.openqa.selenium.environment.InProcessTestEnvironment; -import org.openqa.selenium.environment.TestEnvironment; import org.openqa.selenium.environment.webserver.AppServer; import org.openqa.selenium.testing.drivers.WebDriverBuilder; @@ -48,8 +45,6 @@ class JavaScriptTestSuite { private final long timeout; - private TestEnvironment testEnvironment; - public JavaScriptTestSuite() { this.timeout = Math.max(0, Long.getLong("js.test.timeout", 0)); this.driverSupplier = new DriverSupplier(); @@ -59,16 +54,8 @@ private static boolean isBazel() { return InProject.findRunfilesRoot() != null; } - @BeforeEach - public void setup() { - testEnvironment = GlobalTestEnvironment.getOrCreate(InProcessTestEnvironment::new); - } - @AfterEach public void teardown() throws IOException { - if (testEnvironment != null) { - testEnvironment.stop(); - } if (driverSupplier != null) { ((Closeable) driverSupplier).close(); } From 6f41ef9dadb4fe2bd6475a33c618f8b55a915ae8 Mon Sep 17 00:00:00 2001 From: Nikolay Borisenko <22616990+nvborisenko@users.noreply.github.com> Date: Mon, 4 Nov 2024 21:27:29 +0300 Subject: [PATCH 069/135] [dotnet] Add more well-known dictionary types for capability json serialization --- dotnet/src/webdriver/Command.cs | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/dotnet/src/webdriver/Command.cs b/dotnet/src/webdriver/Command.cs index e6d7c422cbc1e..fd35c386de0bb 100644 --- a/dotnet/src/webdriver/Command.cs +++ b/dotnet/src/webdriver/Command.cs @@ -157,12 +157,27 @@ private static Dictionary ConvertParametersFromJson(string value // Selenium WebDriver types [JsonSerializable(typeof(char[]))] [JsonSerializable(typeof(byte[]))] - [JsonSerializable(typeof(Dictionary))] [JsonSerializable(typeof(Cookie))] [JsonSerializable(typeof(ReturnedCookie))] [JsonSerializable(typeof(Proxy))] - internal partial class CommandJsonSerializerContext : JsonSerializerContext - { - } + // Selenium Dictionaries, primarily used in Capabilities + [JsonSerializable(typeof(Dictionary))] + + [JsonSerializable(typeof(Dictionary))] + [JsonSerializable(typeof(Dictionary))] + [JsonSerializable(typeof(Dictionary))] + [JsonSerializable(typeof(Dictionary))] + [JsonSerializable(typeof(Dictionary))] + [JsonSerializable(typeof(Dictionary))] + [JsonSerializable(typeof(Dictionary))] + [JsonSerializable(typeof(Dictionary))] + [JsonSerializable(typeof(Dictionary))] + [JsonSerializable(typeof(Dictionary))] + [JsonSerializable(typeof(Dictionary))] + [JsonSerializable(typeof(Dictionary))] + [JsonSerializable(typeof(Dictionary))] + [JsonSerializable(typeof(Dictionary))] + [JsonSerializable(typeof(Dictionary))] + internal partial class CommandJsonSerializerContext : JsonSerializerContext; } From 4480d12f350179db62a394a77b60d347a22e12c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Sautter?= Date: Mon, 4 Nov 2024 19:39:00 +0100 Subject: [PATCH 070/135] [java] restore testEnvironment in JavaScriptTestSuite --- .../selenium/javascript/JavaScriptTestSuite.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/java/test/org/openqa/selenium/javascript/JavaScriptTestSuite.java b/java/test/org/openqa/selenium/javascript/JavaScriptTestSuite.java index 4e067e0ec09bb..002bfd5d205b8 100644 --- a/java/test/org/openqa/selenium/javascript/JavaScriptTestSuite.java +++ b/java/test/org/openqa/selenium/javascript/JavaScriptTestSuite.java @@ -30,11 +30,14 @@ import java.util.function.Function; import java.util.function.Supplier; import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DynamicTest; import org.junit.jupiter.api.TestFactory; import org.openqa.selenium.WebDriver; import org.openqa.selenium.build.InProject; import org.openqa.selenium.environment.GlobalTestEnvironment; +import org.openqa.selenium.environment.InProcessTestEnvironment; +import org.openqa.selenium.environment.TestEnvironment; import org.openqa.selenium.environment.webserver.AppServer; import org.openqa.selenium.testing.drivers.WebDriverBuilder; @@ -45,6 +48,8 @@ class JavaScriptTestSuite { private final long timeout; + private TestEnvironment testEnvironment; + public JavaScriptTestSuite() { this.timeout = Math.max(0, Long.getLong("js.test.timeout", 0)); this.driverSupplier = new DriverSupplier(); @@ -54,8 +59,17 @@ private static boolean isBazel() { return InProject.findRunfilesRoot() != null; } + @BeforeEach + public void setup() { + // this field is actually in use, javascript test do access it + testEnvironment = GlobalTestEnvironment.getOrCreate(InProcessTestEnvironment::new); + } + @AfterEach public void teardown() throws IOException { + if (testEnvironment != null) { + testEnvironment.stop(); + } if (driverSupplier != null) { ((Closeable) driverSupplier).close(); } From 84a72f6ba75e877bd5829563b71659e7389fd32b Mon Sep 17 00:00:00 2001 From: joerg1985 <16140691+joerg1985@users.noreply.github.com> Date: Tue, 5 Nov 2024 10:00:19 +0100 Subject: [PATCH 071/135] [java] use common annotations in BiDi tests (#14702) --- .../org/openqa/selenium/bidi/BiDiTest.java | 24 +------ .../bidi/browser/BrowserCommandsTest.java | 20 ++---- .../BrowsingContextInspectorTest.java | 46 +++++-------- .../browsingcontext/BrowsingContextTest.java | 65 ++++++++++-------- .../bidi/browsingcontext/LocateNodesTest.java | 30 +++------ .../bidi/input/ReleaseCommandTest.java | 10 +-- .../bidi/input/SetFilesCommandTest.java | 11 ++-- .../selenium/bidi/log/LogInspectorTest.java | 66 +++++++++---------- .../network/AddInterceptParametersTest.java | 28 ++------ .../bidi/network/NetworkCommandsTest.java | 48 ++++++-------- .../bidi/network/NetworkEventsTest.java | 39 ++++------- .../script/CallFunctionParameterTest.java | 36 +++++----- .../bidi/script/EvaluateParametersTest.java | 28 +++----- .../bidi/script/ScriptCommandsTest.java | 55 +++++++++------- .../bidi/script/ScriptEventsTest.java | 26 ++------ .../grid/router/RemoteWebDriverBiDiTest.java | 17 +++-- 16 files changed, 223 insertions(+), 326 deletions(-) diff --git a/java/test/org/openqa/selenium/bidi/BiDiTest.java b/java/test/org/openqa/selenium/bidi/BiDiTest.java index f2c34b2fc1b85..26212c80eefcd 100644 --- a/java/test/org/openqa/selenium/bidi/BiDiTest.java +++ b/java/test/org/openqa/selenium/bidi/BiDiTest.java @@ -18,15 +18,12 @@ package org.openqa.selenium.bidi; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; -import static org.openqa.selenium.testing.Safely.safelyCall; import static org.openqa.selenium.testing.drivers.Browser.EDGE; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.openqa.selenium.By; import org.openqa.selenium.bidi.browsingcontext.BrowsingContext; @@ -35,24 +32,17 @@ import org.openqa.selenium.bidi.log.JavascriptLogEntry; import org.openqa.selenium.bidi.log.LogLevel; import org.openqa.selenium.bidi.module.LogInspector; -import org.openqa.selenium.environment.webserver.AppServer; -import org.openqa.selenium.environment.webserver.NettyAppServer; import org.openqa.selenium.testing.JupiterTestBase; +import org.openqa.selenium.testing.NeedsFreshDriver; import org.openqa.selenium.testing.NotYetImplemented; class BiDiTest extends JupiterTestBase { String page; - private AppServer server; - - @BeforeEach - public void setUp() { - server = new NettyAppServer(); - server.start(); - } @Test @NotYetImplemented(EDGE) + @NeedsFreshDriver void canNavigateAndListenToErrors() throws ExecutionException, InterruptedException, TimeoutException { try (org.openqa.selenium.bidi.module.LogInspector logInspector = new LogInspector(driver)) { @@ -61,7 +51,7 @@ void canNavigateAndListenToErrors() BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); - page = server.whereIs("/bidi/logEntryAdded.html"); + page = appServer.whereIs("/bidi/logEntryAdded.html"); NavigationResult info = browsingContext.navigate(page, ReadinessState.COMPLETE); // If navigation was successful, we expect both the url and navigation id to be set @@ -78,12 +68,4 @@ void canNavigateAndListenToErrors() assertThat(logEntry.getLevel()).isEqualTo(LogLevel.ERROR); } } - - @AfterEach - public void quitDriver() { - if (driver != null) { - driver.quit(); - } - safelyCall(server::stop); - } } diff --git a/java/test/org/openqa/selenium/bidi/browser/BrowserCommandsTest.java b/java/test/org/openqa/selenium/bidi/browser/BrowserCommandsTest.java index f196b3e6c2b18..b35b9d4c14f45 100644 --- a/java/test/org/openqa/selenium/bidi/browser/BrowserCommandsTest.java +++ b/java/test/org/openqa/selenium/bidi/browser/BrowserCommandsTest.java @@ -18,31 +18,25 @@ package org.openqa.selenium.bidi.browser; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; -import static org.openqa.selenium.testing.Safely.safelyCall; -import static org.openqa.selenium.testing.drivers.Browser.*; import java.util.List; -import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.openqa.selenium.bidi.module.Browser; -import org.openqa.selenium.environment.webserver.AppServer; -import org.openqa.selenium.environment.webserver.NettyAppServer; import org.openqa.selenium.testing.JupiterTestBase; +import org.openqa.selenium.testing.NeedsFreshDriver; class BrowserCommandsTest extends JupiterTestBase { - private AppServer server; private Browser browser; @BeforeEach public void setUp() { - server = new NettyAppServer(); - server.start(); browser = new Browser(driver); } @Test + @NeedsFreshDriver void canCreateAUserContext() { String userContext = browser.createUserContext(); @@ -52,6 +46,7 @@ void canCreateAUserContext() { } @Test + @NeedsFreshDriver void canGetUserContexts() { String userContext1 = browser.createUserContext(); String userContext2 = browser.createUserContext(); @@ -64,6 +59,7 @@ void canGetUserContexts() { } @Test + @NeedsFreshDriver void canRemoveUserContext() { String userContext1 = browser.createUserContext(); String userContext2 = browser.createUserContext(); @@ -79,12 +75,4 @@ void canRemoveUserContext() { browser.removeUserContext(userContext1); } - - @AfterEach - public void quitDriver() { - if (driver != null) { - driver.quit(); - } - safelyCall(server::stop); - } } diff --git a/java/test/org/openqa/selenium/bidi/browsingcontext/BrowsingContextInspectorTest.java b/java/test/org/openqa/selenium/bidi/browsingcontext/BrowsingContextInspectorTest.java index a92110c96eb15..adab1e9305c1c 100644 --- a/java/test/org/openqa/selenium/bidi/browsingcontext/BrowsingContextInspectorTest.java +++ b/java/test/org/openqa/selenium/bidi/browsingcontext/BrowsingContextInspectorTest.java @@ -18,34 +18,22 @@ package org.openqa.selenium.bidi.browsingcontext; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; -import static org.openqa.selenium.testing.Safely.safelyCall; -import static org.openqa.selenium.testing.drivers.Browser.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.openqa.selenium.By; import org.openqa.selenium.WindowType; import org.openqa.selenium.bidi.module.BrowsingContextInspector; -import org.openqa.selenium.environment.webserver.AppServer; -import org.openqa.selenium.environment.webserver.NettyAppServer; import org.openqa.selenium.testing.JupiterTestBase; +import org.openqa.selenium.testing.NeedsFreshDriver; class BrowsingContextInspectorTest extends JupiterTestBase { - private AppServer server; - - @BeforeEach - public void setUp() { - server = new NettyAppServer(); - server.start(); - } - @Test + @NeedsFreshDriver void canListenToWindowBrowsingContextCreatedEvent() throws ExecutionException, InterruptedException, TimeoutException { try (BrowsingContextInspector inspector = new BrowsingContextInspector(driver)) { @@ -66,6 +54,7 @@ void canListenToWindowBrowsingContextCreatedEvent() } @Test + @NeedsFreshDriver void canListenToBrowsingContextDestroyedEvent() throws ExecutionException, InterruptedException, TimeoutException { try (BrowsingContextInspector inspector = new BrowsingContextInspector(driver)) { @@ -87,6 +76,7 @@ void canListenToBrowsingContextDestroyedEvent() } @Test + @NeedsFreshDriver void canListenToTabBrowsingContextCreatedEvent() throws ExecutionException, InterruptedException, TimeoutException { try (BrowsingContextInspector inspector = new BrowsingContextInspector(driver)) { @@ -106,6 +96,7 @@ void canListenToTabBrowsingContextCreatedEvent() } @Test + @NeedsFreshDriver void canListenToDomContentLoadedEvent() throws ExecutionException, InterruptedException, TimeoutException { try (BrowsingContextInspector inspector = new BrowsingContextInspector(driver)) { @@ -113,7 +104,7 @@ void canListenToDomContentLoadedEvent() inspector.onDomContentLoaded(future::complete); BrowsingContext context = new BrowsingContext(driver, driver.getWindowHandle()); - context.navigate(server.whereIs("/bidi/logEntryAdded.html"), ReadinessState.COMPLETE); + context.navigate(appServer.whereIs("/bidi/logEntryAdded.html"), ReadinessState.COMPLETE); NavigationInfo navigationInfo = future.get(5, TimeUnit.SECONDS); assertThat(navigationInfo.getBrowsingContextId()).isEqualTo(context.getId()); @@ -122,6 +113,7 @@ void canListenToDomContentLoadedEvent() } @Test + @NeedsFreshDriver void canListenToBrowsingContextLoadedEvent() throws ExecutionException, InterruptedException, TimeoutException { try (BrowsingContextInspector inspector = new BrowsingContextInspector(driver)) { @@ -129,7 +121,7 @@ void canListenToBrowsingContextLoadedEvent() inspector.onBrowsingContextLoaded(future::complete); BrowsingContext context = new BrowsingContext(driver, driver.getWindowHandle()); - context.navigate(server.whereIs("/bidi/logEntryAdded.html"), ReadinessState.COMPLETE); + context.navigate(appServer.whereIs("/bidi/logEntryAdded.html"), ReadinessState.COMPLETE); NavigationInfo navigationInfo = future.get(5, TimeUnit.SECONDS); assertThat(navigationInfo.getBrowsingContextId()).isEqualTo(context.getId()); @@ -138,6 +130,7 @@ void canListenToBrowsingContextLoadedEvent() } @Test + @NeedsFreshDriver void canListenToNavigationStartedEvent() throws ExecutionException, InterruptedException, TimeoutException { try (BrowsingContextInspector inspector = new BrowsingContextInspector(driver)) { @@ -145,7 +138,7 @@ void canListenToNavigationStartedEvent() inspector.onNavigationStarted(future::complete); BrowsingContext context = new BrowsingContext(driver, driver.getWindowHandle()); - context.navigate(server.whereIs("/bidi/logEntryAdded.html"), ReadinessState.COMPLETE); + context.navigate(appServer.whereIs("/bidi/logEntryAdded.html"), ReadinessState.COMPLETE); NavigationInfo navigationInfo = future.get(5, TimeUnit.SECONDS); assertThat(navigationInfo.getBrowsingContextId()).isEqualTo(context.getId()); @@ -154,18 +147,19 @@ void canListenToNavigationStartedEvent() } @Test + @NeedsFreshDriver void canListenToFragmentNavigatedEvent() throws ExecutionException, InterruptedException, TimeoutException { try (BrowsingContextInspector inspector = new BrowsingContextInspector(driver)) { CompletableFuture future = new CompletableFuture<>(); BrowsingContext context = new BrowsingContext(driver, driver.getWindowHandle()); - context.navigate(server.whereIs("/linked_image.html"), ReadinessState.COMPLETE); + context.navigate(appServer.whereIs("/linked_image.html"), ReadinessState.COMPLETE); inspector.onFragmentNavigated(future::complete); context.navigate( - server.whereIs("/linked_image.html#linkToAnchorOnThisPage"), ReadinessState.COMPLETE); + appServer.whereIs("/linked_image.html#linkToAnchorOnThisPage"), ReadinessState.COMPLETE); NavigationInfo navigationInfo = future.get(5, TimeUnit.SECONDS); assertThat(navigationInfo.getBrowsingContextId()).isEqualTo(context.getId()); @@ -174,6 +168,7 @@ void canListenToFragmentNavigatedEvent() } @Test + @NeedsFreshDriver void canListenToUserPromptOpenedEvent() throws ExecutionException, InterruptedException, TimeoutException { try (BrowsingContextInspector inspector = new BrowsingContextInspector(driver)) { @@ -182,7 +177,7 @@ void canListenToUserPromptOpenedEvent() BrowsingContext context = new BrowsingContext(driver, driver.getWindowHandle()); inspector.onUserPromptOpened(future::complete); - driver.get(server.whereIs("/alerts.html")); + driver.get(appServer.whereIs("/alerts.html")); driver.findElement(By.id("alert")).click(); @@ -193,6 +188,7 @@ void canListenToUserPromptOpenedEvent() } @Test + @NeedsFreshDriver // TODO: This test is flaky for comparing the browsing context id for Chrome and Edge. Fix flaky // test. void canListenToUserPromptClosedEvent() @@ -203,7 +199,7 @@ void canListenToUserPromptClosedEvent() BrowsingContext context = new BrowsingContext(driver, driver.getWindowHandle()); inspector.onUserPromptClosed(future::complete); - driver.get(server.whereIs("/alerts.html")); + driver.get(appServer.whereIs("/alerts.html")); driver.findElement(By.id("prompt")).click(); @@ -216,12 +212,4 @@ void canListenToUserPromptClosedEvent() assertThat(userPromptClosed.getAccepted()).isTrue(); } } - - @AfterEach - public void quitDriver() { - if (driver != null) { - driver.quit(); - } - safelyCall(server::stop); - } } diff --git a/java/test/org/openqa/selenium/bidi/browsingcontext/BrowsingContextTest.java b/java/test/org/openqa/selenium/bidi/browsingcontext/BrowsingContextTest.java index af26b601e8551..44e0e0ed8b905 100644 --- a/java/test/org/openqa/selenium/bidi/browsingcontext/BrowsingContextTest.java +++ b/java/test/org/openqa/selenium/bidi/browsingcontext/BrowsingContextTest.java @@ -22,11 +22,8 @@ import static org.openqa.selenium.support.ui.ExpectedConditions.alertIsPresent; import static org.openqa.selenium.support.ui.ExpectedConditions.titleIs; import static org.openqa.selenium.support.ui.ExpectedConditions.visibilityOfElementLocated; -import static org.openqa.selenium.testing.Safely.safelyCall; import java.util.List; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.openqa.selenium.By; import org.openqa.selenium.JavascriptExecutor; @@ -35,24 +32,16 @@ import org.openqa.selenium.WindowType; import org.openqa.selenium.bidi.BiDiException; import org.openqa.selenium.bidi.module.Browser; -import org.openqa.selenium.environment.webserver.AppServer; -import org.openqa.selenium.environment.webserver.NettyAppServer; import org.openqa.selenium.environment.webserver.Page; import org.openqa.selenium.print.PrintOptions; import org.openqa.selenium.remote.RemoteWebElement; import org.openqa.selenium.testing.JupiterTestBase; +import org.openqa.selenium.testing.NeedsFreshDriver; class BrowsingContextTest extends JupiterTestBase { - private AppServer server; - - @BeforeEach - public void setUp() { - server = new NettyAppServer(); - server.start(); - } - @Test + @NeedsFreshDriver void canCreateABrowsingContextForGivenId() { String id = driver.getWindowHandle(); BrowsingContext browsingContext = new BrowsingContext(driver, id); @@ -60,12 +49,14 @@ void canCreateABrowsingContextForGivenId() { } @Test + @NeedsFreshDriver void canCreateAWindow() { BrowsingContext browsingContext = new BrowsingContext(driver, WindowType.WINDOW); assertThat(browsingContext.getId()).isNotEmpty(); } @Test + @NeedsFreshDriver void canCreateAWindowWithAReferenceContext() { BrowsingContext browsingContext = new BrowsingContext( @@ -76,12 +67,14 @@ void canCreateAWindowWithAReferenceContext() { } @Test + @NeedsFreshDriver void canCreateATab() { BrowsingContext browsingContext = new BrowsingContext(driver, WindowType.TAB); assertThat(browsingContext.getId()).isNotEmpty(); } @Test + @NeedsFreshDriver void canCreateATabWithAReferenceContext() { BrowsingContext browsingContext = new BrowsingContext( @@ -91,6 +84,7 @@ void canCreateATabWithAReferenceContext() { } @Test + @NeedsFreshDriver void canCreateAContextWithAllParameters() { Browser browser = new Browser(driver); String userContextId = browser.createUserContext(); @@ -107,10 +101,11 @@ void canCreateAContextWithAllParameters() { } @Test + @NeedsFreshDriver void canNavigateToAUrl() { BrowsingContext browsingContext = new BrowsingContext(driver, WindowType.TAB); - String url = server.whereIs("/bidi/logEntryAdded.html"); + String url = appServer.whereIs("/bidi/logEntryAdded.html"); NavigationResult info = browsingContext.navigate(url); assertThat(browsingContext.getId()).isNotEmpty(); @@ -118,10 +113,11 @@ void canNavigateToAUrl() { } @Test + @NeedsFreshDriver void canNavigateToAUrlWithReadinessState() { BrowsingContext browsingContext = new BrowsingContext(driver, WindowType.TAB); - String url = server.whereIs("/bidi/logEntryAdded.html"); + String url = appServer.whereIs("/bidi/logEntryAdded.html"); NavigationResult info = browsingContext.navigate(url, ReadinessState.COMPLETE); assertThat(browsingContext.getId()).isNotEmpty(); @@ -129,11 +125,12 @@ void canNavigateToAUrlWithReadinessState() { } @Test + @NeedsFreshDriver void canGetTreeWithAChild() { String referenceContextId = driver.getWindowHandle(); BrowsingContext parentWindow = new BrowsingContext(driver, referenceContextId); - String url = server.whereIs("iframes.html"); + String url = appServer.whereIs("iframes.html"); parentWindow.navigate(url, ReadinessState.COMPLETE); @@ -147,11 +144,12 @@ void canGetTreeWithAChild() { } @Test + @NeedsFreshDriver void canGetTreeWithDepth() { String referenceContextId = driver.getWindowHandle(); BrowsingContext parentWindow = new BrowsingContext(driver, referenceContextId); - String url = server.whereIs("iframes.html"); + String url = appServer.whereIs("iframes.html"); parentWindow.navigate(url, ReadinessState.COMPLETE); @@ -164,6 +162,7 @@ void canGetTreeWithDepth() { } @Test + @NeedsFreshDriver void canGetAllTopLevelContexts() { BrowsingContext window1 = new BrowsingContext(driver, driver.getWindowHandle()); BrowsingContext window2 = new BrowsingContext(driver, WindowType.WINDOW); @@ -174,6 +173,7 @@ void canGetAllTopLevelContexts() { } @Test + @NeedsFreshDriver void canCloseAWindow() { BrowsingContext window1 = new BrowsingContext(driver, WindowType.WINDOW); BrowsingContext window2 = new BrowsingContext(driver, WindowType.WINDOW); @@ -184,6 +184,7 @@ void canCloseAWindow() { } @Test + @NeedsFreshDriver void canCloseATab() { BrowsingContext tab1 = new BrowsingContext(driver, WindowType.TAB); BrowsingContext tab2 = new BrowsingContext(driver, WindowType.TAB); @@ -194,6 +195,7 @@ void canCloseATab() { } @Test + @NeedsFreshDriver void canActivateABrowsingContext() { BrowsingContext window1 = new BrowsingContext(driver, driver.getWindowHandle()); // 2nd window is focused @@ -211,10 +213,11 @@ void canActivateABrowsingContext() { // Refer: https://github.com/w3c/webdriver-bidi/issues/187 @Test + @NeedsFreshDriver void canReloadABrowsingContext() { BrowsingContext browsingContext = new BrowsingContext(driver, WindowType.TAB); - String url = server.whereIs("/bidi/logEntryAdded.html"); + String url = appServer.whereIs("/bidi/logEntryAdded.html"); browsingContext.navigate(url, ReadinessState.COMPLETE); NavigationResult reloadInfo = browsingContext.reload(); @@ -223,10 +226,11 @@ void canReloadABrowsingContext() { } @Test + @NeedsFreshDriver void canReloadWithReadinessState() { BrowsingContext browsingContext = new BrowsingContext(driver, WindowType.TAB); - String url = server.whereIs("/bidi/logEntryAdded.html"); + String url = appServer.whereIs("/bidi/logEntryAdded.html"); browsingContext.navigate(url, ReadinessState.COMPLETE); NavigationResult reloadInfo = browsingContext.reload(ReadinessState.COMPLETE); @@ -236,6 +240,7 @@ void canReloadWithReadinessState() { } @Test + @NeedsFreshDriver void canHandleUserPrompt() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); @@ -250,6 +255,7 @@ void canHandleUserPrompt() { } @Test + @NeedsFreshDriver void canAcceptUserPrompt() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); @@ -264,6 +270,7 @@ void canAcceptUserPrompt() { } @Test + @NeedsFreshDriver void canDismissUserPrompt() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); @@ -278,6 +285,7 @@ void canDismissUserPrompt() { } @Test + @NeedsFreshDriver void canPassUserTextToUserPrompt() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); @@ -294,6 +302,7 @@ void canPassUserTextToUserPrompt() { } @Test + @NeedsFreshDriver void canAcceptUserPromptWithUserText() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); @@ -310,6 +319,7 @@ void canAcceptUserPromptWithUserText() { } @Test + @NeedsFreshDriver void canDismissUserPromptWithUserText() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); @@ -333,6 +343,7 @@ void canDismissUserPromptWithUserText() { // TODO: A potential solution can be replicating classic WebDriver screenshot tests. // Meanwhile, trusting the browsers to do the right thing. @Test + @NeedsFreshDriver void canCaptureScreenshot() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); @@ -344,6 +355,7 @@ void canCaptureScreenshot() { } @Test + @NeedsFreshDriver void canCaptureScreenshotWithAllParameters() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); @@ -369,6 +381,7 @@ void canCaptureScreenshotWithAllParameters() { } @Test + @NeedsFreshDriver void canCaptureScreenshotOfViewport() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); @@ -385,6 +398,7 @@ void canCaptureScreenshotOfViewport() { } @Test + @NeedsFreshDriver void canCaptureElementScreenshot() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); @@ -399,6 +413,7 @@ void canCaptureElementScreenshot() { } @Test + @NeedsFreshDriver void canSetViewport() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); driver.get(appServer.whereIs("formPage.html")); @@ -415,6 +430,7 @@ void canSetViewport() { } @Test + @NeedsFreshDriver void canSetViewportWithDevicePixelRatio() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); driver.get(appServer.whereIs("formPage.html")); @@ -436,6 +452,7 @@ void canSetViewportWithDevicePixelRatio() { } @Test + @NeedsFreshDriver void canPrintPage() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); @@ -453,6 +470,7 @@ void canPrintPage() { } @Test + @NeedsFreshDriver void canNavigateBackInTheBrowserHistory() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); browsingContext.navigate(pages.formPage, ReadinessState.COMPLETE); @@ -465,6 +483,7 @@ void canNavigateBackInTheBrowserHistory() { } @Test + @NeedsFreshDriver void canNavigateForwardInTheBrowserHistory() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); browsingContext.navigate(pages.formPage, ReadinessState.COMPLETE); @@ -506,12 +525,4 @@ private String promptPage() { private boolean getDocumentFocus() { return (boolean) ((JavascriptExecutor) driver).executeScript("return document.hasFocus();"); } - - @AfterEach - public void quitDriver() { - if (driver != null) { - driver.quit(); - } - safelyCall(server::stop); - } } diff --git a/java/test/org/openqa/selenium/bidi/browsingcontext/LocateNodesTest.java b/java/test/org/openqa/selenium/bidi/browsingcontext/LocateNodesTest.java index c1f967ebc36ba..611f3c18ba086 100644 --- a/java/test/org/openqa/selenium/bidi/browsingcontext/LocateNodesTest.java +++ b/java/test/org/openqa/selenium/bidi/browsingcontext/LocateNodesTest.java @@ -17,15 +17,12 @@ package org.openqa.selenium.bidi.browsingcontext; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; -import static org.openqa.selenium.testing.Safely.safelyCall; import static org.openqa.selenium.testing.drivers.Browser.*; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Optional; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.openqa.selenium.bidi.module.Script; import org.openqa.selenium.bidi.script.EvaluateResult; @@ -35,21 +32,14 @@ import org.openqa.selenium.bidi.script.RemoteReference; import org.openqa.selenium.bidi.script.RemoteValue; import org.openqa.selenium.bidi.script.ResultOwnership; -import org.openqa.selenium.environment.webserver.AppServer; -import org.openqa.selenium.environment.webserver.NettyAppServer; import org.openqa.selenium.testing.JupiterTestBase; +import org.openqa.selenium.testing.NeedsFreshDriver; import org.openqa.selenium.testing.NotYetImplemented; public class LocateNodesTest extends JupiterTestBase { - private AppServer server; - - @BeforeEach - public void setUp() { - server = new NettyAppServer(); - server.start(); - } @Test + @NeedsFreshDriver void canLocateNodes() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); assertThat(browsingContext.getId()).isNotEmpty(); @@ -63,6 +53,7 @@ void canLocateNodes() { } @Test + @NeedsFreshDriver void canLocateNodesWithJustLocator() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); assertThat(browsingContext.getId()).isNotEmpty(); @@ -74,6 +65,7 @@ void canLocateNodesWithJustLocator() { } @Test + @NeedsFreshDriver void canLocateNode() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); assertThat(browsingContext.getId()).isNotEmpty(); @@ -85,6 +77,7 @@ void canLocateNode() { } @Test + @NeedsFreshDriver void canLocateNodesWithCSSLocator() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); assertThat(browsingContext.getId()).isNotEmpty(); @@ -107,6 +100,7 @@ void canLocateNodesWithCSSLocator() { } @Test + @NeedsFreshDriver void canLocateNodesWithXPathLocator() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); assertThat(browsingContext.getId()).isNotEmpty(); @@ -129,6 +123,7 @@ void canLocateNodesWithXPathLocator() { } @Test + @NeedsFreshDriver @NotYetImplemented(FIREFOX) void canLocateNodesWithInnerText() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); @@ -148,6 +143,7 @@ void canLocateNodesWithInnerText() { } @Test + @NeedsFreshDriver void canLocateNodesWithMaxNodeCount() { BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); assertThat(browsingContext.getId()).isNotEmpty(); @@ -162,6 +158,7 @@ void canLocateNodesWithMaxNodeCount() { } @Test + @NeedsFreshDriver void canLocateNodesGivenStartNodes() { String handle = driver.getWindowHandle(); BrowsingContext browsingContext = new BrowsingContext(driver, handle); @@ -200,6 +197,7 @@ void canLocateNodesGivenStartNodes() { } @Test + @NeedsFreshDriver void canLocateNodesInAGivenSandbox() { String sandbox = "sandbox"; BrowsingContext browsingContext = new BrowsingContext(driver, driver.getWindowHandle()); @@ -241,12 +239,4 @@ void canLocateNodesInAGivenSandbox() { String sharedId = (String) ((RemoteValue) sharedIdMap.get("sharedId")).getValue().get(); assertThat(sharedId).isEqualTo(nodeId); } - - @AfterEach - public void quitDriver() { - if (driver != null) { - driver.quit(); - } - safelyCall(server::stop); - } } diff --git a/java/test/org/openqa/selenium/bidi/input/ReleaseCommandTest.java b/java/test/org/openqa/selenium/bidi/input/ReleaseCommandTest.java index f973be888bd0c..44555f8118544 100644 --- a/java/test/org/openqa/selenium/bidi/input/ReleaseCommandTest.java +++ b/java/test/org/openqa/selenium/bidi/input/ReleaseCommandTest.java @@ -27,29 +27,25 @@ import org.openqa.selenium.JavascriptExecutor; import org.openqa.selenium.WebElement; import org.openqa.selenium.bidi.module.Input; -import org.openqa.selenium.environment.webserver.AppServer; -import org.openqa.selenium.environment.webserver.NettyAppServer; import org.openqa.selenium.interactions.Actions; import org.openqa.selenium.testing.JupiterTestBase; +import org.openqa.selenium.testing.NeedsFreshDriver; public class ReleaseCommandTest extends JupiterTestBase { private Input input; private String windowHandle; - private AppServer server; - @BeforeEach public void setUp() { windowHandle = driver.getWindowHandle(); input = new Input(driver); - server = new NettyAppServer(); - server.start(); } @Test + @NeedsFreshDriver public void testReleaseInBrowsingContext() { - driver.get(server.whereIs("/bidi/release_action.html")); + driver.get(appServer.whereIs("/bidi/release_action.html")); WebElement inputTextBox = driver.findElement(By.id("keys")); diff --git a/java/test/org/openqa/selenium/bidi/input/SetFilesCommandTest.java b/java/test/org/openqa/selenium/bidi/input/SetFilesCommandTest.java index 87a9e5e7d8069..0439fd7329f59 100644 --- a/java/test/org/openqa/selenium/bidi/input/SetFilesCommandTest.java +++ b/java/test/org/openqa/selenium/bidi/input/SetFilesCommandTest.java @@ -29,27 +29,23 @@ import org.openqa.selenium.WebElement; import org.openqa.selenium.bidi.module.Input; import org.openqa.selenium.bidi.script.RemoteReference; -import org.openqa.selenium.environment.webserver.AppServer; -import org.openqa.selenium.environment.webserver.NettyAppServer; import org.openqa.selenium.remote.RemoteWebElement; import org.openqa.selenium.testing.JupiterTestBase; +import org.openqa.selenium.testing.NeedsFreshDriver; public class SetFilesCommandTest extends JupiterTestBase { private Input input; private String windowHandle; - private AppServer server; - @BeforeEach public void setUp() { windowHandle = driver.getWindowHandle(); input = new Input(driver); - server = new NettyAppServer(); - server.start(); } @Test + @NeedsFreshDriver void canSetFiles() throws IOException { driver.get(pages.formPage); WebElement uploadElement = driver.findElement(By.id("upload")); @@ -71,6 +67,7 @@ void canSetFiles() throws IOException { } @Test + @NeedsFreshDriver public void canSetFilesWithElementId() throws IOException { driver.get(pages.formPage); WebElement uploadElement = driver.findElement(By.id("upload")); @@ -88,6 +85,7 @@ public void canSetFilesWithElementId() throws IOException { } @Test + @NeedsFreshDriver void canSetFile() throws IOException { driver.get(pages.formPage); WebElement uploadElement = driver.findElement(By.id("upload")); @@ -106,6 +104,7 @@ void canSetFile() throws IOException { } @Test + @NeedsFreshDriver void canSetFileWithElementId() throws IOException { driver.get(pages.formPage); WebElement uploadElement = driver.findElement(By.id("upload")); diff --git a/java/test/org/openqa/selenium/bidi/log/LogInspectorTest.java b/java/test/org/openqa/selenium/bidi/log/LogInspectorTest.java index be6e7a0f12f9c..5619a890b0fc1 100644 --- a/java/test/org/openqa/selenium/bidi/log/LogInspectorTest.java +++ b/java/test/org/openqa/selenium/bidi/log/LogInspectorTest.java @@ -20,7 +20,6 @@ import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.assertj.core.api.AssertionsForClassTypes.assertThatExceptionOfType; import static org.assertj.core.api.AssertionsForClassTypes.fail; -import static org.openqa.selenium.testing.Safely.safelyCall; import java.util.HashSet; import java.util.Set; @@ -29,36 +28,27 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.openqa.selenium.By; import org.openqa.selenium.WindowType; import org.openqa.selenium.bidi.module.LogInspector; import org.openqa.selenium.bidi.script.Source; -import org.openqa.selenium.environment.webserver.AppServer; -import org.openqa.selenium.environment.webserver.NettyAppServer; import org.openqa.selenium.testing.JupiterTestBase; +import org.openqa.selenium.testing.NeedsFreshDriver; class LogInspectorTest extends JupiterTestBase { String page; - private AppServer server; - - @BeforeEach - public void setUp() { - server = new NettyAppServer(); - server.start(); - } @Test + @NeedsFreshDriver void canListenToConsoleLog() throws ExecutionException, InterruptedException, TimeoutException { try (LogInspector logInspector = new LogInspector(driver)) { CompletableFuture future = new CompletableFuture<>(); logInspector.onConsoleEntry(future::complete); - page = server.whereIs("/bidi/logEntryAdded.html"); + page = appServer.whereIs("/bidi/logEntryAdded.html"); driver.get(page); driver.findElement(By.id("consoleLog")).click(); @@ -76,12 +66,13 @@ void canListenToConsoleLog() throws ExecutionException, InterruptedException, Ti } @Test + @NeedsFreshDriver void canFilterConsoleLogs() throws ExecutionException, InterruptedException, TimeoutException { try (LogInspector logInspector = new LogInspector(driver)) { CompletableFuture future = new CompletableFuture<>(); logInspector.onConsoleEntry(future::complete, FilterBy.logLevel(LogLevel.INFO)); - page = server.whereIs("/bidi/logEntryAdded.html"); + page = appServer.whereIs("/bidi/logEntryAdded.html"); driver.get(page); driver.findElement(By.id("consoleLog")).click(); @@ -111,13 +102,14 @@ void canFilterConsoleLogs() throws ExecutionException, InterruptedException, Tim } @Test + @NeedsFreshDriver void canListenToJavascriptLog() throws ExecutionException, InterruptedException, TimeoutException { try (LogInspector logInspector = new LogInspector(driver)) { CompletableFuture future = new CompletableFuture<>(); logInspector.onJavaScriptLog(future::complete); - page = server.whereIs("/bidi/logEntryAdded.html"); + page = appServer.whereIs("/bidi/logEntryAdded.html"); driver.get(page); driver.findElement(By.id("jsException")).click(); @@ -134,12 +126,13 @@ void canListenToJavascriptLog() } @Test + @NeedsFreshDriver void canFilterJavascriptLogs() throws ExecutionException, InterruptedException { try (LogInspector logInspector = new LogInspector(driver)) { CompletableFuture future = new CompletableFuture<>(); logInspector.onJavaScriptLog(future::complete, FilterBy.logLevel(LogLevel.ERROR)); - page = server.whereIs("/bidi/logEntryAdded.html"); + page = appServer.whereIs("/bidi/logEntryAdded.html"); driver.get(page); driver.findElement(By.id("jsException")).click(); @@ -165,13 +158,14 @@ void canFilterJavascriptLogs() throws ExecutionException, InterruptedException { } @Test + @NeedsFreshDriver void canListenToJavascriptErrorLog() throws ExecutionException, InterruptedException, TimeoutException { try (LogInspector logInspector = new LogInspector(driver)) { CompletableFuture future = new CompletableFuture<>(); logInspector.onJavaScriptException(future::complete); - page = server.whereIs("/bidi/logEntryAdded.html"); + page = appServer.whereIs("/bidi/logEntryAdded.html"); driver.get(page); driver.findElement(By.id("jsException")).click(); @@ -184,13 +178,14 @@ void canListenToJavascriptErrorLog() } @Test + @NeedsFreshDriver void canRetrieveStacktraceForALog() throws ExecutionException, InterruptedException, TimeoutException { try (LogInspector logInspector = new LogInspector(driver)) { CompletableFuture future = new CompletableFuture<>(); logInspector.onJavaScriptException(future::complete); - page = server.whereIs("/bidi/logEntryAdded.html"); + page = appServer.whereIs("/bidi/logEntryAdded.html"); driver.get(page); driver.findElement(By.id("logWithStacktrace")).click(); @@ -202,12 +197,13 @@ void canRetrieveStacktraceForALog() } @Test + @NeedsFreshDriver void canFilterLogs() throws ExecutionException, InterruptedException { try (LogInspector logInspector = new LogInspector(driver)) { CompletableFuture future = new CompletableFuture<>(); logInspector.onLog(future::complete, FilterBy.logLevel(LogLevel.INFO)); - page = server.whereIs("/bidi/logEntryAdded.html"); + page = appServer.whereIs("/bidi/logEntryAdded.html"); driver.get(page); driver.findElement(By.id("consoleLog")).click(); @@ -231,9 +227,10 @@ void canFilterLogs() throws ExecutionException, InterruptedException { @Disabled("Until browsers support subscribing to multiple contexts.") @Test + @NeedsFreshDriver void canListenToConsoleLogForABrowsingContext() throws ExecutionException, InterruptedException, TimeoutException { - page = server.whereIs("/bidi/logEntryAdded.html"); + page = appServer.whereIs("/bidi/logEntryAdded.html"); String browsingContextId = driver.switchTo().newWindow(WindowType.TAB).getWindowHandle(); try (LogInspector logInspector = new LogInspector(browsingContextId, driver)) { @@ -255,9 +252,10 @@ void canListenToConsoleLogForABrowsingContext() @Disabled("Until browsers support subscribing to multiple contexts.") @Test + @NeedsFreshDriver void canListenToJavascriptLogForABrowsingContext() throws ExecutionException, InterruptedException, TimeoutException { - page = server.whereIs("/bidi/logEntryAdded.html"); + page = appServer.whereIs("/bidi/logEntryAdded.html"); String browsingContextId = driver.switchTo().newWindow(WindowType.TAB).getWindowHandle(); try (LogInspector logInspector = new LogInspector(browsingContextId, driver)) { @@ -277,9 +275,10 @@ void canListenToJavascriptLogForABrowsingContext() @Disabled("Until browsers support subscribing to multiple contexts.") @Test + @NeedsFreshDriver void canListenToJavascriptErrorLogForABrowsingContext() throws ExecutionException, InterruptedException, TimeoutException { - page = server.whereIs("/bidi/logEntryAdded.html"); + page = appServer.whereIs("/bidi/logEntryAdded.html"); String browsingContextId = driver.switchTo().newWindow(WindowType.TAB).getWindowHandle(); try (LogInspector logInspector = new LogInspector(browsingContextId, driver)) { @@ -299,9 +298,10 @@ void canListenToJavascriptErrorLogForABrowsingContext() @Disabled("Until browsers support subscribing to multiple contexts.") @Test + @NeedsFreshDriver void canListenToConsoleLogForMultipleBrowsingContexts() throws ExecutionException, InterruptedException, TimeoutException { - page = server.whereIs("/bidi/logEntryAdded.html"); + page = appServer.whereIs("/bidi/logEntryAdded.html"); String firstBrowsingContextId = driver.getWindowHandle(); String secondBrowsingContextId = driver.switchTo().newWindow(WindowType.TAB).getWindowHandle(); @@ -337,8 +337,9 @@ void canListenToConsoleLogForMultipleBrowsingContexts() @Disabled("Until browsers support subscribing to multiple contexts.") @Test + @NeedsFreshDriver void canListenToJavascriptLogForMultipleBrowsingContexts() throws InterruptedException { - page = server.whereIs("/bidi/logEntryAdded.html"); + page = appServer.whereIs("/bidi/logEntryAdded.html"); String firstBrowsingContextId = driver.getWindowHandle(); String secondBrowsingContextId = driver.switchTo().newWindow(WindowType.TAB).getWindowHandle(); @@ -374,8 +375,9 @@ void canListenToJavascriptLogForMultipleBrowsingContexts() throws InterruptedExc @Disabled("Until browsers support subscribing to multiple contexts.") @Test + @NeedsFreshDriver void canListenToJavascriptErrorLogForMultipleBrowsingContexts() throws InterruptedException { - page = server.whereIs("/bidi/logEntryAdded.html"); + page = appServer.whereIs("/bidi/logEntryAdded.html"); String firstBrowsingContextId = driver.getWindowHandle(); String secondBrowsingContextId = driver.switchTo().newWindow(WindowType.TAB).getWindowHandle(); @@ -411,8 +413,9 @@ void canListenToJavascriptErrorLogForMultipleBrowsingContexts() throws Interrupt @Disabled("Until browsers support subscribing to multiple contexts.") @Test + @NeedsFreshDriver void canListenToAnyTypeOfLogForMultipleBrowsingContexts() throws InterruptedException { - page = server.whereIs("/bidi/logEntryAdded.html"); + page = appServer.whereIs("/bidi/logEntryAdded.html"); String firstBrowsingContextId = driver.getWindowHandle(); String secondBrowsingContextId = driver.switchTo().newWindow(WindowType.TAB).getWindowHandle(); @@ -440,6 +443,7 @@ void canListenToAnyTypeOfLogForMultipleBrowsingContexts() throws InterruptedExce } @Test + @NeedsFreshDriver void canListenToLogsWithMultipleConsumers() throws ExecutionException, InterruptedException, TimeoutException { try (LogInspector logInspector = new LogInspector(driver)) { @@ -449,7 +453,7 @@ void canListenToLogsWithMultipleConsumers() CompletableFuture completableFuture2 = new CompletableFuture<>(); logInspector.onJavaScriptLog(completableFuture2::complete); - page = server.whereIs("/bidi/logEntryAdded.html"); + page = appServer.whereIs("/bidi/logEntryAdded.html"); driver.get(page); driver.findElement(By.id("jsException")).click(); @@ -466,12 +470,4 @@ void canListenToLogsWithMultipleConsumers() assertThat(logEntry.getLevel()).isEqualTo(LogLevel.ERROR); } } - - @AfterEach - public void quitDriver() { - if (driver != null) { - driver.quit(); - } - safelyCall(server::stop); - } } diff --git a/java/test/org/openqa/selenium/bidi/network/AddInterceptParametersTest.java b/java/test/org/openqa/selenium/bidi/network/AddInterceptParametersTest.java index 21384e9aa5e7c..28ce439a3a653 100644 --- a/java/test/org/openqa/selenium/bidi/network/AddInterceptParametersTest.java +++ b/java/test/org/openqa/selenium/bidi/network/AddInterceptParametersTest.java @@ -18,30 +18,19 @@ package org.openqa.selenium.bidi.network; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; -import static org.openqa.selenium.testing.Safely.safelyCall; import static org.openqa.selenium.testing.drivers.Browser.EDGE; import java.util.List; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.openqa.selenium.bidi.module.Network; -import org.openqa.selenium.environment.webserver.AppServer; -import org.openqa.selenium.environment.webserver.NettyAppServer; import org.openqa.selenium.testing.JupiterTestBase; +import org.openqa.selenium.testing.NeedsFreshDriver; import org.openqa.selenium.testing.NotYetImplemented; class AddInterceptParametersTest extends JupiterTestBase { - private AppServer server; - - @BeforeEach - public void setUp() { - server = new NettyAppServer(); - server.start(); - } - @Test + @NeedsFreshDriver @NotYetImplemented(EDGE) void canAddInterceptPhase() { try (Network network = new Network(driver)) { @@ -52,6 +41,7 @@ void canAddInterceptPhase() { } @Test + @NeedsFreshDriver @NotYetImplemented(EDGE) void canAddInterceptPhases() { try (Network network = new Network(driver)) { @@ -64,6 +54,7 @@ void canAddInterceptPhases() { } @Test + @NeedsFreshDriver @NotYetImplemented(EDGE) void canAddStringUrlPattern() { try (Network network = new Network(driver)) { @@ -76,6 +67,7 @@ void canAddStringUrlPattern() { } @Test + @NeedsFreshDriver @NotYetImplemented(EDGE) void canAddStringUrlPatterns() { try (Network network = new Network(driver)) { @@ -91,6 +83,7 @@ void canAddStringUrlPatterns() { } @Test + @NeedsFreshDriver @NotYetImplemented(EDGE) void canAddUrlPattern() { try (Network network = new Network(driver)) { @@ -110,6 +103,7 @@ void canAddUrlPattern() { } @Test + @NeedsFreshDriver @NotYetImplemented(EDGE) void canAddUrlPatterns() { try (Network network = new Network(driver)) { @@ -136,12 +130,4 @@ void canAddUrlPatterns() { assertThat(intercept).isNotNull(); } } - - @AfterEach - public void quitDriver() { - if (driver != null) { - driver.quit(); - } - safelyCall(server::stop); - } } diff --git a/java/test/org/openqa/selenium/bidi/network/NetworkCommandsTest.java b/java/test/org/openqa/selenium/bidi/network/NetworkCommandsTest.java index 1b82ad4d13861..cb7c065bb49ba 100644 --- a/java/test/org/openqa/selenium/bidi/network/NetworkCommandsTest.java +++ b/java/test/org/openqa/selenium/bidi/network/NetworkCommandsTest.java @@ -19,15 +19,12 @@ import static org.assertj.core.api.AssertionsForClassTypes.assertThat; import static org.assertj.core.api.AssertionsForClassTypes.assertThatThrownBy; -import static org.openqa.selenium.testing.Safely.safelyCall; import static org.openqa.selenium.testing.drivers.Browser.*; import java.time.Duration; import java.time.temporal.ChronoUnit; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.openqa.selenium.Alert; @@ -36,23 +33,16 @@ import org.openqa.selenium.UsernameAndPassword; import org.openqa.selenium.WebDriverException; import org.openqa.selenium.bidi.module.Network; -import org.openqa.selenium.environment.webserver.AppServer; -import org.openqa.selenium.environment.webserver.NettyAppServer; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.testing.JupiterTestBase; +import org.openqa.selenium.testing.NeedsFreshDriver; import org.openqa.selenium.testing.NotYetImplemented; class NetworkCommandsTest extends JupiterTestBase { private String page; - private AppServer server; - - @BeforeEach - public void setUp() { - server = new NettyAppServer(); - server.start(); - } @Test + @NeedsFreshDriver @NotYetImplemented(EDGE) @NotYetImplemented(CHROME) void canAddIntercept() { @@ -64,6 +54,7 @@ void canAddIntercept() { } @Test + @NeedsFreshDriver @NotYetImplemented(EDGE) @NotYetImplemented(CHROME) void canContinueRequest() throws InterruptedException { @@ -73,7 +64,7 @@ void canContinueRequest() throws InterruptedException { CountDownLatch latch = new CountDownLatch(1); - // String alternatePage = server.whereIs("printPage.html"); + // String alternatePage = appServer.whereIs("printPage.html"); // TODO: Test sending request to alternate page once it is supported by browsers network.onBeforeRequestSent( beforeRequestSent -> { @@ -89,7 +80,7 @@ void canContinueRequest() throws InterruptedException { assertThat(intercept).isNotNull(); - driver.get(server.whereIs("/bidi/logEntryAdded.html")); + driver.get(appServer.whereIs("/bidi/logEntryAdded.html")); boolean countdown = latch.await(5, TimeUnit.SECONDS); assertThat(countdown).isTrue(); @@ -97,6 +88,7 @@ void canContinueRequest() throws InterruptedException { } @Test + @NeedsFreshDriver @NotYetImplemented(EDGE) @NotYetImplemented(CHROME) void canContinueResponse() throws InterruptedException { @@ -117,7 +109,7 @@ void canContinueResponse() throws InterruptedException { assertThat(intercept).isNotNull(); - driver.get(server.whereIs("/bidi/logEntryAdded.html")); + driver.get(appServer.whereIs("/bidi/logEntryAdded.html")); boolean countdown = latch.await(5, TimeUnit.SECONDS); assertThat(countdown).isTrue(); @@ -125,6 +117,7 @@ void canContinueResponse() throws InterruptedException { } @Test + @NeedsFreshDriver @NotYetImplemented(EDGE) @NotYetImplemented(CHROME) void canProvideResponse() throws InterruptedException { @@ -144,7 +137,7 @@ void canProvideResponse() throws InterruptedException { assertThat(intercept).isNotNull(); - driver.get(server.whereIs("/bidi/logEntryAdded.html")); + driver.get(appServer.whereIs("/bidi/logEntryAdded.html")); boolean countdown = latch.await(5, TimeUnit.SECONDS); assertThat(countdown).isTrue(); @@ -177,7 +170,7 @@ void canProvideResponseWithAllParameters() throws InterruptedException { assertThat(intercept).isNotNull(); - driver.get(server.whereIs("/bidi/logEntryAdded.html")); + driver.get(appServer.whereIs("/bidi/logEntryAdded.html")); boolean countdown = latch.await(5, TimeUnit.SECONDS); assertThat(countdown).isTrue(); @@ -187,6 +180,7 @@ void canProvideResponseWithAllParameters() throws InterruptedException { } @Test + @NeedsFreshDriver @NotYetImplemented(EDGE) @NotYetImplemented(CHROME) void canRemoveIntercept() { @@ -200,6 +194,7 @@ void canRemoveIntercept() { } @Test + @NeedsFreshDriver @NotYetImplemented(EDGE) @NotYetImplemented(CHROME) void canContinueWithAuthCredentials() { @@ -211,13 +206,14 @@ void canContinueWithAuthCredentials() { responseDetails.getRequest().getRequestId(), new UsernameAndPassword("test", "test"))); - page = server.whereIs("basicAuth"); + page = appServer.whereIs("basicAuth"); driver.get(page); assertThat(driver.findElement(By.tagName("h1")).getText()).isEqualTo("authorized"); } } @Test + @NeedsFreshDriver @NotYetImplemented(EDGE) @NotYetImplemented(CHROME) void canContinueWithoutAuthCredentials() { @@ -227,7 +223,7 @@ void canContinueWithoutAuthCredentials() { responseDetails -> // Does not handle the alert network.continueWithAuthNoCredentials(responseDetails.getRequest().getRequestId())); - page = server.whereIs("basicAuth"); + page = appServer.whereIs("basicAuth"); driver.get(page); // This would fail if alert was handled Alert alert = wait.until(ExpectedConditions.alertIsPresent()); @@ -236,6 +232,7 @@ void canContinueWithoutAuthCredentials() { } @Test + @NeedsFreshDriver @NotYetImplemented(EDGE) @NotYetImplemented(CHROME) void canCancelAuth() { @@ -245,7 +242,7 @@ void canCancelAuth() { responseDetails -> // Does not handle the alert network.cancelAuth(responseDetails.getRequest().getRequestId())); - page = server.whereIs("basicAuth"); + page = appServer.whereIs("basicAuth"); driver.get(page); assertThatThrownBy(() -> wait.until(ExpectedConditions.alertIsPresent())) .isInstanceOf(TimeoutException.class); @@ -253,6 +250,7 @@ void canCancelAuth() { } @Test + @NeedsFreshDriver @NotYetImplemented(EDGE) @NotYetImplemented(CHROME) void canFailRequest() { @@ -260,18 +258,10 @@ void canFailRequest() { network.addIntercept(new AddInterceptParameters(InterceptPhase.BEFORE_REQUEST_SENT)); network.onBeforeRequestSent( responseDetails -> network.failRequest(responseDetails.getRequest().getRequestId())); - page = server.whereIs("basicAuth"); + page = appServer.whereIs("basicAuth"); driver.manage().timeouts().pageLoadTimeout(Duration.of(5, ChronoUnit.SECONDS)); assertThatThrownBy(() -> driver.get(page)).isInstanceOf(WebDriverException.class); } } - - @AfterEach - public void quitDriver() { - if (driver != null) { - driver.quit(); - } - safelyCall(server::stop); - } } diff --git a/java/test/org/openqa/selenium/bidi/network/NetworkEventsTest.java b/java/test/org/openqa/selenium/bidi/network/NetworkEventsTest.java index 28beec38ff0ab..7f221f6fc20bc 100644 --- a/java/test/org/openqa/selenium/bidi/network/NetworkEventsTest.java +++ b/java/test/org/openqa/selenium/bidi/network/NetworkEventsTest.java @@ -18,44 +18,34 @@ package org.openqa.selenium.bidi.network; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; -import static org.openqa.selenium.testing.Safely.safelyCall; import static org.openqa.selenium.testing.drivers.Browser.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.openqa.selenium.Cookie; import org.openqa.selenium.WebDriverException; import org.openqa.selenium.bidi.module.Network; -import org.openqa.selenium.environment.webserver.AppServer; -import org.openqa.selenium.environment.webserver.NettyAppServer; import org.openqa.selenium.testing.JupiterTestBase; +import org.openqa.selenium.testing.NeedsFreshDriver; import org.openqa.selenium.testing.NotYetImplemented; import org.openqa.selenium.testing.Pages; class NetworkEventsTest extends JupiterTestBase { private String page; - private AppServer server; - - @BeforeEach - public void setUp() { - server = new NettyAppServer(); - server.start(); - } @Test + @NeedsFreshDriver @NotYetImplemented(EDGE) void canListenToBeforeRequestSentEvent() throws ExecutionException, InterruptedException, TimeoutException { try (Network network = new Network(driver)) { CompletableFuture future = new CompletableFuture<>(); network.onBeforeRequestSent(future::complete); - page = server.whereIs("/bidi/logEntryAdded.html"); + page = appServer.whereIs("/bidi/logEntryAdded.html"); driver.get(page); BeforeRequestSent requestSent = future.get(5, TimeUnit.SECONDS); @@ -69,13 +59,14 @@ void canListenToBeforeRequestSentEvent() } @Test + @NeedsFreshDriver @NotYetImplemented(EDGE) void canListenToResponseStartedEvent() throws ExecutionException, InterruptedException, TimeoutException { try (Network network = new Network(driver)) { CompletableFuture future = new CompletableFuture<>(); network.onResponseStarted(future::complete); - page = server.whereIs("/bidi/logEntryAdded.html"); + page = appServer.whereIs("/bidi/logEntryAdded.html"); driver.get(page); ResponseDetails response = future.get(5, TimeUnit.SECONDS); @@ -91,13 +82,14 @@ void canListenToResponseStartedEvent() } @Test + @NeedsFreshDriver @NotYetImplemented(EDGE) void canListenToResponseCompletedEvent() throws ExecutionException, InterruptedException, TimeoutException { try (Network network = new Network(driver)) { CompletableFuture future = new CompletableFuture<>(); network.onResponseCompleted(future::complete); - page = server.whereIs("/bidi/logEntryAdded.html"); + page = appServer.whereIs("/bidi/logEntryAdded.html"); driver.get(page); ResponseDetails response = future.get(5, TimeUnit.SECONDS); @@ -113,13 +105,14 @@ void canListenToResponseCompletedEvent() } @Test + @NeedsFreshDriver @NotYetImplemented(EDGE) void canListenToResponseCompletedEventWithCookie() throws ExecutionException, InterruptedException, TimeoutException { try (Network network = new Network(driver)) { CompletableFuture future = new CompletableFuture<>(); - driver.get(new Pages(server).blankPage); + driver.get(new Pages(appServer).blankPage); driver.manage().addCookie(new Cookie("foo", "bar")); network.onBeforeRequestSent(future::complete); driver.navigate().refresh(); @@ -135,6 +128,7 @@ void canListenToResponseCompletedEventWithCookie() } @Test + @NeedsFreshDriver @NotYetImplemented(EDGE) @NotYetImplemented(CHROME) void canListenToOnAuthRequiredEvent() @@ -142,7 +136,7 @@ void canListenToOnAuthRequiredEvent() try (Network network = new Network(driver)) { CompletableFuture future = new CompletableFuture<>(); network.onAuthRequired(future::complete); - page = server.whereIs("basicAuth"); + page = appServer.whereIs("basicAuth"); driver.get(page); ResponseDetails response = future.get(5, TimeUnit.SECONDS); @@ -158,13 +152,14 @@ void canListenToOnAuthRequiredEvent() } @Test + @NeedsFreshDriver @NotYetImplemented(EDGE) @NotYetImplemented(CHROME) void canListenToFetchError() throws ExecutionException, InterruptedException, TimeoutException { try (Network network = new Network(driver)) { CompletableFuture future = new CompletableFuture<>(); network.onFetchError(future::complete); - page = server.whereIs("error"); + page = appServer.whereIs("error"); try { driver.get("https://not_a_valid_url.test/"); } catch (WebDriverException ignored) { @@ -181,12 +176,4 @@ void canListenToFetchError() throws ExecutionException, InterruptedException, Ti assertThat(fetchError.getErrorText()).contains("UNKNOWN_HOST"); } } - - @AfterEach - public void quitDriver() { - if (driver != null) { - driver.quit(); - } - safelyCall(server::stop); - } } diff --git a/java/test/org/openqa/selenium/bidi/script/CallFunctionParameterTest.java b/java/test/org/openqa/selenium/bidi/script/CallFunctionParameterTest.java index 7caeb5fa8aad7..e853e39296431 100644 --- a/java/test/org/openqa/selenium/bidi/script/CallFunctionParameterTest.java +++ b/java/test/org/openqa/selenium/bidi/script/CallFunctionParameterTest.java @@ -18,7 +18,6 @@ package org.openqa.selenium.bidi.script; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; -import static org.openqa.selenium.testing.Safely.safelyCall; import static org.openqa.selenium.testing.drivers.Browser.IE; import static org.openqa.selenium.testing.drivers.Browser.SAFARI; @@ -26,27 +25,17 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.openqa.selenium.By; import org.openqa.selenium.WindowType; import org.openqa.selenium.bidi.module.Script; -import org.openqa.selenium.environment.webserver.AppServer; -import org.openqa.selenium.environment.webserver.NettyAppServer; import org.openqa.selenium.testing.JupiterTestBase; +import org.openqa.selenium.testing.NeedsFreshDriver; import org.openqa.selenium.testing.NotYetImplemented; public class CallFunctionParameterTest extends JupiterTestBase { - private AppServer server; - - @BeforeEach - public void setUp() { - server = new NettyAppServer(); - server.start(); - } - @Test + @NeedsFreshDriver void canCallFunctionWithDeclaration() { String id = driver.getWindowHandle(); try (Script script = new Script(id, driver)) { @@ -65,6 +54,7 @@ void canCallFunctionWithDeclaration() { } @Test + @NeedsFreshDriver void canEvaluateScriptWithUserActivationTrue() { String id = driver.getWindowHandle(); try (Script script = new Script(id, driver)) { @@ -93,6 +83,7 @@ void canEvaluateScriptWithUserActivationTrue() { } @Test + @NeedsFreshDriver void canEvaluateScriptWithUserActivationFalse() { String id = driver.getWindowHandle(); try (Script script = new Script(id, driver)) { @@ -121,6 +112,7 @@ void canEvaluateScriptWithUserActivationFalse() { } @Test + @NeedsFreshDriver void canCallFunctionWithArguments() { String id = driver.getWindowHandle(); try (Script script = new Script(id, driver)) { @@ -147,6 +139,7 @@ void canCallFunctionWithArguments() { } @Test + @NeedsFreshDriver void canCallFunctionToGetIFrameBrowsingContext() { String url = appServer.whereIs("click_too_big_in_frame.html"); driver.get(url); @@ -180,6 +173,7 @@ void canCallFunctionToGetIFrameBrowsingContext() { } @Test + @NeedsFreshDriver void canCallFunctionToGetElement() { String url = appServer.whereIs("/bidi/logEntryAdded.html"); driver.get(url); @@ -207,6 +201,7 @@ void canCallFunctionToGetElement() { } @Test + @NeedsFreshDriver void canCallFunctionWithAwaitPromise() { String id = driver.getWindowHandle(); try (Script script = new Script(id, driver)) { @@ -233,6 +228,7 @@ void canCallFunctionWithAwaitPromise() { } @Test + @NeedsFreshDriver void canCallFunctionWithAwaitPromiseFalse() { String id = driver.getWindowHandle(); try (Script script = new Script(id, driver)) { @@ -257,6 +253,7 @@ void canCallFunctionWithAwaitPromiseFalse() { } @Test + @NeedsFreshDriver void canCallFunctionWithThisParameter() { String id = driver.getWindowHandle(); try (Script script = new Script(id, driver)) { @@ -282,6 +279,7 @@ void canCallFunctionWithThisParameter() { } @Test + @NeedsFreshDriver void canCallFunctionWithOwnershipRoot() { String id = driver.getWindowHandle(); try (Script script = new Script(id, driver)) { @@ -301,6 +299,7 @@ void canCallFunctionWithOwnershipRoot() { } @Test + @NeedsFreshDriver void canCallFunctionWithOwnershipNone() { String id = driver.getWindowHandle(); try (Script script = new Script(id, driver)) { @@ -320,6 +319,7 @@ void canCallFunctionWithOwnershipNone() { } @Test + @NeedsFreshDriver @NotYetImplemented(SAFARI) @NotYetImplemented(IE) void canCallFunctionThatThrowsException() { @@ -346,6 +346,7 @@ void canCallFunctionThatThrowsException() { } @Test + @NeedsFreshDriver void canCallFunctionInASandBox() { String id = driver.getWindowHandle(); try (Script script = new Script(id, driver)) { @@ -386,6 +387,7 @@ void canCallFunctionInASandBox() { } @Test + @NeedsFreshDriver void canCallFunctionInARealm() { String firstTab = driver.getWindowHandle(); String secondTab = driver.switchTo().newWindow(WindowType.TAB).getWindowHandle(); @@ -430,12 +432,4 @@ void canCallFunctionInARealm() { assertThat((Long) successSecondContextresult.getResult().getValue().get()).isEqualTo(5L); } } - - @AfterEach - public void quitDriver() { - if (driver != null) { - driver.quit(); - } - safelyCall(server::stop); - } } diff --git a/java/test/org/openqa/selenium/bidi/script/EvaluateParametersTest.java b/java/test/org/openqa/selenium/bidi/script/EvaluateParametersTest.java index 7a3087d1136f2..e51dff72265fb 100644 --- a/java/test/org/openqa/selenium/bidi/script/EvaluateParametersTest.java +++ b/java/test/org/openqa/selenium/bidi/script/EvaluateParametersTest.java @@ -18,29 +18,19 @@ package org.openqa.selenium.bidi.script; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; -import static org.openqa.selenium.testing.Safely.safelyCall; import java.util.List; import java.util.Optional; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.openqa.selenium.WindowType; import org.openqa.selenium.bidi.module.Script; -import org.openqa.selenium.environment.webserver.AppServer; -import org.openqa.selenium.environment.webserver.NettyAppServer; import org.openqa.selenium.testing.JupiterTestBase; +import org.openqa.selenium.testing.NeedsFreshDriver; public class EvaluateParametersTest extends JupiterTestBase { - private AppServer server; - - @BeforeEach - public void setUp() { - server = new NettyAppServer(); - server.start(); - } @Test + @NeedsFreshDriver void canEvaluateScript() { String id = driver.getWindowHandle(); try (Script script = new Script(id, driver)) { @@ -58,6 +48,7 @@ void canEvaluateScript() { } @Test + @NeedsFreshDriver void canEvaluateScriptWithUserActivationTrue() { String id = driver.getWindowHandle(); try (Script script = new Script(id, driver)) { @@ -85,6 +76,7 @@ void canEvaluateScriptWithUserActivationTrue() { } @Test + @NeedsFreshDriver void canEvaluateScriptWithUserActivationFalse() { String id = driver.getWindowHandle(); try (Script script = new Script(id, driver)) { @@ -112,6 +104,7 @@ void canEvaluateScriptWithUserActivationFalse() { } @Test + @NeedsFreshDriver void canEvaluateScriptThatThrowsException() { String id = driver.getWindowHandle(); try (Script script = new Script(id, driver)) { @@ -133,6 +126,7 @@ void canEvaluateScriptThatThrowsException() { } @Test + @NeedsFreshDriver void canEvaluateScriptWithResulWithOwnership() { String id = driver.getWindowHandle(); try (Script script = new Script(id, driver)) { @@ -152,6 +146,7 @@ void canEvaluateScriptWithResulWithOwnership() { } @Test + @NeedsFreshDriver void canEvaluateInASandBox() { String id = driver.getWindowHandle(); try (Script script = new Script(id, driver)) { @@ -191,6 +186,7 @@ void canEvaluateInASandBox() { } @Test + @NeedsFreshDriver void canEvaluateInARealm() { String firstTab = driver.getWindowHandle(); String secondTab = driver.switchTo().newWindow(WindowType.TAB).getWindowHandle(); @@ -229,12 +225,4 @@ void canEvaluateInARealm() { assertThat((Long) successSecondContextResult.getResult().getValue().get()).isEqualTo(5L); } } - - @AfterEach - public void quitDriver() { - if (driver != null) { - driver.quit(); - } - safelyCall(server::stop); - } } diff --git a/java/test/org/openqa/selenium/bidi/script/ScriptCommandsTest.java b/java/test/org/openqa/selenium/bidi/script/ScriptCommandsTest.java index 108e2d1554513..059ca1bb43814 100644 --- a/java/test/org/openqa/selenium/bidi/script/ScriptCommandsTest.java +++ b/java/test/org/openqa/selenium/bidi/script/ScriptCommandsTest.java @@ -19,7 +19,6 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; -import static org.openqa.selenium.testing.Safely.safelyCall; import java.util.ArrayList; import java.util.HashMap; @@ -31,8 +30,6 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.concurrent.atomic.AtomicReference; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebDriverException; @@ -41,21 +38,14 @@ import org.openqa.selenium.bidi.log.LogLevel; import org.openqa.selenium.bidi.module.LogInspector; import org.openqa.selenium.bidi.module.Script; -import org.openqa.selenium.environment.webserver.AppServer; -import org.openqa.selenium.environment.webserver.NettyAppServer; import org.openqa.selenium.testing.JupiterTestBase; +import org.openqa.selenium.testing.NeedsFreshDriver; import org.openqa.selenium.testing.Pages; public class ScriptCommandsTest extends JupiterTestBase { - private AppServer server; - - @BeforeEach - public void setUp() { - server = new NettyAppServer(); - server.start(); - } @Test + @NeedsFreshDriver void canCallFunctionWithDeclaration() { String id = driver.getWindowHandle(); Script script = new Script(id, driver); @@ -74,6 +64,7 @@ void canCallFunctionWithDeclaration() { } @Test + @NeedsFreshDriver void canCallFunctionWithArguments() { String id = driver.getWindowHandle(); Script script = new Script(id, driver); @@ -103,6 +94,7 @@ void canCallFunctionWithArguments() { } @Test + @NeedsFreshDriver void canCallFunctionToGetIFrameBrowsingContext() { String url = appServer.whereIs("click_too_big_in_frame.html"); driver.get(url); @@ -136,6 +128,7 @@ void canCallFunctionToGetIFrameBrowsingContext() { } @Test + @NeedsFreshDriver void canCallFunctionToGetElement() { String url = appServer.whereIs("/bidi/logEntryAdded.html"); driver.get(url); @@ -165,6 +158,7 @@ void canCallFunctionToGetElement() { } @Test + @NeedsFreshDriver void canCallFunctionWithAwaitPromise() { String id = driver.getWindowHandle(); Script script = new Script(id, driver); @@ -192,6 +186,7 @@ void canCallFunctionWithAwaitPromise() { } @Test + @NeedsFreshDriver void canCallFunctionWithAwaitPromiseFalse() { String id = driver.getWindowHandle(); Script script = new Script(id, driver); @@ -217,6 +212,7 @@ void canCallFunctionWithAwaitPromiseFalse() { } @Test + @NeedsFreshDriver void canCallFunctionWithThisParameter() { String id = driver.getWindowHandle(); Script script = new Script(id, driver); @@ -244,6 +240,7 @@ void canCallFunctionWithThisParameter() { } @Test + @NeedsFreshDriver void canCallFunctionWithOwnershipRoot() { String id = driver.getWindowHandle(); Script script = new Script(id, driver); @@ -266,6 +263,7 @@ void canCallFunctionWithOwnershipRoot() { } @Test + @NeedsFreshDriver void canCallFunctionWithOwnershipNone() { String id = driver.getWindowHandle(); Script script = new Script(id, driver); @@ -288,6 +286,7 @@ void canCallFunctionWithOwnershipNone() { } @Test + @NeedsFreshDriver void canCallFunctionThatThrowsException() { String id = driver.getWindowHandle(); Script script = new Script(id, driver); @@ -313,6 +312,7 @@ void canCallFunctionThatThrowsException() { } @Test + @NeedsFreshDriver void canCallFunctionInASandBox() { String id = driver.getWindowHandle(); Script script = new Script(id, driver); @@ -373,6 +373,7 @@ void canCallFunctionInASandBox() { } @Test + @NeedsFreshDriver void canCallFunctionInARealm() { String firstTab = driver.getWindowHandle(); String secondTab = driver.switchTo().newWindow(WindowType.TAB).getWindowHandle(); @@ -433,6 +434,7 @@ void canCallFunctionInARealm() { } @Test + @NeedsFreshDriver void canEvaluateScript() { String id = driver.getWindowHandle(); Script script = new Script(id, driver); @@ -450,6 +452,7 @@ void canEvaluateScript() { } @Test + @NeedsFreshDriver void canEvaluateScriptThatThrowsException() { String id = driver.getWindowHandle(); Script script = new Script(id, driver); @@ -469,6 +472,7 @@ void canEvaluateScriptThatThrowsException() { } @Test + @NeedsFreshDriver void canEvaluateScriptWithResulWithOwnership() { String id = driver.getWindowHandle(); Script script = new Script(id, driver); @@ -487,6 +491,7 @@ void canEvaluateScriptWithResulWithOwnership() { } @Test + @NeedsFreshDriver void canEvaluateInASandBox() { String id = driver.getWindowHandle(); Script script = new Script(id, driver); @@ -523,6 +528,7 @@ void canEvaluateInASandBox() { } @Test + @NeedsFreshDriver void canEvaluateInARealm() { String firstTab = driver.getWindowHandle(); String secondTab = driver.switchTo().newWindow(WindowType.TAB).getWindowHandle(); @@ -559,6 +565,7 @@ void canEvaluateInARealm() { } @Test + @NeedsFreshDriver void canDisownHandles() { String id = driver.getWindowHandle(); Script script = new Script(id, driver); @@ -615,6 +622,7 @@ void canDisownHandles() { } @Test + @NeedsFreshDriver void canDisownHandlesInRealm() { String id = driver.getWindowHandle(); Script script = new Script(id, driver); @@ -671,6 +679,7 @@ void canDisownHandlesInRealm() { } @Test + @NeedsFreshDriver void canGetAllRealms() { String firstWindow = driver.getWindowHandle(); String secondWindow = driver.switchTo().newWindow(WindowType.WINDOW).getWindowHandle(); @@ -695,6 +704,7 @@ void canGetAllRealms() { } @Test + @NeedsFreshDriver void canGetRealmByType() { String firstWindow = driver.getWindowHandle(); String secondWindow = driver.switchTo().newWindow(WindowType.WINDOW).getWindowHandle(); @@ -719,6 +729,7 @@ void canGetRealmByType() { } @Test + @NeedsFreshDriver void canGetRealmInBrowsingContext() { String windowId = driver.getWindowHandle(); String tabId = driver.switchTo().newWindow(WindowType.TAB).getWindowHandle(); @@ -735,6 +746,7 @@ void canGetRealmInBrowsingContext() { } @Test + @NeedsFreshDriver void canGetRealmInBrowsingContextByType() { String windowId = driver.getWindowHandle(); driver.switchTo().newWindow(WindowType.TAB).getWindowHandle(); @@ -752,6 +764,7 @@ void canGetRealmInBrowsingContextByType() { } @Test + @NeedsFreshDriver void canAddPreloadScript() throws ExecutionException, InterruptedException, TimeoutException { Script script = new Script(driver); String id = script.addPreloadScript("() => {{ console.log('{preload_script_console_text}') }}"); @@ -763,7 +776,7 @@ void canAddPreloadScript() throws ExecutionException, InterruptedException, Time CompletableFuture future = new CompletableFuture<>(); logInspector.onConsoleEntry(future::complete); - driver.get(new Pages(server).blankPage); + driver.get(new Pages(appServer).blankPage); ConsoleLogEntry logEntry = future.get(5, TimeUnit.SECONDS); @@ -774,6 +787,7 @@ void canAddPreloadScript() throws ExecutionException, InterruptedException, Time } @Test + @NeedsFreshDriver void canAddPreloadScriptWithArguments() { Script script = new Script(driver); String id = @@ -785,6 +799,7 @@ void canAddPreloadScriptWithArguments() { } @Test + @NeedsFreshDriver void canAddPreloadScriptWithChannelOptions() { Script script = new Script(driver); SerializationOptions serializationOptions = new SerializationOptions(); @@ -798,13 +813,14 @@ void canAddPreloadScriptWithChannelOptions() { } @Test + @NeedsFreshDriver void canAddPreloadScriptInASandbox() { Script script = new Script(driver); String id = script.addPreloadScript("() => { window.bar=2; }", "sandbox"); assertThat(id).isNotNull(); assertThat(id).isNotEmpty(); - driver.get(new Pages(server).blankPage); + driver.get(new Pages(appServer).blankPage); EvaluateResult result = script.evaluateFunctionInBrowsingContext( @@ -814,13 +830,14 @@ void canAddPreloadScriptInASandbox() { } @Test + @NeedsFreshDriver void canRemovePreloadedScript() { Script script = new Script(driver.getWindowHandle(), driver); String id = script.addPreloadScript("() => { window.bar=2; }"); assertThat(id).isNotNull(); assertThat(id).isNotEmpty(); - driver.get(new Pages(server).blankPage); + driver.get(new Pages(appServer).blankPage); EvaluateResult result = script.evaluateFunctionInBrowsingContext( @@ -837,12 +854,4 @@ void canRemovePreloadedScript() { assertThat(((EvaluateResultSuccess) resultAfterRemoval).getResult().getValue().isPresent()) .isFalse(); } - - @AfterEach - public void quitDriver() { - if (driver != null) { - driver.quit(); - } - safelyCall(server::stop); - } } diff --git a/java/test/org/openqa/selenium/bidi/script/ScriptEventsTest.java b/java/test/org/openqa/selenium/bidi/script/ScriptEventsTest.java index 6696794291447..8893ff050ab10 100644 --- a/java/test/org/openqa/selenium/bidi/script/ScriptEventsTest.java +++ b/java/test/org/openqa/selenium/bidi/script/ScriptEventsTest.java @@ -17,7 +17,6 @@ package org.openqa.selenium.bidi.script; import static org.assertj.core.api.AssertionsForClassTypes.assertThat; -import static org.openqa.selenium.testing.Safely.safelyCall; import static org.openqa.selenium.testing.drivers.Browser.*; import java.util.List; @@ -26,27 +25,18 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.openqa.selenium.bidi.browsingcontext.BrowsingContext; import org.openqa.selenium.bidi.module.Script; -import org.openqa.selenium.environment.webserver.AppServer; -import org.openqa.selenium.environment.webserver.NettyAppServer; import org.openqa.selenium.testing.JupiterTestBase; +import org.openqa.selenium.testing.NeedsFreshDriver; import org.openqa.selenium.testing.NotYetImplemented; import org.openqa.selenium.testing.Pages; public class ScriptEventsTest extends JupiterTestBase { - private AppServer server; - - @BeforeEach - public void setUp() { - server = new NettyAppServer(); - server.start(); - } @Test + @NeedsFreshDriver void canListenToChannelMessage() throws ExecutionException, InterruptedException, TimeoutException { try (Script script = new Script(driver)) { @@ -74,6 +64,7 @@ void canListenToChannelMessage() } @Test + @NeedsFreshDriver void canListenToRealmCreatedEvent() throws ExecutionException, InterruptedException, TimeoutException { try (Script script = new Script(driver)) { @@ -82,7 +73,7 @@ void canListenToRealmCreatedEvent() BrowsingContext context = new BrowsingContext(driver, driver.getWindowHandle()); - context.navigate(new Pages(server).blankPage); + context.navigate(new Pages(appServer).blankPage); RealmInfo realmInfo = future.get(5, TimeUnit.SECONDS); assertThat(realmInfo.getRealmId()).isNotNull(); assertThat(realmInfo.getRealmType()).isEqualTo(RealmType.WINDOW); @@ -90,6 +81,7 @@ void canListenToRealmCreatedEvent() } @Test + @NeedsFreshDriver @NotYetImplemented(EDGE) @NotYetImplemented(CHROME) @NotYetImplemented(FIREFOX) @@ -107,12 +99,4 @@ void canListenToRealmDestroyedEvent() assertThat(realmInfo.getRealmType()).isEqualTo(RealmType.WINDOW); } } - - @AfterEach - public void quitDriver() { - if (driver != null) { - driver.quit(); - } - safelyCall(server::stop); - } } diff --git a/java/test/org/openqa/selenium/grid/router/RemoteWebDriverBiDiTest.java b/java/test/org/openqa/selenium/grid/router/RemoteWebDriverBiDiTest.java index aee7a084a388b..a9debd364b8f1 100644 --- a/java/test/org/openqa/selenium/grid/router/RemoteWebDriverBiDiTest.java +++ b/java/test/org/openqa/selenium/grid/router/RemoteWebDriverBiDiTest.java @@ -27,7 +27,9 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; +import org.junit.jupiter.api.AfterAll; import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.openqa.selenium.By; @@ -54,8 +56,14 @@ import org.openqa.selenium.testing.drivers.Browser; class RemoteWebDriverBiDiTest { + private static AppServer server; private WebDriver driver; - private AppServer server; + + @BeforeAll + static void serverSetup() { + server = new NettyAppServer(); + server.start(); + } @BeforeEach void setup() { @@ -73,9 +81,6 @@ void setup() { driver = new RemoteWebDriver(deployment.getServer().getUrl(), browser.getCapabilities()); driver = new Augmenter().augment(driver); - - server = new NettyAppServer(); - server.start(); } @Test @@ -138,6 +143,10 @@ void canNavigateToUrl() { @AfterEach void clean() { driver.quit(); + } + + @AfterAll + static void stopServer() { server.stop(); } } From cd7303c437b0702d3a17c9ef43594375c11016eb Mon Sep 17 00:00:00 2001 From: Swastik Baranwal Date: Tue, 5 Nov 2024 14:32:42 +0530 Subject: [PATCH 072/135] [java]: mark WebElement.getAttribute deprecated (#14666) Co-authored-by: Viet Nguyen Duc Co-authored-by: Puja Jagani --- java/src/org/openqa/selenium/WebElement.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/java/src/org/openqa/selenium/WebElement.java b/java/src/org/openqa/selenium/WebElement.java index 8f9029ec2fd97..05b661d16179b 100644 --- a/java/src/org/openqa/selenium/WebElement.java +++ b/java/src/org/openqa/selenium/WebElement.java @@ -165,7 +165,10 @@ public interface WebElement extends SearchContext, TakesScreenshot { * * @param name The name of the attribute. * @return The attribute/property's current value or null if the value is not set. + * @deprecated This method is deprecated. Use {@link #getDomProperty(String)} or {@link + * #getDomAttribute(String)} for more precise attribute retrieval. */ + @Deprecated @Nullable String getAttribute(String name); /** From 4a0d05e50ea1750482211e04ece8062436eb5c6b Mon Sep 17 00:00:00 2001 From: Alex Date: Tue, 5 Nov 2024 16:17:57 +0700 Subject: [PATCH 073/135] [java] Enhance error message for NoSuchElementException and return unmodifiable set for pinned scripts (#14707) Co-authored-by: Puja Jagani --- java/src/org/openqa/selenium/By.java | 2 +- java/src/org/openqa/selenium/JavascriptExecutor.java | 8 +++----- .../org/openqa/selenium/support/pagefactory/ByAll.java | 2 +- .../openqa/selenium/support/pagefactory/ByChained.java | 2 +- 4 files changed, 6 insertions(+), 8 deletions(-) diff --git a/java/src/org/openqa/selenium/By.java b/java/src/org/openqa/selenium/By.java index 7a03e34bf5b0b..5ed367d994a09 100644 --- a/java/src/org/openqa/selenium/By.java +++ b/java/src/org/openqa/selenium/By.java @@ -121,7 +121,7 @@ public static By cssSelector(String cssSelector) { public WebElement findElement(SearchContext context) { List allElements = findElements(context); if (allElements == null || allElements.isEmpty()) { - throw new NoSuchElementException("Cannot locate an element using " + toString()); + throw new NoSuchElementException("Cannot locate an element using " + this); } return allElements.get(0); } diff --git a/java/src/org/openqa/selenium/JavascriptExecutor.java b/java/src/org/openqa/selenium/JavascriptExecutor.java index a744eb8d8df91..056935aaa4a8b 100644 --- a/java/src/org/openqa/selenium/JavascriptExecutor.java +++ b/java/src/org/openqa/selenium/JavascriptExecutor.java @@ -17,7 +17,6 @@ package org.openqa.selenium; -import java.util.Collections; import java.util.Set; import java.util.stream.Collectors; import org.jspecify.annotations.NullMarked; @@ -177,10 +176,9 @@ default void unpin(ScriptKey key) { * @return The {@link ScriptKey}s of all currently pinned scripts. */ default Set getPinnedScripts() { - return Collections.unmodifiableSet( - UnpinnedScriptKey.getPinnedScripts(this).stream() - .map(key -> (ScriptKey) key) - .collect(Collectors.toSet())); + return UnpinnedScriptKey.getPinnedScripts(this).stream() + .map(key -> (ScriptKey) key) + .collect(Collectors.toUnmodifiableSet()); } /** diff --git a/java/src/org/openqa/selenium/support/pagefactory/ByAll.java b/java/src/org/openqa/selenium/support/pagefactory/ByAll.java index 0a9e0988bc0fc..8ee9e0bee71d5 100644 --- a/java/src/org/openqa/selenium/support/pagefactory/ByAll.java +++ b/java/src/org/openqa/selenium/support/pagefactory/ByAll.java @@ -54,7 +54,7 @@ public WebElement findElement(SearchContext context) { return elements.get(0); } } - throw new NoSuchElementException("Cannot locate an element using " + toString()); + throw new NoSuchElementException("Cannot locate an element using " + this); } @Override diff --git a/java/src/org/openqa/selenium/support/pagefactory/ByChained.java b/java/src/org/openqa/selenium/support/pagefactory/ByChained.java index 5d631cc254c24..2beb51681c1b5 100644 --- a/java/src/org/openqa/selenium/support/pagefactory/ByChained.java +++ b/java/src/org/openqa/selenium/support/pagefactory/ByChained.java @@ -52,7 +52,7 @@ public ByChained(By... bys) { public WebElement findElement(SearchContext context) { List elements = findElements(context); if (elements.isEmpty()) - throw new NoSuchElementException("Cannot locate an element using " + toString()); + throw new NoSuchElementException("Cannot locate an element using " + this); return elements.get(0); } From 4d1752b851bec60894ae67ae71b2d743f25e93f3 Mon Sep 17 00:00:00 2001 From: Swastik Baranwal Date: Tue, 5 Nov 2024 15:59:40 +0530 Subject: [PATCH 074/135] [java] remove toml parser warning (#14711) Co-authored-by: Puja Jagani --- java/src/org/openqa/selenium/grid/config/TomlConfig.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/java/src/org/openqa/selenium/grid/config/TomlConfig.java b/java/src/org/openqa/selenium/grid/config/TomlConfig.java index cc6f2daa84608..51912d626daec 100644 --- a/java/src/org/openqa/selenium/grid/config/TomlConfig.java +++ b/java/src/org/openqa/selenium/grid/config/TomlConfig.java @@ -31,20 +31,15 @@ import java.util.List; import java.util.Optional; import java.util.Set; -import java.util.logging.Logger; import org.openqa.selenium.internal.Require; public class TomlConfig implements Config { private final Toml toml; - private static final Logger LOG = Logger.getLogger(TomlConfig.class.getName()); public TomlConfig(Reader reader) { try { toml = JToml.parse(reader); - LOG.warning( - "Please use quotes to denote strings. Upcoming TOML parser will require this and unquoted" - + " strings will throw an error in the future"); } catch (IOException e) { throw new ConfigException("Unable to read TOML.", e); } catch (ParseException e) { From 0facee5cc4dc80b5934a726b83e36f232f4858da Mon Sep 17 00:00:00 2001 From: Puja Jagani Date: Tue, 5 Nov 2024 16:43:40 +0530 Subject: [PATCH 075/135] [bidi][js] Ensure start nodes are serialized --- javascript/node/selenium-webdriver/bidi/browsingContext.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/javascript/node/selenium-webdriver/bidi/browsingContext.js b/javascript/node/selenium-webdriver/bidi/browsingContext.js index eeba70ff7153f..9a32004c14d15 100644 --- a/javascript/node/selenium-webdriver/bidi/browsingContext.js +++ b/javascript/node/selenium-webdriver/bidi/browsingContext.js @@ -528,10 +528,15 @@ class BrowsingContext { throw Error(`Pass in an array of ReferenceValue objects. Received: ${startNodes}`) } + let startNodesSerialized = undefined + if (startNodes !== undefined && Array.isArray(startNodes)) { + startNodesSerialized = [] startNodes.forEach((node) => { if (!(node instanceof ReferenceValue)) { throw Error(`Pass in a ReferenceValue object. Received: ${node}`) + } else { + startNodesSerialized.push(node.asMap()) } }) } @@ -544,7 +549,7 @@ class BrowsingContext { maxNodeCount: maxNodeCount, sandbox: sandbox, serializationOptions: serializationOptions, - startNodes: startNodes, + startNodes: startNodesSerialized, }, } From 339421538b790c0ac2cf0a1a0aad62d0e76349eb Mon Sep 17 00:00:00 2001 From: Puja Jagani Date: Tue, 5 Nov 2024 16:44:06 +0530 Subject: [PATCH 076/135] [bidi][js] Enable locate node tests for Chrome and Edge --- .../test/bidi/locate_nodes_test.js | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/javascript/node/selenium-webdriver/test/bidi/locate_nodes_test.js b/javascript/node/selenium-webdriver/test/bidi/locate_nodes_test.js index 109f2e07ad00e..46eb8fc45334b 100644 --- a/javascript/node/selenium-webdriver/test/bidi/locate_nodes_test.js +++ b/javascript/node/selenium-webdriver/test/bidi/locate_nodes_test.js @@ -19,7 +19,7 @@ const assert = require('node:assert') const { Browser } = require('selenium-webdriver') -const { Pages, suite } = require('../../lib/test') +const { Pages, suite, ignore} = require('../../lib/test') const BrowsingContext = require('selenium-webdriver/bidi/browsingContext') const { Locator } = require('selenium-webdriver/bidi/browsingContext') const { ScriptManager } = require('selenium-webdriver/index') @@ -80,7 +80,7 @@ suite( assert.notEqual(element.sharedId, undefined) }) - xit('can locate node with xpath locator', async function () { + it('can locate node with xpath locator', async function () { const id = await driver.getWindowHandle() const browsingContext = await BrowsingContext(driver, { browsingContextId: id, @@ -97,7 +97,7 @@ suite( assert.notEqual(element.sharedId, undefined) }) - xit('can locate node with inner test locator', async function () { + ignore(env.browsers(Browser.FIREFOX)).it('can locate node with inner test locator', async function () { const id = await driver.getWindowHandle() const browsingContext = await BrowsingContext(driver, { browsingContextId: id, @@ -109,12 +109,9 @@ suite( const element = elements[0] assert.strictEqual(element.type, 'node') assert.notEqual(element.value, undefined) - assert.strictEqual(element.value.localName, 'div') - assert.strictEqual(element.value.attributes.class, 'content') - assert.notEqual(element.sharedId, undefined) }) - xit('can locate node with max node count', async function () { + it('can locate node with max node count', async function () { const id = await driver.getWindowHandle() const browsingContext = await BrowsingContext(driver, { browsingContextId: id, @@ -126,7 +123,7 @@ suite( assert.strictEqual(elements.length, 4) }) - xit('can locate node with given start nodes', async function () { + it('can locate node with given start nodes', async function () { const id = await driver.getWindowHandle() const browsingContext = await BrowsingContext(driver, { browsingContextId: id, @@ -160,7 +157,6 @@ suite( 50, 'none', undefined, - undefined, startNodes, ) @@ -236,5 +232,5 @@ suite( }) }) }, - { browsers: [Browser.FIREFOX] }, + { browsers: [Browser.FIREFOX, Browser.CHROME, Browser.EDGE] }, ) From c5cf6588be01e756690c92b4c4350c39a2c0129c Mon Sep 17 00:00:00 2001 From: Nikolay Borisenko <22616990+nvborisenko@users.noreply.github.com> Date: Tue, 5 Nov 2024 15:07:11 +0300 Subject: [PATCH 077/135] [dotnet] Fix API docs static generation (#14651) * Fix it * Simplify * Logo * As api pages * Nested namespaces * Update toc.yml --------- Co-authored-by: Diego Molina --- dotnet/docs/api/index.md | 1 - dotnet/docs/docfx.json | 54 +++++++++++++++--------- dotnet/docs/images/favicon.ico | Bin 0 -> 9177 bytes dotnet/docs/images/logo.svg | 1 + dotnet/docs/index.md | 9 ++++ dotnet/docs/{api => support}/.gitignore | 0 dotnet/docs/toc.yml | 9 ++++ dotnet/docs/webdriver/.gitignore | 5 +++ 8 files changed, 57 insertions(+), 22 deletions(-) delete mode 100644 dotnet/docs/api/index.md create mode 100644 dotnet/docs/images/favicon.ico create mode 100644 dotnet/docs/images/logo.svg create mode 100644 dotnet/docs/index.md rename dotnet/docs/{api => support}/.gitignore (100%) create mode 100644 dotnet/docs/toc.yml create mode 100644 dotnet/docs/webdriver/.gitignore diff --git a/dotnet/docs/api/index.md b/dotnet/docs/api/index.md deleted file mode 100644 index 6103d3ac09e0e..0000000000000 --- a/dotnet/docs/api/index.md +++ /dev/null @@ -1 +0,0 @@ -# Welcome to the Selenium .NET API Docs diff --git a/dotnet/docs/docfx.json b/dotnet/docs/docfx.json index bdb6bffed9a4e..f85667fd6800e 100644 --- a/dotnet/docs/docfx.json +++ b/dotnet/docs/docfx.json @@ -3,29 +3,40 @@ { "src": [ { + "src": "../src/webdriver", "files": [ - "src/webdriver/WebDriver.csproj", - "src/support/WebDriver.Support.csproj", - "bin/**/*.dll" - ], - "src": "../" + "**/*.csproj" + ] } ], - "dest": "api", - "includePrivateMembers": false, - "disableGitFeatures": false, - "disableDefaultFilter": false, - "noRestore": false, - "namespaceLayout": "flattened", - "memberLayout": "samePage", - "allowCompilationErrors": false + "dest": "webdriver", + "namespaceLayout": "nested", + "outputFormat": "apiPage" + }, + { + "src": [ + { + "src": "../src/support", + "files": [ + "**/*.csproj" + ] + } + ], + "dest": "support", + "namespaceLayout": "nested", + "outputFormat": "apiPage" } + ], "build": { "content": [ { - "files": "**/*.{md|yml}", - "src": "api" + "files": [ + "**/*.{md,yml}" + ], + "exclude": [ + "_site/**" + ] } ], "resource": [ @@ -35,15 +46,16 @@ ] } ], - "dest": "../../build/docs/api/dotnet", - "globalMetadataFiles": [], - "fileMetadataFiles": [], + "output": "../../build/docs/api/dotnet", "template": [ "default", "modern" ], - "postProcessors": [], - "keepFileLink": false, - "disableGitFeatures": false + "globalMetadata": { + "_appName": "Selenium .NET API", + "_appLogoPath": "images/logo.svg", + "_appFaviconPath": "images/favicon.ico", + "_enableSearch": true + } } } diff --git a/dotnet/docs/images/favicon.ico b/dotnet/docs/images/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..80bf7ae9a9ac504144937887026295abdfe05f2a GIT binary patch literal 9177 zcmcIqg-qixQ}sBmjrTeq~G4x z-v6*MQGfc5`DXWb_KwOLpy6z{6aZlIk&~9xaG%>t^K#c%ueocrKInZ4TIUEY`K6ij zH5n)K_Y{X($Usnpu^B*8vt&D2xThBL%d?o=@}xRFUA`t^N@3Dajr6UY8O$gt8H`aT zQ*Ua9mYuzVp|+;nV|x0&75c`j9QSElv-#;j@$kRSjW4FHSIs2{?{^lxnz@y*MXf@S z0L+*e+*WAAGNNhhSKQkpMP@PpS)~B?JE5WTM?Kd7IYb_p(66C24dH`O4KJIp4DNzQ zgXeM#G1`uHr*$$$#Y=3zy8{8L4(ZUl9FdXJ1}d2d06U<@gX7Vg>&fDFW-u|hU#i4s z;%m`hQy{9Pk&Mwh#!;GuLjnXWB_p6qfgKq z#ubGiejh^|5SU?SYB++arL%dqt_C%9tie)XS0aB>)h8z;0A}!VPKsY+LZiplI=c?@ zo!b>+?UhA|^b8;UA7jf5(`@PIVi2~}-zeymHdk{Wt_uW295hfVJ36Rxgt`PPyt>{B zKdhb-EYf&`dW_HfwuebTU&mih)){%mZu?(a@? zVzAR_a=Zdx+QaBmh#`wimt;*&R+K2Yk_sGCPkpV|ABUq*6lo$dXtepOIE7Lzt9(=S zO){j{;Q<0Uwb?RkNF}LK~{QFwZGU8STnI7kv$Yn5#V#r9*huYRs_x|ixz+Q zZlRF3*#)a#&$?F91|9nV1!~;=uA2cN>D-!T8;@1PHBp)YNq|}QQt$qm^b05n;nQ0i zk6OPk<2Y%FXu=I*e%vTtuGn2_Cat#&b}vJ+e?Z`f{r5~|AdEkUyC5E)pY}I) zoZ5~iH=9|-MpQ8S<26x~?fh}zDUCY+fTIAt*a zxx7;0Q&(ro3*+6==VpM>duvV*HHq@bB`6;ilsL_v&0gpLt7BaMi35`7d>MJ~T8$)? zo>>~Kvbr>;Wq^4Kgw|2h(@rspa~zl;G2b|Kq8$2)+x1nagpz&#Bb2t>DbvN}P_wP4 z8GW&;DyeAcAd0#R=_K=FBg5R4+MysRg7Y+Xtp)&_5}#T;!lSLQSsoG}2t0lHloI z-3mLB9a*A}B^#E_C`V6zD(TJihAMYkpAb=>D&UKl^iOlHBHIxx7!r7+Uj0VYvKeKn zEDin6N)vQ`**kvFf|4KGw!fo2I`aoBa-Eqks&$_CcGtSwWN7eWwXqGa`TRyFjy~?W z_IW|oa*k zKGFHrE3R<}{ZJ~p^QJZW++GUb^y4qZler9@@WZgEqy+AqYv6=MaJZ?|}SkBE~~NMHM4 zs#}H)Gs?W#(H6v-Yq-&{FIYOHDk|WB3F;Ixr-_aRFG4B@s9P%@FjAYkYYgQ^Dyo!) zYuTU2CN}}EeyJ|_IaP6=W>0#~kT@Ht*w{RD_@=n{gwD~cVOkcw#J)&W8#I$}@{5=} z2ptL49XeN%zgNSv->V^|0pSqgyO?FE%h;u;4w(L@1`h9c#u&Kv#~ zAnSfcLeU>urI5!hWgFItgZykDyaw2+A@AEpQ_G=9A%*%Ist0k#JXMLdLznIT614lz zRN=Sa0^fJLuRH7x&Q&;F>{!N8fCi->mFDL19r-JwOyEhUQ1ZsUbr-Wd?mF#_<-arPo|;qF-jn5dg9i! zwkm?>r~4N4EfXAR^Yiy3fvZaHmO`PtP`xwz)7nM+t`C?3xgM%~NY0{TTfqle_9+Lb z1LMNPD)lhTY~dr;z>DL`e4^bnx&Bm?Vaaa)V!W|5eQ>AEE{lJUI4KqT&lA2arZ)i+ zPX`%AsroLo$$`v5Zj@a5$N6CTyw2{7EZm9J`(4amSYRj^pf zWZL~v*1DZCh=*A0&}cLOP3kiDc3VBnVT?3@fO=A=LTeO-d3^S;9)F>LC;T^YKKIdo z<}v5QWcWj?$LYZSSy22U{! zgmivN8T;uKDbFPX>C6aCpmpSm;DU&AqNK9z#GokmB=;qVgZjxcS9+fF=zQp>nBz`{ zg#OfM4JLJLi9;BH-+H-rL>u zdzs(inza1l+dOw-2!)X;-+M=Kj{r%)N20+L8IPBS#SRZWP3Em?a&`&-(*hSeJ`}9W z_|uh8?zul*mWIpcouKw{EjNr(ecrB%Z(j9c++U54nD0gE$zgTyZ}>OP>SO>uda#?G zYV1_|`FfY7na|zi>uYh);rmr3Xg~o_Wi@ooMh_xP|blAPUWLJ_J9}xpXrl0=hh)!oJE>;jfz}w%BILHYX-Ywv!wrN39 zm_77%;*NO1Cg0h7{_Vp+gABt1R`qa7&03k z+j~?ZpUS~c|GNQVt4O_6bmV`AHjWAuPxIa}PJ`uk_GC=8gg*y>qQ5iD zK?ZH)vc6L8Kd07TW?sR5TBQO;aLy=6;88+oj;##!1&xlGqbSH^EXpR#=6 zKV(u)0q04!`n;y3rB0HK3Ql*w%xC1?t9Kkd2u{Z`&`EtPycU1Ip%lCEgf5&6sTCG# zSCqO->VsxOSC%ia?b%gXUR>x2xosScRx0UL2s{=?~8_+Q$rVIRClanj0YDq5l^c8 zNo#}Jb99~yBH(cYt~jCG=&MhYquo_BU$~7=oP2K?JKxa{eCzrQt4_b6&U^)AU++kt5ae$$3*)q)%-4y&(;B{Vzf6aaYV#~)W#dj*&PE$?hQDXdoRPeg}0 zNf~J$ToJo|=&f@)LHiblsK7kVHGZfopA!JD?bOFp1+eoKDsHwD;M+79Lc;V%;Qr^v zBh9heVN(7$65*kxcvmJdq?hy$7RjgMjRhA1%KNLyjtqd)N5~6fLz6K4QAy)A#yoXn zaf~jDErK@e;`82Z!L$>n&hu8qe-rNBhTWwH{D-n{lmlWv)52ectVE$Aqpw*a;_0y+ zc)6_fh8;K_D_0e}1cNz-&2zN{sI z#{*6|tU>zZu*ub_>X+;tBm69r^_c7&+~5&e&;NR6iD6_7%-=7r_Je=KXxq+VoB6=d zo(!r+V+zYC;vW*SjLCJAr=1LnL3jR*78Yr{n0djicHT_xepCsR8~YrbN)8hkEvWdb zxHQt}Fd?UUqKl~wqAV$-1Y=@PoM5lQ~=D1!#n<}w=mQ4BF(%5k{iJ-`mOE0PCLho9sInrkF{A4f=T>wM#*w2(knt`mF z3j>G^;MpGi%gV7@-&#vFa*hmTcnO~^M#nCXf+5=eT;hVj?$4CLz1+vXKC?!#N7}^K zR94!LB$(LUO|H6sM!gQfU%EWv(>m5>5JTX4&;x!k=c~Et3%awauTnF)F^r`XE?qgX zo#e8x+9xZ{ywp{-1rgRj2BW$b&)3~140>G~t71c;Cg>O1-fSc~T$RVpENb}()4=Z^ z*dV&P0av;==Z2Tpm%$z^QI*v@a5Ve=5-6?;RD=X_gX$)!9S6QsK7(elQm9}jED{=p zC~7hoO2N1we%HcPxCe9mx3=%x8uxsF#YXP>e{Qn6=*S@bICv8{_|w>kFYq0ErZaPq zerZ-f#*MhDJ;>MS_~YNVXaw}_LX_t$Fh<_hiaiG*_ zLDWUhP{@wOZam{r>2Q|00^N4mQH?`%#}j z|C;8FpWuoi9Y5pQkDax=+D6|5(7CNGO@UZ=>iXlYjYpeOfHJR>wFfY-I7u;r6q&fg zr4-^6yHY#`r%lUTBgset*I6w_=+KW$=F4o2#Ebccty2<0Kdyw}S-nFq&)wOeRmt}z ztvE%;GyoapCwc$EKp0k}SqiZY)+|N<9Z}eYSr7T@ED3<=`rQkC3EUo5FY-h`Wi_NVEX>~a^!J@z&GCLI z#x&Mq|DvCotG6dFC^wjX9PLV3P%koI`s>GWXGm&E9faqAs? zW_?a8@OJ!!6P^z`m*(Bse+*rwK4rDz{C4X3-;jE80rN7HbEwZ380hOnF&8>hSRQ}! z<1#mCiM=S3@RJ%Pk~_vtl{@JgTSj#EY}x3BbA%XTR7{8Dv%|6vO%>|AP|F7iVJ9u& z)oRVv*T#?l3pA2_G-CD~;lo1}-xR$HmfLYD8!zFJhSX4BMp_uMc99s_{aUyF1EFb( zk7tUMu!6bI6G&QE`<3IaNXgwufq|S5MugB>%HV)dI6xVy{GxQ0qQ5{!K8oJw_oFLl~ZJ7NkH*b#qnQ}U3_U>E+DDrXCK*rJE^%K0dE9{gD!E+YSb)a9I z3R>)7o+hNAulZsk`HQ9PJmYQWbve{^Yqn^$!x@1Ov@(wDh?w3KVY;x~8l4(&Q0r3^ ziq)2yAF2aU2aEb^2PDW<^k`eZ@p(kCK+zC-TwM&TwiBJlu>q1na>D#xB7OCq4JrL2 zg>lV08Q>^W~ z6uYW#B94(M+)=XKjmv!$)F(@YN@SPG2NPd{pZ)6#Z)-gZN!88ZTnhN-s|II&I_fe&?Jk&RsmWm{ATx23*Y&;8D;Z3ITg$Q*>&)qyRqZ{81aNN% zz@IML>8626gZJ{}W1t#b8ogqA_jJut`no!-V!F$M{xoIucLPO+BYr3>YLf8gk7f0NbhziT=Fz|g=HEG{^`S1F%Wa<0JDBWB zO>-h5io^PzBuuW52E$FKquLVl)7~8rG}t*!*W}HMtcJ0r@41y2F*U0oRQ^5LU^Y7Zp_sM zI+XDVRSeGvVI_<}avq((-I()DfO;XAlIImSk{sr!n`+bOMX_<8vV2FOm>5uCXT;UN7nNwg^Ni zcvR!Me(Is@zk=8^igm3CJCgM`dO4{+F8n_uqAzInBNyb9!3k3qe6<#Qb8uuk?3n>JR3T z(^A$=8^GZ`5x0+_;xwhkwzsyqCYZi^ir@*@k;j2dgCITA2`^Nemy?r>hMQ3FPYs4Z zg{g8VHIgo@Ko$+|xbJTq4Hb*sx$Wkb_{-klEOQhMV2u zADo61i6-onTm2~tGAaehMGAmN8i=HU`P9F&hQN-gfWr%;R3e#4ae`7a*xj!(r|GKM z^IP~-_i4aX`q=1VOk=2A$jBQkz{_a_)Dxj@Q=ECr5!y^Yu!l;KTUgi5HFMASgv%u{ znx}t=;&shJH*&G)(Tv2qVOz>?zeU9pL{nSuu*HQWY~G?rphk{|-7o^}k_>{Fk4ATg z_o5wgPxwlAQ2;Efa(KP+ILRUGWDzD&`2*ZXsV7pN> zwOx*z**h2VxLi3ivv{k&?xGaWI#M%AiH&ectOcl!!QuqbkHG_C+RC3>zDq1>!t9gH ziJuDv`W5pW-72A@-vFtBPhJY@gX!bqWZKqYnuG~!xBDULSk+*y1D>p1{!q1kzO_ea zIe)mzm~*W|4?7k_wHozeBF2^WM5UI~3;e7iMF!U>epgEaW5zX8lB+1vuEW^yx0d+ACk-Nkn)Yw6UD?XkItoNkuJti7`{;s8pyK7-_2>Jfx18IR zgx?U?$dC5etugrmU0S|1-2iT$tQLbZt*89kzni21Pd=(L9j&zUzO$K836oMOc?_7F zQ+*YVg+MJ{eV!N6XStdvUgI(%DG^)3&4X=4;mIj1{A0_M=9L_^4BRj_!crS>K4f%C zq~yu|oOnF1wnl0H+JI60!yVvWpOl0R|3VvKU2}V7w>y+kdR($hbJ|_@F<2Z}pG(m4 zvh^Hg`s>03fyH?}mp}LSuzu86QqM7kQpGriaPK++`Q4LrSvIdLrRM2t|MO|!bS>mc z#Z6F2&wB0_neI9L29W)!R1Q@YMZf31$L4kC$w{lxD_=2-!EN*iyrZ<>XRyFsDR`z(LK5_y#>RB3| zM9I}xu~zf0E~@)2>m+-HlQerrBr0h};uNwOT@DqT-=)4!n}w6B{lN5labMo#p-#7E z6@NS@|hfeBxO;7y?OgND6{HEU4u{;5m0=zXEs$an_)50Hf~gMAacsP`AbsnF)dCf zr;buQ$X!ny;5RV&tMJ3Wb77zhAsru)`XS3n0NosNXh8C&&Qe1qhy zTHKryed|Ul(k~D^O#hmS@QInnBMDZQG&bj_rz>#Tm)6PUA(>62$ePmr*Lp0N{VF4w zt>{dT8Y%Dc-+dSU@K;grB#Bxj|N5QDjWMRT&SqsO;lk){OsnVSrN|v#HsK->$ zs7ZtCCXDQHb7qJDVBO%`BJumH8u}hhfv?TDLgu&{hmEXtPAx^jw(?Y5qo|loBjK&S z$h<|)GDy(k2~J)arTXayz)7)2!f=NbxL(3E=OVcwH>y%0St9y-f%^^m46k$Q$yN-f z7VEwNZ*DPeCUONt`QPVKgxH|^>L+Z>hVk`|uw%i%#Yq}nNPLZAm~F2#b?!47wS`$7 zZ+8A=0B&hCDu=1X7UZ!xb7xcccQ5T_{Y6Fs2Mbvwx(QW~7J_ciURB~OptQRBH&1!pGmQnK$7swg!v=FWR9M5u_op0wcw zSnPJ?9!qABp0Y9qFHDmpM(r2XMAX+-lQI>mZJp*vpP0K?LJCS7?pL4uS+kGH?=^F0D(U#HLEj?c3y=OY)c3dY}2|FQ7 z%pFr{tD}^lBc-fo0kB9|N8(bVe-4hDSUat<%dHi-rT@l#ZYo8I2Ymok=R&sip&^BbKs%lac779q{)#je(^^f6_v}?q@f$Q@wZ_is4)b) zT|w?C5+^dJ(d($=Q&&^wUxvb$?lMXqWC(H0Cbn3vR$Li?kVOt|1r)Var)U;WMK8_I zjd#e78S7iDjsDCLZj-Mc(pL_uYGeCM7Gpe2*a&*TJN_tmYx2{M3H88?6C6bdRoULz zfJt9zetz{HRPSVCjGAhrxA?_a|GwjHGGW>>2SdTLP! z1msWDC|%#?b0=X|w0A>Rg+m;lPfdZ~DCSQ&@4`m~^eW#>+WeO}rb=@y5b%mrGz~idPl5_&vV}T$kR&Dytji6cM;$N+ zpk89YMx6uGqYkpF literal 0 HcmV?d00001 diff --git a/dotnet/docs/images/logo.svg b/dotnet/docs/images/logo.svg new file mode 100644 index 0000000000000..5c58484a6f7ab --- /dev/null +++ b/dotnet/docs/images/logo.svg @@ -0,0 +1 @@ +Selenium logo mark green \ No newline at end of file diff --git a/dotnet/docs/index.md b/dotnet/docs/index.md new file mode 100644 index 0000000000000..4bf895581a8ed --- /dev/null +++ b/dotnet/docs/index.md @@ -0,0 +1,9 @@ +--- +layout: landingPage +--- + +# Welcome to the Selenium .NET API Docs + +## Modules +- [Selenium.WebDriver](/webdriver/OpenQA.Selenium.html) +- [Selenium.Support](/support/OpenQA.Selenium.Support.html) \ No newline at end of file diff --git a/dotnet/docs/api/.gitignore b/dotnet/docs/support/.gitignore similarity index 100% rename from dotnet/docs/api/.gitignore rename to dotnet/docs/support/.gitignore diff --git a/dotnet/docs/toc.yml b/dotnet/docs/toc.yml new file mode 100644 index 0000000000000..3198b53999c8e --- /dev/null +++ b/dotnet/docs/toc.yml @@ -0,0 +1,9 @@ +- name: Intro + href: index.md + +- name: Modules + items: + - name: WebDriver + href: webdriver/OpenQA.Selenium.yml + - name: Support + href: support/OpenQA.Selenium.Support.yml diff --git a/dotnet/docs/webdriver/.gitignore b/dotnet/docs/webdriver/.gitignore new file mode 100644 index 0000000000000..e8079a3bef9d6 --- /dev/null +++ b/dotnet/docs/webdriver/.gitignore @@ -0,0 +1,5 @@ +############### +# temp file # +############### +*.yml +.manifest From 61a1eb10b0d78219a3a56607531fdcab5c5b52a8 Mon Sep 17 00:00:00 2001 From: Diego Molina Date: Tue, 5 Nov 2024 14:05:22 +0100 Subject: [PATCH 078/135] Running format script --- .../selenium-webdriver/test/bidi/locate_nodes_test.js | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/javascript/node/selenium-webdriver/test/bidi/locate_nodes_test.js b/javascript/node/selenium-webdriver/test/bidi/locate_nodes_test.js index 46eb8fc45334b..a41bb344d79e8 100644 --- a/javascript/node/selenium-webdriver/test/bidi/locate_nodes_test.js +++ b/javascript/node/selenium-webdriver/test/bidi/locate_nodes_test.js @@ -19,7 +19,7 @@ const assert = require('node:assert') const { Browser } = require('selenium-webdriver') -const { Pages, suite, ignore} = require('../../lib/test') +const { Pages, suite, ignore } = require('../../lib/test') const BrowsingContext = require('selenium-webdriver/bidi/browsingContext') const { Locator } = require('selenium-webdriver/bidi/browsingContext') const { ScriptManager } = require('selenium-webdriver/index') @@ -152,13 +152,7 @@ suite( startNodes.push(new ReferenceValue(node.handle, node.sharedId)) }) - const elements = await browsingContext.locateNodes( - Locator.css('input'), - 50, - 'none', - undefined, - startNodes, - ) + const elements = await browsingContext.locateNodes(Locator.css('input'), 50, 'none', undefined, startNodes) assert.strictEqual(elements.length, 35) }) From cc5754966c060a984d3937a87fdf6e8bb099791d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Sautter?= Date: Tue, 5 Nov 2024 20:26:33 +0100 Subject: [PATCH 079/135] [java] use new headless mode in Edge unit tests --- java/test/org/openqa/selenium/testing/drivers/Browser.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/test/org/openqa/selenium/testing/drivers/Browser.java b/java/test/org/openqa/selenium/testing/drivers/Browser.java index bab6e081dbd5b..a75d321bd7ac8 100644 --- a/java/test/org/openqa/selenium/testing/drivers/Browser.java +++ b/java/test/org/openqa/selenium/testing/drivers/Browser.java @@ -83,7 +83,7 @@ public Capabilities getCapabilities() { } if (Boolean.getBoolean("webdriver.headless")) { - options.addArguments("--headless=chrome"); + options.addArguments("--headless=new"); } options.addArguments( From a9ec9ca6821fd466e8e9d6e966d0feb150b0a5a4 Mon Sep 17 00:00:00 2001 From: Michael Render Date: Tue, 5 Nov 2024 15:54:01 -0500 Subject: [PATCH 080/135] [dotnet] Gracefully handle clashing device names in Actions (#14713) --- .../webdriver/Interactions/ActionSequence.cs | 22 ++-- dotnet/src/webdriver/Interactions/Actions.cs | 104 ++++++------------ .../Interactions/CombinedInputActionsTest.cs | 31 ++++++ 3 files changed, 78 insertions(+), 79 deletions(-) diff --git a/dotnet/src/webdriver/Interactions/ActionSequence.cs b/dotnet/src/webdriver/Interactions/ActionSequence.cs index 68eabbea00f2b..7aebebd8a3b35 100644 --- a/dotnet/src/webdriver/Interactions/ActionSequence.cs +++ b/dotnet/src/webdriver/Interactions/ActionSequence.cs @@ -29,7 +29,6 @@ namespace OpenQA.Selenium.Interactions public class ActionSequence { private List interactions = new List(); - private InputDevice device; ///

/// Initializes a new instance of the class. @@ -52,7 +51,7 @@ public ActionSequence(InputDevice device, int initialSize) throw new ArgumentNullException(nameof(device), "Input device cannot be null."); } - this.device = device; + this.InputDevice = device; for (int i = 0; i < initialSize; i++) { @@ -71,10 +70,13 @@ public int Count /// /// Gets the input device for this Action sequence. /// - public InputDevice inputDevice - { - get { return this.inputDevice; } - } + [Obsolete("This property has been renamed to InputDevice and will be removed in a future version")] + public InputDevice inputDevice => InputDevice; + + /// + /// Gets the input device for this Action sequence. + /// + public InputDevice InputDevice { get; } /// /// Adds an action to the sequence. @@ -88,9 +90,9 @@ public ActionSequence AddAction(Interaction interactionToAdd) throw new ArgumentNullException(nameof(interactionToAdd), "Interaction to add to sequence must not be null"); } - if (!interactionToAdd.IsValidFor(this.device.DeviceKind)) + if (!interactionToAdd.IsValidFor(this.InputDevice.DeviceKind)) { - throw new ArgumentException(string.Format(CultureInfo.InvariantCulture, "Interaction {0} is invalid for device type {1}.", interactionToAdd.GetType(), this.device.DeviceKind), nameof(interactionToAdd)); + throw new ArgumentException(string.Format(CultureInfo.InvariantCulture, "Interaction {0} is invalid for device type {1}.", interactionToAdd.GetType(), this.InputDevice.DeviceKind), nameof(interactionToAdd)); } this.interactions.Add(interactionToAdd); @@ -103,7 +105,7 @@ public ActionSequence AddAction(Interaction interactionToAdd) /// A containing the actions in this sequence. public Dictionary ToDictionary() { - Dictionary toReturn = this.device.ToDictionary(); + Dictionary toReturn = this.InputDevice.ToDictionary(); List encodedActions = new List(); foreach (Interaction action in this.interactions) @@ -122,7 +124,7 @@ public Dictionary ToDictionary() /// A string that represents the current . public override string ToString() { - StringBuilder builder = new StringBuilder("Action sequence - ").Append(this.device.ToString()); + StringBuilder builder = new StringBuilder("Action sequence - ").Append(this.InputDevice.ToString()); foreach (Interaction action in this.interactions) { builder.AppendLine(); diff --git a/dotnet/src/webdriver/Interactions/Actions.cs b/dotnet/src/webdriver/Interactions/Actions.cs index dddde06781b7a..36c58a925b78b 100644 --- a/dotnet/src/webdriver/Interactions/Actions.cs +++ b/dotnet/src/webdriver/Interactions/Actions.cs @@ -31,16 +31,15 @@ public class Actions : IAction private PointerInputDevice activePointer; private KeyInputDevice activeKeyboard; private WheelInputDevice activeWheel; - private IActionExecutor actionExecutor; /// /// Initializes a new instance of the class. /// /// The object on which the actions built will be performed. + /// If does not implement . public Actions(IWebDriver driver) : this(driver, TimeSpan.FromMilliseconds(250)) { - } /// @@ -48,6 +47,7 @@ public Actions(IWebDriver driver) /// /// The object on which the actions built will be performed. /// How long durable action is expected to take. + /// If does not implement . public Actions(IWebDriver driver, TimeSpan duration) { IActionExecutor actionExecutor = GetDriverAs(driver); @@ -56,7 +56,7 @@ public Actions(IWebDriver driver, TimeSpan duration) throw new ArgumentException("The IWebDriver object must implement or wrap a driver that implements IActionExecutor.", nameof(driver)); } - this.actionExecutor = actionExecutor; + this.ActionExecutor = actionExecutor; this.duration = duration; } @@ -64,10 +64,7 @@ public Actions(IWebDriver driver, TimeSpan duration) /// /// Returns the for the driver. /// - protected IActionExecutor ActionExecutor - { - get { return this.actionExecutor; } - } + protected IActionExecutor ActionExecutor { get; } /// /// Sets the active pointer device for this Actions class. @@ -75,33 +72,17 @@ protected IActionExecutor ActionExecutor /// The kind of pointer device to set as active. /// The name of the pointer device to set as active. /// A self-reference to this Actions class. + /// If a device with this name exists but is not a pointer. public Actions SetActivePointer(PointerKind kind, string name) { - IList sequences = this.actionBuilder.ToActionSequenceList(); + InputDevice device = FindDeviceById(name); - InputDevice device = null; - - foreach (var sequence in sequences) + this.activePointer = device switch { - Dictionary actions = sequence.ToDictionary(); - - string id = (string)actions["id"]; - - if (id == name) - { - device = sequence.inputDevice; - break; - } - } - - if (device == null) - { - this.activePointer = new PointerInputDevice(kind, name); - } - else - { - this.activePointer = (PointerInputDevice)device; - } + null => new PointerInputDevice(kind, name), + PointerInputDevice pointerDevice => pointerDevice, + _ => throw new InvalidOperationException($"Device under the name \"{name}\" is not a pointer. Actual input type: {device.DeviceKind}"), + }; return this; } @@ -111,33 +92,17 @@ public Actions SetActivePointer(PointerKind kind, string name) /// /// The name of the keyboard device to set as active. /// A self-reference to this Actions class. + /// If a device with this name exists but is not a keyboard. public Actions SetActiveKeyboard(string name) { - IList sequences = this.actionBuilder.ToActionSequenceList(); + InputDevice device = FindDeviceById(name); - InputDevice device = null; - - foreach (var sequence in sequences) + this.activeKeyboard = device switch { - Dictionary actions = sequence.ToDictionary(); - - string id = (string)actions["id"]; - - if (id == name) - { - device = sequence.inputDevice; - break; - } - } - - if (device == null) - { - this.activeKeyboard = new KeyInputDevice(name); - } - else - { - this.activeKeyboard = (KeyInputDevice)device; - } + null => new KeyInputDevice(name), + KeyInputDevice keyDevice => keyDevice, + _ => throw new InvalidOperationException($"Device under the name \"{name}\" is not a keyboard. Actual input type: {device.DeviceKind}"), + }; return this; } @@ -147,13 +112,24 @@ public Actions SetActiveKeyboard(string name) /// /// The name of the wheel device to set as active. /// A self-reference to this Actions class. + /// If a device with this name exists but is not a wheel. public Actions SetActiveWheel(string name) { - IList sequences = this.actionBuilder.ToActionSequenceList(); + InputDevice device = FindDeviceById(name); + + this.activeWheel = device switch + { + null => new WheelInputDevice(name), + WheelInputDevice wheelDevice => wheelDevice, + _ => throw new InvalidOperationException($"Device under the name \"{name}\" is not a wheel. Actual input type: {device.DeviceKind}"), + }; - InputDevice device = null; + return this; + } - foreach (var sequence in sequences) + private InputDevice FindDeviceById(string name) + { + foreach (var sequence in this.actionBuilder.ToActionSequenceList()) { Dictionary actions = sequence.ToDictionary(); @@ -161,21 +137,11 @@ public Actions SetActiveWheel(string name) if (id == name) { - device = sequence.inputDevice; - break; + return sequence.inputDevice; } } - if (device == null) - { - this.activeWheel = new WheelInputDevice(name); - } - else - { - this.activeWheel = (WheelInputDevice)device; - } - - return this; + return null; } /// @@ -619,7 +585,7 @@ public IAction Build() /// public void Perform() { - this.actionExecutor.PerformActions(this.actionBuilder.ToActionSequenceList()); + this.ActionExecutor.PerformActions(this.actionBuilder.ToActionSequenceList()); this.actionBuilder.ClearSequences(); } diff --git a/dotnet/test/common/Interactions/CombinedInputActionsTest.cs b/dotnet/test/common/Interactions/CombinedInputActionsTest.cs index 483f1204b7ca8..711259b785aa5 100644 --- a/dotnet/test/common/Interactions/CombinedInputActionsTest.cs +++ b/dotnet/test/common/Interactions/CombinedInputActionsTest.cs @@ -397,6 +397,37 @@ public void PerformsPause() Assert.IsTrue(DateTime.Now - start > TimeSpan.FromMilliseconds(1200)); } + [Test] + public void ShouldHandleClashingDeviceNamesGracefully() + { + var actionsWithPointer = new Actions(driver) + .SetActivePointer(PointerKind.Mouse, "test") + .Click(); + + Assert.That(() => + { + actionsWithPointer.SetActiveWheel("test"); + }, Throws.InvalidOperationException.With.Message.EqualTo("Device under the name \"test\" is not a wheel. Actual input type: Pointer")); + + var actionsWithKeyboard = new Actions(driver) + .SetActiveKeyboard("test") + .KeyDown(Keys.Shift).KeyUp(Keys.Shift); + + Assert.That(() => + { + actionsWithKeyboard.SetActivePointer(PointerKind.Pen, "test"); + }, Throws.InvalidOperationException.With.Message.EqualTo("Device under the name \"test\" is not a pointer. Actual input type: Key")); + + var actionsWithWheel = new Actions(driver) + .SetActiveWheel("test") + .ScrollByAmount(0, 0); + + Assert.That(() => + { + actionsWithWheel.SetActiveKeyboard("test"); + }, Throws.InvalidOperationException.With.Message.EqualTo("Device under the name \"test\" is not a keyboard. Actual input type: Wheel")); + } + private bool FuzzyPositionMatching(int expectedX, int expectedY, string locationTuple) { string[] splitString = locationTuple.Split(','); From f92d485973ff38d364253f8ae84e5e2e9150ea8f Mon Sep 17 00:00:00 2001 From: Natalia Pozhidaeva Date: Tue, 5 Nov 2024 19:55:53 -0300 Subject: [PATCH 081/135] [dotnet] Add ChromiumNetworkConditions to command serialization (#14716) --- dotnet/src/webdriver/Command.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/dotnet/src/webdriver/Command.cs b/dotnet/src/webdriver/Command.cs index fd35c386de0bb..a0a146b3f00bb 100644 --- a/dotnet/src/webdriver/Command.cs +++ b/dotnet/src/webdriver/Command.cs @@ -157,6 +157,7 @@ private static Dictionary ConvertParametersFromJson(string value // Selenium WebDriver types [JsonSerializable(typeof(char[]))] [JsonSerializable(typeof(byte[]))] + [JsonSerializable(typeof(Chromium.ChromiumNetworkConditions))] [JsonSerializable(typeof(Cookie))] [JsonSerializable(typeof(ReturnedCookie))] [JsonSerializable(typeof(Proxy))] From 9f5ee9f425b253cd58eea20b20b6b3b522d30937 Mon Sep 17 00:00:00 2001 From: joerg1985 <16140691+joerg1985@users.noreply.github.com> Date: Wed, 6 Nov 2024 06:39:21 +0100 Subject: [PATCH 082/135] [java] start the secure server only when needed in unit tests (#14717) Co-authored-by: Puja Jagani --- .../selenium/CookieImplementationTest.java | 2 ++ .../org/openqa/selenium/PageLoadingTest.java | 2 ++ .../environment/InProcessTestEnvironment.java | 6 ++-- .../environment/webserver/NettyAppServer.java | 26 ++++++++-------- .../webserver/NettyAppServerTest.java | 2 +- .../FederatedCredentialManagementTest.java | 2 ++ .../grid/router/RemoteWebDriverBiDiTest.java | 2 +- .../router/RemoteWebDriverDownloadTest.java | 2 +- .../javascript/JavaScriptTestSuite.java | 2 +- .../selenium/safari/CrossDomainTest.java | 2 +- .../org/openqa/selenium/testing/BUILD.bazel | 1 + .../selenium/testing/JupiterTestBase.java | 24 ++++++++++++++- .../selenium/testing/NeedsSecureServer.java | 30 +++++++++++++++++++ 13 files changed, 82 insertions(+), 21 deletions(-) create mode 100644 java/test/org/openqa/selenium/testing/NeedsSecureServer.java diff --git a/java/test/org/openqa/selenium/CookieImplementationTest.java b/java/test/org/openqa/selenium/CookieImplementationTest.java index 46f3d4b9d7f15..5da0b5f408991 100644 --- a/java/test/org/openqa/selenium/CookieImplementationTest.java +++ b/java/test/org/openqa/selenium/CookieImplementationTest.java @@ -35,10 +35,12 @@ import org.openqa.selenium.environment.DomainHelper; import org.openqa.selenium.testing.Ignore; import org.openqa.selenium.testing.JupiterTestBase; +import org.openqa.selenium.testing.NeedsSecureServer; import org.openqa.selenium.testing.NotWorkingInRemoteBazelBuilds; import org.openqa.selenium.testing.NotYetImplemented; import org.openqa.selenium.testing.SwitchToTopAfterTest; +@NeedsSecureServer class CookieImplementationTest extends JupiterTestBase { private DomainHelper domainHelper; diff --git a/java/test/org/openqa/selenium/PageLoadingTest.java b/java/test/org/openqa/selenium/PageLoadingTest.java index 545d236248f9a..e5a792b8dcc87 100644 --- a/java/test/org/openqa/selenium/PageLoadingTest.java +++ b/java/test/org/openqa/selenium/PageLoadingTest.java @@ -36,10 +36,12 @@ import org.openqa.selenium.testing.Ignore; import org.openqa.selenium.testing.JupiterTestBase; import org.openqa.selenium.testing.NeedsFreshDriver; +import org.openqa.selenium.testing.NeedsSecureServer; import org.openqa.selenium.testing.NoDriverAfterTest; import org.openqa.selenium.testing.NotYetImplemented; import org.openqa.selenium.testing.SwitchToTopAfterTest; +@NeedsSecureServer class PageLoadingTest extends JupiterTestBase { @Test diff --git a/java/test/org/openqa/selenium/environment/InProcessTestEnvironment.java b/java/test/org/openqa/selenium/environment/InProcessTestEnvironment.java index 150f0a2685a5a..70b29dfd27a70 100644 --- a/java/test/org/openqa/selenium/environment/InProcessTestEnvironment.java +++ b/java/test/org/openqa/selenium/environment/InProcessTestEnvironment.java @@ -24,8 +24,8 @@ public class InProcessTestEnvironment implements TestEnvironment { private final AppServer appServer; - public InProcessTestEnvironment() { - appServer = new NettyAppServer(); + public InProcessTestEnvironment(boolean secureServer) { + appServer = new NettyAppServer(secureServer); appServer.start(); } @@ -40,6 +40,6 @@ public void stop() { } public static void main(String[] args) { - new InProcessTestEnvironment(); + new InProcessTestEnvironment(true); } } diff --git a/java/test/org/openqa/selenium/environment/webserver/NettyAppServer.java b/java/test/org/openqa/selenium/environment/webserver/NettyAppServer.java index d477bb4f1a2fd..04316b0e451d8 100644 --- a/java/test/org/openqa/selenium/environment/webserver/NettyAppServer.java +++ b/java/test/org/openqa/selenium/environment/webserver/NettyAppServer.java @@ -68,13 +68,13 @@ public class NettyAppServer implements AppServer { LOG.log( Level.WARNING, String.format("NettyAppServer retry #%s. ", e.getAttemptCount())); - initValues(); + initValues(secure != null); }) .onRetriesExceeded(e -> LOG.log(Level.WARNING, "NettyAppServer start aborted.")) .build(); - public NettyAppServer() { - initValues(); + public NettyAppServer(boolean secureServer) { + initValues(secureServer); } public NettyAppServer(HttpHandler handler) { @@ -116,7 +116,7 @@ public static void main(String[] args) { System.out.printf("Server started. Root URL: %s%n", server.whereIs("/")); } - private void initValues() { + private void initValues(boolean secureServer) { Config config = createDefaultConfig(); BaseServerOptions options = new BaseServerOptions(config); @@ -128,16 +128,18 @@ private void initValues() { server = new NettyServer(options, handler); - Config secureConfig = new CompoundConfig(sslConfig, createDefaultConfig()); - BaseServerOptions secureOptions = new BaseServerOptions(secureConfig); + if (secureServer) { + Config secureConfig = new CompoundConfig(sslConfig, createDefaultConfig()); + BaseServerOptions secureOptions = new BaseServerOptions(secureConfig); - HttpHandler secureHandler = - new HandlersForTests( - secureOptions.getHostname().orElse("localhost"), - secureOptions.getPort(), - tempDir.toPath()); + HttpHandler secureHandler = + new HandlersForTests( + secureOptions.getHostname().orElse("localhost"), + secureOptions.getPort(), + tempDir.toPath()); - secure = new NettyServer(secureOptions, secureHandler); + secure = new NettyServer(secureOptions, secureHandler); + } } @Override diff --git a/java/test/org/openqa/selenium/environment/webserver/NettyAppServerTest.java b/java/test/org/openqa/selenium/environment/webserver/NettyAppServerTest.java index 86b40e0282449..3574739763528 100644 --- a/java/test/org/openqa/selenium/environment/webserver/NettyAppServerTest.java +++ b/java/test/org/openqa/selenium/environment/webserver/NettyAppServerTest.java @@ -21,6 +21,6 @@ class NettyAppServerTest extends AppServerTestBase { @Override protected AppServer createAppServer() { - return new NettyAppServer(); + return new NettyAppServer(false); } } diff --git a/java/test/org/openqa/selenium/federatedcredentialmanagement/FederatedCredentialManagementTest.java b/java/test/org/openqa/selenium/federatedcredentialmanagement/FederatedCredentialManagementTest.java index 8bf947f4ca584..ddb9b5b462f45 100644 --- a/java/test/org/openqa/selenium/federatedcredentialmanagement/FederatedCredentialManagementTest.java +++ b/java/test/org/openqa/selenium/federatedcredentialmanagement/FederatedCredentialManagementTest.java @@ -36,8 +36,10 @@ import org.openqa.selenium.chrome.ChromeOptions; import org.openqa.selenium.support.ui.WebDriverWait; import org.openqa.selenium.testing.JupiterTestBase; +import org.openqa.selenium.testing.NeedsSecureServer; import org.openqa.selenium.testing.NotYetImplemented; +@NeedsSecureServer class FederatedCredentialManagementTest extends JupiterTestBase { private JavascriptExecutor jsAwareDriver; diff --git a/java/test/org/openqa/selenium/grid/router/RemoteWebDriverBiDiTest.java b/java/test/org/openqa/selenium/grid/router/RemoteWebDriverBiDiTest.java index a9debd364b8f1..8269f5028cfc9 100644 --- a/java/test/org/openqa/selenium/grid/router/RemoteWebDriverBiDiTest.java +++ b/java/test/org/openqa/selenium/grid/router/RemoteWebDriverBiDiTest.java @@ -61,7 +61,7 @@ class RemoteWebDriverBiDiTest { @BeforeAll static void serverSetup() { - server = new NettyAppServer(); + server = new NettyAppServer(false); server.start(); } diff --git a/java/test/org/openqa/selenium/grid/router/RemoteWebDriverDownloadTest.java b/java/test/org/openqa/selenium/grid/router/RemoteWebDriverDownloadTest.java index 96f9ba64b23bf..6ebc1752b6e12 100644 --- a/java/test/org/openqa/selenium/grid/router/RemoteWebDriverDownloadTest.java +++ b/java/test/org/openqa/selenium/grid/router/RemoteWebDriverDownloadTest.java @@ -88,7 +88,7 @@ public void setupServers() { tearDowns.add(deployment); server = deployment.getServer(); - appServer = new NettyAppServer(); + appServer = new NettyAppServer(false); tearDowns.add(() -> appServer.stop()); appServer.start(); } diff --git a/java/test/org/openqa/selenium/javascript/JavaScriptTestSuite.java b/java/test/org/openqa/selenium/javascript/JavaScriptTestSuite.java index 002bfd5d205b8..cbb5f660b959a 100644 --- a/java/test/org/openqa/selenium/javascript/JavaScriptTestSuite.java +++ b/java/test/org/openqa/selenium/javascript/JavaScriptTestSuite.java @@ -62,7 +62,7 @@ private static boolean isBazel() { @BeforeEach public void setup() { // this field is actually in use, javascript test do access it - testEnvironment = GlobalTestEnvironment.getOrCreate(InProcessTestEnvironment::new); + testEnvironment = GlobalTestEnvironment.getOrCreate(() -> new InProcessTestEnvironment(true)); } @AfterEach diff --git a/java/test/org/openqa/selenium/safari/CrossDomainTest.java b/java/test/org/openqa/selenium/safari/CrossDomainTest.java index 2f9e5c4a51724..842f0fc7db4c4 100644 --- a/java/test/org/openqa/selenium/safari/CrossDomainTest.java +++ b/java/test/org/openqa/selenium/safari/CrossDomainTest.java @@ -41,7 +41,7 @@ class CrossDomainTest extends JupiterTestBase { @BeforeAll public static void startSecondServer() { - otherServer = new NettyAppServer(); + otherServer = new NettyAppServer(false); otherServer.start(); otherPages = new Pages(otherServer); diff --git a/java/test/org/openqa/selenium/testing/BUILD.bazel b/java/test/org/openqa/selenium/testing/BUILD.bazel index 9bc398860502a..68d6d6a2f675d 100644 --- a/java/test/org/openqa/selenium/testing/BUILD.bazel +++ b/java/test/org/openqa/selenium/testing/BUILD.bazel @@ -20,6 +20,7 @@ java_library( "Ignore.java", "IgnoreList.java", "NeedsFreshDriver.java", + "NeedsSecureServer.java", "NoDriverAfterTest.java", "NoDriverBeforeTest.java", "NotWorkingInRemoteBazelBuilds.java", diff --git a/java/test/org/openqa/selenium/testing/JupiterTestBase.java b/java/test/org/openqa/selenium/testing/JupiterTestBase.java index bd42009600ba5..a540bafb7c849 100644 --- a/java/test/org/openqa/selenium/testing/JupiterTestBase.java +++ b/java/test/org/openqa/selenium/testing/JupiterTestBase.java @@ -22,6 +22,8 @@ import java.net.MalformedURLException; import java.net.URL; import java.time.Duration; +import java.util.Optional; +import java.util.logging.Logger; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.BeforeEach; @@ -37,6 +39,8 @@ public abstract class JupiterTestBase { + private static final Logger LOG = Logger.getLogger(JupiterTestBase.class.getName()); + @RegisterExtension protected static SeleniumExtension seleniumExtension = new SeleniumExtension(); protected TestEnvironment environment; @@ -54,9 +58,27 @@ public static void shouldTestBeRunAtAll() { @BeforeEach public void prepareEnvironment() { - environment = GlobalTestEnvironment.getOrCreate(InProcessTestEnvironment::new); + boolean needsSecureServer = + Optional.ofNullable(this.getClass().getAnnotation(NeedsSecureServer.class)) + .map(NeedsSecureServer::value) + .orElse(false); + + environment = + GlobalTestEnvironment.getOrCreate(() -> new InProcessTestEnvironment(needsSecureServer)); appServer = environment.getAppServer(); + if (needsSecureServer) { + try { + appServer.whereIsSecure("/"); + } catch (IllegalStateException ex) { + // this should not happen with bazel, a new JVM is used for each class + // the annotation is on class level, so we should never see this + LOG.info("appServer is restarted with secureServer=true"); + environment.stop(); + environment = new InProcessTestEnvironment(true); + } + } + pages = new Pages(appServer); driver = seleniumExtension.getDriver(); diff --git a/java/test/org/openqa/selenium/testing/NeedsSecureServer.java b/java/test/org/openqa/selenium/testing/NeedsSecureServer.java new file mode 100644 index 0000000000000..beda0b16d666b --- /dev/null +++ b/java/test/org/openqa/selenium/testing/NeedsSecureServer.java @@ -0,0 +1,30 @@ +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +package org.openqa.selenium.testing; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.TYPE) +public @interface NeedsSecureServer { + + boolean value() default true; +} From 8b55c039143d2c3dadef8b44fd056dc0afc35a3c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 6 Nov 2024 11:35:41 +0530 Subject: [PATCH 083/135] Update dependency net.bytebuddy:byte-buddy to v1.15.10 (#14655) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Puja Jagani --- MODULE.bazel | 2 +- java/maven_install.json | 10 ++-- rust/Cargo.Bazel.lock | 109 +++++++++++++++++++++++++++++++--------- 3 files changed, 92 insertions(+), 29 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index b52df075394b5..109f314240f3c 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -201,7 +201,7 @@ maven.install( "io.opentelemetry.semconv:opentelemetry-semconv:1.25.0-alpha", "io.ous:jtoml:2.0.0", "it.ozimov:embedded-redis:0.7.3", - "net.bytebuddy:byte-buddy:1.15.7", + "net.bytebuddy:byte-buddy:1.15.10", "org.htmlunit:htmlunit-core-js:4.5.0", "org.apache.commons:commons-exec:1.4.0", "org.apache.logging.log4j:log4j-core:2.24.1", diff --git a/java/maven_install.json b/java/maven_install.json index 9034f3dee04b2..8674b93489e4d 100644 --- a/java/maven_install.json +++ b/java/maven_install.json @@ -1,7 +1,7 @@ { "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL", - "__INPUT_ARTIFACTS_HASH": 282748108, - "__RESOLVED_ARTIFACTS_HASH": 1016391538, + "__INPUT_ARTIFACTS_HASH": 1916308216, + "__RESOLVED_ARTIFACTS_HASH": 1662541222, "conflict_resolution": { "com.google.code.gson:gson:2.8.9": "com.google.code.gson:gson:2.11.0", "com.google.errorprone:error_prone_annotations:2.3.2": "com.google.errorprone:error_prone_annotations:2.28.0", @@ -495,10 +495,10 @@ }, "net.bytebuddy:byte-buddy": { "shasums": { - "jar": "7f77ee7ae0a6f420218546424a92fc6c964ed5788b21a2559d6be177c5e1a718", - "sources": "d19281fa34e46008ff096ec955659f94c81df9a3301109e33503ac15f9e1c44d" + "jar": "d8390d20685a41a2bdca640f958942cd91bcbf21c42470494bdf5752d9a07b14", + "sources": "254ea80bf6f932e785b6f7dcdf3666b6fad4ceea36ef187c064a5346c650cb2c" }, - "version": "1.15.7" + "version": "1.15.10" }, "net.bytebuddy:byte-buddy-agent": { "shasums": { diff --git a/rust/Cargo.Bazel.lock b/rust/Cargo.Bazel.lock index 187142b30214a..aa489691c16ae 100644 --- a/rust/Cargo.Bazel.lock +++ b/rust/Cargo.Bazel.lock @@ -1,5 +1,5 @@ { - "checksum": "1b307b787c95f27b60af367955d57dfd4b21ff233bf6e156a87950f4c610430e", + "checksum": "94895b25f9b1d0a76ec78d588887353422bc623faf9ef986467b199d2a966765", "crates": { "addr2line 0.21.0": { "name": "addr2line", @@ -572,14 +572,14 @@ ], "license_file": "LICENSE-APACHE" }, - "anyhow 1.0.89": { + "anyhow 1.0.91": { "name": "anyhow", - "version": "1.0.89", + "version": "1.0.91", "package_url": "https://github.com/dtolnay/anyhow", "repository": { "Http": { - "url": "https://static.crates.io/crates/anyhow/1.0.89/download", - "sha256": "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" + "url": "https://static.crates.io/crates/anyhow/1.0.91/download", + "sha256": "c042108f3ed77fd83760a5fd79b53be043192bb3b9dba91d8c574c0ada7850c8" } }, "targets": [ @@ -623,7 +623,7 @@ "deps": { "common": [ { - "id": "anyhow 1.0.89", + "id": "anyhow 1.0.91", "target": "build_script_build" }, { @@ -634,7 +634,7 @@ "selects": {} }, "edition": "2018", - "version": "1.0.89" + "version": "1.0.91" }, "build_script_attrs": { "compile_data_glob": [ @@ -2034,16 +2034,79 @@ "id": "jobserver 0.1.31", "target": "jobserver" }, - { - "id": "libc 0.2.160", - "target": "libc" - }, { "id": "shlex 1.3.0", "target": "shlex" } ], - "selects": {} + "selects": { + "aarch64-apple-darwin": [ + { + "id": "libc 0.2.160", + "target": "libc" + } + ], + "aarch64-unknown-linux-gnu": [ + { + "id": "libc 0.2.160", + "target": "libc" + } + ], + "aarch64-unknown-nixos-gnu": [ + { + "id": "libc 0.2.160", + "target": "libc" + } + ], + "arm-unknown-linux-gnueabi": [ + { + "id": "libc 0.2.160", + "target": "libc" + } + ], + "i686-unknown-linux-gnu": [ + { + "id": "libc 0.2.160", + "target": "libc" + } + ], + "powerpc-unknown-linux-gnu": [ + { + "id": "libc 0.2.160", + "target": "libc" + } + ], + "s390x-unknown-linux-gnu": [ + { + "id": "libc 0.2.160", + "target": "libc" + } + ], + "x86_64-apple-darwin": [ + { + "id": "libc 0.2.160", + "target": "libc" + } + ], + "x86_64-unknown-freebsd": [ + { + "id": "libc 0.2.160", + "target": "libc" + } + ], + "x86_64-unknown-linux-gnu": [ + { + "id": "libc 0.2.160", + "target": "libc" + } + ], + "x86_64-unknown-nixos-gnu": [ + { + "id": "libc 0.2.160", + "target": "libc" + } + ] + } }, "edition": "2018", "version": "1.1.30" @@ -4058,7 +4121,7 @@ "target": "log" }, { - "id": "regex 1.11.0", + "id": "regex 1.11.1", "target": "regex" } ], @@ -10411,14 +10474,14 @@ ], "license_file": "LICENSE" }, - "regex 1.11.0": { + "regex 1.11.1": { "name": "regex", - "version": "1.11.0", + "version": "1.11.1", "package_url": "https://github.com/rust-lang/regex", "repository": { "Http": { - "url": "https://static.crates.io/crates/regex/1.11.0/download", - "sha256": "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" + "url": "https://static.crates.io/crates/regex/1.11.1/download", + "sha256": "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" } }, "targets": [ @@ -10484,7 +10547,7 @@ "selects": {} }, "edition": "2021", - "version": "1.11.0" + "version": "1.11.1" }, "license": "MIT OR Apache-2.0", "license_ids": [ @@ -12808,7 +12871,7 @@ "target": "quote" }, { - "id": "regex 1.11.0", + "id": "regex 1.11.1", "target": "regex" }, { @@ -14073,7 +14136,7 @@ "deps": { "common": [ { - "id": "anyhow 1.0.89", + "id": "anyhow 1.0.91", "target": "anyhow" }, { @@ -14117,7 +14180,7 @@ "target": "log" }, { - "id": "regex 1.11.0", + "id": "regex 1.11.1", "target": "regex" }, { @@ -22673,7 +22736,7 @@ ] }, "direct_deps": [ - "anyhow 1.0.89", + "anyhow 1.0.91", "apple-flat-package 0.18.0", "bzip2 0.4.4", "clap 4.5.20", @@ -22684,7 +22747,7 @@ "flate2 1.0.34", "infer 0.16.0", "log 0.4.22", - "regex 1.11.0", + "regex 1.11.1", "reqwest 0.12.8", "serde 1.0.210", "serde_json 1.0.128", From c120f607571ea15105da03f02a69db885f322cf5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 6 Nov 2024 13:32:47 +0530 Subject: [PATCH 084/135] Update dependency io.grpc:grpc-context to v1.68.1 (#14681) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Puja Jagani --- MODULE.bazel | 2 +- java/maven_install.json | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index 109f314240f3c..ae3a97b1d1b9f 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -180,7 +180,7 @@ maven.install( "com.google.googlejavaformat:google-java-format:jar:1.24.0", "com.graphql-java:graphql-java:22.3", "dev.failsafe:failsafe:3.3.2", - "io.grpc:grpc-context:1.68.0", + "io.grpc:grpc-context:1.68.1", "io.lettuce:lettuce-core:6.4.0.RELEASE", "io.netty:netty-buffer:4.1.114.Final", "io.netty:netty-codec-http:4.1.114.Final", diff --git a/java/maven_install.json b/java/maven_install.json index 8674b93489e4d..a10735a9e0165 100644 --- a/java/maven_install.json +++ b/java/maven_install.json @@ -1,7 +1,7 @@ { "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL", - "__INPUT_ARTIFACTS_HASH": 1916308216, - "__RESOLVED_ARTIFACTS_HASH": 1662541222, + "__INPUT_ARTIFACTS_HASH": 707988571, + "__RESOLVED_ARTIFACTS_HASH": -1165730169, "conflict_resolution": { "com.google.code.gson:gson:2.8.9": "com.google.code.gson:gson:2.11.0", "com.google.errorprone:error_prone_annotations:2.3.2": "com.google.errorprone:error_prone_annotations:2.28.0", @@ -243,17 +243,17 @@ }, "io.grpc:grpc-api": { "shasums": { - "jar": "b5120a11da5ce5ddfab019bbb69f5868529c9b5def1ba5b283251cc95fb3ba91", - "sources": "3e4b31496f2c8b7cd51b425af767c72d44b38fdbb56a6e8c247acb8a721c4e8c" + "jar": "d88d815e07fe58a7572dda5d2823485b61706564f289a1e74281705d50ac2d5b", + "sources": "791d817c56f03690df499020479e23494b79ab6ed578f4f50285d83d45a1f35d" }, - "version": "1.68.0" + "version": "1.68.1" }, "io.grpc:grpc-context": { "shasums": { - "jar": "45f85a394466f963f1f7a5c5555e6dda35efd05ce1c687203a217d7048f6f089", - "sources": "31d4fc1054b5c0bc75924e82ca425dcf624f895e7525da900b94cfa87a2bea53" + "jar": "1df4f0310a7e7836bc2948afa95105f5ee27b5d468488aded74e7ff620359076", + "sources": "6f5941f8531f6eea4ff922d2019757d06dc5857327ff9b9858ace45c0cf0ef8b" }, - "version": "1.68.0" + "version": "1.68.1" }, "io.lettuce:lettuce-core": { "shasums": { From e8c04354cba201fdb8d101c8fcdd58b56984cbdf Mon Sep 17 00:00:00 2001 From: Swastik Baranwal Date: Wed, 6 Nov 2024 15:39:50 +0530 Subject: [PATCH 085/135] [grid] TomlConfig: migrate TOML library to tomlj/tomlj (#14470) Co-authored-by: Puja Jagani --- MODULE.bazel | 2 +- java/maven_install.json | 52 +++++++++++++------ .../openqa/selenium/grid/config/BUILD.bazel | 2 +- .../selenium/grid/config/TomlConfig.java | 42 ++++++++++----- .../openqa/selenium/grid/config/BUILD.bazel | 1 - .../selenium/grid/config/TomlConfigTest.java | 15 ++++-- .../grid/router/DistributedCdpTest.java | 2 +- .../grid/router/RemoteWebDriverBiDiTest.java | 2 +- .../router/RemoteWebDriverDownloadTest.java | 2 +- .../selenium/grid/router/StressTest.java | 2 +- 10 files changed, 83 insertions(+), 39 deletions(-) diff --git a/MODULE.bazel b/MODULE.bazel index ae3a97b1d1b9f..30a276b87f857 100644 --- a/MODULE.bazel +++ b/MODULE.bazel @@ -199,7 +199,6 @@ maven.install( "io.opentelemetry:opentelemetry-sdk-testing:1.43.0", "io.opentelemetry:opentelemetry-sdk-trace:1.43.0", "io.opentelemetry.semconv:opentelemetry-semconv:1.25.0-alpha", - "io.ous:jtoml:2.0.0", "it.ozimov:embedded-redis:0.7.3", "net.bytebuddy:byte-buddy:1.15.10", "org.htmlunit:htmlunit-core-js:4.5.0", @@ -221,6 +220,7 @@ maven.install( "org.redisson:redisson:3.37.0", "org.slf4j:slf4j-api:2.0.16", "org.slf4j:slf4j-jdk14:2.0.16", + "org.tomlj:tomlj:1.1.1", "org.zeromq:jeromq:0.6.0", ], excluded_artifacts = [ diff --git a/java/maven_install.json b/java/maven_install.json index a10735a9e0165..ec5875743dc1a 100644 --- a/java/maven_install.json +++ b/java/maven_install.json @@ -1,7 +1,7 @@ { "__AUTOGENERATED_FILE_DO_NOT_MODIFY_THIS_FILE_MANUALLY": "THERE_IS_NO_DATA_ONLY_ZUUL", - "__INPUT_ARTIFACTS_HASH": 707988571, - "__RESOLVED_ARTIFACTS_HASH": -1165730169, + "__INPUT_ARTIFACTS_HASH": -1685742929, + "__RESOLVED_ARTIFACTS_HASH": -1218025727, "conflict_resolution": { "com.google.code.gson:gson:2.8.9": "com.google.code.gson:gson:2.11.0", "com.google.errorprone:error_prone_annotations:2.3.2": "com.google.errorprone:error_prone_annotations:2.28.0", @@ -444,13 +444,6 @@ }, "version": "1.43.0" }, - "io.ous:jtoml": { - "shasums": { - "jar": "3cabdae2244c999addebb8c31ae452fbdc874b4f26a163539954b8eeb5d6acc6", - "sources": "f479f2acdf7a362dc86a5c9310ddaec7b34a87f0a8a6f46dde41c1069b2a2138" - }, - "version": "2.0.0" - }, "io.projectreactor:reactor-core": { "shasums": { "jar": "44f055fbd033b6c976c53fb2e04b59027e79fb2312c37d2eaa54c77ea1ea80fe", @@ -514,6 +507,13 @@ }, "version": "12.4" }, + "org.antlr:antlr4-runtime": { + "shasums": { + "jar": "e06c6553c1ccc14d36052ec4b0fc6f13b808cf957b5b1dc3f61bf401996ada59", + "sources": "6fa0efb711a152842ecda1d41ceab94fb2049f833e00e360e161ac0e7a3819fe" + }, + "version": "4.11.1" + }, "org.apache.bcel:bcel": { "shasums": { "jar": "a119a4420350dea669acfd84120ecc7e5742dcabcc82b0b9f9755dc692335aa2", @@ -801,6 +801,13 @@ }, "version": "1.7.21" }, + "org.tomlj:tomlj": { + "shasums": { + "jar": "383b7c66966c42ee4913ec977a7b6573631866bddc5318ec4a6215b688dd0d6c", + "sources": "533276104d58ebc92ce049c59a129717ce7daf0e9340969256fdb61f4f06f717" + }, + "version": "1.1.1" + }, "org.xmlresolver:xmlresolver": { "shasums": { "data": "173904bdbd783ba0fac92c5bcc05da5d09f0ce7eed24346666ea0a239461f9b4", @@ -1159,6 +1166,10 @@ "org.slf4j:slf4j-simple": [ "org.slf4j:slf4j-api" ], + "org.tomlj:tomlj": [ + "org.antlr:antlr4-runtime", + "org.checkerframework:checker-qual" + ], "org.xmlresolver:xmlresolver": [ "org.apache.httpcomponents.client5:httpclient5", "org.apache.httpcomponents.core5:httpcore5" @@ -1786,10 +1797,6 @@ "io.opentelemetry.sdk.trace.internal.data", "io.opentelemetry.sdk.trace.samplers" ], - "io.ous:jtoml": [ - "io.ous.jtoml", - "io.ous.jtoml.impl" - ], "io.projectreactor:reactor-core": [ "reactor.adapter", "reactor.core", @@ -2014,6 +2021,15 @@ "net.sf.saxon.xpath", "net.sf.saxon.z" ], + "org.antlr:antlr4-runtime": [ + "org.antlr.v4.runtime", + "org.antlr.v4.runtime.atn", + "org.antlr.v4.runtime.dfa", + "org.antlr.v4.runtime.misc", + "org.antlr.v4.runtime.tree", + "org.antlr.v4.runtime.tree.pattern", + "org.antlr.v4.runtime.tree.xpath" + ], "org.apache.bcel:bcel": [ "org.apache.bcel", "org.apache.bcel.classfile", @@ -2898,6 +2914,10 @@ "org.slf4j:slf4j-simple": [ "org.slf4j.impl" ], + "org.tomlj:tomlj": [ + "org.tomlj", + "org.tomlj.internal" + ], "org.xmlresolver:xmlresolver": [ "org.xmlresolver", "org.xmlresolver.cache", @@ -3095,8 +3115,6 @@ "io.opentelemetry:opentelemetry-sdk-trace", "io.opentelemetry:opentelemetry-sdk-trace:jar:sources", "io.opentelemetry:opentelemetry-sdk:jar:sources", - "io.ous:jtoml", - "io.ous:jtoml:jar:sources", "io.projectreactor:reactor-core", "io.projectreactor:reactor-core:jar:sources", "io.reactivex.rxjava3:rxjava", @@ -3115,6 +3133,8 @@ "net.bytebuddy:byte-buddy:jar:sources", "net.sf.saxon:Saxon-HE", "net.sf.saxon:Saxon-HE:jar:sources", + "org.antlr:antlr4-runtime", + "org.antlr:antlr4-runtime:jar:sources", "org.apache.bcel:bcel", "org.apache.bcel:bcel:jar:sources", "org.apache.commons:commons-exec", @@ -3197,6 +3217,8 @@ "org.slf4j:slf4j-jdk14:jar:sources", "org.slf4j:slf4j-simple", "org.slf4j:slf4j-simple:jar:sources", + "org.tomlj:tomlj", + "org.tomlj:tomlj:jar:sources", "org.xmlresolver:xmlresolver", "org.xmlresolver:xmlresolver:jar:data", "org.xmlresolver:xmlresolver:jar:sources", diff --git a/java/src/org/openqa/selenium/grid/config/BUILD.bazel b/java/src/org/openqa/selenium/grid/config/BUILD.bazel index 65662cda6c5dd..e2be2a4b14de7 100644 --- a/java/src/org/openqa/selenium/grid/config/BUILD.bazel +++ b/java/src/org/openqa/selenium/grid/config/BUILD.bazel @@ -21,6 +21,6 @@ java_library( "//java/src/org/openqa/selenium/json", artifact("com.beust:jcommander"), artifact("com.google.guava:guava"), - artifact("io.ous:jtoml"), + artifact("org.tomlj:tomlj"), ], ) diff --git a/java/src/org/openqa/selenium/grid/config/TomlConfig.java b/java/src/org/openqa/selenium/grid/config/TomlConfig.java index 51912d626daec..991c6a9f42fa2 100644 --- a/java/src/org/openqa/selenium/grid/config/TomlConfig.java +++ b/java/src/org/openqa/selenium/grid/config/TomlConfig.java @@ -19,10 +19,6 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSortedSet; -import io.ous.jtoml.JToml; -import io.ous.jtoml.ParseException; -import io.ous.jtoml.Toml; -import io.ous.jtoml.TomlTable; import java.io.IOException; import java.io.Reader; import java.nio.file.Files; @@ -31,18 +27,31 @@ import java.util.List; import java.util.Optional; import java.util.Set; +import java.util.stream.Collectors; import org.openqa.selenium.internal.Require; +import org.tomlj.Toml; +import org.tomlj.TomlArray; +import org.tomlj.TomlParseError; +import org.tomlj.TomlParseResult; +import org.tomlj.TomlTable; public class TomlConfig implements Config { - private final Toml toml; + private final TomlParseResult toml; public TomlConfig(Reader reader) { try { - toml = JToml.parse(reader); + toml = Toml.parse(reader); + + if (toml.hasErrors()) { + String error = + toml.errors().stream().map(TomlParseError::toString).collect(Collectors.joining("\n")); + + throw new ConfigException(error); + } } catch (IOException e) { throw new ConfigException("Unable to read TOML.", e); - } catch (ParseException e) { + } catch (TomlParseError e) { throw new ConfigException( e.getCause() + "\n Validate the config using https://www.toml-lint.com/. " @@ -65,7 +74,7 @@ public Optional> getAll(String section, String option) { Require.nonNull("Section to read", section); Require.nonNull("Option to read", option); - if (!toml.containsKey(section)) { + if (!toml.contains(section)) { return Optional.empty(); } @@ -74,21 +83,28 @@ public Optional> getAll(String section, String option) { throw new ConfigException(String.format("Section %s is not a section! %s", section, raw)); } - TomlTable table = toml.getTomlTable(section); + TomlTable table = toml.getTable(section); + Object value = null; + if (table != null) { + value = table.get(option); + } - Object value = table.getOrDefault(option, null); if (value == null) { return Optional.empty(); } + if (value instanceof TomlArray) { + value = ((TomlArray) value).toList(); + } + if (value instanceof Collection) { Collection collection = (Collection) value; // Case when an array of tables is used as config // https://toml.io/en/v1.0.0-rc.3#array-of-tables - if (collection.stream().anyMatch(item -> item instanceof TomlTable)) { + if (collection.stream().anyMatch(TomlTable.class::isInstance)) { return Optional.of( collection.stream() - .map(item -> (TomlTable) item) + .map(TomlTable.class::cast) .map(TomlTable::toMap) .map(this::toEntryList) .flatMap(Collection::stream) @@ -106,7 +122,7 @@ public Optional> getAll(String section, String option) { return Optional.of(toEntryList(((TomlTable) value).toMap())); } - return Optional.of(ImmutableList.of(String.valueOf(value))); + return Optional.of(List.of(String.valueOf(value))); } @Override diff --git a/java/test/org/openqa/selenium/grid/config/BUILD.bazel b/java/test/org/openqa/selenium/grid/config/BUILD.bazel index fb4e41dcd7875..9575e42d240fb 100644 --- a/java/test/org/openqa/selenium/grid/config/BUILD.bazel +++ b/java/test/org/openqa/selenium/grid/config/BUILD.bazel @@ -11,7 +11,6 @@ java_test_suite( "//java/src/org/openqa/selenium/json", artifact("com.beust:jcommander"), artifact("com.google.guava:guava"), - artifact("io.ous:jtoml"), artifact("org.junit.jupiter:junit-jupiter-api"), artifact("org.assertj:assertj-core"), ] + JUNIT5_DEPS, diff --git a/java/test/org/openqa/selenium/grid/config/TomlConfigTest.java b/java/test/org/openqa/selenium/grid/config/TomlConfigTest.java index 2de672f07d78e..9eaedae3c258b 100644 --- a/java/test/org/openqa/selenium/grid/config/TomlConfigTest.java +++ b/java/test/org/openqa/selenium/grid/config/TomlConfigTest.java @@ -18,6 +18,7 @@ package org.openqa.selenium.grid.config; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; import java.io.StringReader; import java.util.Arrays; @@ -30,18 +31,24 @@ class TomlConfigTest { @Test void shouldUseATableAsASection() { - String raw = "[cheeses]\nselected=brie"; + String raw = "[cheeses]\nselected=\"brie\""; Config config = new TomlConfig(new StringReader(raw)); - assertThat(config.get("cheeses", "selected")).isEqualTo(Optional.of("brie")); } + @Test + void shouldCheckForErrorsAndThrow() { + String raw = "[cheeses]\nselected=brie"; + assertThatThrownBy(() -> new TomlConfig(new StringReader(raw))) + .isInstanceOf(ConfigException.class); + } + @Test void shouldContainConfigFromArrayOfTables() { String[] rawConfig = new String[] { "[cheeses]", - "default = manchego", + "default = \"manchego\"", "[[cheeses.type]]", "name = \"soft cheese\"", "default = \"brie\"", @@ -104,7 +111,7 @@ void ensureCanReadListOfLists() { String[] rawConfig = new String[] { "[cheeses]", - "default = manchego", + "default = \"manchego\"", "[[cheeses.type]]", "name = \"soft cheese\"", "default = \"brie\"", diff --git a/java/test/org/openqa/selenium/grid/router/DistributedCdpTest.java b/java/test/org/openqa/selenium/grid/router/DistributedCdpTest.java index 40d0bf46ad8a8..ceb1cf37a1eb7 100644 --- a/java/test/org/openqa/selenium/grid/router/DistributedCdpTest.java +++ b/java/test/org/openqa/selenium/grid/router/DistributedCdpTest.java @@ -68,7 +68,7 @@ void ensureBasicFunctionality() { "[node]\n" + "selenium-manager = false\n" + "driver-implementation = " - + browser.displayName()))); + + String.format("\"%s\"", browser.displayName())))); Server server = new NettyServer( diff --git a/java/test/org/openqa/selenium/grid/router/RemoteWebDriverBiDiTest.java b/java/test/org/openqa/selenium/grid/router/RemoteWebDriverBiDiTest.java index 8269f5028cfc9..5538b346022ed 100644 --- a/java/test/org/openqa/selenium/grid/router/RemoteWebDriverBiDiTest.java +++ b/java/test/org/openqa/selenium/grid/router/RemoteWebDriverBiDiTest.java @@ -77,7 +77,7 @@ void setup() { "[node]\n" + "selenium-manager = false\n" + "driver-implementation = " - + browser.displayName()))); + + String.format("\"%s\"", browser.displayName())))); driver = new RemoteWebDriver(deployment.getServer().getUrl(), browser.getCapabilities()); driver = new Augmenter().augment(driver); diff --git a/java/test/org/openqa/selenium/grid/router/RemoteWebDriverDownloadTest.java b/java/test/org/openqa/selenium/grid/router/RemoteWebDriverDownloadTest.java index 6ebc1752b6e12..c8cea51cbaecb 100644 --- a/java/test/org/openqa/selenium/grid/router/RemoteWebDriverDownloadTest.java +++ b/java/test/org/openqa/selenium/grid/router/RemoteWebDriverDownloadTest.java @@ -84,7 +84,7 @@ public void setupServers() { + "selenium-manager = true\n" + "enable-managed-downloads = true\n" + "driver-implementation = " - + browser.displayName()))); + + String.format("\"%s\"", browser.displayName())))); tearDowns.add(deployment); server = deployment.getServer(); diff --git a/java/test/org/openqa/selenium/grid/router/StressTest.java b/java/test/org/openqa/selenium/grid/router/StressTest.java index d64244b19c606..bfc892ada697e 100644 --- a/java/test/org/openqa/selenium/grid/router/StressTest.java +++ b/java/test/org/openqa/selenium/grid/router/StressTest.java @@ -73,7 +73,7 @@ public void setupServers() { new StringReader( "[node]\n" + "driver-implementation = " - + browser.displayName() + + String.format("\"%s\"", browser.displayName()) + "\n" + "session-timeout = 11" + "\n" From 9f554da065495aed7086290b1f434d4d19c19e27 Mon Sep 17 00:00:00 2001 From: Nikolay Borisenko <22616990+nvborisenko@users.noreply.github.com> Date: Wed, 6 Nov 2024 13:37:43 +0300 Subject: [PATCH 086/135] [dotnet] Add Dictionary as well-known types for json serialization --- dotnet/src/webdriver/Command.cs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/dotnet/src/webdriver/Command.cs b/dotnet/src/webdriver/Command.cs index a0a146b3f00bb..9d86667dea4e8 100644 --- a/dotnet/src/webdriver/Command.cs +++ b/dotnet/src/webdriver/Command.cs @@ -151,7 +151,6 @@ private static Dictionary ConvertParametersFromJson(string value [JsonSerializable(typeof(ulong))] [JsonSerializable(typeof(short))] [JsonSerializable(typeof(ushort))] - [JsonSerializable(typeof(string))] // Selenium WebDriver types @@ -164,7 +163,6 @@ private static Dictionary ConvertParametersFromJson(string value // Selenium Dictionaries, primarily used in Capabilities [JsonSerializable(typeof(Dictionary))] - [JsonSerializable(typeof(Dictionary))] [JsonSerializable(typeof(Dictionary))] [JsonSerializable(typeof(Dictionary))] @@ -180,5 +178,6 @@ private static Dictionary ConvertParametersFromJson(string value [JsonSerializable(typeof(Dictionary))] [JsonSerializable(typeof(Dictionary))] [JsonSerializable(typeof(Dictionary))] + [JsonSerializable(typeof(Dictionary))] internal partial class CommandJsonSerializerContext : JsonSerializerContext; } From 7dc68dfc6d910f823c3d6bf64c6944906e1611db Mon Sep 17 00:00:00 2001 From: joerg1985 <16140691+joerg1985@users.noreply.github.com> Date: Wed, 6 Nov 2024 12:24:25 +0100 Subject: [PATCH 087/135] [java] deleted the deprecated FormEncodedData (#14688) --- .../selenium/remote/http/FormEncodedData.java | 95 ----------- .../remote/http/FormEncodedDataTest.java | 150 ------------------ 2 files changed, 245 deletions(-) delete mode 100644 java/src/org/openqa/selenium/remote/http/FormEncodedData.java delete mode 100644 java/test/org/openqa/selenium/remote/http/FormEncodedDataTest.java diff --git a/java/src/org/openqa/selenium/remote/http/FormEncodedData.java b/java/src/org/openqa/selenium/remote/http/FormEncodedData.java deleted file mode 100644 index 7d920e23d4694..0000000000000 --- a/java/src/org/openqa/selenium/remote/http/FormEncodedData.java +++ /dev/null @@ -1,95 +0,0 @@ -// Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -package org.openqa.selenium.remote.http; - -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.io.Reader; -import java.io.UncheckedIOException; -import java.net.URLDecoder; -import java.nio.charset.Charset; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import java.util.concurrent.atomic.AtomicBoolean; - -@Deprecated(forRemoval = true) // should be moved to testing -public class FormEncodedData { - - public static Optional>> getData(HttpRequest request) { - try { - String contentType = request.getHeader("Content-Type"); - if (contentType == null - || !contentType.split(";")[0].trim().equals("application/x-www-form-urlencoded")) { - return Optional.empty(); - } - } catch (IllegalArgumentException | NullPointerException e) { - return Optional.empty(); - } - - // Maintain ordering of keys. - Map> data = new LinkedHashMap<>(); - AtomicBoolean eof = new AtomicBoolean(false); - Charset encoding = request.getContentEncoding(); - try (InputStream is = request.getContent().get(); - Reader reader = new InputStreamReader(is, request.getContentEncoding())) { - - while (!eof.get()) { - String key = read(reader, encoding, '=', eof); - String value = read(reader, encoding, '&', eof); - - data.computeIfAbsent(key, (k) -> new ArrayList<>()).add(value == null ? "" : value); - } - } catch (IOException e) { - throw new UncheckedIOException(e); - } - - // We want to return a Map>, not a Map> so, ugh. - Map> toReturn = new LinkedHashMap<>(); - for (Map.Entry> entry : data.entrySet()) { - toReturn.put(entry.getKey(), List.copyOf(entry.getValue())); - } - return Optional.of(Map.copyOf(toReturn)); - } - - private static String read(Reader reader, Charset charSet, char delimiter, AtomicBoolean eof) - throws IOException { - if (eof.get()) { - return null; - } - - StringBuilder builder = new StringBuilder(); - for (; ; ) { - int i = reader.read(); - if (i == -1) { - eof.set(true); - break; - } - char c = (char) i; - if (c == delimiter) { - break; - } - builder.append(c); - } - - return URLDecoder.decode(builder.toString(), charSet); - } -} diff --git a/java/test/org/openqa/selenium/remote/http/FormEncodedDataTest.java b/java/test/org/openqa/selenium/remote/http/FormEncodedDataTest.java deleted file mode 100644 index 063446a56c624..0000000000000 --- a/java/test/org/openqa/selenium/remote/http/FormEncodedDataTest.java +++ /dev/null @@ -1,150 +0,0 @@ -// Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file -// distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the -// "License"); you may not use this file except in compliance -// with the License. You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, -// software distributed under the License is distributed on an -// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -// KIND, either express or implied. See the License for the -// specific language governing permissions and limitations -// under the License. - -package org.openqa.selenium.remote.http; - -import static java.nio.charset.StandardCharsets.UTF_8; -import static java.util.Collections.singletonList; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Fail.fail; -import static org.openqa.selenium.remote.http.Contents.bytes; -import static org.openqa.selenium.remote.http.Contents.utf8String; -import static org.openqa.selenium.remote.http.HttpMethod.GET; - -import com.google.common.collect.ImmutableMap; -import com.google.common.net.MediaType; -import java.net.URLEncoder; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Optional; -import org.junit.jupiter.api.Tag; -import org.junit.jupiter.api.Test; - -@Tag("UnitTests") -class FormEncodedDataTest { - - @Test - void shouldRequireCorrectContentType() { - HttpRequest request = createRequest("key", "value").removeHeader("Content-Type"); - Optional>> data = FormEncodedData.getData(request); - - assertThat(data).isNotPresent(); - } - - @Test - void canReadASinglePairOfValues() { - HttpRequest request = createRequest("key", "value"); - - Optional>> data = FormEncodedData.getData(request); - - assertThat(data.get()).isEqualTo(ImmutableMap.of("key", singletonList("value"))); - } - - @Test - void canReadTwoValues() { - HttpRequest request = createRequest("key", "value", "foo", "bar"); - - Optional>> data = FormEncodedData.getData(request); - - assertThat(data.get()) - .isEqualTo(ImmutableMap.of("key", singletonList("value"), "foo", singletonList("bar"))); - } - - @Test - void shouldSetEmptyValuesToTheEmptyString() { - HttpRequest request = createRequest("key", null); - - Optional>> data = FormEncodedData.getData(request); - - assertThat(data.get()).isEqualTo(ImmutableMap.of("key", singletonList(""))); - } - - @Test - void shouldDecodeParameterNames() { - HttpRequest request = createRequest("%foo%", "value"); - - Optional>> data = FormEncodedData.getData(request); - - assertThat(data.get()).isEqualTo(ImmutableMap.of("%foo%", singletonList("value"))); - } - - @Test - void shouldDecodeParameterValues() { - HttpRequest request = createRequest("key", "%bar%"); - - Optional>> data = FormEncodedData.getData(request); - - assertThat(data.get()).isEqualTo(ImmutableMap.of("key", singletonList("%bar%"))); - } - - @Test - void shouldCollectMultipleValuesForTheSameParameterNamePreservingOrder() { - HttpRequest request = createRequest("foo", "bar", "foo", "baz"); - - Optional>> data = FormEncodedData.getData(request); - - assertThat(data.get()).isEqualTo(ImmutableMap.of("foo", Arrays.asList("bar", "baz"))); - } - - @Test - void aSingleParameterNameIsEnough() { - HttpRequest request = - new HttpRequest(GET, "/example") - .addHeader("Content-Type", MediaType.FORM_DATA.toString()) - .setContent(bytes("param".getBytes())); - - Optional>> data = FormEncodedData.getData(request); - - assertThat(data.get()).isEqualTo(ImmutableMap.of("param", singletonList(""))); - } - - private HttpRequest createRequest(String key, String value, String... others) { - if (others.length % 2 != 0) { - fail("Other parameters must be of even length"); - } - - List allStrings = new ArrayList<>(); - allStrings.add(key); - allStrings.add(value); - allStrings.addAll(Arrays.asList(others)); - - StringBuilder content = new StringBuilder(); - Iterator iterator = allStrings.iterator(); - boolean isFirst = true; - while (iterator.hasNext()) { - if (!isFirst) { - content.append("&"); - } - content.append(URLEncoder.encode(iterator.next(), UTF_8)); - - String next = iterator.next(); - if (next != null) { - content.append("=").append(URLEncoder.encode(next, UTF_8)); - } - if (isFirst) { - isFirst = false; - } - } - - return new HttpRequest(GET, "/foo") - .addHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8") - .setContent(utf8String(content.toString())); - } -} From 3589d3f500862471b2fcd9f26fe3740920941181 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 7 Nov 2024 09:19:58 +0530 Subject: [PATCH 088/135] Update dependency @testing-library/jest-dom to v6.6.3 (#14719) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> Co-authored-by: Puja Jagani --- javascript/grid-ui/package.json | 2 +- pnpm-lock.yaml | 207 ++++++++++++++++---------------- 2 files changed, 105 insertions(+), 104 deletions(-) diff --git a/javascript/grid-ui/package.json b/javascript/grid-ui/package.json index 5a59007ec2986..b9cddc4eaa9e8 100644 --- a/javascript/grid-ui/package.json +++ b/javascript/grid-ui/package.json @@ -48,7 +48,7 @@ }, "devDependencies": { "@babel/preset-react": "7.25.9", - "@testing-library/jest-dom": "6.6.2", + "@testing-library/jest-dom": "6.6.3", "@testing-library/react": "14.3.1", "@testing-library/user-event": "14.5.2", "esbuild": "0.24.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bd3089aee3d08..a64531110e23e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -78,8 +78,8 @@ importers: specifier: 7.25.9 version: 7.25.9(@babel/core@7.26.0) '@testing-library/jest-dom': - specifier: 6.6.2 - version: 6.6.2 + specifier: 6.6.3 + version: 6.6.3 '@testing-library/react': specifier: 14.3.1 version: 14.3.1(react-dom@18.3.1)(react@18.3.1) @@ -215,22 +215,22 @@ packages: response-iterator: 0.2.6 symbol-observable: 4.0.0 ts-invariant: 0.10.3 - tslib: 2.8.0 + tslib: 2.8.1 zen-observable-ts: 1.2.5 transitivePeerDependencies: - '@types/react' dev: false - /@babel/code-frame@7.26.0: - resolution: {integrity: sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g==} + /@babel/code-frame@7.26.2: + resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==} engines: {node: '>=6.9.0'} dependencies: '@babel/helper-validator-identifier': 7.25.9 js-tokens: 4.0.0 picocolors: 1.1.1 - /@babel/compat-data@7.26.0: - resolution: {integrity: sha512-qETICbZSLe7uXv9VE8T/RWOdIE5qqyTucOt4zLYMafj2MRO271VGgLd4RACJMeBO37UPWhXiKMBk7YlJ0fOzQA==} + /@babel/compat-data@7.26.2: + resolution: {integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==} engines: {node: '>=6.9.0'} /@babel/core@7.26.0: @@ -238,12 +238,12 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.0 - '@babel/generator': 7.26.0 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 '@babel/helper-compilation-targets': 7.25.9 '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0) '@babel/helpers': 7.26.0 - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@babel/template': 7.25.9 '@babel/traverse': 7.25.9 '@babel/types': 7.26.0 @@ -255,11 +255,11 @@ packages: transitivePeerDependencies: - supports-color - /@babel/generator@7.26.0: - resolution: {integrity: sha512-/AIkAmInnWwgEAJGQr9vY0c66Mj6kjkE2ZPB1PurTRaRAh3U+J45sAQMjQDJdh4WbR3l0x5xkimXBKyBXXAu2w==} + /@babel/generator@7.26.2: + resolution: {integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@babel/types': 7.26.0 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 @@ -276,7 +276,7 @@ packages: resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.26.0 + '@babel/compat-data': 7.26.2 '@babel/helper-validator-option': 7.25.9 browserslist: 4.24.2 lru-cache: 5.1.1 @@ -328,8 +328,8 @@ packages: '@babel/template': 7.25.9 '@babel/types': 7.26.0 - /@babel/parser@7.26.1: - resolution: {integrity: sha512-reoQYNiAJreZNsJzyrDNzFQ+IQ5JFiIzAHJg9bn94S3l+4++J7RsIhNMoB+lgP/9tpmiAQqspv+xfdxTSzREOw==} + /@babel/parser@7.26.2: + resolution: {integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==} engines: {node: '>=6.0.0'} hasBin: true dependencies: @@ -421,17 +421,17 @@ packages: resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.26.0 - '@babel/parser': 7.26.1 + '@babel/code-frame': 7.26.2 + '@babel/parser': 7.26.2 '@babel/types': 7.26.0 /@babel/traverse@7.25.9: resolution: {integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/code-frame': 7.26.0 - '@babel/generator': 7.26.0 - '@babel/parser': 7.26.1 + '@babel/code-frame': 7.26.2 + '@babel/generator': 7.26.2 + '@babel/parser': 7.26.2 '@babel/template': 7.25.9 '@babel/types': 7.26.0 debug: 4.3.7 @@ -808,8 +808,8 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/regexpp@4.11.2: - resolution: {integrity: sha512-2WwyTYNVaMNUWPZTOJdkax9iqTdirrApgTbk+Qoq5EPX6myqZvG8QGFRgdKmkjKVG6/G/a565vpPauHk0+hpBA==} + /@eslint-community/regexpp@4.12.1: + resolution: {integrity: sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} dev: true @@ -852,7 +852,7 @@ packages: dependencies: ajv: 6.12.6 debug: 4.3.7(supports-color@9.4.0) - espree: 10.2.0 + espree: 10.3.0 globals: 14.0.0 ignore: 5.3.2 import-fresh: 3.3.0 @@ -878,8 +878,8 @@ packages: engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true - /@eslint/plugin-kit@0.2.1: - resolution: {integrity: sha512-HFZ4Mp26nbWk9d/BpvP0YNL6W4UoZF0VFcTw/aPPA8RpOxeFQgK+ClABGgAUXs9Y/RGX/l1vOmrqz1MQt9MNuw==} + /@eslint/plugin-kit@0.2.2: + resolution: {integrity: sha512-CXtq5nR4Su+2I47WPOlWud98Y5Lv8Kyxp2ukhgFx/eW6Blm18VXJO5WuQylPugRo8nbluoi6GvvxBLqHcvqUUw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: levn: 0.4.1 @@ -891,8 +891,8 @@ packages: '@floating-ui/utils': 0.2.8 dev: false - /@floating-ui/dom@1.6.11: - resolution: {integrity: sha512-qkMCxSR24v2vGkhYDo/UzxfJN3D4syqSjyuTFz6C7XcpU1pASPRieNI0Kj5VP3/503mOfYiGY891ugBX1GlABQ==} + /@floating-ui/dom@1.6.12: + resolution: {integrity: sha512-NP83c0HjokcGVEMeoStg317VD9W7eDlGK7457dMBANbKA6GJZdc7rjujdgqzTaz93jkGgc5P/jeWbaCHnMNc+w==} dependencies: '@floating-ui/core': 1.6.8 '@floating-ui/utils': 0.2.8 @@ -904,7 +904,7 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' dependencies: - '@floating-ui/dom': 1.6.11 + '@floating-ui/dom': 1.6.12 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) dev: false @@ -921,16 +921,16 @@ packages: graphql: 16.8.1 dev: false - /@humanfs/core@0.19.0: - resolution: {integrity: sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==} + /@humanfs/core@0.19.1: + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} engines: {node: '>=18.18.0'} dev: true - /@humanfs/node@0.16.5: - resolution: {integrity: sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==} + /@humanfs/node@0.16.6: + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} engines: {node: '>=18.18.0'} dependencies: - '@humanfs/core': 0.19.0 + '@humanfs/core': 0.19.1 '@humanwhocodes/retry': 0.3.1 dev: true @@ -1039,7 +1039,7 @@ packages: dependencies: '@babel/runtime': 7.26.0 '@floating-ui/react-dom': 2.1.2(react-dom@18.3.1)(react@18.3.1) - '@mui/types': 7.2.18(@types/react@18.2.72) + '@mui/types': 7.2.19(@types/react@18.2.72) '@mui/utils': 5.16.6(@types/react@18.2.72)(react@18.3.1) '@popperjs/core': 2.11.8 '@types/react': 18.2.72 @@ -1093,7 +1093,7 @@ packages: '@mui/base': 5.0.0-beta.40(@types/react@18.2.72)(react-dom@18.3.1)(react@18.3.1) '@mui/core-downloads-tracker': 5.16.7 '@mui/system': 5.16.7(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(@types/react@18.2.72)(react@18.3.1) - '@mui/types': 7.2.18(@types/react@18.2.72) + '@mui/types': 7.2.19(@types/react@18.2.72) '@mui/utils': 5.16.6(@types/react@18.2.72)(react@18.3.1) '@types/react': 18.2.72 '@types/react-transition-group': 4.4.11 @@ -1166,7 +1166,7 @@ packages: '@emotion/styled': 11.13.0(@emotion/react@11.13.3)(@types/react@18.2.72)(react@18.3.1) '@mui/private-theming': 5.16.6(@types/react@18.2.72)(react@18.3.1) '@mui/styled-engine': 5.16.6(@emotion/react@11.13.3)(@emotion/styled@11.13.0)(react@18.3.1) - '@mui/types': 7.2.18(@types/react@18.2.72) + '@mui/types': 7.2.19(@types/react@18.2.72) '@mui/utils': 5.16.6(@types/react@18.2.72)(react@18.3.1) '@types/react': 18.2.72 clsx: 2.1.1 @@ -1175,8 +1175,8 @@ packages: react: 18.3.1 dev: false - /@mui/types@7.2.18(@types/react@18.2.72): - resolution: {integrity: sha512-uvK9dWeyCJl/3ocVnTOS6nlji/Knj8/tVqVX03UVTpdmTJYu/s4jtDd9Kvv0nRGE0CUSNW1UYAci7PYypjealg==} + /@mui/types@7.2.19(@types/react@18.2.72): + resolution: {integrity: sha512-6XpZEM/Q3epK9RN8ENoXuygnqUQxE+siN/6rGRi2iwJPgBUR25mphYQ9ZI87plGh58YoZ5pp40bFvKYOCDJ3tA==} peerDependencies: '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: @@ -1197,7 +1197,7 @@ packages: optional: true dependencies: '@babel/runtime': 7.26.0 - '@mui/types': 7.2.18(@types/react@18.2.72) + '@mui/types': 7.2.19(@types/react@18.2.72) '@types/prop-types': 15.7.13 '@types/react': 18.2.72 clsx: 2.1.1 @@ -1259,8 +1259,8 @@ packages: type-detect: 4.0.8 dev: true - /@sinonjs/fake-timers@13.0.4: - resolution: {integrity: sha512-wpUq+QiKxrWk7U2pdvNSY9fNX62/k+7eEdlQMO0A3rU8tQ+vvzY/WzBhMz+GbQlATXZlXWYQqFWNFcn1SVvThA==} + /@sinonjs/fake-timers@13.0.5: + resolution: {integrity: sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==} dependencies: '@sinonjs/commons': 3.0.1 dev: true @@ -1281,7 +1281,7 @@ packages: resolution: {integrity: sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==} engines: {node: '>=18'} dependencies: - '@babel/code-frame': 7.26.0 + '@babel/code-frame': 7.26.2 '@babel/runtime': 7.26.0 '@types/aria-query': 5.0.4 aria-query: 5.3.0 @@ -1295,7 +1295,7 @@ packages: resolution: {integrity: sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==} engines: {node: '>=14'} dependencies: - '@babel/code-frame': 7.26.0 + '@babel/code-frame': 7.26.2 '@babel/runtime': 7.26.0 '@types/aria-query': 5.0.4 aria-query: 5.1.3 @@ -1305,8 +1305,8 @@ packages: pretty-format: 27.5.1 dev: true - /@testing-library/jest-dom@6.6.2: - resolution: {integrity: sha512-P6GJD4yqc9jZLbe98j/EkyQDTPgqftohZF5FBkHY5BUERZmcf4HeO2k0XaefEg329ux2p21i1A1DmyQ1kKw2Jw==} + /@testing-library/jest-dom@6.6.3: + resolution: {integrity: sha512-IteBhl4XqYNkM54f4ejhLRJiZNqcSCoXUOG2CPK7qbD322KjQozM4kHQOfkG2oln9b9HTYqs+Sae8vBATubxxA==} engines: {node: '>=14', npm: '>=6', yarn: '>=1'} dependencies: '@adobe/css-tools': 4.4.0 @@ -1479,7 +1479,7 @@ packages: typescript: optional: true dependencies: - '@eslint-community/regexpp': 4.11.2 + '@eslint-community/regexpp': 4.12.1 '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.6.3) '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@5.6.3) @@ -1606,35 +1606,35 @@ packages: resolution: {integrity: sha512-bXuaUNLVVkD20wcGBWRyo7j9N3TxePEWFZj2Y+r9OoUzfqmavM84+mFykRicNsBqatba5JLay1t48wxaXaWnlA==} engines: {node: '>=8'} dependencies: - tslib: 2.8.0 + tslib: 2.8.1 dev: false /@wry/context@0.7.4: resolution: {integrity: sha512-jmT7Sb4ZQWI5iyu3lobQxICu2nC/vbUhP0vIdd6tHC9PTfenmRmuIFqktc6GH9cgi+ZHnsLWPvfSvc4DrYmKiQ==} engines: {node: '>=8'} dependencies: - tslib: 2.8.0 + tslib: 2.8.1 dev: false /@wry/equality@0.5.7: resolution: {integrity: sha512-BRFORjsTuQv5gxcXsuDXx6oGRhuVsEGwZy6LOzRRfgu+eSfxbhUQ9L9YtSEIuIjY/o7g3iWFjrc5eSY1GXP2Dw==} engines: {node: '>=8'} dependencies: - tslib: 2.8.0 + tslib: 2.8.1 dev: false /@wry/trie@0.4.3: resolution: {integrity: sha512-I6bHwH0fSf6RqQcnnXLJKhkSXG45MFral3GxPaY4uAl0LYDZM+YDVDAiU9bYwjTuysy1S0IeecWtmq1SZA3M1w==} engines: {node: '>=8'} dependencies: - tslib: 2.8.0 + tslib: 2.8.1 dev: false /@wry/trie@0.5.0: resolution: {integrity: sha512-FNoYzHawTMk/6KMQoEG5O4PuioX19UbwdQKF44yw0nLfOypfQdjtfZzo/UIJWAJ23sNIFbD1Ug9lbaDGMwbqQA==} engines: {node: '>=8'} dependencies: - tslib: 2.8.0 + tslib: 2.8.1 dev: false /accepts@1.3.8: @@ -1645,16 +1645,16 @@ packages: negotiator: 0.6.3 dev: true - /acorn-jsx@5.3.2(acorn@8.13.0): + /acorn-jsx@5.3.2(acorn@8.14.0): resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} peerDependencies: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: - acorn: 8.13.0 + acorn: 8.14.0 dev: true - /acorn@8.13.0: - resolution: {integrity: sha512-8zSiw54Oxrdym50NlZ9sUusyO1Z1ZchgRLWRaK6c86XJFClyCgFKetdowBg5bKxyp/u+CDBJG4Mpp0m3HLZl9w==} + /acorn@8.14.0: + resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==} engines: {node: '>=0.4.0'} hasBin: true dev: true @@ -1835,7 +1835,7 @@ packages: '@babel/core': ^7.1.2 dependencies: '@babel/core': 7.26.0 - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@babel/traverse': 7.25.9 '@babel/types': 7.26.0 transitivePeerDependencies: @@ -1921,8 +1921,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001671 - electron-to-chromium: 1.5.47 + caniuse-lite: 1.0.30001677 + electron-to-chromium: 1.5.52 node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.2) @@ -1973,7 +1973,7 @@ packages: resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} dependencies: pascal-case: 3.1.2 - tslib: 2.8.0 + tslib: 2.8.1 dev: true /camelcase@6.3.0: @@ -1981,8 +1981,8 @@ packages: engines: {node: '>=10'} dev: true - /caniuse-lite@1.0.30001671: - resolution: {integrity: sha512-jocyVaSSfXg2faluE6hrWkMgDOiULBMca4QLtDT39hw1YxaIPHWc1CcTCKkPmHgGH6tKji6ZNbMSmUAvENf2/A==} + /caniuse-lite@1.0.30001677: + resolution: {integrity: sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==} /catharsis@0.9.0: resolution: {integrity: sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==} @@ -2385,7 +2385,7 @@ packages: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} dependencies: no-case: 3.0.4 - tslib: 2.8.0 + tslib: 2.8.1 dev: true /duplexer@0.1.2: @@ -2404,8 +2404,8 @@ packages: jake: 10.9.2 dev: false - /electron-to-chromium@1.5.47: - resolution: {integrity: sha512-zS5Yer0MOYw4rtK2iq43cJagHZ8sXN0jDHDKzB+86gSBSAI4v07S97mcq+Gs2vclAxSh1j7vOAHxSVgduiiuVQ==} + /electron-to-chromium@1.5.52: + resolution: {integrity: sha512-xtoijJTZ+qeucLBDNztDOuQBE1ksqjvNjvqFoST3nGC7fSpqJ+X6BdTBaY5BHG+IhWWmpc6b/KfpeuEDupEPOQ==} /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -2516,8 +2516,8 @@ packages: stop-iteration-iterator: 1.0.0 dev: true - /es-iterator-helpers@1.1.0: - resolution: {integrity: sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw==} + /es-iterator-helpers@1.2.0: + resolution: {integrity: sha512-tpxqxncxnpw3c93u8n3VOzACmRFoVmWJqbWXvX/JfKbkhBw1oslgPrUfeSt2psuqyEJFD6N/9lg5i7bsKpoq+Q==} engines: {node: '>= 0.4'} dependencies: call-bind: 1.0.7 @@ -2528,6 +2528,7 @@ packages: function-bind: 1.1.2 get-intrinsic: 1.2.4 globalthis: 1.0.4 + gopd: 1.0.1 has-property-descriptors: 1.0.2 has-proto: 1.0.3 has-symbols: 1.0.3 @@ -2726,7 +2727,7 @@ packages: eslint: '>=8' dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@9.13.0) - '@eslint-community/regexpp': 4.11.2 + '@eslint-community/regexpp': 4.12.1 eslint: 9.13.0(supports-color@9.4.0) eslint-compat-utils: 0.5.1(eslint@9.13.0) dev: true @@ -2871,7 +2872,7 @@ packages: array.prototype.flatmap: 1.3.2 array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 - es-iterator-helpers: 1.1.0 + es-iterator-helpers: 1.2.0 eslint: 8.57.1 estraverse: 5.3.0 hasown: 2.0.2 @@ -2903,8 +2904,8 @@ packages: estraverse: 5.3.0 dev: true - /eslint-scope@8.1.0: - resolution: {integrity: sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==} + /eslint-scope@8.2.0: + resolution: {integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: esrecurse: 4.3.0 @@ -2953,8 +2954,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /eslint-visitor-keys@4.1.0: - resolution: {integrity: sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==} + /eslint-visitor-keys@4.2.0: + resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true @@ -2965,7 +2966,7 @@ packages: hasBin: true dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@8.57.1) - '@eslint-community/regexpp': 4.11.2 + '@eslint-community/regexpp': 4.12.1 '@eslint/eslintrc': 2.1.4 '@eslint/js': 8.57.1 '@humanwhocodes/config-array': 0.13.0 @@ -3017,13 +3018,13 @@ packages: optional: true dependencies: '@eslint-community/eslint-utils': 4.4.1(eslint@9.13.0) - '@eslint-community/regexpp': 4.11.2 + '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.18.0(supports-color@9.4.0) '@eslint/core': 0.7.0 '@eslint/eslintrc': 3.1.0(supports-color@9.4.0) '@eslint/js': 9.13.0 - '@eslint/plugin-kit': 0.2.1 - '@humanfs/node': 0.16.5 + '@eslint/plugin-kit': 0.2.2 + '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 '@humanwhocodes/retry': 0.3.1 '@types/estree': 1.0.6 @@ -3033,9 +3034,9 @@ packages: cross-spawn: 7.0.3 debug: 4.3.7(supports-color@9.4.0) escape-string-regexp: 4.0.0 - eslint-scope: 8.1.0 - eslint-visitor-keys: 4.1.0 - espree: 10.2.0 + eslint-scope: 8.2.0 + eslint-visitor-keys: 4.2.0 + espree: 10.3.0 esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 @@ -3055,21 +3056,21 @@ packages: - supports-color dev: true - /espree@10.2.0: - resolution: {integrity: sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==} + /espree@10.3.0: + resolution: {integrity: sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: - acorn: 8.13.0 - acorn-jsx: 5.3.2(acorn@8.13.0) - eslint-visitor-keys: 4.1.0 + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) + eslint-visitor-keys: 4.2.0 dev: true /espree@9.6.1: resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dependencies: - acorn: 8.13.0 - acorn-jsx: 5.3.2(acorn@8.13.0) + acorn: 8.14.0 + acorn-jsx: 5.3.2(acorn@8.14.0) eslint-visitor-keys: 3.4.3 dev: true @@ -3478,7 +3479,7 @@ packages: graphql: ^0.9.0 || ^0.10.0 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0 || ^16.0.0 dependencies: graphql: 16.8.1 - tslib: 2.8.0 + tslib: 2.8.1 dev: false /graphql.macro@1.4.2(@babel/core@7.26.0)(graphql@16.8.1): @@ -3931,7 +3932,7 @@ packages: resolution: {integrity: sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: - '@babel/code-frame': 7.26.0 + '@babel/code-frame': 7.26.2 '@jest/types': 29.6.3 '@types/stack-utils': 2.0.3 chalk: 4.1.2 @@ -3975,7 +3976,7 @@ packages: engines: {node: '>=12.0.0'} hasBin: true dependencies: - '@babel/parser': 7.26.1 + '@babel/parser': 7.26.2 '@jsdoc/salty': 0.2.8 '@types/markdown-it': 14.1.2 bluebird: 3.7.2 @@ -4168,7 +4169,7 @@ packages: /lower-case@2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: - tslib: 2.8.0 + tslib: 2.8.1 dev: true /lru-cache@5.1.1: @@ -4388,7 +4389,7 @@ packages: resolution: {integrity: sha512-aMSAzLVY7LyeM60gvBS423nBmIPP+Wy7St7hsb+8/fc1HmeoHJfLO8CKse4u3BtOZvQLJghYPI2i/1WZrEj5/g==} dependencies: '@sinonjs/commons': 3.0.1 - '@sinonjs/fake-timers': 13.0.4 + '@sinonjs/fake-timers': 13.0.5 '@sinonjs/text-encoding': 0.7.3 just-extend: 6.2.0 path-to-regexp: 8.2.0 @@ -4398,7 +4399,7 @@ packages: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} dependencies: lower-case: 2.0.2 - tslib: 2.8.0 + tslib: 2.8.1 dev: true /node-releases@2.0.18: @@ -4504,7 +4505,7 @@ packages: '@wry/caches': 1.0.1 '@wry/context': 0.7.4 '@wry/trie': 0.4.3 - tslib: 2.8.0 + tslib: 2.8.1 dev: false /optionator@0.9.4: @@ -4574,7 +4575,7 @@ packages: resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} dependencies: dot-case: 3.0.4 - tslib: 2.8.0 + tslib: 2.8.1 dev: true /parent-module@1.0.1: @@ -4595,7 +4596,7 @@ packages: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} dependencies: - '@babel/code-frame': 7.26.0 + '@babel/code-frame': 7.26.2 error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 @@ -4615,7 +4616,7 @@ packages: resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} dependencies: no-case: 3.0.4 - tslib: 2.8.0 + tslib: 2.8.1 dev: true /path-browserify@1.0.1: @@ -5194,7 +5195,7 @@ packages: resolution: {integrity: sha512-euuToqM+PjO4UgXeLETsfQiuoyPXlqFezr6YZDFwHR3t4qaX0fZUe1MfPMznTL5f8BWrVS89KduLdMUsxFCO6g==} dependencies: '@sinonjs/commons': 3.0.1 - '@sinonjs/fake-timers': 13.0.4 + '@sinonjs/fake-timers': 13.0.5 '@sinonjs/samsam': 8.0.2 diff: 7.0.0 nise: 6.1.1 @@ -5409,7 +5410,7 @@ packages: engines: {node: ^14.18.0 || >=16.0.0} dependencies: '@pkgr/core': 0.1.1 - tslib: 2.8.0 + tslib: 2.8.1 dev: true /tapable@2.2.1: @@ -5431,7 +5432,7 @@ packages: hasBin: true dependencies: '@jridgewell/source-map': 0.3.6 - acorn: 8.13.0 + acorn: 8.14.0 commander: 2.20.3 source-map-support: 0.5.21 dev: true @@ -5460,7 +5461,7 @@ packages: resolution: {integrity: sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ==} engines: {node: '>=8'} dependencies: - tslib: 2.8.0 + tslib: 2.8.1 dev: false /ts-standard@12.0.2(typescript@5.6.3): @@ -5502,8 +5503,8 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true - /tslib@2.8.0: - resolution: {integrity: sha512-jWVzBLplnCmoaTr13V9dYbiQ99wvZRd0vNWaDRg+aVYRcjDF3nDksxFDE/+fkXnKhpnUUkmx5pK/v8mCtLVqZA==} + /tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} /tsutils@3.21.0(typescript@5.6.3): resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} From 34d3ff89f121ac9ec51ad48f0526e108c20548c2 Mon Sep 17 00:00:00 2001 From: Sri Harsha Date: Thu, 7 Nov 2024 13:16:12 -0500 Subject: [PATCH 089/135] [JS] update pnpm workspace --- .../node/selenium-webdriver/package.json | 10 +- pnpm-lock.yaml | 121 +++++++++--------- 2 files changed, 68 insertions(+), 63 deletions(-) diff --git a/javascript/node/selenium-webdriver/package.json b/javascript/node/selenium-webdriver/package.json index cb31db734d8ac..e06d9132c886a 100644 --- a/javascript/node/selenium-webdriver/package.json +++ b/javascript/node/selenium-webdriver/package.json @@ -29,19 +29,19 @@ "ws": "^8.18.0" }, "devDependencies": { - "@eslint/js": "^9.13.0", + "@eslint/js": "^9.14.0", "clean-jsdoc-theme": "^4.3.0", - "eslint": "^9.13.0", + "eslint": "^9.14.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-mocha": "^10.5.0", - "eslint-plugin-n": "^17.11.1", + "eslint-plugin-n": "^17.13.1", "eslint-plugin-no-only-tests": "^3.3.0", "eslint-plugin-prettier": "^5.2.1", "express": "^4.21.1", - "globals": "^15.11.0", + "globals": "^15.12.0", "has-flag": "^5.0.1", "jsdoc": "^4.0.4", - "mocha": "^10.7.3", + "mocha": "^10.8.2", "mocha-junit-reporter": "^2.2.1", "multer": "1.4.5-lts.1", "prettier": "^3.3.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a64531110e23e..f99a692e4df29 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -112,35 +112,35 @@ importers: version: 8.18.0 devDependencies: '@eslint/js': - specifier: ^9.13.0 - version: 9.13.0 + specifier: ^9.14.0 + version: 9.14.0 clean-jsdoc-theme: specifier: ^4.3.0 version: 4.3.0(jsdoc@4.0.4) eslint: - specifier: ^9.13.0 - version: 9.13.0(supports-color@9.4.0) + specifier: ^9.14.0 + version: 9.14.0(supports-color@9.4.0) eslint-config-prettier: specifier: ^9.1.0 - version: 9.1.0(eslint@9.13.0) + version: 9.1.0(eslint@9.14.0) eslint-plugin-mocha: specifier: ^10.5.0 - version: 10.5.0(eslint@9.13.0) + version: 10.5.0(eslint@9.14.0) eslint-plugin-n: - specifier: ^17.11.1 - version: 17.11.1(eslint@9.13.0) + specifier: ^17.13.1 + version: 17.13.1(eslint@9.14.0) eslint-plugin-no-only-tests: specifier: ^3.3.0 version: 3.3.0 eslint-plugin-prettier: specifier: ^5.2.1 - version: 5.2.1(eslint-config-prettier@9.1.0)(eslint@9.13.0)(prettier@3.3.3) + version: 5.2.1(eslint-config-prettier@9.1.0)(eslint@9.14.0)(prettier@3.3.3) express: specifier: ^4.21.1 version: 4.21.1(supports-color@9.4.0) globals: - specifier: ^15.11.0 - version: 15.11.0 + specifier: ^15.12.0 + version: 15.12.0 has-flag: specifier: ^5.0.1 version: 5.0.1 @@ -148,11 +148,11 @@ importers: specifier: ^4.0.4 version: 4.0.4 mocha: - specifier: ^10.7.3 - version: 10.7.3 + specifier: ^10.8.2 + version: 10.8.2 mocha-junit-reporter: specifier: ^2.2.1 - version: 2.2.1(mocha@10.7.3)(supports-color@9.4.0) + version: 2.2.1(mocha@10.8.2)(supports-color@9.4.0) multer: specifier: 1.4.5-lts.1 version: 1.4.5-lts.1 @@ -798,13 +798,13 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@eslint-community/eslint-utils@4.4.1(eslint@9.13.0): + /@eslint-community/eslint-utils@4.4.1(eslint@9.14.0): resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 9.13.0(supports-color@9.4.0) + eslint: 9.14.0(supports-color@9.4.0) eslint-visitor-keys: 3.4.3 dev: true @@ -868,8 +868,8 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true - /@eslint/js@9.13.0: - resolution: {integrity: sha512-IFLyoY4d72Z5y/6o/BazFBezupzI/taV8sGumxTAVw3lXG9A6md1Dc34T9s1FoD/an9pJH8RHbAxsaEbBed9lA==} + /@eslint/js@9.14.0: + resolution: {integrity: sha512-pFoEtFWCPyDOl+C6Ift+wC7Ro89otjigCf5vcuWqWgqNSQbRrpjSvdeE6ofLz4dHmyxD5f7gIdGT4+p36L6Twg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dev: true @@ -961,6 +961,11 @@ packages: engines: {node: '>=18.18'} dev: true + /@humanwhocodes/retry@0.4.1: + resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==} + engines: {node: '>=18.18'} + dev: true + /@jest/expect-utils@29.7.0: resolution: {integrity: sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -1921,7 +1926,7 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true dependencies: - caniuse-lite: 1.0.30001677 + caniuse-lite: 1.0.30001678 electron-to-chromium: 1.5.52 node-releases: 2.0.18 update-browserslist-db: 1.1.1(browserslist@4.24.2) @@ -1981,8 +1986,8 @@ packages: engines: {node: '>=10'} dev: true - /caniuse-lite@1.0.30001677: - resolution: {integrity: sha512-fmfjsOlJUpMWu+mAAtZZZHz7UEwsUxIIvu1TJfO1HqFQvB/B+ii0xr9B5HpbZY/mC4XZ8SvjHJqtAY6pDPQEog==} + /caniuse-lite@1.0.30001678: + resolution: {integrity: sha512-RR+4U/05gNtps58PEBDZcPWTgEO2MBeoPZ96aQcjmfkBWRIDfN451fW2qyDA9/+HohLLIL5GqiMwA+IB1pWarw==} /catharsis@0.9.0: resolution: {integrity: sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==} @@ -2152,8 +2157,8 @@ packages: yaml: 1.10.2 dev: false - /cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + /cross-spawn@7.0.5: + resolution: {integrity: sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==} engines: {node: '>= 8'} dependencies: path-key: 3.1.1 @@ -2615,23 +2620,23 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - /eslint-compat-utils@0.5.1(eslint@9.13.0): + /eslint-compat-utils@0.5.1(eslint@9.14.0): resolution: {integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==} engines: {node: '>=12'} peerDependencies: eslint: '>=6.0.0' dependencies: - eslint: 9.13.0(supports-color@9.4.0) + eslint: 9.14.0(supports-color@9.4.0) semver: 7.6.3 dev: true - /eslint-config-prettier@9.1.0(eslint@9.13.0): + /eslint-config-prettier@9.1.0(eslint@9.14.0): resolution: {integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==} hasBin: true peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 9.13.0(supports-color@9.4.0) + eslint: 9.14.0(supports-color@9.4.0) dev: true /eslint-config-standard-jsx@11.0.0(eslint-plugin-react@7.37.2)(eslint@8.57.1): @@ -2720,16 +2725,16 @@ packages: - supports-color dev: true - /eslint-plugin-es-x@7.8.0(eslint@9.13.0): + /eslint-plugin-es-x@7.8.0(eslint@9.14.0): resolution: {integrity: sha512-7Ds8+wAAoV3T+LAKeu39Y5BzXCrGKrcISfgKEqTS4BDN8SFEDQd0S43jiQ8vIa3wUKD07qitZdfzlenSi8/0qQ==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: eslint: '>=8' dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.13.0) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.14.0) '@eslint-community/regexpp': 4.12.1 - eslint: 9.13.0(supports-color@9.4.0) - eslint-compat-utils: 0.5.1(eslint@9.13.0) + eslint: 9.14.0(supports-color@9.4.0) + eslint-compat-utils: 0.5.1(eslint@9.14.0) dev: true /eslint-plugin-es@4.1.0(eslint@8.57.1): @@ -2780,14 +2785,14 @@ packages: - supports-color dev: true - /eslint-plugin-mocha@10.5.0(eslint@9.13.0): + /eslint-plugin-mocha@10.5.0(eslint@9.14.0): resolution: {integrity: sha512-F2ALmQVPT1GoP27O1JTZGrV9Pqg8k79OeIuvw63UxMtQKREZtmkK1NFgkZQ2TW7L2JSSFKHFPTtHu5z8R9QNRw==} engines: {node: '>=14.0.0'} peerDependencies: eslint: '>=7.0.0' dependencies: - eslint: 9.13.0(supports-color@9.4.0) - eslint-utils: 3.0.0(eslint@9.13.0) + eslint: 9.14.0(supports-color@9.4.0) + eslint-utils: 3.0.0(eslint@9.14.0) globals: 13.24.0 rambda: 7.5.0 dev: true @@ -2809,18 +2814,18 @@ packages: semver: 7.6.3 dev: true - /eslint-plugin-n@17.11.1(eslint@9.13.0): - resolution: {integrity: sha512-93IUD82N6tIEgjztVI/l3ElHtC2wTa9boJHrD8iN+NyDxjxz/daZUZKfkedjBZNdg6EqDk4irybUsiPwDqXAEA==} + /eslint-plugin-n@17.13.1(eslint@9.14.0): + resolution: {integrity: sha512-97qzhk1z3DdSJNCqT45EslwCu5+LB9GDadSyBItgKUfGsXAmN/aa7LRQ0ZxHffUxUzvgbTPJL27/pE9ZQWHy7A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: '>=8.23.0' dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.13.0) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.14.0) enhanced-resolve: 5.17.1 - eslint: 9.13.0(supports-color@9.4.0) - eslint-plugin-es-x: 7.8.0(eslint@9.13.0) + eslint: 9.14.0(supports-color@9.4.0) + eslint-plugin-es-x: 7.8.0(eslint@9.14.0) get-tsconfig: 4.8.1 - globals: 15.11.0 + globals: 15.12.0 ignore: 5.3.2 minimatch: 9.0.5 semver: 7.6.3 @@ -2831,7 +2836,7 @@ packages: engines: {node: '>=5.0.0'} dev: true - /eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0)(eslint@9.13.0)(prettier@3.3.3): + /eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0)(eslint@9.14.0)(prettier@3.3.3): resolution: {integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==} engines: {node: ^14.18.0 || >=16.0.0} peerDependencies: @@ -2845,8 +2850,8 @@ packages: eslint-config-prettier: optional: true dependencies: - eslint: 9.13.0(supports-color@9.4.0) - eslint-config-prettier: 9.1.0(eslint@9.13.0) + eslint: 9.14.0(supports-color@9.4.0) + eslint-config-prettier: 9.1.0(eslint@9.14.0) prettier: 3.3.3 prettier-linter-helpers: 1.0.0 synckit: 0.9.2 @@ -2929,13 +2934,13 @@ packages: eslint-visitor-keys: 2.1.0 dev: true - /eslint-utils@3.0.0(eslint@9.13.0): + /eslint-utils@3.0.0(eslint@9.14.0): resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} peerDependencies: eslint: '>=5' dependencies: - eslint: 9.13.0(supports-color@9.4.0) + eslint: 9.14.0(supports-color@9.4.0) eslint-visitor-keys: 2.1.0 dev: true @@ -2975,7 +2980,7 @@ packages: '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 - cross-spawn: 7.0.3 + cross-spawn: 7.0.5 debug: 4.3.7 doctrine: 3.0.0 escape-string-regexp: 4.0.0 @@ -3007,8 +3012,8 @@ packages: - supports-color dev: true - /eslint@9.13.0(supports-color@9.4.0): - resolution: {integrity: sha512-EYZK6SX6zjFHST/HRytOdA/zE72Cq/bfw45LSyuwrdvcclb/gqV8RRQxywOBEWO2+WDpva6UZa4CcDeJKzUCFA==} + /eslint@9.14.0(supports-color@9.4.0): + resolution: {integrity: sha512-c2FHsVBr87lnUtjP4Yhvk4yEhKrQavGafRA/Se1ouse8PfbfC/Qh9Mxa00yWsZRlqeUB9raXip0aiiUZkgnr9g==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -3017,21 +3022,21 @@ packages: jiti: optional: true dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.13.0) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.14.0) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.18.0(supports-color@9.4.0) '@eslint/core': 0.7.0 '@eslint/eslintrc': 3.1.0(supports-color@9.4.0) - '@eslint/js': 9.13.0 + '@eslint/js': 9.14.0 '@eslint/plugin-kit': 0.2.2 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.3.1 + '@humanwhocodes/retry': 0.4.1 '@types/estree': 1.0.6 '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 - cross-spawn: 7.0.3 + cross-spawn: 7.0.5 debug: 4.3.7(supports-color@9.4.0) escape-string-regexp: 4.0.0 eslint-scope: 8.2.0 @@ -3434,8 +3439,8 @@ packages: engines: {node: '>=18'} dev: true - /globals@15.11.0: - resolution: {integrity: sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==} + /globals@15.12.0: + resolution: {integrity: sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==} engines: {node: '>=18'} dev: true @@ -4310,7 +4315,7 @@ packages: hasBin: true dev: true - /mocha-junit-reporter@2.2.1(mocha@10.7.3)(supports-color@9.4.0): + /mocha-junit-reporter@2.2.1(mocha@10.8.2)(supports-color@9.4.0): resolution: {integrity: sha512-iDn2tlKHn8Vh8o4nCzcUVW4q7iXp7cC4EB78N0cDHIobLymyHNwe0XG8HEHHjc3hJlXm0Vy6zcrxaIhnI2fWmw==} peerDependencies: mocha: '>=2.2.5' @@ -4318,15 +4323,15 @@ packages: debug: 4.3.7(supports-color@9.4.0) md5: 2.3.0 mkdirp: 3.0.1 - mocha: 10.7.3 + mocha: 10.8.2 strip-ansi: 6.0.1 xml: 1.0.1 transitivePeerDependencies: - supports-color dev: true - /mocha@10.7.3: - resolution: {integrity: sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==} + /mocha@10.8.2: + resolution: {integrity: sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==} engines: {node: '>= 14.0.0'} hasBin: true dependencies: From 15b44c0ef026eebbed6cd3effe66610c919e9839 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Sautter?= Date: Thu, 7 Nov 2024 20:23:29 +0100 Subject: [PATCH 090/135] [java] make RemoteWebDriverDownloadTest less flaky --- .../router/RemoteWebDriverDownloadTest.java | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/java/test/org/openqa/selenium/grid/router/RemoteWebDriverDownloadTest.java b/java/test/org/openqa/selenium/grid/router/RemoteWebDriverDownloadTest.java index c8cea51cbaecb..3f0d7d1d3e8ec 100644 --- a/java/test/org/openqa/selenium/grid/router/RemoteWebDriverDownloadTest.java +++ b/java/test/org/openqa/selenium/grid/router/RemoteWebDriverDownloadTest.java @@ -30,6 +30,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Objects; +import java.util.Set; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import org.junit.jupiter.api.AfterEach; @@ -57,6 +58,8 @@ class RemoteWebDriverDownloadTest { + private static final Set FILE_EXTENSIONS = Set.of(".txt", ".jpg"); + private Server server; private NettyAppServer appServer; private Capabilities capabilities; @@ -112,7 +115,15 @@ void canListDownloadedFiles() { driver.findElement(By.id("file-2")).click(); new WebDriverWait(driver, Duration.ofSeconds(5)) - .until(d -> ((HasDownloads) d).getDownloadableFiles().size() == 2); + .until( + d -> + ((HasDownloads) d) + .getDownloadableFiles().stream() + // ensure we hit no temporary file created by the browser while + // downloading + .filter((f) -> FILE_EXTENSIONS.stream().anyMatch(f::endsWith)) + .count() + == 2); List downloadableFiles = ((HasDownloads) driver).getDownloadableFiles(); assertThat(downloadableFiles).contains("file_1.txt", "file_2.jpg"); @@ -132,7 +143,12 @@ void canDownloadFiles() throws IOException { driver.findElement(By.id("file-1")).click(); new WebDriverWait(driver, Duration.ofSeconds(5)) - .until(d -> !((HasDownloads) d).getDownloadableFiles().isEmpty()); + .until( + d -> + ((HasDownloads) d) + .getDownloadableFiles().stream() + // ensure we hit no temporary file created by the browser while downloading + .anyMatch((f) -> FILE_EXTENSIONS.stream().anyMatch(f::endsWith))); String fileName = ((HasDownloads) driver).getDownloadableFiles().get(0); @@ -155,7 +171,12 @@ void testCanDeleteFiles() { driver.findElement(By.id("file-1")).click(); new WebDriverWait(driver, Duration.ofSeconds(5)) - .until(d -> !((HasDownloads) d).getDownloadableFiles().isEmpty()); + .until( + d -> + ((HasDownloads) d) + .getDownloadableFiles().stream() + // ensure we hit no temporary file created by the browser while downloading + .anyMatch((f) -> FILE_EXTENSIONS.stream().anyMatch(f::endsWith))); driver = new Augmenter().augment(driver); ((HasDownloads) driver).deleteDownloadableFiles(); From d411615fe28264ee7b027c7eceda6c256cb4d09b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=B6rg=20Sautter?= Date: Thu, 7 Nov 2024 20:27:17 +0100 Subject: [PATCH 091/135] [java] use --headless=new in EdgeDriverFunctionalTest --- .../openqa/selenium/edge/EdgeDriverFunctionalTest.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/java/test/org/openqa/selenium/edge/EdgeDriverFunctionalTest.java b/java/test/org/openqa/selenium/edge/EdgeDriverFunctionalTest.java index 7e7dce47248bb..c8feca9c42834 100644 --- a/java/test/org/openqa/selenium/edge/EdgeDriverFunctionalTest.java +++ b/java/test/org/openqa/selenium/edge/EdgeDriverFunctionalTest.java @@ -116,20 +116,20 @@ void canSetPermission() { @NoDriverBeforeTest public void canSetPermissionHeadless() { EdgeOptions options = new EdgeOptions(); - options.addArguments("--headless=chrome"); + options.addArguments("--headless=new"); localDriver = new WebDriverBuilder().get(options); HasPermissions permissions = (HasPermissions) localDriver; localDriver.get(pages.clicksPage); assertThat(checkPermission(localDriver, CLIPBOARD_READ)).isEqualTo("prompt"); - assertThat(checkPermission(localDriver, CLIPBOARD_WRITE)).isEqualTo("prompt"); + assertThat(checkPermission(localDriver, CLIPBOARD_WRITE)).isEqualTo("granted"); permissions.setPermission(CLIPBOARD_READ, "granted"); - permissions.setPermission(CLIPBOARD_WRITE, "granted"); + permissions.setPermission(CLIPBOARD_WRITE, "prompt"); assertThat(checkPermission(localDriver, CLIPBOARD_READ)).isEqualTo("granted"); - assertThat(checkPermission(localDriver, CLIPBOARD_WRITE)).isEqualTo("granted"); + assertThat(checkPermission(localDriver, CLIPBOARD_WRITE)).isEqualTo("prompt"); } public String checkPermission(WebDriver driver, String permission) { From 7540e099694f5b7c089e9fd02dd01de0afb31fdc Mon Sep 17 00:00:00 2001 From: Titus Fortner Date: Thu, 7 Nov 2024 14:43:49 -0800 Subject: [PATCH 092/135] Copyright dotnet (#13522) * [build] allow copyright script to work with dotnet files * [dotnet] update all copyright information in cs files --------- Co-authored-by: Viet Nguyen Duc --- .../support/Events/EventFiringWebDriver.cs | 25 ++++++------- .../support/Events/FindElementEventArgs.cs | 25 ++++++------- .../support/Events/GetShadowRootEventArgs.cs | 25 ++++++------- .../Events/WebDriverExceptionEventArgs.cs | 25 ++++++------- .../Events/WebDriverNavigationEventArgs.cs | 25 ++++++------- .../Events/WebDriverScriptEventArgs.cs | 25 ++++++------- .../src/support/Events/WebElementEventArgs.cs | 25 ++++++------- .../Events/WebElementValueEventArgs.cs | 25 ++++++------- .../support/Extensions/WebDriverExtensions.cs | 25 ++++++------- dotnet/src/support/GlobalSuppressions.cs | 25 ++++++------- dotnet/src/support/UI/ILoadableComponent.cs | 25 ++++++------- .../support/UI/LoadableComponentException.cs | 25 ++++++------- dotnet/src/support/UI/LoadableComponent{T}.cs | 25 ++++++------- dotnet/src/support/UI/PopupWindowFinder.cs | 25 ++++++------- dotnet/src/support/UI/SelectElement.cs | 25 ++++++------- .../support/UI/SlowLoadableComponent{T}.cs | 25 ++++++------- .../support/UI/UnexpectedTagNameException.cs | 25 ++++++------- dotnet/src/webdriver/Alert.cs | 25 ++++++------- dotnet/src/webdriver/BiDi/BiDi.cs | 19 ++++++++++ dotnet/src/webdriver/BiDi/BiDiException.cs | 19 ++++++++++ .../webdriver/BiDi/Communication/Broker.cs | 21 ++++++++++- .../webdriver/BiDi/Communication/Command.cs | 19 ++++++++++ .../BiDi/Communication/CommandOptions.cs | 19 ++++++++++ .../BiDi/Communication/EventHandler.cs | 19 ++++++++++ .../Converters/BrowserUserContextConverter.cs | 19 ++++++++++ .../Converters/BrowsingContextConverter.cs | 19 ++++++++++ .../Json/Converters/ChannelConverter.cs | 19 ++++++++++ .../Converters/DateTimeOffsetConverter.cs | 19 ++++++++++ .../Enumerable/GetCookiesResultConverter.cs | 19 ++++++++++ .../Enumerable/GetRealmsResultConverter.cs | 19 ++++++++++ .../GetUserContextsResultConverter.cs | 19 ++++++++++ .../Enumerable/InputSourceActionsConverter.cs | 19 ++++++++++ .../Enumerable/LocateNodesResultConverter.cs | 19 ++++++++++ .../Json/Converters/HandleConverter.cs | 19 ++++++++++ .../Json/Converters/InputOriginConverter.cs | 19 ++++++++++ .../Json/Converters/InterceptConverter.cs | 19 ++++++++++ .../Json/Converters/InternalIdConverter.cs | 19 ++++++++++ .../Json/Converters/NavigationConverter.cs | 19 ++++++++++ .../Polymorphic/EvaluateResultConverter.cs | 19 ++++++++++ .../Polymorphic/LogEntryConverter.cs | 19 ++++++++++ .../Polymorphic/MessageConverter.cs | 19 ++++++++++ .../Polymorphic/RealmInfoConverter.cs | 19 ++++++++++ .../Polymorphic/RemoteValueConverter.cs | 19 ++++++++++ .../Json/Converters/PreloadScriptConverter.cs | 19 ++++++++++ .../Converters/PrintPageRangeConverter.cs | 19 ++++++++++ .../Json/Converters/RealmConverter.cs | 19 ++++++++++ .../Json/Converters/RealmTypeConverter.cs | 19 ++++++++++ .../Json/Converters/RequestConverter.cs | 19 ++++++++++ .../webdriver/BiDi/Communication/Message.cs | 19 ++++++++++ .../Communication/Transport/ITransport.cs | 19 ++++++++++ .../Transport/WebSocketTransport.cs | 19 ++++++++++ dotnet/src/webdriver/BiDi/EventArgs.cs | 19 ++++++++++ .../BiDi/Modules/Browser/BrowserModule.cs | 19 ++++++++++ .../BiDi/Modules/Browser/CloseCommand.cs | 19 ++++++++++ .../Browser/CreateUserContextCommand.cs | 19 ++++++++++ .../Modules/Browser/GetUserContextsCommand.cs | 19 ++++++++++ .../Browser/RemoveUserContextCommand.cs | 19 ++++++++++ .../BiDi/Modules/Browser/UserContext.cs | 19 ++++++++++ .../BiDi/Modules/Browser/UserContextInfo.cs | 19 ++++++++++ .../BrowsingContext/ActivateCommand.cs | 19 ++++++++++ .../BrowsingContext/BrowsingContext.cs | 19 ++++++++++ .../BrowsingContext/BrowsingContextInfo.cs | 19 ++++++++++ .../BrowsingContextInputModule.cs | 19 ++++++++++ .../BrowsingContextLogModule.cs | 19 ++++++++++ .../BrowsingContext/BrowsingContextModule.cs | 19 ++++++++++ .../BrowsingContextNetworkModule.cs | 19 ++++++++++ .../BrowsingContextScriptModule.cs | 19 ++++++++++ .../BrowsingContextStorageModule.cs | 19 ++++++++++ .../CaptureScreenshotCommand.cs | 19 ++++++++++ .../Modules/BrowsingContext/CloseCommand.cs | 19 ++++++++++ .../Modules/BrowsingContext/CreateCommand.cs | 19 ++++++++++ .../Modules/BrowsingContext/GetTreeCommand.cs | 19 ++++++++++ .../HandleUserPromptCommand.cs | 19 ++++++++++ .../BrowsingContext/LocateNodesCommand.cs | 19 ++++++++++ .../BiDi/Modules/BrowsingContext/Locator.cs | 19 ++++++++++ .../BrowsingContext/NavigateCommand.cs | 19 ++++++++++ .../Modules/BrowsingContext/Navigation.cs | 19 ++++++++++ .../Modules/BrowsingContext/NavigationInfo.cs | 19 ++++++++++ .../Modules/BrowsingContext/PrintCommand.cs | 19 ++++++++++ .../Modules/BrowsingContext/ReloadCommand.cs | 19 ++++++++++ .../BrowsingContext/SetViewportCommand.cs | 19 ++++++++++ .../BrowsingContext/TraverseHistoryCommand.cs | 19 ++++++++++ .../UserPromptClosedEventArgs.cs | 19 ++++++++++ .../UserPromptOpenedEventArgs.cs | 19 ++++++++++ .../BiDi/Modules/Input/InputModule.cs | 19 ++++++++++ .../src/webdriver/BiDi/Modules/Input/Key.cs | 19 +++++++++- .../webdriver/BiDi/Modules/Input/Origin.cs | 19 ++++++++++ .../Modules/Input/PerformActionsCommand.cs | 19 ++++++++++ .../Modules/Input/ReleaseActionsCommand.cs | 19 ++++++++++ .../Modules/Input/SequentialSourceActions.cs | 21 +++++++++-- .../BiDi/Modules/Input/SourceActions.cs | 19 ++++++++++ .../src/webdriver/BiDi/Modules/Log/Entry.cs | 19 ++++++++++ .../webdriver/BiDi/Modules/Log/LogModule.cs | 19 ++++++++++ dotnet/src/webdriver/BiDi/Modules/Module.cs | 19 ++++++++++ .../Modules/Network/AddInterceptCommand.cs | 19 ++++++++++ .../BiDi/Modules/Network/AuthChallenge.cs | 19 ++++++++++ .../BiDi/Modules/Network/AuthCredentials.cs | 19 ++++++++++ .../Modules/Network/AuthRequiredEventArgs.cs | 19 ++++++++++ .../Network/BaseParametersEventArgs.cs | 19 ++++++++++ .../Network/BeforeRequestSentEventArgs.cs | 19 ++++++++++ .../BiDi/Modules/Network/BytesValue.cs | 19 ++++++++++ .../Modules/Network/ContinueRequestCommand.cs | 19 ++++++++++ .../Network/ContinueResponseCommand.cs | 19 ++++++++++ .../Network/ContinueWithAuthCommand.cs | 19 ++++++++++ .../webdriver/BiDi/Modules/Network/Cookie.cs | 19 ++++++++++ .../BiDi/Modules/Network/CookieHeader.cs | 19 ++++++++++ .../Modules/Network/FailRequestCommand.cs | 19 ++++++++++ .../Modules/Network/FetchErrorEventArgs.cs | 19 ++++++++++ .../BiDi/Modules/Network/FetchTimingInfo.cs | 19 ++++++++++ .../webdriver/BiDi/Modules/Network/Header.cs | 19 ++++++++++ .../BiDi/Modules/Network/Initiator.cs | 19 ++++++++++ .../BiDi/Modules/Network/Intercept.cs | 19 ++++++++++ .../BiDi/Modules/Network/NetworkModule.cs | 19 ++++++++++ .../Modules/Network/ProvideResponseCommand.cs | 19 ++++++++++ .../Modules/Network/RemoveInterceptCommand.cs | 19 ++++++++++ .../webdriver/BiDi/Modules/Network/Request.cs | 19 ++++++++++ .../BiDi/Modules/Network/RequestData.cs | 19 ++++++++++ .../Network/ResponseCompletedEventArgs.cs | 19 ++++++++++ .../BiDi/Modules/Network/ResponseContent.cs | 19 ++++++++++ .../BiDi/Modules/Network/ResponseData.cs | 19 ++++++++++ .../Network/ResponseStartedEventArgs.cs | 19 ++++++++++ .../BiDi/Modules/Network/SetCookieHeader.cs | 19 ++++++++++ .../BiDi/Modules/Network/UrlPattern.cs | 19 ++++++++++ .../Modules/Script/AddPreloadScriptCommand.cs | 19 ++++++++++ .../Modules/Script/CallFunctionCommand.cs | 19 ++++++++++ .../webdriver/BiDi/Modules/Script/Channel.cs | 19 ++++++++++ .../BiDi/Modules/Script/DisownCommand.cs | 19 ++++++++++ .../BiDi/Modules/Script/EvaluateCommand.cs | 19 ++++++++++ .../BiDi/Modules/Script/GetRealmsCommand.cs | 19 ++++++++++ .../webdriver/BiDi/Modules/Script/Handle.cs | 19 ++++++++++ .../BiDi/Modules/Script/InternalId.cs | 19 ++++++++++ .../BiDi/Modules/Script/LocalValue.cs | 19 ++++++++++ .../BiDi/Modules/Script/MessageEventArgs.cs | 19 ++++++++++ .../BiDi/Modules/Script/NodeProperties.cs | 19 ++++++++++ .../BiDi/Modules/Script/PreloadScript.cs | 19 ++++++++++ .../webdriver/BiDi/Modules/Script/Realm.cs | 19 ++++++++++ .../Modules/Script/RealmDestroyedEventArgs.cs | 19 ++++++++++ .../BiDi/Modules/Script/RealmInfo.cs | 19 ++++++++++ .../BiDi/Modules/Script/RealmType.cs | 19 ++++++++++ .../BiDi/Modules/Script/RemoteReference.cs | 19 ++++++++++ .../BiDi/Modules/Script/RemoteValue.cs | 19 ++++++++++ .../Script/RemovePreloadScriptCommand.cs | 19 ++++++++++ .../BiDi/Modules/Script/ResultOwnership.cs | 19 ++++++++++ .../Modules/Script/ScriptEvaluateException.cs | 19 ++++++++++ .../BiDi/Modules/Script/ScriptModule.cs | 19 ++++++++++ .../Modules/Script/SerializationOptions.cs | 19 ++++++++++ .../webdriver/BiDi/Modules/Script/Source.cs | 19 ++++++++++ .../BiDi/Modules/Script/StackFrame.cs | 19 ++++++++++ .../BiDi/Modules/Script/StackTrace.cs | 19 ++++++++++ .../webdriver/BiDi/Modules/Script/Target.cs | 19 ++++++++++ .../Modules/Session/CapabilitiesRequest.cs | 19 ++++++++++ .../BiDi/Modules/Session/CapabilityRequest.cs | 19 ++++++++++ .../BiDi/Modules/Session/EndCommand.cs | 19 ++++++++++ .../BiDi/Modules/Session/NewCommand.cs | 19 ++++++++++ .../Modules/Session/ProxyConfiguration.cs | 19 ++++++++++ .../BiDi/Modules/Session/SessionModule.cs | 19 ++++++++++ .../BiDi/Modules/Session/StatusCommand.cs | 19 ++++++++++ .../BiDi/Modules/Session/SubscribeCommand.cs | 19 ++++++++++ .../Modules/Session/UnsubscribeCommand.cs | 19 ++++++++++ .../Modules/Storage/DeleteCookiesCommand.cs | 19 ++++++++++ .../BiDi/Modules/Storage/GetCookiesCommand.cs | 19 ++++++++++ .../BiDi/Modules/Storage/PartitionKey.cs | 19 ++++++++++ .../BiDi/Modules/Storage/SetCookieCommand.cs | 19 ++++++++++ .../BiDi/Modules/Storage/StorageModule.cs | 19 ++++++++++ .../BiDi/Properties/IsExternalInit.cs | 19 ++++++++++ dotnet/src/webdriver/BiDi/Subscription.cs | 19 ++++++++++ .../webdriver/BiDi/WebDriver.Extensions.cs | 19 ++++++++++ dotnet/src/webdriver/By.cs | 25 ++++++------- dotnet/src/webdriver/CapabilityType.cs | 25 ++++++------- dotnet/src/webdriver/Chrome/ChromeDriver.cs | 25 ++++++------- .../webdriver/Chrome/ChromeDriverService.cs | 25 ++++++------- dotnet/src/webdriver/Chrome/ChromeOptions.cs | 25 ++++++------- .../Chromium/ChromiumAndroidOptions.cs | 25 ++++++------- .../src/webdriver/Chromium/ChromiumDriver.cs | 25 ++++++------- .../Chromium/ChromiumDriverService.cs | 25 ++++++------- .../ChromiumMobileEmulationDeviceSettings.cs | 25 ++++++------- .../Chromium/ChromiumNetworkConditions.cs | 25 ++++++------- .../src/webdriver/Chromium/ChromiumOptions.cs | 25 ++++++------- .../ChromiumPerformanceLoggingPreferences.cs | 25 ++++++------- dotnet/src/webdriver/Command.cs | 25 ++++++------- dotnet/src/webdriver/CommandInfo.cs | 25 ++++++------- dotnet/src/webdriver/CommandInfoRepository.cs | 25 ++++++------- dotnet/src/webdriver/Cookie.cs | 25 ++++++------- dotnet/src/webdriver/CookieJar.cs | 25 ++++++------- dotnet/src/webdriver/DefaultFileDetector.cs | 25 ++++++------- .../webdriver/DetachedShadowRootException.cs | 25 ++++++------- .../DevTools/AuthRequiredEventArgs.cs | 25 ++++++------- .../DevTools/BindingCalledEventArgs.cs | 25 ++++++------- .../DevTools/CommandResponseException.cs | 25 ++++++------- .../DevTools/CommandResponseExtensions.cs | 25 ++++++------- .../DevTools/CommandResponseTypeMap.cs | 25 ++++++------- .../webdriver/DevTools/ConsoleApiArgument.cs | 25 ++++++------- .../DevTools/ConsoleApiCalledEventArgs.cs | 25 ++++++------- .../webdriver/DevTools/DevToolsCommandData.cs | 25 ++++++------- .../src/webdriver/DevTools/DevToolsDomains.cs | 26 +++++++------- .../webdriver/DevTools/DevToolsEventData.cs | 25 ++++++------- .../DevTools/DevToolsExtensionMethods.cs | 19 ++++++++++ .../src/webdriver/DevTools/DevToolsOptions.cs | 27 +++++++------- .../src/webdriver/DevTools/DevToolsSession.cs | 25 ++++++------- .../DevTools/DevToolsSessionDomains.cs | 25 ++++++------- .../DevToolsSessionEventReceivedEventArgs.cs | 25 ++++++------- .../DevToolsSessionLogMessageEventArgs.cs | 25 ++++++------- .../webdriver/DevTools/DevToolsVersionInfo.cs | 25 ++++++------- .../webdriver/DevTools/EntryAddedEventArgs.cs | 25 ++++++------- .../DevTools/ExceptionThrownEventArgs.cs | 25 ++++++------- dotnet/src/webdriver/DevTools/ICommand.cs | 25 ++++++------- dotnet/src/webdriver/DevTools/IDevTools.cs | 25 ++++++------- .../webdriver/DevTools/IDevToolsSession.cs | 28 ++++++++------- dotnet/src/webdriver/DevTools/JavaScript.cs | 26 +++++++------- .../DevTools/Json/JsonEnumMemberConverter.cs | 19 ++++++++++ dotnet/src/webdriver/DevTools/Log.cs | 26 +++++++------- dotnet/src/webdriver/DevTools/LogEntry.cs | 25 ++++++------- dotnet/src/webdriver/DevTools/Network.cs | 25 ++++++------- .../DevTools/RequestPausedEventArgs.cs | 25 ++++++------- .../DevTools/ResponsePausedEventArgs.cs | 25 ++++++------- dotnet/src/webdriver/DevTools/Target.cs | 25 ++++++------- .../DevTools/TargetAttachedEventArgs.cs | 25 ++++++------- .../DevTools/TargetDetachedEventArgs.cs | 25 ++++++------- dotnet/src/webdriver/DevTools/TargetInfo.cs | 25 ++++++------- .../webdriver/DevTools/WebSocketConnection.cs | 25 ++++++------- ...ebSocketConnectionDataReceivedEventArgs.cs | 25 ++++++------- .../webdriver/DevTools/v128/V128Domains.cs | 26 +++++++------- .../webdriver/DevTools/v128/V128JavaScript.cs | 26 +++++++------- dotnet/src/webdriver/DevTools/v128/V128Log.cs | 26 +++++++------- .../webdriver/DevTools/v128/V128Network.cs | 25 ++++++------- .../src/webdriver/DevTools/v128/V128Target.cs | 25 ++++++------- .../webdriver/DevTools/v129/V129Domains.cs | 26 +++++++------- .../webdriver/DevTools/v129/V129JavaScript.cs | 26 +++++++------- dotnet/src/webdriver/DevTools/v129/V129Log.cs | 26 +++++++------- .../webdriver/DevTools/v129/V129Network.cs | 25 ++++++------- .../src/webdriver/DevTools/v129/V129Target.cs | 25 ++++++------- .../webdriver/DevTools/v130/V130Domains.cs | 26 +++++++------- .../webdriver/DevTools/v130/V130JavaScript.cs | 26 +++++++------- dotnet/src/webdriver/DevTools/v130/V130Log.cs | 26 +++++++------- .../webdriver/DevTools/v130/V130Network.cs | 25 ++++++------- .../src/webdriver/DevTools/v130/V130Target.cs | 25 ++++++------- .../src/webdriver/DevTools/v85/V85Domains.cs | 26 +++++++------- .../webdriver/DevTools/v85/V85JavaScript.cs | 26 +++++++------- dotnet/src/webdriver/DevTools/v85/V85Log.cs | 26 +++++++------- .../src/webdriver/DevTools/v85/V85Network.cs | 25 ++++++------- .../src/webdriver/DevTools/v85/V85Target.cs | 25 ++++++------- dotnet/src/webdriver/DomMutatedEventArgs.cs | 25 ++++++------- dotnet/src/webdriver/DomMutationData.cs | 25 ++++++------- dotnet/src/webdriver/DriverCommand.cs | 25 ++++++------- dotnet/src/webdriver/DriverFinder.cs | 27 +++++++------- dotnet/src/webdriver/DriverOptions.cs | 25 ++++++------- .../src/webdriver/DriverOptionsMergeResult.cs | 19 ++++++++++ .../DriverProcessStartedEventArgs.cs | 25 ++++++------- .../DriverProcessStartingEventArgs.cs | 25 ++++++------- dotnet/src/webdriver/DriverService.cs | 25 ++++++------- .../DriverServiceNotFoundException.cs | 25 ++++++------- dotnet/src/webdriver/Edge/EdgeDriver.cs | 25 ++++++------- .../src/webdriver/Edge/EdgeDriverService.cs | 25 ++++++------- dotnet/src/webdriver/Edge/EdgeOptions.cs | 25 ++++++------- .../ElementClickInterceptedException.cs | 25 ++++++------- dotnet/src/webdriver/ElementCoordinates.cs | 25 ++++++------- .../ElementNotInteractableException.cs | 25 ++++++------- .../ElementNotSelectableException.cs | 25 ++++++------- .../webdriver/ElementNotVisibleException.cs | 25 ++++++------- dotnet/src/webdriver/EncodedFile.cs | 25 ++++++------- dotnet/src/webdriver/ErrorResponse.cs | 25 ++++++------- .../Firefox/FirefoxAndroidOptions.cs | 29 +++++++-------- .../Firefox/FirefoxCommandContext.cs | 25 ++++++------- dotnet/src/webdriver/Firefox/FirefoxDriver.cs | 25 ++++++------- .../Firefox/FirefoxDriverLogLevel.cs | 25 ++++++------- .../webdriver/Firefox/FirefoxDriverService.cs | 25 ++++++------- .../src/webdriver/Firefox/FirefoxExtension.cs | 25 ++++++------- .../src/webdriver/Firefox/FirefoxOptions.cs | 25 ++++++------- .../src/webdriver/Firefox/FirefoxProfile.cs | 25 ++++++------- .../Firefox/FirefoxProfileManager.cs | 25 ++++++------- .../Firefox/Internal/IniFileReader.cs | 25 ++++++------- dotnet/src/webdriver/Firefox/Preferences.cs | 25 ++++++------- dotnet/src/webdriver/GlobalSuppressions.cs | 25 ++++++------- dotnet/src/webdriver/HttpCommandInfo.cs | 25 ++++++------- dotnet/src/webdriver/HttpRequestData.cs | 25 ++++++------- dotnet/src/webdriver/HttpResponseContent.cs | 25 ++++++------- dotnet/src/webdriver/HttpResponseData.cs | 25 ++++++------- dotnet/src/webdriver/IActionExecutor.cs | 25 ++++++------- dotnet/src/webdriver/IAlert.cs | 25 ++++++------- dotnet/src/webdriver/IAllowsFileDetection.cs | 25 ++++++------- dotnet/src/webdriver/ICapabilities.cs | 25 ++++++------- dotnet/src/webdriver/ICommandExecutor.cs | 25 ++++++------- dotnet/src/webdriver/ICookieJar.cs | 25 ++++++------- dotnet/src/webdriver/ICredentials.cs | 25 ++++++------- .../webdriver/ICustomDriverCommandExecutor.cs | 25 ++++++------- .../webdriver/IE/InternetExplorerDriver.cs | 25 ++++++------- .../IE/InternetExplorerDriverLogLevel.cs | 25 ++++++------- .../IE/InternetExplorerDriverService.cs | 25 ++++++------- .../webdriver/IE/InternetExplorerOptions.cs | 25 ++++++------- dotnet/src/webdriver/IFileDetector.cs | 25 ++++++------- dotnet/src/webdriver/IHasCapabilities.cs | 25 ++++++------- dotnet/src/webdriver/IHasCommandExecutor.cs | 25 ++++++------- dotnet/src/webdriver/IHasDownloads.cs | 25 ++++++------- dotnet/src/webdriver/IHasSessionId.cs | 25 ++++++------- dotnet/src/webdriver/IJavaScriptEngine.cs | 27 +++++++------- dotnet/src/webdriver/IJavascriptExecutor.cs | 27 +++++++------- dotnet/src/webdriver/ILocatable.cs | 25 ++++++------- dotnet/src/webdriver/ILogs.cs | 25 ++++++------- dotnet/src/webdriver/INavigation.cs | 25 ++++++------- dotnet/src/webdriver/INetwork.cs | 29 +++++++-------- dotnet/src/webdriver/IOptions.cs | 25 ++++++------- dotnet/src/webdriver/IRotatable.cs | 25 ++++++------- dotnet/src/webdriver/ISearchContext.cs | 25 ++++++------- dotnet/src/webdriver/ISupportsLogs.cs | 25 ++++++------- dotnet/src/webdriver/ISupportsPrint.cs | 25 ++++++------- dotnet/src/webdriver/ITakesScreenshot.cs | 25 ++++++------- dotnet/src/webdriver/ITargetLocator.cs | 25 ++++++------- dotnet/src/webdriver/ITimeouts.cs | 25 ++++++------- dotnet/src/webdriver/IWebDriver.cs | 25 ++++++------- dotnet/src/webdriver/IWebElement.cs | 25 ++++++------- dotnet/src/webdriver/IWindow.cs | 25 ++++++------- dotnet/src/webdriver/IWrapsDriver.cs | 25 ++++++------- dotnet/src/webdriver/IWrapsElement.cs | 25 ++++++------- dotnet/src/webdriver/IWritableCapabilities.cs | 25 ++++++------- dotnet/src/webdriver/InitializationScript.cs | 25 ++++++------- .../webdriver/InsecureCertificateException.cs | 25 ++++++------- .../webdriver/Interactions/ActionBuilder.cs | 25 ++++++------- .../webdriver/Interactions/ActionSequence.cs | 25 ++++++------- dotnet/src/webdriver/Interactions/Actions.cs | 25 ++++++------- dotnet/src/webdriver/Interactions/IAction.cs | 25 ++++++------- .../webdriver/Interactions/ICoordinates.cs | 25 ++++++------- .../src/webdriver/Interactions/InputDevice.cs | 25 ++++++------- .../webdriver/Interactions/InputDeviceKind.cs | 25 ++++++------- .../src/webdriver/Interactions/Interaction.cs | 25 ++++++------- .../webdriver/Interactions/KeyInputDevice.cs | 25 ++++++------- .../Interactions/PauseInteraction.cs | 25 ++++++------- .../Interactions/PointerInputDevice.cs | 25 ++++++------- .../Interactions/WheelInputDevice.cs | 25 ++++++------- .../src/webdriver/Internal/AndroidOptions.cs | 25 ++++++------- .../webdriver/Internal/Base64UrlEncoder.cs | 25 ++++++------- .../src/webdriver/Internal/FileUtilities.cs | 25 ++++++------- .../src/webdriver/Internal/IFindsElement.cs | 25 ++++++------- .../Internal/IHasCapabilitiesDictionary.cs | 25 ++++++------- .../Internal/IWebDriverObjectReference.cs | 25 ++++++------- .../Internal/Logging/ConsoleLogHandler.cs | 25 ++++++------- .../Internal/Logging/FileLogHandler.cs | 19 ++++++++++ .../webdriver/Internal/Logging/ILogContext.cs | 25 ++++++------- .../webdriver/Internal/Logging/ILogHandler.cs | 25 ++++++------- .../Internal/Logging/ILogHandlerList.cs | 25 ++++++------- .../src/webdriver/Internal/Logging/ILogger.cs | 25 ++++++------- dotnet/src/webdriver/Internal/Logging/Log.cs | 27 +++++++------- .../webdriver/Internal/Logging/LogContext.cs | 25 ++++++------- .../Internal/Logging/LogContextManager.cs | 25 ++++++------- .../webdriver/Internal/Logging/LogEvent.cs | 25 ++++++------- .../Internal/Logging/LogEventLevel.cs | 25 ++++++------- .../Internal/Logging/LogHandlerList.cs | 25 ++++++------- .../src/webdriver/Internal/Logging/Logger.cs | 25 ++++++------- .../src/webdriver/Internal/PortUtilities.cs | 25 ++++++------- .../webdriver/Internal/ResourceUtilities.cs | 25 ++++++------- .../Internal/ResponseValueJsonConverter.cs | 25 ++++++------- .../Internal/ReturnedCapabilities.cs | 25 ++++++------- .../src/webdriver/Internal/ReturnedCookie.cs | 25 ++++++------- .../webdriver/InvalidCookieDomainException.cs | 25 ++++++------- .../webdriver/InvalidElementStateException.cs | 25 ++++++------- .../src/webdriver/InvalidSelectorException.cs | 25 ++++++------- .../JavaScriptCallbackExecutedEventArgs.cs | 25 ++++++------- .../JavaScriptConsoleApiCalledEventArgs.cs | 25 ++++++------- dotnet/src/webdriver/JavaScriptEngine.cs | 25 ++++++------- dotnet/src/webdriver/JavaScriptException.cs | 25 ++++++------- .../JavaScriptExceptionThrownEventArgs.cs | 25 ++++++------- dotnet/src/webdriver/Keys.cs | 25 ++++++------- dotnet/src/webdriver/LogEntry.cs | 25 ++++++------- dotnet/src/webdriver/LogLevel.cs | 25 ++++++------- dotnet/src/webdriver/LogType.cs | 25 ++++++------- dotnet/src/webdriver/Logs.cs | 25 ++++++------- .../MoveTargetOutOfBoundsException.cs | 25 ++++++------- dotnet/src/webdriver/Navigator.cs | 25 ++++++------- .../webdriver/NetworkAuthenticationHandler.cs | 25 ++++++------- dotnet/src/webdriver/NetworkManager.cs | 29 +++++++-------- dotnet/src/webdriver/NetworkRequestHandler.cs | 25 ++++++------- .../webdriver/NetworkRequestSentEventArgs.cs | 25 ++++++------- .../src/webdriver/NetworkResponseHandler.cs | 25 ++++++------- .../NetworkResponseReceivedEventArgs.cs | 25 ++++++------- .../src/webdriver/NoAlertPresentException.cs | 25 ++++++------- dotnet/src/webdriver/NoSuchDriverException.cs | 25 ++++++------- .../src/webdriver/NoSuchElementException.cs | 25 ++++++------- dotnet/src/webdriver/NoSuchFrameException.cs | 25 ++++++------- .../webdriver/NoSuchShadowRootException.cs | 25 ++++++------- dotnet/src/webdriver/NoSuchWindowException.cs | 25 ++++++------- dotnet/src/webdriver/NotFoundException.cs | 25 ++++++------- dotnet/src/webdriver/OptionsManager.cs | 25 ++++++------- dotnet/src/webdriver/PasswordCredentials.cs | 25 ++++++------- dotnet/src/webdriver/PinnedScript.cs | 25 ++++++------- dotnet/src/webdriver/Platform.cs | 25 ++++++------- dotnet/src/webdriver/PrintDocument.cs | 25 ++++++------- dotnet/src/webdriver/PrintOptions.cs | 25 ++++++------- dotnet/src/webdriver/Proxy.cs | 25 ++++++------- dotnet/src/webdriver/RelativeBy.cs | 25 ++++++------- .../webdriver/Remote/DesiredCapabilities.cs | 25 ++++++------- .../Remote/DriverServiceCommandExecutor.cs | 25 ++++++------- .../webdriver/Remote/HttpCommandExecutor.cs | 33 ++++++++--------- dotnet/src/webdriver/Remote/ICommandServer.cs | 25 ++++++------- .../src/webdriver/Remote/LocalFileDetector.cs | 25 ++++++------- .../Remote/ReadOnlyDesiredCapabilities.cs | 25 ++++++------- .../webdriver/Remote/RemoteSessionSettings.cs | 25 ++++++------- .../src/webdriver/Remote/RemoteWebDriver.cs | 25 ++++++------- .../SendingRemoteHttpRequestEventArgs.cs | 25 ++++++------- .../W3CWireProtocolCommandInfoRepository.cs | 25 ++++++------- dotnet/src/webdriver/Response.cs | 25 ++++++------- dotnet/src/webdriver/Safari/SafariDriver.cs | 25 ++++++------- .../webdriver/Safari/SafariDriverService.cs | 25 ++++++------- dotnet/src/webdriver/Safari/SafariOptions.cs | 25 ++++++------- dotnet/src/webdriver/ScreenOrientation.cs | 25 ++++++------- dotnet/src/webdriver/Screenshot.cs | 25 ++++++------- dotnet/src/webdriver/SeleniumManager.cs | 25 ++++++------- dotnet/src/webdriver/SessionId.cs | 25 ++++++------- dotnet/src/webdriver/ShadowRoot.cs | 25 ++++++------- dotnet/src/webdriver/StackTraceElement.cs | 25 ++++++------- .../StaleElementReferenceException.cs | 25 ++++++------- .../src/webdriver/Support/DefaultWait{T}.cs | 25 ++++++------- dotnet/src/webdriver/Support/IClock.cs | 25 ++++++------- dotnet/src/webdriver/Support/IWait{T}.cs | 25 ++++++------- dotnet/src/webdriver/Support/SystemClock.cs | 25 ++++++------- dotnet/src/webdriver/Support/WebDriverWait.cs | 25 ++++++------- dotnet/src/webdriver/TargetLocator.cs | 25 ++++++------- dotnet/src/webdriver/Timeouts.cs | 25 ++++++------- .../webdriver/UnableToSetCookieException.cs | 25 ++++++------- .../src/webdriver/UnhandledAlertException.cs | 25 ++++++------- dotnet/src/webdriver/UserAgent.cs | 25 ++++++------- .../src/webdriver/VirtualAuth/Credential.cs | 25 ++++++------- .../VirtualAuth/IHasVirtualAuthenticator.cs | 26 +++++++------- .../VirtualAuthenticatorOptions.cs | 25 ++++++------- dotnet/src/webdriver/WebDriver.cs | 25 ++++++------- .../webdriver/WebDriverArgumentException.cs | 25 ++++++------- dotnet/src/webdriver/WebDriverError.cs | 25 ++++++------- dotnet/src/webdriver/WebDriverException.cs | 25 ++++++------- dotnet/src/webdriver/WebDriverResult.cs | 25 ++++++------- .../webdriver/WebDriverTimeoutException.cs | 25 ++++++------- dotnet/src/webdriver/WebElement.cs | 25 ++++++------- dotnet/src/webdriver/WebElementFactory.cs | 25 ++++++------- dotnet/src/webdriver/Window.cs | 25 ++++++------- dotnet/src/webdriver/WindowType.cs | 25 ++++++------- dotnet/src/webdriver/XPathLookupException.cs | 25 ++++++------- dotnet/test/chrome/ChromeSpecificTests.cs | 19 ++++++++++ dotnet/test/common/AlertsTest.cs | 19 ++++++++++ dotnet/test/common/AssemblyFixture.cs | 19 ++++++++++ dotnet/test/common/BiDi/BiDiFixture.cs | 19 ++++++++++ .../test/common/BiDi/Browser/BrowserTest.cs | 19 ++++++++++ .../BrowsingContext/BrowsingContextTest.cs | 19 ++++++++++ .../BiDi/Input/CombinedInputActionsTest.cs | 19 ++++++++++ .../common/BiDi/Input/DefaultKeyboardTest.cs | 22 +++++++++--- .../common/BiDi/Input/DefaultMouseTest.cs | 24 ++++++++++--- dotnet/test/common/BiDi/Log/LogTest.cs | 19 ++++++++++ .../common/BiDi/Network/NetworkEventsTest.cs | 19 ++++++++++ .../test/common/BiDi/Network/NetworkTest.cs | 19 ++++++++++ .../BiDi/Script/CallFunctionParameterTest.cs | 19 ++++++++++ .../BiDi/Script/EvaluateParametersTest.cs | 19 ++++++++++ .../common/BiDi/Script/ScriptCommandsTest.cs | 19 ++++++++++ .../common/BiDi/Script/ScriptEventsTest.cs | 19 ++++++++++ .../test/common/BiDi/Storage/StorageTest.cs | 19 ++++++++++ dotnet/test/common/Browser.cs | 19 ++++++++++ dotnet/test/common/ChildrenFindingTest.cs | 19 ++++++++++ dotnet/test/common/ClearTest.cs | 19 ++++++++++ dotnet/test/common/ClickScrollingTest.cs | 19 ++++++++++ dotnet/test/common/ClickTest.cs | 19 ++++++++++ dotnet/test/common/ContentEditableTest.cs | 19 ++++++++++ .../test/common/CookieImplementationTest.cs | 19 ++++++++++ dotnet/test/common/CookieTest.cs | 19 ++++++++++ dotnet/test/common/CorrectEventFiringTest.cs | 19 ++++++++++ dotnet/test/common/CssValueTest.cs | 19 ++++++++++ .../DefaultSafariDriver.cs | 19 ++++++++++ .../DevChannelChromeDriver.cs | 19 ++++++++++ .../DevChannelEdgeDriver.cs | 19 ++++++++++ .../EdgeInternetExplorerModeDriver.cs | 19 ++++++++++ .../NightlyChannelFirefoxDriver.cs | 19 ++++++++++ .../SafariTechnologyPreviewDriver.cs | 19 ++++++++++ .../StableChannelChromeDriver.cs | 19 ++++++++++ .../StableChannelEdgeDriver.cs | 19 ++++++++++ .../StableChannelFirefoxDriver.cs | 19 ++++++++++ .../StableChannelRemoteChromeDriver.cs | 19 ++++++++++ .../IgnoreBrowserAttribute.cs | 19 ++++++++++ .../IgnorePlatformAttribute.cs | 19 ++++++++++ .../IgnoreTargetAttribute.cs | 19 ++++++++++ .../NeedsFreshDriverAttribute.cs | 19 ++++++++++ .../common/DevTools/DevToolsConsoleTest.cs | 19 ++++++++++ .../test/common/DevTools/DevToolsLogTest.cs | 19 ++++++++++ .../common/DevTools/DevToolsNetworkTest.cs | 19 ++++++++++ .../DevTools/DevToolsPerformanceTest.cs | 19 ++++++++++ .../common/DevTools/DevToolsProfilerTest.cs | 19 ++++++++++ .../common/DevTools/DevToolsSecurityTest.cs | 19 ++++++++++ .../test/common/DevTools/DevToolsTabsTest.cs | 19 ++++++++++ .../common/DevTools/DevToolsTargetTest.cs | 19 ++++++++++ .../common/DevTools/DevToolsTestFixture.cs | 19 ++++++++++ dotnet/test/common/DownloadsTest.cs | 19 ++++++++++ .../test/common/DriverElementFindingTest.cs | 19 ++++++++++ dotnet/test/common/DriverTestFixture.cs | 19 ++++++++++ dotnet/test/common/ElementAttributeTest.cs | 19 ++++++++++ .../test/common/ElementElementFindingTest.cs | 21 ++++++++++- dotnet/test/common/ElementEqualityTest.cs | 19 ++++++++++ dotnet/test/common/ElementFindingTest.cs | 19 ++++++++++ dotnet/test/common/ElementPropertyTest.cs | 19 ++++++++++ dotnet/test/common/ElementSelectingTest.cs | 19 ++++++++++ .../test/common/Environment/DriverConfig.cs | 19 ++++++++++ .../test/common/Environment/DriverFactory.cs | 19 ++++++++++ .../Environment/DriverStartingEventArgs.cs | 19 ++++++++++ .../common/Environment/EnvironmentManager.cs | 19 ++++++++++ dotnet/test/common/Environment/InlinePage.cs | 19 ++++++++++ .../Environment/RemoteSeleniumServer.cs | 19 ++++++++++ .../common/Environment/TestEnvironment.cs | 19 ++++++++++ .../test/common/Environment/TestWebServer.cs | 19 ++++++++++ .../common/Environment/TestWebServerConfig.cs | 19 ++++++++++ dotnet/test/common/Environment/UrlBuilder.cs | 19 ++++++++++ .../test/common/Environment/WebsiteConfig.cs | 19 ++++++++++ dotnet/test/common/ErrorsTest.cs | 19 ++++++++++ .../common/ExecutingAsyncJavascriptTest.cs | 19 ++++++++++ dotnet/test/common/ExecutingJavascriptTest.cs | 19 ++++++++++ dotnet/test/common/FormHandlingTests.cs | 19 ++++++++++ dotnet/test/common/FrameSwitchingTest.cs | 19 ++++++++++ dotnet/test/common/GetLogsTest.cs | 19 ++++++++++ .../test/common/GetMultipleAttributeTest.cs | 19 ++++++++++ dotnet/test/common/I18Test.cs | 19 ++++++++++ dotnet/test/common/ImplicitWaitTest.cs | 19 ++++++++++ .../common/Interactions/ActionBuilderTest.cs | 19 ++++++++++ .../BasicKeyboardInterfaceTest.cs | 19 ++++++++++ .../Interactions/BasicMouseInterfaceTest.cs | 19 ++++++++++ .../Interactions/BasicWheelInterfaceTest.cs | 19 ++++++++++ .../Interactions/CombinedInputActionsTest.cs | 19 ++++++++++ .../common/Interactions/DragAndDropTest.cs | 19 ++++++++++ .../Internal/Logging/FileLogHandlerTest.cs | 19 ++++++++++ .../test/common/Internal/Logging/LogTest.cs | 19 ++++++++++ .../common/JavascriptEnabledBrowserTest.cs | 19 ++++++++++ dotnet/test/common/MiscTest.cs | 19 ++++++++++ dotnet/test/common/NavigationTest.cs | 19 ++++++++++ .../test/common/NetworkInterceptionTests.cs | 19 ++++++++++ .../test/common/ObjectStateAssumptionsTest.cs | 19 ++++++++++ dotnet/test/common/PageLoadingTest.cs | 19 ++++++++++ .../test/common/PartialLinkTextMatchTest.cs | 19 ++++++++++ dotnet/test/common/PositionAndSizeTest.cs | 19 ++++++++++ dotnet/test/common/PrintTest.cs | 19 ++++++++++ dotnet/test/common/ProxySettingTest.cs | 19 ++++++++++ dotnet/test/common/ProxyTest.cs | 19 ++++++++++ dotnet/test/common/RelativeLocatorTest.cs | 19 ++++++++++ .../test/common/SelectElementHandlingTest.cs | 19 ++++++++++ dotnet/test/common/SessionHandlingTest.cs | 19 ++++++++++ dotnet/test/common/ShadowRootHandlingTest.cs | 19 ++++++++++ dotnet/test/common/SlowLoadingPageTest.cs | 19 ++++++++++ .../test/common/StaleElementReferenceTest.cs | 19 ++++++++++ dotnet/test/common/StubDriver.cs | 19 ++++++++++ dotnet/test/common/SvgDocumentTest.cs | 19 ++++++++++ dotnet/test/common/SvgElementTest.cs | 19 ++++++++++ dotnet/test/common/TagNameTest.cs | 19 ++++++++++ dotnet/test/common/TakesScreenshotTest.cs | 19 ++++++++++ dotnet/test/common/TargetLocatorTest.cs | 19 ++++++++++ dotnet/test/common/TestUtilities.cs | 19 ++++++++++ dotnet/test/common/TextHandlingTest.cs | 19 ++++++++++ dotnet/test/common/TextPagesTest.cs | 19 ++++++++++ .../test/common/TimeoutDriverOptionsTest.cs | 19 ++++++++++ dotnet/test/common/TypingTest.cs | 19 ++++++++++ .../common/UnexpectedAlertBehaviorTest.cs | 19 ++++++++++ dotnet/test/common/UploadTest.cs | 19 ++++++++++ .../VirtualAuthn/VirtualAuthenticatorTest.cs | 19 ++++++++++ dotnet/test/common/VisibilityTest.cs | 19 ++++++++++ dotnet/test/common/WebElementTest.cs | 19 ++++++++++ dotnet/test/common/WindowSwitchingTest.cs | 19 ++++++++++ dotnet/test/common/WindowTest.cs | 19 ++++++++++ dotnet/test/edge/AssemblyTeardown.cs | 19 ++++++++++ dotnet/test/edge/EdgeSpecificTests.cs | 19 ++++++++++ dotnet/test/firefox/AssemblyTeardown.cs | 19 ++++++++++ dotnet/test/firefox/FirefoxDriverTest.cs | 19 ++++++++++ .../test/firefox/FirefoxProfileManagerTest.cs | 19 ++++++++++ dotnet/test/firefox/FirefoxProfileTests.cs | 19 ++++++++++ dotnet/test/ie/AssemblyTeardown.cs | 19 ++++++++++ dotnet/test/ie/IeSpecificTests.cs | 19 ++++++++++ dotnet/test/remote/AssemblyTeardown.cs | 19 ++++++++++ dotnet/test/remote/ChromeRemoteWebDriver.cs | 19 ++++++++++ dotnet/test/remote/EdgeRemoteWebDriver.cs | 19 ++++++++++ dotnet/test/remote/FirefoxRemoteWebDriver.cs | 19 ++++++++++ .../test/remote/RemoteSessionCreationTests.cs | 19 ++++++++++ .../remote/RemoteWebDriverSpecificTests.cs | 19 ++++++++++ .../TestInternetExplorerRemoteWebDriver.cs | 19 ++++++++++ dotnet/test/safari/SafariSpecificTests.cs | 19 ++++++++++ .../Events/EventFiringWebDriverElementTest.cs | 19 ++++++++++ .../Events/EventFiringWebDriverTest.cs | 19 ++++++++++ .../Extensions/ExecuteJavaScriptTest.cs | 19 ++++++++++ dotnet/test/support/UI/DefaultWaitTest.cs | 19 ++++++++++ dotnet/test/support/UI/FakeClock.cs | 19 ++++++++++ .../test/support/UI/LoadableComponentTests.cs | 19 ++++++++++ .../test/support/UI/PopupWindowFinderTest.cs | 19 ++++++++++ dotnet/test/support/UI/SelectBrowserTests.cs | 19 ++++++++++ dotnet/test/support/UI/SelectTests.cs | 19 ++++++++++ .../support/UI/SlowLoadableComponentTest.cs | 19 ++++++++++ dotnet/test/support/UI/WebDriverWaitTest.cs | 19 ++++++++++ scripts/update_copyright.py | 36 +++++++++++-------- 583 files changed, 9432 insertions(+), 3405 deletions(-) diff --git a/dotnet/src/support/Events/EventFiringWebDriver.cs b/dotnet/src/support/Events/EventFiringWebDriver.cs index 77a3b5f3b50a5..46661f9225838 100644 --- a/dotnet/src/support/Events/EventFiringWebDriver.cs +++ b/dotnet/src/support/Events/EventFiringWebDriver.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/support/Events/FindElementEventArgs.cs b/dotnet/src/support/Events/FindElementEventArgs.cs index 4fc45a6d409a3..b618082295b9e 100644 --- a/dotnet/src/support/Events/FindElementEventArgs.cs +++ b/dotnet/src/support/Events/FindElementEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/support/Events/GetShadowRootEventArgs.cs b/dotnet/src/support/Events/GetShadowRootEventArgs.cs index 5601a0becef65..9d177ebd82eb9 100644 --- a/dotnet/src/support/Events/GetShadowRootEventArgs.cs +++ b/dotnet/src/support/Events/GetShadowRootEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/support/Events/WebDriverExceptionEventArgs.cs b/dotnet/src/support/Events/WebDriverExceptionEventArgs.cs index 8cab5fe3e6a67..3bebb9a5b5d6e 100644 --- a/dotnet/src/support/Events/WebDriverExceptionEventArgs.cs +++ b/dotnet/src/support/Events/WebDriverExceptionEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/support/Events/WebDriverNavigationEventArgs.cs b/dotnet/src/support/Events/WebDriverNavigationEventArgs.cs index 991f7c6978ec8..8e7058f58cfab 100644 --- a/dotnet/src/support/Events/WebDriverNavigationEventArgs.cs +++ b/dotnet/src/support/Events/WebDriverNavigationEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/support/Events/WebDriverScriptEventArgs.cs b/dotnet/src/support/Events/WebDriverScriptEventArgs.cs index 0cc76cf3f0ab2..82f6c3f985a32 100644 --- a/dotnet/src/support/Events/WebDriverScriptEventArgs.cs +++ b/dotnet/src/support/Events/WebDriverScriptEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/support/Events/WebElementEventArgs.cs b/dotnet/src/support/Events/WebElementEventArgs.cs index cda2fd63a7dac..2dbe482f5b21a 100644 --- a/dotnet/src/support/Events/WebElementEventArgs.cs +++ b/dotnet/src/support/Events/WebElementEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/support/Events/WebElementValueEventArgs.cs b/dotnet/src/support/Events/WebElementValueEventArgs.cs index 0f3eba08861fe..abd45cd90d510 100644 --- a/dotnet/src/support/Events/WebElementValueEventArgs.cs +++ b/dotnet/src/support/Events/WebElementValueEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium.Support.Events diff --git a/dotnet/src/support/Extensions/WebDriverExtensions.cs b/dotnet/src/support/Extensions/WebDriverExtensions.cs index 493fe048692f4..10c0e25ea243c 100644 --- a/dotnet/src/support/Extensions/WebDriverExtensions.cs +++ b/dotnet/src/support/Extensions/WebDriverExtensions.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/support/GlobalSuppressions.cs b/dotnet/src/support/GlobalSuppressions.cs index 85940812e6a70..a3a4cf69c6a6b 100644 --- a/dotnet/src/support/GlobalSuppressions.cs +++ b/dotnet/src/support/GlobalSuppressions.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // // This file is used by Code Analysis to maintain SuppressMessage diff --git a/dotnet/src/support/UI/ILoadableComponent.cs b/dotnet/src/support/UI/ILoadableComponent.cs index 332ef3c537638..4b86420c1ee17 100644 --- a/dotnet/src/support/UI/ILoadableComponent.cs +++ b/dotnet/src/support/UI/ILoadableComponent.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium.Support.UI diff --git a/dotnet/src/support/UI/LoadableComponentException.cs b/dotnet/src/support/UI/LoadableComponentException.cs index 305543f50a3cd..9d7b3e3284dc1 100644 --- a/dotnet/src/support/UI/LoadableComponentException.cs +++ b/dotnet/src/support/UI/LoadableComponentException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/support/UI/LoadableComponent{T}.cs b/dotnet/src/support/UI/LoadableComponent{T}.cs index 458d850147bf1..173906f86db67 100644 --- a/dotnet/src/support/UI/LoadableComponent{T}.cs +++ b/dotnet/src/support/UI/LoadableComponent{T}.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium.Support.UI diff --git a/dotnet/src/support/UI/PopupWindowFinder.cs b/dotnet/src/support/UI/PopupWindowFinder.cs index d1b029b3e04ce..7b0484049b67f 100644 --- a/dotnet/src/support/UI/PopupWindowFinder.cs +++ b/dotnet/src/support/UI/PopupWindowFinder.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/support/UI/SelectElement.cs b/dotnet/src/support/UI/SelectElement.cs index 0881f33bd3efc..71b06a229245d 100644 --- a/dotnet/src/support/UI/SelectElement.cs +++ b/dotnet/src/support/UI/SelectElement.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/support/UI/SlowLoadableComponent{T}.cs b/dotnet/src/support/UI/SlowLoadableComponent{T}.cs index 562d290c1575f..dd1dfce89476d 100644 --- a/dotnet/src/support/UI/SlowLoadableComponent{T}.cs +++ b/dotnet/src/support/UI/SlowLoadableComponent{T}.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/support/UI/UnexpectedTagNameException.cs b/dotnet/src/support/UI/UnexpectedTagNameException.cs index 9fc85a8f39bb7..299c5694eef29 100644 --- a/dotnet/src/support/UI/UnexpectedTagNameException.cs +++ b/dotnet/src/support/UI/UnexpectedTagNameException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Alert.cs b/dotnet/src/webdriver/Alert.cs index 843372dad9834..11e860af922a7 100644 --- a/dotnet/src/webdriver/Alert.cs +++ b/dotnet/src/webdriver/Alert.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/BiDi/BiDi.cs b/dotnet/src/webdriver/BiDi/BiDi.cs index 0e0ed10c37036..9833773c39891 100644 --- a/dotnet/src/webdriver/BiDi/BiDi.cs +++ b/dotnet/src/webdriver/BiDi/BiDi.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System; using System.Threading.Tasks; using OpenQA.Selenium.BiDi.Communication; diff --git a/dotnet/src/webdriver/BiDi/BiDiException.cs b/dotnet/src/webdriver/BiDi/BiDiException.cs index 6959645111b01..fceaca999b622 100644 --- a/dotnet/src/webdriver/BiDi/BiDiException.cs +++ b/dotnet/src/webdriver/BiDi/BiDiException.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Communication/Broker.cs b/dotnet/src/webdriver/BiDi/Communication/Broker.cs index 5f8a0983846c9..b2dc03942d7ee 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Broker.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Broker.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication.Json.Converters; using OpenQA.Selenium.BiDi.Communication.Transport; using OpenQA.Selenium.Internal.Logging; @@ -63,7 +82,7 @@ internal Broker(BiDi bidi, ITransport transport) new PrintPageRangeConverter(), new InputOriginConverter(), new JsonStringEnumConverter(JsonNamingPolicy.CamelCase), - + // https://github.com/dotnet/runtime/issues/72604 new Json.Converters.Polymorphic.MessageConverter(), new Json.Converters.Polymorphic.EvaluateResultConverter(), diff --git a/dotnet/src/webdriver/BiDi/Communication/Command.cs b/dotnet/src/webdriver/BiDi/Communication/Command.cs index 729b319cc03ec..9c3fb09d3d58f 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Command.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Command.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Text.Json.Serialization; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Communication/CommandOptions.cs b/dotnet/src/webdriver/BiDi/Communication/CommandOptions.cs index ffb6616ae9cef..693f4142cea29 100644 --- a/dotnet/src/webdriver/BiDi/Communication/CommandOptions.cs +++ b/dotnet/src/webdriver/BiDi/Communication/CommandOptions.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Communication/EventHandler.cs b/dotnet/src/webdriver/BiDi/Communication/EventHandler.cs index ce5444eb0d9fd..b35f2d7d6062e 100644 --- a/dotnet/src/webdriver/BiDi/Communication/EventHandler.cs +++ b/dotnet/src/webdriver/BiDi/Communication/EventHandler.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.BrowsingContext; using System; using System.Collections.Generic; diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/BrowserUserContextConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/BrowserUserContextConverter.cs index 3d478cf5d9f69..f114db043cbfa 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/BrowserUserContextConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/BrowserUserContextConverter.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.Browser; using System; using System.Text.Json; diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/BrowsingContextConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/BrowsingContextConverter.cs index 8c1a928ef19ad..acd6e138f2eb4 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/BrowsingContextConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/BrowsingContextConverter.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.BrowsingContext; using System; using System.Text.Json; diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/ChannelConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/ChannelConverter.cs index ac35a22fcc2c4..e04efad9470f9 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/ChannelConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/ChannelConverter.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.Script; using System; using System.Text.Json; diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/DateTimeOffsetConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/DateTimeOffsetConverter.cs index ff9b6258d3a69..4f35ea067da3f 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/DateTimeOffsetConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/DateTimeOffsetConverter.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System; using System.Text.Json; using System.Text.Json.Serialization; diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetCookiesResultConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetCookiesResultConverter.cs index bd92fa36eb119..ebb0beada2d22 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetCookiesResultConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetCookiesResultConverter.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.Storage; using System; using System.Collections.Generic; diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetRealmsResultConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetRealmsResultConverter.cs index 34c5a979c02c6..d09e40789f6d8 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetRealmsResultConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetRealmsResultConverter.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.Script; using System; using System.Collections.Generic; diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetUserContextsResultConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetUserContextsResultConverter.cs index 123c415c9bcd1..5e78a58ddd304 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetUserContextsResultConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/GetUserContextsResultConverter.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.Browser; using System; using System.Collections.Generic; diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/InputSourceActionsConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/InputSourceActionsConverter.cs index 4e4c72c91fbe9..65029e0804806 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/InputSourceActionsConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/InputSourceActionsConverter.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.Input; using System; using System.Linq; diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/LocateNodesResultConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/LocateNodesResultConverter.cs index 307433c7be023..7a6c5cd6b68fa 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/LocateNodesResultConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Enumerable/LocateNodesResultConverter.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.BrowsingContext; using OpenQA.Selenium.BiDi.Modules.Script; using System; diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/HandleConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/HandleConverter.cs index 2117bb72fa519..605c56d53d21f 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/HandleConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/HandleConverter.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.Script; using System; using System.Text.Json; diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/InputOriginConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/InputOriginConverter.cs index c544362ccccd8..f87f24e5ecc59 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/InputOriginConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/InputOriginConverter.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.Input; using System; using System.Text.Json; diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/InterceptConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/InterceptConverter.cs index 3fd062b22fae3..6e9f827070b42 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/InterceptConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/InterceptConverter.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.Network; using System; using System.Text.Json; diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/InternalIdConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/InternalIdConverter.cs index 7edcaa7543464..619fee5a9627a 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/InternalIdConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/InternalIdConverter.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.Script; using System; using System.Text.Json; diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/NavigationConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/NavigationConverter.cs index e61d300f18f56..b2c273b7e1930 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/NavigationConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/NavigationConverter.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.BrowsingContext; using System; using System.Text.Json; diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/EvaluateResultConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/EvaluateResultConverter.cs index ac0fd1a7bbfcc..a55efb42a6947 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/EvaluateResultConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/EvaluateResultConverter.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.Script; using System; using System.Text.Json; diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/LogEntryConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/LogEntryConverter.cs index e5ccbac46f326..71109276d1e59 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/LogEntryConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/LogEntryConverter.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.Log; using System; using System.Text.Json; diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/MessageConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/MessageConverter.cs index b9d86ae634902..997134a479fe8 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/MessageConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/MessageConverter.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System; using System.Text.Json; using System.Text.Json.Serialization; diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/RealmInfoConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/RealmInfoConverter.cs index 9824377ca47ac..9bf3935bfd7ff 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/RealmInfoConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/RealmInfoConverter.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.Script; using System; using System.Text.Json; diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/RemoteValueConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/RemoteValueConverter.cs index 3f19d2a18c56c..a7cbb71c19764 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/RemoteValueConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/Polymorphic/RemoteValueConverter.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.Script; using System; using System.Text.Json; diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/PreloadScriptConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/PreloadScriptConverter.cs index 4b68ce22c52ff..2975648df6da6 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/PreloadScriptConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/PreloadScriptConverter.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.Script; using System; using System.Text.Json; diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/PrintPageRangeConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/PrintPageRangeConverter.cs index 76ffd9b34ad4e..69f39234015a8 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/PrintPageRangeConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/PrintPageRangeConverter.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.BrowsingContext; using System; using System.Text.Json; diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/RealmConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/RealmConverter.cs index 60cde6d1152db..014e576f29cde 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/RealmConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/RealmConverter.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.Script; using System; using System.Text.Json; diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/RealmTypeConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/RealmTypeConverter.cs index 048250fd526d5..48dafd44d6631 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/RealmTypeConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/RealmTypeConverter.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.Script; using System; using System.Text.Json; diff --git a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/RequestConverter.cs b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/RequestConverter.cs index 0524246d6b3b3..26c822be325f5 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Json/Converters/RequestConverter.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Json/Converters/RequestConverter.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.Network; using System; using System.Text.Json; diff --git a/dotnet/src/webdriver/BiDi/Communication/Message.cs b/dotnet/src/webdriver/BiDi/Communication/Message.cs index c00a2777a33f4..86c12a9dff9ca 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Message.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Message.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Text.Json; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Communication/Transport/ITransport.cs b/dotnet/src/webdriver/BiDi/Communication/Transport/ITransport.cs index 3ed6d2e32a4cf..ebcb0ebea8b46 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Transport/ITransport.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Transport/ITransport.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Text.Json; using System.Threading.Tasks; using System.Threading; diff --git a/dotnet/src/webdriver/BiDi/Communication/Transport/WebSocketTransport.cs b/dotnet/src/webdriver/BiDi/Communication/Transport/WebSocketTransport.cs index 76384f51b1261..f5b1aeaf82a3c 100644 --- a/dotnet/src/webdriver/BiDi/Communication/Transport/WebSocketTransport.cs +++ b/dotnet/src/webdriver/BiDi/Communication/Transport/WebSocketTransport.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System; using System.IO; using System.Net.WebSockets; diff --git a/dotnet/src/webdriver/BiDi/EventArgs.cs b/dotnet/src/webdriver/BiDi/EventArgs.cs index 30361ca95e6cb..05fcc21d08dde 100644 --- a/dotnet/src/webdriver/BiDi/EventArgs.cs +++ b/dotnet/src/webdriver/BiDi/EventArgs.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.BrowsingContext; using System.Text.Json.Serialization; diff --git a/dotnet/src/webdriver/BiDi/Modules/Browser/BrowserModule.cs b/dotnet/src/webdriver/BiDi/Modules/Browser/BrowserModule.cs index ba7fb0496dd6d..24fc9042fab83 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Browser/BrowserModule.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Browser/BrowserModule.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Collections.Generic; using System.Threading.Tasks; using OpenQA.Selenium.BiDi.Communication; diff --git a/dotnet/src/webdriver/BiDi/Modules/Browser/CloseCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Browser/CloseCommand.cs index 59f9db7374929..d8564ba55681b 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Browser/CloseCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Browser/CloseCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Browser/CreateUserContextCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Browser/CreateUserContextCommand.cs index ce44e5ae2f367..f002195a1e39d 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Browser/CreateUserContextCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Browser/CreateUserContextCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Browser/GetUserContextsCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Browser/GetUserContextsCommand.cs index 161a1bf286f1e..afdc7a4e8a82d 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Browser/GetUserContextsCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Browser/GetUserContextsCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; using System.Collections; using System.Collections.Generic; diff --git a/dotnet/src/webdriver/BiDi/Modules/Browser/RemoveUserContextCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Browser/RemoveUserContextCommand.cs index 7877eb0f710ff..e3d5408b4cf52 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Browser/RemoveUserContextCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Browser/RemoveUserContextCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Browser/UserContext.cs b/dotnet/src/webdriver/BiDi/Modules/Browser/UserContext.cs index a2e689d494aaa..b9dcbe660878d 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Browser/UserContext.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Browser/UserContext.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System; using System.Threading.Tasks; diff --git a/dotnet/src/webdriver/BiDi/Modules/Browser/UserContextInfo.cs b/dotnet/src/webdriver/BiDi/Modules/Browser/UserContextInfo.cs index 99b7e59a486b2..51587a84fe549 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Browser/UserContextInfo.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Browser/UserContextInfo.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + #nullable enable namespace OpenQA.Selenium.BiDi.Modules.Browser; diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/ActivateCommand.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/ActivateCommand.cs index 4934e51b815bd..e88555d9fb3eb 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/ActivateCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/ActivateCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContext.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContext.cs index e83f671ae227e..cb57fc97b449b 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContext.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContext.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Collections.Generic; using System.Threading.Tasks; using System; diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextInfo.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextInfo.cs index f2303915feb90..615730885f8b4 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextInfo.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextInfo.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Collections.Generic; using System.Text.Json.Serialization; diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextInputModule.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextInputModule.cs index 919758b14ba79..8fce48d3f1b1e 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextInputModule.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextInputModule.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Threading.Tasks; using OpenQA.Selenium.BiDi.Modules.Input; using System.Collections.Generic; diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextLogModule.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextLogModule.cs index a085bb07de630..f59ca9ef69622 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextLogModule.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextLogModule.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.Log; using System.Threading.Tasks; using System; diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextModule.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextModule.cs index 690df63f7ab2d..22955d4e64e8a 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextModule.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextModule.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System; using System.Collections.Generic; using System.Threading.Tasks; diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextNetworkModule.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextNetworkModule.cs index e25f255f423c7..da6bb2838ce3a 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextNetworkModule.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextNetworkModule.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Threading.Tasks; using System; using OpenQA.Selenium.BiDi.Modules.Network; diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextScriptModule.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextScriptModule.cs index f6f8b77e43c55..488884111ad43 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextScriptModule.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextScriptModule.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Threading.Tasks; using OpenQA.Selenium.BiDi.Modules.Script; using System.Collections.Generic; diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextStorageModule.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextStorageModule.cs index d89343d1ab0f9..d420dc4211351 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextStorageModule.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/BrowsingContextStorageModule.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Threading.Tasks; using OpenQA.Selenium.BiDi.Modules.Storage; diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/CaptureScreenshotCommand.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/CaptureScreenshotCommand.cs index df5f203c1d3fc..140d01e4b9bad 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/CaptureScreenshotCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/CaptureScreenshotCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; using System.Text.Json.Serialization; diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/CloseCommand.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/CloseCommand.cs index e3f3279a97955..f21bb5a6970c3 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/CloseCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/CloseCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/CreateCommand.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/CreateCommand.cs index a70f89726c364..5ecd37d3b82b3 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/CreateCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/CreateCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/GetTreeCommand.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/GetTreeCommand.cs index eb03c29856266..9a78608d0a15d 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/GetTreeCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/GetTreeCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; using System.Collections.Generic; diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/HandleUserPromptCommand.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/HandleUserPromptCommand.cs index a566ef6edf963..91fb94cc16ce3 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/HandleUserPromptCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/HandleUserPromptCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/LocateNodesCommand.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/LocateNodesCommand.cs index d32188ae7cce3..82ffd4c1fb301 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/LocateNodesCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/LocateNodesCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; using System.Collections; using System.Collections.Generic; diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/Locator.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/Locator.cs index d22215f5f6d92..4296d612fedd3 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/Locator.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/Locator.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Text.Json.Serialization; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/NavigateCommand.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/NavigateCommand.cs index 7481a6141e430..42aa195edeb24 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/NavigateCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/NavigateCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/Navigation.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/Navigation.cs index 3ce169d0f40c6..a25d8db11a012 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/Navigation.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/Navigation.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + #nullable enable namespace OpenQA.Selenium.BiDi.Modules.BrowsingContext; diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/NavigationInfo.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/NavigationInfo.cs index e934e3030d305..ade3afd497ce7 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/NavigationInfo.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/NavigationInfo.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/PrintCommand.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/PrintCommand.cs index 70fa6bcdd1f2a..b4137b9b2a1a2 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/PrintCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/PrintCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; using System; using System.Collections.Generic; diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/ReloadCommand.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/ReloadCommand.cs index 1dd805fd0a00b..190cea29774c6 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/ReloadCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/ReloadCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/SetViewportCommand.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/SetViewportCommand.cs index a43cb30157e15..5d7b904e9f339 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/SetViewportCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/SetViewportCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/TraverseHistoryCommand.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/TraverseHistoryCommand.cs index b8c78b2601adb..ee1212b78d1c3 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/TraverseHistoryCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/TraverseHistoryCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/UserPromptClosedEventArgs.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/UserPromptClosedEventArgs.cs index c7123e89f76be..d204a3b1cd78f 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/UserPromptClosedEventArgs.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/UserPromptClosedEventArgs.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Text.Json.Serialization; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/UserPromptOpenedEventArgs.cs b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/UserPromptOpenedEventArgs.cs index 03dd37be8cbeb..18533ab187501 100644 --- a/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/UserPromptOpenedEventArgs.cs +++ b/dotnet/src/webdriver/BiDi/Modules/BrowsingContext/UserPromptOpenedEventArgs.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Text.Json.Serialization; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Input/InputModule.cs b/dotnet/src/webdriver/BiDi/Modules/Input/InputModule.cs index 53f913132c758..1e02d81f56d99 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Input/InputModule.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Input/InputModule.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; using System.Collections.Generic; using System.Threading.Tasks; diff --git a/dotnet/src/webdriver/BiDi/Modules/Input/Key.cs b/dotnet/src/webdriver/BiDi/Modules/Input/Key.cs index a7d99ffca3ac9..b1cb81a3fd785 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Input/Key.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Input/Key.cs @@ -1,4 +1,21 @@ -//namespace OpenQA.Selenium.BiDi.Modules.Input; +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// //partial record Key //{ diff --git a/dotnet/src/webdriver/BiDi/Modules/Input/Origin.cs b/dotnet/src/webdriver/BiDi/Modules/Input/Origin.cs index 5cc909cd6aabe..c4880aa356e4b 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Input/Origin.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Input/Origin.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Text.Json.Serialization; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Input/PerformActionsCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Input/PerformActionsCommand.cs index 878b576417fba..01aeae8657bcc 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Input/PerformActionsCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Input/PerformActionsCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; using System.Collections.Generic; diff --git a/dotnet/src/webdriver/BiDi/Modules/Input/ReleaseActionsCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Input/ReleaseActionsCommand.cs index 2331e1bec6c49..8ff8364dac67f 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Input/ReleaseActionsCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Input/ReleaseActionsCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Input/SequentialSourceActions.cs b/dotnet/src/webdriver/BiDi/Modules/Input/SequentialSourceActions.cs index dfdbc3f69a331..f7082ab080e53 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Input/SequentialSourceActions.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Input/SequentialSourceActions.cs @@ -1,6 +1,21 @@ -//using System.Collections; -//using System.Collections.Generic; -//using System.Linq; +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// //namespace OpenQA.Selenium.BiDi.Modules.Input; diff --git a/dotnet/src/webdriver/BiDi/Modules/Input/SourceActions.cs b/dotnet/src/webdriver/BiDi/Modules/Input/SourceActions.cs index a9b7ed3f7001f..2bc00f68a5cbb 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Input/SourceActions.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Input/SourceActions.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System; using System.Collections; using System.Collections.Generic; diff --git a/dotnet/src/webdriver/BiDi/Modules/Log/Entry.cs b/dotnet/src/webdriver/BiDi/Modules/Log/Entry.cs index dba3714e27403..9837b3c302717 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Log/Entry.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Log/Entry.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System; using System.Collections.Generic; diff --git a/dotnet/src/webdriver/BiDi/Modules/Log/LogModule.cs b/dotnet/src/webdriver/BiDi/Modules/Log/LogModule.cs index aeb09a08754bd..a1c64b034ba2b 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Log/LogModule.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Log/LogModule.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Threading.Tasks; using System; using OpenQA.Selenium.BiDi.Communication; diff --git a/dotnet/src/webdriver/BiDi/Modules/Module.cs b/dotnet/src/webdriver/BiDi/Modules/Module.cs index a7c2491349750..e03eb0292656b 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Module.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Module.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/AddInterceptCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Network/AddInterceptCommand.cs index 219f3640ca466..284d0dc7fcbdf 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/AddInterceptCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/AddInterceptCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Collections.Generic; using OpenQA.Selenium.BiDi.Communication; diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/AuthChallenge.cs b/dotnet/src/webdriver/BiDi/Modules/Network/AuthChallenge.cs index f85da002f189e..0f69cc29377a3 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/AuthChallenge.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/AuthChallenge.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + #nullable enable namespace OpenQA.Selenium.BiDi.Modules.Network; diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/AuthCredentials.cs b/dotnet/src/webdriver/BiDi/Modules/Network/AuthCredentials.cs index 8f78b5465f969..5c70740793921 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/AuthCredentials.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/AuthCredentials.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Text.Json.Serialization; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/AuthRequiredEventArgs.cs b/dotnet/src/webdriver/BiDi/Modules/Network/AuthRequiredEventArgs.cs index dca341b07b4da..c62e20e320f65 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/AuthRequiredEventArgs.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/AuthRequiredEventArgs.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/BaseParametersEventArgs.cs b/dotnet/src/webdriver/BiDi/Modules/Network/BaseParametersEventArgs.cs index e8e721d033ca5..13060a1d99430 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/BaseParametersEventArgs.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/BaseParametersEventArgs.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Collections.Generic; using System.Text.Json.Serialization; using System; diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/BeforeRequestSentEventArgs.cs b/dotnet/src/webdriver/BiDi/Modules/Network/BeforeRequestSentEventArgs.cs index 53f4b85aa3669..44fbcbd308c27 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/BeforeRequestSentEventArgs.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/BeforeRequestSentEventArgs.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.BrowsingContext; using System; diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/BytesValue.cs b/dotnet/src/webdriver/BiDi/Modules/Network/BytesValue.cs index 6c5d88a930d66..08b5fe8cf53aa 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/BytesValue.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/BytesValue.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Text.Json.Serialization; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/ContinueRequestCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Network/ContinueRequestCommand.cs index 447dfa41baa70..5311b4c284b26 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/ContinueRequestCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/ContinueRequestCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; using System.Collections.Generic; diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/ContinueResponseCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Network/ContinueResponseCommand.cs index ba2e4e60a1bed..f62e7a0013960 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/ContinueResponseCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/ContinueResponseCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; using System.Collections.Generic; diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/ContinueWithAuthCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Network/ContinueWithAuthCommand.cs index c486066015ec4..ffe88f270b653 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/ContinueWithAuthCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/ContinueWithAuthCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; using System.Text.Json.Serialization; diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/Cookie.cs b/dotnet/src/webdriver/BiDi/Modules/Network/Cookie.cs index f3a4bedc8f926..679160374b857 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/Cookie.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/Cookie.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System; using System.Text.Json.Serialization; diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/CookieHeader.cs b/dotnet/src/webdriver/BiDi/Modules/Network/CookieHeader.cs index e588a87d0acb8..09c8b6a1f6af8 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/CookieHeader.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/CookieHeader.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + #nullable enable namespace OpenQA.Selenium.BiDi.Modules.Network; diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/FailRequestCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Network/FailRequestCommand.cs index f3b01ee692743..10a97607f4d30 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/FailRequestCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/FailRequestCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/FetchErrorEventArgs.cs b/dotnet/src/webdriver/BiDi/Modules/Network/FetchErrorEventArgs.cs index 6c911e0009fa7..db067c4e4e504 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/FetchErrorEventArgs.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/FetchErrorEventArgs.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.BrowsingContext; using System; diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/FetchTimingInfo.cs b/dotnet/src/webdriver/BiDi/Modules/Network/FetchTimingInfo.cs index d5980cc2ca141..ad8b34921cdce 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/FetchTimingInfo.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/FetchTimingInfo.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + #nullable enable namespace OpenQA.Selenium.BiDi.Modules.Network; diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/Header.cs b/dotnet/src/webdriver/BiDi/Modules/Network/Header.cs index 0804a1919dec0..63632ead59df5 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/Header.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/Header.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + #nullable enable namespace OpenQA.Selenium.BiDi.Modules.Network; diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/Initiator.cs b/dotnet/src/webdriver/BiDi/Modules/Network/Initiator.cs index a1449e77928a2..1ef26b005db97 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/Initiator.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/Initiator.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + #nullable enable namespace OpenQA.Selenium.BiDi.Modules.Network; diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/Intercept.cs b/dotnet/src/webdriver/BiDi/Modules/Network/Intercept.cs index 4fd55a7d14b0f..acbe7b05a5f65 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/Intercept.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/Intercept.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System; using System.Collections.Generic; using System.Linq; diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/NetworkModule.cs b/dotnet/src/webdriver/BiDi/Modules/Network/NetworkModule.cs index 7d4eac19a673f..c90dfa20a4df9 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/NetworkModule.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/NetworkModule.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System; using System.Collections.Generic; using System.Threading.Tasks; diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/ProvideResponseCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Network/ProvideResponseCommand.cs index 6dae6fc24556f..dc761b0f4284c 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/ProvideResponseCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/ProvideResponseCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; using System.Collections.Generic; diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/RemoveInterceptCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Network/RemoveInterceptCommand.cs index c592b74e13a1a..da9b1e31c2965 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/RemoveInterceptCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/RemoveInterceptCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/Request.cs b/dotnet/src/webdriver/BiDi/Modules/Network/Request.cs index f7b93fbebff19..04881be1b0b09 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/Request.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/Request.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Threading.Tasks; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/RequestData.cs b/dotnet/src/webdriver/BiDi/Modules/Network/RequestData.cs index 01cc77f040e79..3d2c86eb72185 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/RequestData.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/RequestData.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Collections.Generic; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/ResponseCompletedEventArgs.cs b/dotnet/src/webdriver/BiDi/Modules/Network/ResponseCompletedEventArgs.cs index 75c9aa21332bd..70d01c904c50e 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/ResponseCompletedEventArgs.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/ResponseCompletedEventArgs.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.BrowsingContext; using System; diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/ResponseContent.cs b/dotnet/src/webdriver/BiDi/Modules/Network/ResponseContent.cs index 5511c4b24129f..b9ccf64631c71 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/ResponseContent.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/ResponseContent.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + #nullable enable namespace OpenQA.Selenium.BiDi.Modules.Network; diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/ResponseData.cs b/dotnet/src/webdriver/BiDi/Modules/Network/ResponseData.cs index 3d21c2c202fe8..145459a5fb726 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/ResponseData.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/ResponseData.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Collections.Generic; using System.Text.Json.Serialization; diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/ResponseStartedEventArgs.cs b/dotnet/src/webdriver/BiDi/Modules/Network/ResponseStartedEventArgs.cs index aa3aff6fd5cf9..3adf1fef7abd9 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/ResponseStartedEventArgs.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/ResponseStartedEventArgs.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.BrowsingContext; using System; diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/SetCookieHeader.cs b/dotnet/src/webdriver/BiDi/Modules/Network/SetCookieHeader.cs index a73c9171419f0..bf501d4e48b80 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/SetCookieHeader.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/SetCookieHeader.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + #nullable enable namespace OpenQA.Selenium.BiDi.Modules.Network; diff --git a/dotnet/src/webdriver/BiDi/Modules/Network/UrlPattern.cs b/dotnet/src/webdriver/BiDi/Modules/Network/UrlPattern.cs index 30a034fbee4d0..6d6f4644f8d94 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Network/UrlPattern.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Network/UrlPattern.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Text.Json.Serialization; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/AddPreloadScriptCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Script/AddPreloadScriptCommand.cs index 512d79a86900e..ba79145c6635e 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/AddPreloadScriptCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/AddPreloadScriptCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; using System.Collections.Generic; diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/CallFunctionCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Script/CallFunctionCommand.cs index 9ff03a72896f4..ecb97445c3c99 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/CallFunctionCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/CallFunctionCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; using System.Collections.Generic; diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/Channel.cs b/dotnet/src/webdriver/BiDi/Modules/Script/Channel.cs index 6518aee1d5388..3504b5b890591 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/Channel.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/Channel.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + #nullable enable namespace OpenQA.Selenium.BiDi.Modules.Script; diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/DisownCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Script/DisownCommand.cs index b09ab31da07b3..74361770b73cb 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/DisownCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/DisownCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; using System.Collections.Generic; diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/EvaluateCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Script/EvaluateCommand.cs index 8ccba001543af..eec45a90bb339 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/EvaluateCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/EvaluateCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/GetRealmsCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Script/GetRealmsCommand.cs index e5730a9d21a06..a4fa2ef1c9ac5 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/GetRealmsCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/GetRealmsCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; using System.Collections; using System.Collections.Generic; diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/Handle.cs b/dotnet/src/webdriver/BiDi/Modules/Script/Handle.cs index 8323bea292827..30fc4818963d4 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/Handle.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/Handle.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + #nullable enable namespace OpenQA.Selenium.BiDi.Modules.Script; diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/InternalId.cs b/dotnet/src/webdriver/BiDi/Modules/Script/InternalId.cs index 1a34d8bd61bb5..ecab8bc2a1b56 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/InternalId.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/InternalId.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + #nullable enable namespace OpenQA.Selenium.BiDi.Modules.Script; diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/LocalValue.cs b/dotnet/src/webdriver/BiDi/Modules/Script/LocalValue.cs index 2b162c438dd3d..5c463b2df84b7 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/LocalValue.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/LocalValue.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Collections.Generic; using System.Text.Json.Serialization; diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/MessageEventArgs.cs b/dotnet/src/webdriver/BiDi/Modules/Script/MessageEventArgs.cs index e6062a76262c1..7675762357032 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/MessageEventArgs.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/MessageEventArgs.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + #nullable enable namespace OpenQA.Selenium.BiDi.Modules.Script; diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/NodeProperties.cs b/dotnet/src/webdriver/BiDi/Modules/Script/NodeProperties.cs index 5cc214fcd225c..ba5f33ee5a875 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/NodeProperties.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/NodeProperties.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Collections.Generic; using System.Text.Json.Serialization; diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/PreloadScript.cs b/dotnet/src/webdriver/BiDi/Modules/Script/PreloadScript.cs index 1b9027f21cf39..49744017b5790 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/PreloadScript.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/PreloadScript.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System; using System.Threading.Tasks; diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/Realm.cs b/dotnet/src/webdriver/BiDi/Modules/Script/Realm.cs index a690df5eabd91..80736b03970f4 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/Realm.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/Realm.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + #nullable enable namespace OpenQA.Selenium.BiDi.Modules.Script; diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/RealmDestroyedEventArgs.cs b/dotnet/src/webdriver/BiDi/Modules/Script/RealmDestroyedEventArgs.cs index b5d30f09c5fd3..1a100e3c165b6 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/RealmDestroyedEventArgs.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/RealmDestroyedEventArgs.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + #nullable enable namespace OpenQA.Selenium.BiDi.Modules.Script; diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/RealmInfo.cs b/dotnet/src/webdriver/BiDi/Modules/Script/RealmInfo.cs index 4715be57392a7..9b2959ccf6b60 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/RealmInfo.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/RealmInfo.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Collections.Generic; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/RealmType.cs b/dotnet/src/webdriver/BiDi/Modules/Script/RealmType.cs index 08444b2666830..815ee2f12c36d 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/RealmType.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/RealmType.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + #nullable enable namespace OpenQA.Selenium.BiDi.Modules.Script; diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/RemoteReference.cs b/dotnet/src/webdriver/BiDi/Modules/Script/RemoteReference.cs index ac64940070e7e..4d6e4e3e12d55 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/RemoteReference.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/RemoteReference.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + #nullable enable namespace OpenQA.Selenium.BiDi.Modules.Script; diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/RemoteValue.cs b/dotnet/src/webdriver/BiDi/Modules/Script/RemoteValue.cs index 074ab2570b43e..9cce784f77517 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/RemoteValue.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/RemoteValue.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System; using System.Collections.Generic; using System.Text.Json; diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/RemovePreloadScriptCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Script/RemovePreloadScriptCommand.cs index 850ab9ecc0f6c..513c1d6dcf78a 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/RemovePreloadScriptCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/RemovePreloadScriptCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/ResultOwnership.cs b/dotnet/src/webdriver/BiDi/Modules/Script/ResultOwnership.cs index c69595bc3293c..b6867e1ba06e8 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/ResultOwnership.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/ResultOwnership.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + #nullable enable namespace OpenQA.Selenium.BiDi.Modules.Script; diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/ScriptEvaluateException.cs b/dotnet/src/webdriver/BiDi/Modules/Script/ScriptEvaluateException.cs index 4daa2cc704b1c..375a7fd5e765e 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/ScriptEvaluateException.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/ScriptEvaluateException.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/ScriptModule.cs b/dotnet/src/webdriver/BiDi/Modules/Script/ScriptModule.cs index fee6e4a10dcfc..10e4d9a4db6d9 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/ScriptModule.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/ScriptModule.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; using System; using System.Collections.Generic; diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/SerializationOptions.cs b/dotnet/src/webdriver/BiDi/Modules/Script/SerializationOptions.cs index bbb275cc08c2f..765e000c7101e 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/SerializationOptions.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/SerializationOptions.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + #nullable enable namespace OpenQA.Selenium.BiDi.Modules.Script; diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/Source.cs b/dotnet/src/webdriver/BiDi/Modules/Script/Source.cs index 27bdbcad6f695..133a772d4a3b7 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/Source.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/Source.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + #nullable enable namespace OpenQA.Selenium.BiDi.Modules.Script; diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/StackFrame.cs b/dotnet/src/webdriver/BiDi/Modules/Script/StackFrame.cs index 208485e0bd636..2db07093eaeb8 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/StackFrame.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/StackFrame.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + #nullable enable namespace OpenQA.Selenium.BiDi.Modules.Script; diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/StackTrace.cs b/dotnet/src/webdriver/BiDi/Modules/Script/StackTrace.cs index 15bbfd829bb1e..88e515f499c53 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/StackTrace.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/StackTrace.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Collections.Generic; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Script/Target.cs b/dotnet/src/webdriver/BiDi/Modules/Script/Target.cs index a05849a62c8b9..fbe062951e47d 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Script/Target.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Script/Target.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Text.Json.Serialization; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Session/CapabilitiesRequest.cs b/dotnet/src/webdriver/BiDi/Modules/Session/CapabilitiesRequest.cs index 542f9e1c3f076..61229a774f38d 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Session/CapabilitiesRequest.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Session/CapabilitiesRequest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Collections.Generic; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Session/CapabilityRequest.cs b/dotnet/src/webdriver/BiDi/Modules/Session/CapabilityRequest.cs index b449e984bb540..76aac2de74623 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Session/CapabilityRequest.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Session/CapabilityRequest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + #nullable enable namespace OpenQA.Selenium.BiDi.Modules.Session; diff --git a/dotnet/src/webdriver/BiDi/Modules/Session/EndCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Session/EndCommand.cs index a41d0be7c2ded..cf748e8396416 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Session/EndCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Session/EndCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Session/NewCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Session/NewCommand.cs index 97759165116a2..5d8a6779eb531 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Session/NewCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Session/NewCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Session/ProxyConfiguration.cs b/dotnet/src/webdriver/BiDi/Modules/Session/ProxyConfiguration.cs index 4243dbbaf69c1..aecc837d5598b 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Session/ProxyConfiguration.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Session/ProxyConfiguration.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Text.Json.Serialization; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Session/SessionModule.cs b/dotnet/src/webdriver/BiDi/Modules/Session/SessionModule.cs index 88503bf894cd8..ac06f82d88c0c 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Session/SessionModule.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Session/SessionModule.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; using System.Collections.Generic; using System.Threading.Tasks; diff --git a/dotnet/src/webdriver/BiDi/Modules/Session/StatusCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Session/StatusCommand.cs index 8ab6de213b138..1c60512f2ca4c 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Session/StatusCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Session/StatusCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Session/SubscribeCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Session/SubscribeCommand.cs index 607e5c69944c6..b7b99c0ad0a74 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Session/SubscribeCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Session/SubscribeCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; using System.Collections.Generic; diff --git a/dotnet/src/webdriver/BiDi/Modules/Session/UnsubscribeCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Session/UnsubscribeCommand.cs index 6ca1f7517b439..c71ee4b18f93e 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Session/UnsubscribeCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Session/UnsubscribeCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Storage/DeleteCookiesCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Storage/DeleteCookiesCommand.cs index 13dcf2f30d3ba..010e6c6496590 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Storage/DeleteCookiesCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Storage/DeleteCookiesCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; #nullable enable diff --git a/dotnet/src/webdriver/BiDi/Modules/Storage/GetCookiesCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Storage/GetCookiesCommand.cs index 06cd0c09f6925..5a8f9224b53b1 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Storage/GetCookiesCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Storage/GetCookiesCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; using System; using System.Collections; diff --git a/dotnet/src/webdriver/BiDi/Modules/Storage/PartitionKey.cs b/dotnet/src/webdriver/BiDi/Modules/Storage/PartitionKey.cs index 30200db4b5f60..2385a1bcd555b 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Storage/PartitionKey.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Storage/PartitionKey.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + #nullable enable namespace OpenQA.Selenium.BiDi.Modules.Storage; diff --git a/dotnet/src/webdriver/BiDi/Modules/Storage/SetCookieCommand.cs b/dotnet/src/webdriver/BiDi/Modules/Storage/SetCookieCommand.cs index 7e7cb79824cbc..f79fd1854a558 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Storage/SetCookieCommand.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Storage/SetCookieCommand.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; using System; diff --git a/dotnet/src/webdriver/BiDi/Modules/Storage/StorageModule.cs b/dotnet/src/webdriver/BiDi/Modules/Storage/StorageModule.cs index 71969d9914c2a..faecb3d5a6f2f 100644 --- a/dotnet/src/webdriver/BiDi/Modules/Storage/StorageModule.cs +++ b/dotnet/src/webdriver/BiDi/Modules/Storage/StorageModule.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; using System.Threading.Tasks; diff --git a/dotnet/src/webdriver/BiDi/Properties/IsExternalInit.cs b/dotnet/src/webdriver/BiDi/Properties/IsExternalInit.cs index 64bc7c1c32fc4..77ac1b3486225 100644 --- a/dotnet/src/webdriver/BiDi/Properties/IsExternalInit.cs +++ b/dotnet/src/webdriver/BiDi/Properties/IsExternalInit.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + namespace System.Runtime.CompilerServices; internal static class IsExternalInit; diff --git a/dotnet/src/webdriver/BiDi/Subscription.cs b/dotnet/src/webdriver/BiDi/Subscription.cs index 8870b07fb18bf..2a3b6fc0d8eb2 100644 --- a/dotnet/src/webdriver/BiDi/Subscription.cs +++ b/dotnet/src/webdriver/BiDi/Subscription.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Communication; using System; using System.Collections.Generic; diff --git a/dotnet/src/webdriver/BiDi/WebDriver.Extensions.cs b/dotnet/src/webdriver/BiDi/WebDriver.Extensions.cs index a3e7df31cec50..0a62e1467228a 100644 --- a/dotnet/src/webdriver/BiDi/WebDriver.Extensions.cs +++ b/dotnet/src/webdriver/BiDi/WebDriver.Extensions.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.BiDi.Modules.BrowsingContext; using System.Threading.Tasks; diff --git a/dotnet/src/webdriver/By.cs b/dotnet/src/webdriver/By.cs index a98d044649a10..73b57da66c87d 100644 --- a/dotnet/src/webdriver/By.cs +++ b/dotnet/src/webdriver/By.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Internal; diff --git a/dotnet/src/webdriver/CapabilityType.cs b/dotnet/src/webdriver/CapabilityType.cs index 3f56821132ab2..bb4bf8519e4ea 100644 --- a/dotnet/src/webdriver/CapabilityType.cs +++ b/dotnet/src/webdriver/CapabilityType.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Collections.Generic; diff --git a/dotnet/src/webdriver/Chrome/ChromeDriver.cs b/dotnet/src/webdriver/Chrome/ChromeDriver.cs index 520bbf8aa80b5..005572f2f8d07 100644 --- a/dotnet/src/webdriver/Chrome/ChromeDriver.cs +++ b/dotnet/src/webdriver/Chrome/ChromeDriver.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Chromium; diff --git a/dotnet/src/webdriver/Chrome/ChromeDriverService.cs b/dotnet/src/webdriver/Chrome/ChromeDriverService.cs index 89dfa1e21e123..c6c85f286581f 100644 --- a/dotnet/src/webdriver/Chrome/ChromeDriverService.cs +++ b/dotnet/src/webdriver/Chrome/ChromeDriverService.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Chromium; diff --git a/dotnet/src/webdriver/Chrome/ChromeOptions.cs b/dotnet/src/webdriver/Chrome/ChromeOptions.cs index aeb700c8bfcd8..b45befaa7a8ab 100644 --- a/dotnet/src/webdriver/Chrome/ChromeOptions.cs +++ b/dotnet/src/webdriver/Chrome/ChromeOptions.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Chromium; diff --git a/dotnet/src/webdriver/Chromium/ChromiumAndroidOptions.cs b/dotnet/src/webdriver/Chromium/ChromiumAndroidOptions.cs index 95379ea111978..02ed81b3c97a0 100644 --- a/dotnet/src/webdriver/Chromium/ChromiumAndroidOptions.cs +++ b/dotnet/src/webdriver/Chromium/ChromiumAndroidOptions.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Internal; diff --git a/dotnet/src/webdriver/Chromium/ChromiumDriver.cs b/dotnet/src/webdriver/Chromium/ChromiumDriver.cs index d4e3306053215..489109d34f2d4 100644 --- a/dotnet/src/webdriver/Chromium/ChromiumDriver.cs +++ b/dotnet/src/webdriver/Chromium/ChromiumDriver.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.DevTools; diff --git a/dotnet/src/webdriver/Chromium/ChromiumDriverService.cs b/dotnet/src/webdriver/Chromium/ChromiumDriverService.cs index 49e03d21dfe22..04a4e8994118f 100644 --- a/dotnet/src/webdriver/Chromium/ChromiumDriverService.cs +++ b/dotnet/src/webdriver/Chromium/ChromiumDriverService.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Chromium/ChromiumMobileEmulationDeviceSettings.cs b/dotnet/src/webdriver/Chromium/ChromiumMobileEmulationDeviceSettings.cs index 430c7f8c08499..b52cccd6b63f3 100644 --- a/dotnet/src/webdriver/Chromium/ChromiumMobileEmulationDeviceSettings.cs +++ b/dotnet/src/webdriver/Chromium/ChromiumMobileEmulationDeviceSettings.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium.Chromium diff --git a/dotnet/src/webdriver/Chromium/ChromiumNetworkConditions.cs b/dotnet/src/webdriver/Chromium/ChromiumNetworkConditions.cs index 9a80a7afac22e..b117ce2819bc7 100644 --- a/dotnet/src/webdriver/Chromium/ChromiumNetworkConditions.cs +++ b/dotnet/src/webdriver/Chromium/ChromiumNetworkConditions.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Chromium/ChromiumOptions.cs b/dotnet/src/webdriver/Chromium/ChromiumOptions.cs index 77fdb9050aca4..63251e12dbc11 100644 --- a/dotnet/src/webdriver/Chromium/ChromiumOptions.cs +++ b/dotnet/src/webdriver/Chromium/ChromiumOptions.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Chromium/ChromiumPerformanceLoggingPreferences.cs b/dotnet/src/webdriver/Chromium/ChromiumPerformanceLoggingPreferences.cs index 75dca267e6fed..9521fdb294193 100644 --- a/dotnet/src/webdriver/Chromium/ChromiumPerformanceLoggingPreferences.cs +++ b/dotnet/src/webdriver/Chromium/ChromiumPerformanceLoggingPreferences.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Command.cs b/dotnet/src/webdriver/Command.cs index 9d86667dea4e8..38abb85480a3e 100644 --- a/dotnet/src/webdriver/Command.cs +++ b/dotnet/src/webdriver/Command.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Internal; diff --git a/dotnet/src/webdriver/CommandInfo.cs b/dotnet/src/webdriver/CommandInfo.cs index 864744f7f3ec1..0e679e221dcc7 100644 --- a/dotnet/src/webdriver/CommandInfo.cs +++ b/dotnet/src/webdriver/CommandInfo.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/CommandInfoRepository.cs b/dotnet/src/webdriver/CommandInfoRepository.cs index 0c6c46f1c4a3c..1b2d0486e7718 100644 --- a/dotnet/src/webdriver/CommandInfoRepository.cs +++ b/dotnet/src/webdriver/CommandInfoRepository.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Cookie.cs b/dotnet/src/webdriver/Cookie.cs index 5b28cd46b7ff6..693012815d699 100644 --- a/dotnet/src/webdriver/Cookie.cs +++ b/dotnet/src/webdriver/Cookie.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Internal; diff --git a/dotnet/src/webdriver/CookieJar.cs b/dotnet/src/webdriver/CookieJar.cs index be698efa93a11..e4f681e11908a 100644 --- a/dotnet/src/webdriver/CookieJar.cs +++ b/dotnet/src/webdriver/CookieJar.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/DefaultFileDetector.cs b/dotnet/src/webdriver/DefaultFileDetector.cs index b391d385af6be..927d7ada27e6c 100644 --- a/dotnet/src/webdriver/DefaultFileDetector.cs +++ b/dotnet/src/webdriver/DefaultFileDetector.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium diff --git a/dotnet/src/webdriver/DetachedShadowRootException.cs b/dotnet/src/webdriver/DetachedShadowRootException.cs index d8af8c148db6f..0c2a8bfd3fd9d 100644 --- a/dotnet/src/webdriver/DetachedShadowRootException.cs +++ b/dotnet/src/webdriver/DetachedShadowRootException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/DevTools/AuthRequiredEventArgs.cs b/dotnet/src/webdriver/DevTools/AuthRequiredEventArgs.cs index c15a2964e4755..b80ff70628c32 100644 --- a/dotnet/src/webdriver/DevTools/AuthRequiredEventArgs.cs +++ b/dotnet/src/webdriver/DevTools/AuthRequiredEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/DevTools/BindingCalledEventArgs.cs b/dotnet/src/webdriver/DevTools/BindingCalledEventArgs.cs index 812b01d7ed2a2..dacb1d1af14e3 100644 --- a/dotnet/src/webdriver/DevTools/BindingCalledEventArgs.cs +++ b/dotnet/src/webdriver/DevTools/BindingCalledEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/DevTools/CommandResponseException.cs b/dotnet/src/webdriver/DevTools/CommandResponseException.cs index a7ac5a92de295..580a70bbe8b41 100644 --- a/dotnet/src/webdriver/DevTools/CommandResponseException.cs +++ b/dotnet/src/webdriver/DevTools/CommandResponseException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/DevTools/CommandResponseExtensions.cs b/dotnet/src/webdriver/DevTools/CommandResponseExtensions.cs index 7c7366e53247d..2b619a7089089 100644 --- a/dotnet/src/webdriver/DevTools/CommandResponseExtensions.cs +++ b/dotnet/src/webdriver/DevTools/CommandResponseExtensions.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium.DevTools diff --git a/dotnet/src/webdriver/DevTools/CommandResponseTypeMap.cs b/dotnet/src/webdriver/DevTools/CommandResponseTypeMap.cs index cdcee2bc26463..d0fb592e9740a 100644 --- a/dotnet/src/webdriver/DevTools/CommandResponseTypeMap.cs +++ b/dotnet/src/webdriver/DevTools/CommandResponseTypeMap.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/DevTools/ConsoleApiArgument.cs b/dotnet/src/webdriver/DevTools/ConsoleApiArgument.cs index f0e1e800ded22..0aa28ea11f188 100644 --- a/dotnet/src/webdriver/DevTools/ConsoleApiArgument.cs +++ b/dotnet/src/webdriver/DevTools/ConsoleApiArgument.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium.DevTools diff --git a/dotnet/src/webdriver/DevTools/ConsoleApiCalledEventArgs.cs b/dotnet/src/webdriver/DevTools/ConsoleApiCalledEventArgs.cs index 93fc970f5201c..0295fb30e9dee 100644 --- a/dotnet/src/webdriver/DevTools/ConsoleApiCalledEventArgs.cs +++ b/dotnet/src/webdriver/DevTools/ConsoleApiCalledEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/DevTools/DevToolsCommandData.cs b/dotnet/src/webdriver/DevTools/DevToolsCommandData.cs index 4f5ffd49f6f3e..14d14a866521e 100644 --- a/dotnet/src/webdriver/DevTools/DevToolsCommandData.cs +++ b/dotnet/src/webdriver/DevTools/DevToolsCommandData.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Text.Json.Nodes; diff --git a/dotnet/src/webdriver/DevTools/DevToolsDomains.cs b/dotnet/src/webdriver/DevTools/DevToolsDomains.cs index 633997c63460a..53631416e161c 100644 --- a/dotnet/src/webdriver/DevTools/DevToolsDomains.cs +++ b/dotnet/src/webdriver/DevTools/DevToolsDomains.cs @@ -1,19 +1,21 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// using System; using System.Collections.Generic; diff --git a/dotnet/src/webdriver/DevTools/DevToolsEventData.cs b/dotnet/src/webdriver/DevTools/DevToolsEventData.cs index 73b5452296bf3..1c527fb34f854 100644 --- a/dotnet/src/webdriver/DevTools/DevToolsEventData.cs +++ b/dotnet/src/webdriver/DevTools/DevToolsEventData.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/DevTools/DevToolsExtensionMethods.cs b/dotnet/src/webdriver/DevTools/DevToolsExtensionMethods.cs index b4a389c7d4203..21711f1822b75 100644 --- a/dotnet/src/webdriver/DevTools/DevToolsExtensionMethods.cs +++ b/dotnet/src/webdriver/DevTools/DevToolsExtensionMethods.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + namespace OpenQA.Selenium.DevTools { /// diff --git a/dotnet/src/webdriver/DevTools/DevToolsOptions.cs b/dotnet/src/webdriver/DevTools/DevToolsOptions.cs index 7c97172407247..e0b5f365261a7 100644 --- a/dotnet/src/webdriver/DevTools/DevToolsOptions.cs +++ b/dotnet/src/webdriver/DevTools/DevToolsOptions.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium.DevTools @@ -25,7 +26,7 @@ public class DevToolsOptions { /// /// Enables or disables waiting for the debugger when creating a new target. By default WaitForDebuggerOnStart is disabled. - /// If enabled, all targets will be halted until the runtime.runIfWaitingForDebugger is invoked. + /// If enabled, all targets will be halted until the runtime.runIfWaitingForDebugger is invoked. /// public bool WaitForDebuggerOnStart { get; set; } /// diff --git a/dotnet/src/webdriver/DevTools/DevToolsSession.cs b/dotnet/src/webdriver/DevTools/DevToolsSession.cs index 931fb22dce019..b58de1097888c 100644 --- a/dotnet/src/webdriver/DevTools/DevToolsSession.cs +++ b/dotnet/src/webdriver/DevTools/DevToolsSession.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Internal.Logging; diff --git a/dotnet/src/webdriver/DevTools/DevToolsSessionDomains.cs b/dotnet/src/webdriver/DevTools/DevToolsSessionDomains.cs index deec0d49f3b27..96d1521f92500 100644 --- a/dotnet/src/webdriver/DevTools/DevToolsSessionDomains.cs +++ b/dotnet/src/webdriver/DevTools/DevToolsSessionDomains.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium.DevTools diff --git a/dotnet/src/webdriver/DevTools/DevToolsSessionEventReceivedEventArgs.cs b/dotnet/src/webdriver/DevTools/DevToolsSessionEventReceivedEventArgs.cs index f34de5178d241..f4b3bd3aa6a63 100644 --- a/dotnet/src/webdriver/DevTools/DevToolsSessionEventReceivedEventArgs.cs +++ b/dotnet/src/webdriver/DevTools/DevToolsSessionEventReceivedEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/DevTools/DevToolsSessionLogMessageEventArgs.cs b/dotnet/src/webdriver/DevTools/DevToolsSessionLogMessageEventArgs.cs index 4f0b3b7079e0b..b3f0bd5ad9fd8 100644 --- a/dotnet/src/webdriver/DevTools/DevToolsSessionLogMessageEventArgs.cs +++ b/dotnet/src/webdriver/DevTools/DevToolsSessionLogMessageEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/DevTools/DevToolsVersionInfo.cs b/dotnet/src/webdriver/DevTools/DevToolsVersionInfo.cs index 76420edcc9043..9b0314577c8e7 100644 --- a/dotnet/src/webdriver/DevTools/DevToolsVersionInfo.cs +++ b/dotnet/src/webdriver/DevTools/DevToolsVersionInfo.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/DevTools/EntryAddedEventArgs.cs b/dotnet/src/webdriver/DevTools/EntryAddedEventArgs.cs index 44199aabac383..83394c5b72347 100644 --- a/dotnet/src/webdriver/DevTools/EntryAddedEventArgs.cs +++ b/dotnet/src/webdriver/DevTools/EntryAddedEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/DevTools/ExceptionThrownEventArgs.cs b/dotnet/src/webdriver/DevTools/ExceptionThrownEventArgs.cs index 536aa20234327..dadd804a4de58 100644 --- a/dotnet/src/webdriver/DevTools/ExceptionThrownEventArgs.cs +++ b/dotnet/src/webdriver/DevTools/ExceptionThrownEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/DevTools/ICommand.cs b/dotnet/src/webdriver/DevTools/ICommand.cs index 77f1460b1bdbc..30dfcb7fb35cf 100644 --- a/dotnet/src/webdriver/DevTools/ICommand.cs +++ b/dotnet/src/webdriver/DevTools/ICommand.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium.DevTools diff --git a/dotnet/src/webdriver/DevTools/IDevTools.cs b/dotnet/src/webdriver/DevTools/IDevTools.cs index 833feb4d81c97..b720b5d1e9222 100644 --- a/dotnet/src/webdriver/DevTools/IDevTools.cs +++ b/dotnet/src/webdriver/DevTools/IDevTools.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/DevTools/IDevToolsSession.cs b/dotnet/src/webdriver/DevTools/IDevToolsSession.cs index bfe223580b925..65de5c8867690 100644 --- a/dotnet/src/webdriver/DevTools/IDevToolsSession.cs +++ b/dotnet/src/webdriver/DevTools/IDevToolsSession.cs @@ -1,19 +1,21 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// using System; using System.Text.Json.Nodes; @@ -23,7 +25,7 @@ namespace OpenQA.Selenium.DevTools { /// - /// Represents a WebSocket connection to a running DevTools instance that can be used to send + /// Represents a WebSocket connection to a running DevTools instance that can be used to send /// commands and recieve events. /// public interface IDevToolsSession : IDisposable diff --git a/dotnet/src/webdriver/DevTools/JavaScript.cs b/dotnet/src/webdriver/DevTools/JavaScript.cs index 00059717bdaa2..d907b66f777ba 100644 --- a/dotnet/src/webdriver/DevTools/JavaScript.cs +++ b/dotnet/src/webdriver/DevTools/JavaScript.cs @@ -1,19 +1,21 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// using System; using System.Threading.Tasks; diff --git a/dotnet/src/webdriver/DevTools/Json/JsonEnumMemberConverter.cs b/dotnet/src/webdriver/DevTools/Json/JsonEnumMemberConverter.cs index 2ec7f4ae55723..52386c94edc5f 100644 --- a/dotnet/src/webdriver/DevTools/Json/JsonEnumMemberConverter.cs +++ b/dotnet/src/webdriver/DevTools/Json/JsonEnumMemberConverter.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System; using System.Collections.Generic; using System.Linq; diff --git a/dotnet/src/webdriver/DevTools/Log.cs b/dotnet/src/webdriver/DevTools/Log.cs index 43c9ffe7d99b8..fbaccf5492976 100644 --- a/dotnet/src/webdriver/DevTools/Log.cs +++ b/dotnet/src/webdriver/DevTools/Log.cs @@ -1,19 +1,21 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// using System; using System.Threading.Tasks; diff --git a/dotnet/src/webdriver/DevTools/LogEntry.cs b/dotnet/src/webdriver/DevTools/LogEntry.cs index 22b1f813128c9..cf9d379adc4fc 100644 --- a/dotnet/src/webdriver/DevTools/LogEntry.cs +++ b/dotnet/src/webdriver/DevTools/LogEntry.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium.DevTools diff --git a/dotnet/src/webdriver/DevTools/Network.cs b/dotnet/src/webdriver/DevTools/Network.cs index eb300c4733b6b..64f3cce08750a 100644 --- a/dotnet/src/webdriver/DevTools/Network.cs +++ b/dotnet/src/webdriver/DevTools/Network.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Linq; diff --git a/dotnet/src/webdriver/DevTools/RequestPausedEventArgs.cs b/dotnet/src/webdriver/DevTools/RequestPausedEventArgs.cs index de43f998275de..533ffaeee9a18 100644 --- a/dotnet/src/webdriver/DevTools/RequestPausedEventArgs.cs +++ b/dotnet/src/webdriver/DevTools/RequestPausedEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/DevTools/ResponsePausedEventArgs.cs b/dotnet/src/webdriver/DevTools/ResponsePausedEventArgs.cs index 6b81a37e11bf4..30d658d856709 100644 --- a/dotnet/src/webdriver/DevTools/ResponsePausedEventArgs.cs +++ b/dotnet/src/webdriver/DevTools/ResponsePausedEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/DevTools/Target.cs b/dotnet/src/webdriver/DevTools/Target.cs index dbe93627c645e..ea35c4c815dfa 100644 --- a/dotnet/src/webdriver/DevTools/Target.cs +++ b/dotnet/src/webdriver/DevTools/Target.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/DevTools/TargetAttachedEventArgs.cs b/dotnet/src/webdriver/DevTools/TargetAttachedEventArgs.cs index 195bb9b040497..ef95dcaacff5c 100644 --- a/dotnet/src/webdriver/DevTools/TargetAttachedEventArgs.cs +++ b/dotnet/src/webdriver/DevTools/TargetAttachedEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/DevTools/TargetDetachedEventArgs.cs b/dotnet/src/webdriver/DevTools/TargetDetachedEventArgs.cs index e9f41d0561e68..e2379ccf87767 100644 --- a/dotnet/src/webdriver/DevTools/TargetDetachedEventArgs.cs +++ b/dotnet/src/webdriver/DevTools/TargetDetachedEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/DevTools/TargetInfo.cs b/dotnet/src/webdriver/DevTools/TargetInfo.cs index 8ae083ae3f82d..6e7230a6a5029 100644 --- a/dotnet/src/webdriver/DevTools/TargetInfo.cs +++ b/dotnet/src/webdriver/DevTools/TargetInfo.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium.DevTools diff --git a/dotnet/src/webdriver/DevTools/WebSocketConnection.cs b/dotnet/src/webdriver/DevTools/WebSocketConnection.cs index f9f6838986bd8..a87300deac7ff 100644 --- a/dotnet/src/webdriver/DevTools/WebSocketConnection.cs +++ b/dotnet/src/webdriver/DevTools/WebSocketConnection.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/DevTools/WebSocketConnectionDataReceivedEventArgs.cs b/dotnet/src/webdriver/DevTools/WebSocketConnectionDataReceivedEventArgs.cs index 4cbe597587291..a49755e8d53a7 100644 --- a/dotnet/src/webdriver/DevTools/WebSocketConnectionDataReceivedEventArgs.cs +++ b/dotnet/src/webdriver/DevTools/WebSocketConnectionDataReceivedEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/DevTools/v128/V128Domains.cs b/dotnet/src/webdriver/DevTools/v128/V128Domains.cs index 034b6b2e7f6c5..ad7fd36277336 100644 --- a/dotnet/src/webdriver/DevTools/v128/V128Domains.cs +++ b/dotnet/src/webdriver/DevTools/v128/V128Domains.cs @@ -1,19 +1,21 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// namespace OpenQA.Selenium.DevTools.V128 { diff --git a/dotnet/src/webdriver/DevTools/v128/V128JavaScript.cs b/dotnet/src/webdriver/DevTools/v128/V128JavaScript.cs index 251d9b907ec54..023efade5ff8f 100644 --- a/dotnet/src/webdriver/DevTools/v128/V128JavaScript.cs +++ b/dotnet/src/webdriver/DevTools/v128/V128JavaScript.cs @@ -1,19 +1,21 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// using OpenQA.Selenium.DevTools.V128.Page; using OpenQA.Selenium.DevTools.V128.Runtime; diff --git a/dotnet/src/webdriver/DevTools/v128/V128Log.cs b/dotnet/src/webdriver/DevTools/v128/V128Log.cs index 98f3eefd015ec..617a42447f7a9 100644 --- a/dotnet/src/webdriver/DevTools/v128/V128Log.cs +++ b/dotnet/src/webdriver/DevTools/v128/V128Log.cs @@ -1,19 +1,21 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// using OpenQA.Selenium.DevTools.V128.Log; using System.Threading.Tasks; diff --git a/dotnet/src/webdriver/DevTools/v128/V128Network.cs b/dotnet/src/webdriver/DevTools/v128/V128Network.cs index d747c6dc18a48..bd403f423dc9b 100644 --- a/dotnet/src/webdriver/DevTools/v128/V128Network.cs +++ b/dotnet/src/webdriver/DevTools/v128/V128Network.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.DevTools.V128.Fetch; diff --git a/dotnet/src/webdriver/DevTools/v128/V128Target.cs b/dotnet/src/webdriver/DevTools/v128/V128Target.cs index bfa482562a329..e2a532074d3c7 100644 --- a/dotnet/src/webdriver/DevTools/v128/V128Target.cs +++ b/dotnet/src/webdriver/DevTools/v128/V128Target.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.DevTools.V128.Target; diff --git a/dotnet/src/webdriver/DevTools/v129/V129Domains.cs b/dotnet/src/webdriver/DevTools/v129/V129Domains.cs index 1839321c442e2..0a657de1aff99 100644 --- a/dotnet/src/webdriver/DevTools/v129/V129Domains.cs +++ b/dotnet/src/webdriver/DevTools/v129/V129Domains.cs @@ -1,19 +1,21 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// namespace OpenQA.Selenium.DevTools.V129 { diff --git a/dotnet/src/webdriver/DevTools/v129/V129JavaScript.cs b/dotnet/src/webdriver/DevTools/v129/V129JavaScript.cs index c7c773b53a59e..f2805350805d9 100644 --- a/dotnet/src/webdriver/DevTools/v129/V129JavaScript.cs +++ b/dotnet/src/webdriver/DevTools/v129/V129JavaScript.cs @@ -1,19 +1,21 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// using OpenQA.Selenium.DevTools.V129.Page; using OpenQA.Selenium.DevTools.V129.Runtime; diff --git a/dotnet/src/webdriver/DevTools/v129/V129Log.cs b/dotnet/src/webdriver/DevTools/v129/V129Log.cs index 0dd60e6e04e6d..366e4ec18a6b7 100644 --- a/dotnet/src/webdriver/DevTools/v129/V129Log.cs +++ b/dotnet/src/webdriver/DevTools/v129/V129Log.cs @@ -1,19 +1,21 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// using OpenQA.Selenium.DevTools.V129.Log; using System.Threading.Tasks; diff --git a/dotnet/src/webdriver/DevTools/v129/V129Network.cs b/dotnet/src/webdriver/DevTools/v129/V129Network.cs index 6b174d2c1d72a..879d3b8482146 100644 --- a/dotnet/src/webdriver/DevTools/v129/V129Network.cs +++ b/dotnet/src/webdriver/DevTools/v129/V129Network.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.DevTools.V129.Fetch; diff --git a/dotnet/src/webdriver/DevTools/v129/V129Target.cs b/dotnet/src/webdriver/DevTools/v129/V129Target.cs index 3e4410491adc2..7fd6ced514f25 100644 --- a/dotnet/src/webdriver/DevTools/v129/V129Target.cs +++ b/dotnet/src/webdriver/DevTools/v129/V129Target.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.DevTools.V129.Target; diff --git a/dotnet/src/webdriver/DevTools/v130/V130Domains.cs b/dotnet/src/webdriver/DevTools/v130/V130Domains.cs index e25e338268203..d75c8ac61de59 100644 --- a/dotnet/src/webdriver/DevTools/v130/V130Domains.cs +++ b/dotnet/src/webdriver/DevTools/v130/V130Domains.cs @@ -1,19 +1,21 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// namespace OpenQA.Selenium.DevTools.V130 { diff --git a/dotnet/src/webdriver/DevTools/v130/V130JavaScript.cs b/dotnet/src/webdriver/DevTools/v130/V130JavaScript.cs index 74a508ae60520..5980a7b8b1ce1 100644 --- a/dotnet/src/webdriver/DevTools/v130/V130JavaScript.cs +++ b/dotnet/src/webdriver/DevTools/v130/V130JavaScript.cs @@ -1,19 +1,21 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// using OpenQA.Selenium.DevTools.V130.Page; using OpenQA.Selenium.DevTools.V130.Runtime; diff --git a/dotnet/src/webdriver/DevTools/v130/V130Log.cs b/dotnet/src/webdriver/DevTools/v130/V130Log.cs index cc8d62e546da3..74db09b353414 100644 --- a/dotnet/src/webdriver/DevTools/v130/V130Log.cs +++ b/dotnet/src/webdriver/DevTools/v130/V130Log.cs @@ -1,19 +1,21 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// using OpenQA.Selenium.DevTools.V130.Log; using System.Threading.Tasks; diff --git a/dotnet/src/webdriver/DevTools/v130/V130Network.cs b/dotnet/src/webdriver/DevTools/v130/V130Network.cs index 1d6554c315a0e..cb7ccddbb1a00 100644 --- a/dotnet/src/webdriver/DevTools/v130/V130Network.cs +++ b/dotnet/src/webdriver/DevTools/v130/V130Network.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.DevTools.V130.Fetch; diff --git a/dotnet/src/webdriver/DevTools/v130/V130Target.cs b/dotnet/src/webdriver/DevTools/v130/V130Target.cs index 99e4d87729663..1a63134b3c547 100644 --- a/dotnet/src/webdriver/DevTools/v130/V130Target.cs +++ b/dotnet/src/webdriver/DevTools/v130/V130Target.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.DevTools.V130.Target; diff --git a/dotnet/src/webdriver/DevTools/v85/V85Domains.cs b/dotnet/src/webdriver/DevTools/v85/V85Domains.cs index daca74d68fa7e..885296bbeb556 100644 --- a/dotnet/src/webdriver/DevTools/v85/V85Domains.cs +++ b/dotnet/src/webdriver/DevTools/v85/V85Domains.cs @@ -1,19 +1,21 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// namespace OpenQA.Selenium.DevTools.V85 { diff --git a/dotnet/src/webdriver/DevTools/v85/V85JavaScript.cs b/dotnet/src/webdriver/DevTools/v85/V85JavaScript.cs index c564a9a36e6bc..167d624e74541 100644 --- a/dotnet/src/webdriver/DevTools/v85/V85JavaScript.cs +++ b/dotnet/src/webdriver/DevTools/v85/V85JavaScript.cs @@ -1,19 +1,21 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// using OpenQA.Selenium.DevTools.V85.Page; using OpenQA.Selenium.DevTools.V85.Runtime; diff --git a/dotnet/src/webdriver/DevTools/v85/V85Log.cs b/dotnet/src/webdriver/DevTools/v85/V85Log.cs index 98919306771e8..80b5816a597b4 100644 --- a/dotnet/src/webdriver/DevTools/v85/V85Log.cs +++ b/dotnet/src/webdriver/DevTools/v85/V85Log.cs @@ -1,19 +1,21 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// using OpenQA.Selenium.DevTools.V85.Log; using System.Threading.Tasks; diff --git a/dotnet/src/webdriver/DevTools/v85/V85Network.cs b/dotnet/src/webdriver/DevTools/v85/V85Network.cs index 15f61b4871367..6de68d8a60c3f 100644 --- a/dotnet/src/webdriver/DevTools/v85/V85Network.cs +++ b/dotnet/src/webdriver/DevTools/v85/V85Network.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.DevTools.V85.Fetch; diff --git a/dotnet/src/webdriver/DevTools/v85/V85Target.cs b/dotnet/src/webdriver/DevTools/v85/V85Target.cs index 639af04244239..a2b619ace0d74 100644 --- a/dotnet/src/webdriver/DevTools/v85/V85Target.cs +++ b/dotnet/src/webdriver/DevTools/v85/V85Target.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.DevTools.V85.Target; diff --git a/dotnet/src/webdriver/DomMutatedEventArgs.cs b/dotnet/src/webdriver/DomMutatedEventArgs.cs index 18270726183f2..fc2178f930f79 100644 --- a/dotnet/src/webdriver/DomMutatedEventArgs.cs +++ b/dotnet/src/webdriver/DomMutatedEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/DomMutationData.cs b/dotnet/src/webdriver/DomMutationData.cs index beaffd767d6fd..da64568637b87 100644 --- a/dotnet/src/webdriver/DomMutationData.cs +++ b/dotnet/src/webdriver/DomMutationData.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Text.Json.Serialization; diff --git a/dotnet/src/webdriver/DriverCommand.cs b/dotnet/src/webdriver/DriverCommand.cs index e8b21ac3d687f..2c8d6bdad2757 100644 --- a/dotnet/src/webdriver/DriverCommand.cs +++ b/dotnet/src/webdriver/DriverCommand.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License = string.Empty; Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing = string.Empty; software -// distributed under the License is distributed on an "AS IS" BASIS = string.Empty; -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND = string.Empty; either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Collections.Generic; diff --git a/dotnet/src/webdriver/DriverFinder.cs b/dotnet/src/webdriver/DriverFinder.cs index e5a8f47ad5039..2f768af71414f 100644 --- a/dotnet/src/webdriver/DriverFinder.cs +++ b/dotnet/src/webdriver/DriverFinder.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; @@ -74,7 +75,7 @@ public bool HasBrowserPath() /// Invokes Selenium Manager to get the binaries paths and validates if they exist. /// /// - /// A Dictionary with the validated browser and driver path. + /// A Dictionary with the validated browser and driver path. /// /// If one of the paths does not exist. private Dictionary BinaryPaths() diff --git a/dotnet/src/webdriver/DriverOptions.cs b/dotnet/src/webdriver/DriverOptions.cs index 1c871c6b29fde..22d026e5e7ae9 100644 --- a/dotnet/src/webdriver/DriverOptions.cs +++ b/dotnet/src/webdriver/DriverOptions.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Internal; diff --git a/dotnet/src/webdriver/DriverOptionsMergeResult.cs b/dotnet/src/webdriver/DriverOptionsMergeResult.cs index c2c0c7b29a0e5..e01d8adcc8268 100644 --- a/dotnet/src/webdriver/DriverOptionsMergeResult.cs +++ b/dotnet/src/webdriver/DriverOptionsMergeResult.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + namespace OpenQA.Selenium.Remote { /// diff --git a/dotnet/src/webdriver/DriverProcessStartedEventArgs.cs b/dotnet/src/webdriver/DriverProcessStartedEventArgs.cs index 866040f09534e..891e83a55d78e 100644 --- a/dotnet/src/webdriver/DriverProcessStartedEventArgs.cs +++ b/dotnet/src/webdriver/DriverProcessStartedEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/DriverProcessStartingEventArgs.cs b/dotnet/src/webdriver/DriverProcessStartingEventArgs.cs index d7558854af0aa..37e57dbabbfea 100644 --- a/dotnet/src/webdriver/DriverProcessStartingEventArgs.cs +++ b/dotnet/src/webdriver/DriverProcessStartingEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/DriverService.cs b/dotnet/src/webdriver/DriverService.cs index d3f864d3d396b..80f2218ba57cc 100644 --- a/dotnet/src/webdriver/DriverService.cs +++ b/dotnet/src/webdriver/DriverService.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Remote; diff --git a/dotnet/src/webdriver/DriverServiceNotFoundException.cs b/dotnet/src/webdriver/DriverServiceNotFoundException.cs index 2094d61cc2761..0941959d50d6b 100644 --- a/dotnet/src/webdriver/DriverServiceNotFoundException.cs +++ b/dotnet/src/webdriver/DriverServiceNotFoundException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Edge/EdgeDriver.cs b/dotnet/src/webdriver/Edge/EdgeDriver.cs index 3a55752489455..72d924586a41b 100644 --- a/dotnet/src/webdriver/Edge/EdgeDriver.cs +++ b/dotnet/src/webdriver/Edge/EdgeDriver.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Chromium; diff --git a/dotnet/src/webdriver/Edge/EdgeDriverService.cs b/dotnet/src/webdriver/Edge/EdgeDriverService.cs index 7c075ba905fe9..0ee5b128a4a9b 100644 --- a/dotnet/src/webdriver/Edge/EdgeDriverService.cs +++ b/dotnet/src/webdriver/Edge/EdgeDriverService.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Chromium; diff --git a/dotnet/src/webdriver/Edge/EdgeOptions.cs b/dotnet/src/webdriver/Edge/EdgeOptions.cs index 0273ceef35f06..f329f150d3245 100644 --- a/dotnet/src/webdriver/Edge/EdgeOptions.cs +++ b/dotnet/src/webdriver/Edge/EdgeOptions.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Chromium; diff --git a/dotnet/src/webdriver/ElementClickInterceptedException.cs b/dotnet/src/webdriver/ElementClickInterceptedException.cs index f937dc5e58af9..445abd0d1a5e6 100644 --- a/dotnet/src/webdriver/ElementClickInterceptedException.cs +++ b/dotnet/src/webdriver/ElementClickInterceptedException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/ElementCoordinates.cs b/dotnet/src/webdriver/ElementCoordinates.cs index 391182f5bcc53..79bcb902ae1bf 100644 --- a/dotnet/src/webdriver/ElementCoordinates.cs +++ b/dotnet/src/webdriver/ElementCoordinates.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Interactions.Internal; diff --git a/dotnet/src/webdriver/ElementNotInteractableException.cs b/dotnet/src/webdriver/ElementNotInteractableException.cs index 65ae5395e2207..86a304f7ff5fc 100644 --- a/dotnet/src/webdriver/ElementNotInteractableException.cs +++ b/dotnet/src/webdriver/ElementNotInteractableException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/ElementNotSelectableException.cs b/dotnet/src/webdriver/ElementNotSelectableException.cs index 68fa2b7f4ad6e..37a5c91dcb702 100644 --- a/dotnet/src/webdriver/ElementNotSelectableException.cs +++ b/dotnet/src/webdriver/ElementNotSelectableException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/ElementNotVisibleException.cs b/dotnet/src/webdriver/ElementNotVisibleException.cs index 43f815ae105ad..6db344ed92828 100644 --- a/dotnet/src/webdriver/ElementNotVisibleException.cs +++ b/dotnet/src/webdriver/ElementNotVisibleException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/EncodedFile.cs b/dotnet/src/webdriver/EncodedFile.cs index 9cb233d1fa4d7..c8f9e1626a3f9 100644 --- a/dotnet/src/webdriver/EncodedFile.cs +++ b/dotnet/src/webdriver/EncodedFile.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/ErrorResponse.cs b/dotnet/src/webdriver/ErrorResponse.cs index c0c2bd269f5d9..e8143e8a956ab 100644 --- a/dotnet/src/webdriver/ErrorResponse.cs +++ b/dotnet/src/webdriver/ErrorResponse.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Collections.Generic; diff --git a/dotnet/src/webdriver/Firefox/FirefoxAndroidOptions.cs b/dotnet/src/webdriver/Firefox/FirefoxAndroidOptions.cs index f4f00f958a4b9..46a7e8db51ba4 100644 --- a/dotnet/src/webdriver/Firefox/FirefoxAndroidOptions.cs +++ b/dotnet/src/webdriver/Firefox/FirefoxAndroidOptions.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Internal; @@ -46,7 +47,7 @@ public ReadOnlyCollection AndroidIntentArguments } /// - /// Argument to launch the intent with. The given intent arguments are appended to the "am start" command. + /// Argument to launch the intent with. The given intent arguments are appended to the "am start" command. /// /// The argument to add. public void AddIntentArgument(string argument) @@ -55,7 +56,7 @@ public void AddIntentArgument(string argument) } /// - /// Arguments to launch the intent with. The given intent arguments are appended to the "am start" command. + /// Arguments to launch the intent with. The given intent arguments are appended to the "am start" command. /// /// The arguments to add. public void AddIntentArguments(params string[] arguments) diff --git a/dotnet/src/webdriver/Firefox/FirefoxCommandContext.cs b/dotnet/src/webdriver/Firefox/FirefoxCommandContext.cs index 79ff69fc97db6..13cd9de0900dd 100644 --- a/dotnet/src/webdriver/Firefox/FirefoxCommandContext.cs +++ b/dotnet/src/webdriver/Firefox/FirefoxCommandContext.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium.Firefox diff --git a/dotnet/src/webdriver/Firefox/FirefoxDriver.cs b/dotnet/src/webdriver/Firefox/FirefoxDriver.cs index 53452e02a917a..3d573dc47a91d 100644 --- a/dotnet/src/webdriver/Firefox/FirefoxDriver.cs +++ b/dotnet/src/webdriver/Firefox/FirefoxDriver.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.DevTools; diff --git a/dotnet/src/webdriver/Firefox/FirefoxDriverLogLevel.cs b/dotnet/src/webdriver/Firefox/FirefoxDriverLogLevel.cs index 9bc590061d1d6..580958ba0605d 100644 --- a/dotnet/src/webdriver/Firefox/FirefoxDriverLogLevel.cs +++ b/dotnet/src/webdriver/Firefox/FirefoxDriverLogLevel.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium.Firefox diff --git a/dotnet/src/webdriver/Firefox/FirefoxDriverService.cs b/dotnet/src/webdriver/Firefox/FirefoxDriverService.cs index 2af483a390a05..6c58457461a22 100644 --- a/dotnet/src/webdriver/Firefox/FirefoxDriverService.cs +++ b/dotnet/src/webdriver/Firefox/FirefoxDriverService.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Internal; diff --git a/dotnet/src/webdriver/Firefox/FirefoxExtension.cs b/dotnet/src/webdriver/Firefox/FirefoxExtension.cs index 5af9ad5ca8c8b..f146eb27268ce 100644 --- a/dotnet/src/webdriver/Firefox/FirefoxExtension.cs +++ b/dotnet/src/webdriver/Firefox/FirefoxExtension.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Internal; diff --git a/dotnet/src/webdriver/Firefox/FirefoxOptions.cs b/dotnet/src/webdriver/Firefox/FirefoxOptions.cs index b2eb933805526..8e6f6d1785d06 100644 --- a/dotnet/src/webdriver/Firefox/FirefoxOptions.cs +++ b/dotnet/src/webdriver/Firefox/FirefoxOptions.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Firefox/FirefoxProfile.cs b/dotnet/src/webdriver/Firefox/FirefoxProfile.cs index 2c19547bde5a9..2e0036a8f2819 100644 --- a/dotnet/src/webdriver/Firefox/FirefoxProfile.cs +++ b/dotnet/src/webdriver/Firefox/FirefoxProfile.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Internal; diff --git a/dotnet/src/webdriver/Firefox/FirefoxProfileManager.cs b/dotnet/src/webdriver/Firefox/FirefoxProfileManager.cs index 21d6695fe48de..f53ea800e3249 100644 --- a/dotnet/src/webdriver/Firefox/FirefoxProfileManager.cs +++ b/dotnet/src/webdriver/Firefox/FirefoxProfileManager.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Firefox.Internal; diff --git a/dotnet/src/webdriver/Firefox/Internal/IniFileReader.cs b/dotnet/src/webdriver/Firefox/Internal/IniFileReader.cs index 1afe85ebc9986..656604a4f8635 100644 --- a/dotnet/src/webdriver/Firefox/Internal/IniFileReader.cs +++ b/dotnet/src/webdriver/Firefox/Internal/IniFileReader.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Firefox/Preferences.cs b/dotnet/src/webdriver/Firefox/Preferences.cs index 366b96b53fa0a..fa767ca5a3589 100644 --- a/dotnet/src/webdriver/Firefox/Preferences.cs +++ b/dotnet/src/webdriver/Firefox/Preferences.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/GlobalSuppressions.cs b/dotnet/src/webdriver/GlobalSuppressions.cs index 952d50cf454b7..4f45bf9b2dbd5 100644 --- a/dotnet/src/webdriver/GlobalSuppressions.cs +++ b/dotnet/src/webdriver/GlobalSuppressions.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // // This file is used by Code Analysis to maintain SuppressMessage diff --git a/dotnet/src/webdriver/HttpCommandInfo.cs b/dotnet/src/webdriver/HttpCommandInfo.cs index edcb69cfd2d5f..0841ffcde7524 100644 --- a/dotnet/src/webdriver/HttpCommandInfo.cs +++ b/dotnet/src/webdriver/HttpCommandInfo.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/HttpRequestData.cs b/dotnet/src/webdriver/HttpRequestData.cs index 1d08abd415cd3..89271991cf733 100644 --- a/dotnet/src/webdriver/HttpRequestData.cs +++ b/dotnet/src/webdriver/HttpRequestData.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Collections.Generic; diff --git a/dotnet/src/webdriver/HttpResponseContent.cs b/dotnet/src/webdriver/HttpResponseContent.cs index 13500361136da..b865acfde1cb5 100644 --- a/dotnet/src/webdriver/HttpResponseContent.cs +++ b/dotnet/src/webdriver/HttpResponseContent.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Text; diff --git a/dotnet/src/webdriver/HttpResponseData.cs b/dotnet/src/webdriver/HttpResponseData.cs index c11dfea72a927..ba8f7ce98dd49 100644 --- a/dotnet/src/webdriver/HttpResponseData.cs +++ b/dotnet/src/webdriver/HttpResponseData.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Collections.Generic; diff --git a/dotnet/src/webdriver/IActionExecutor.cs b/dotnet/src/webdriver/IActionExecutor.cs index 92be69f9ce1a1..fba580aa2c538 100644 --- a/dotnet/src/webdriver/IActionExecutor.cs +++ b/dotnet/src/webdriver/IActionExecutor.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Interactions; diff --git a/dotnet/src/webdriver/IAlert.cs b/dotnet/src/webdriver/IAlert.cs index 0e7e54d4d01c0..6dd0c8db63e99 100644 --- a/dotnet/src/webdriver/IAlert.cs +++ b/dotnet/src/webdriver/IAlert.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium diff --git a/dotnet/src/webdriver/IAllowsFileDetection.cs b/dotnet/src/webdriver/IAllowsFileDetection.cs index 5fbe49d9dae47..8986c52ccceb9 100644 --- a/dotnet/src/webdriver/IAllowsFileDetection.cs +++ b/dotnet/src/webdriver/IAllowsFileDetection.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium diff --git a/dotnet/src/webdriver/ICapabilities.cs b/dotnet/src/webdriver/ICapabilities.cs index cd2d62436cba3..1a66162ffb098 100644 --- a/dotnet/src/webdriver/ICapabilities.cs +++ b/dotnet/src/webdriver/ICapabilities.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/ICommandExecutor.cs b/dotnet/src/webdriver/ICommandExecutor.cs index 3bcfb520166d3..e80d7ea63b10e 100644 --- a/dotnet/src/webdriver/ICommandExecutor.cs +++ b/dotnet/src/webdriver/ICommandExecutor.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/ICookieJar.cs b/dotnet/src/webdriver/ICookieJar.cs index 82b919a33959e..a27c472a78c41 100644 --- a/dotnet/src/webdriver/ICookieJar.cs +++ b/dotnet/src/webdriver/ICookieJar.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Collections.ObjectModel; diff --git a/dotnet/src/webdriver/ICredentials.cs b/dotnet/src/webdriver/ICredentials.cs index 1c7779d4929a3..971c3dcb821e8 100644 --- a/dotnet/src/webdriver/ICredentials.cs +++ b/dotnet/src/webdriver/ICredentials.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium diff --git a/dotnet/src/webdriver/ICustomDriverCommandExecutor.cs b/dotnet/src/webdriver/ICustomDriverCommandExecutor.cs index b29566e0ad085..07f2169490391 100644 --- a/dotnet/src/webdriver/ICustomDriverCommandExecutor.cs +++ b/dotnet/src/webdriver/ICustomDriverCommandExecutor.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Collections.Generic; diff --git a/dotnet/src/webdriver/IE/InternetExplorerDriver.cs b/dotnet/src/webdriver/IE/InternetExplorerDriver.cs index 48391331d4f0d..f129ef28e2769 100644 --- a/dotnet/src/webdriver/IE/InternetExplorerDriver.cs +++ b/dotnet/src/webdriver/IE/InternetExplorerDriver.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Remote; diff --git a/dotnet/src/webdriver/IE/InternetExplorerDriverLogLevel.cs b/dotnet/src/webdriver/IE/InternetExplorerDriverLogLevel.cs index 606d785cf400e..840c7497bcf7e 100644 --- a/dotnet/src/webdriver/IE/InternetExplorerDriverLogLevel.cs +++ b/dotnet/src/webdriver/IE/InternetExplorerDriverLogLevel.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium.IE diff --git a/dotnet/src/webdriver/IE/InternetExplorerDriverService.cs b/dotnet/src/webdriver/IE/InternetExplorerDriverService.cs index 0f25921626567..3214bbbe36203 100644 --- a/dotnet/src/webdriver/IE/InternetExplorerDriverService.cs +++ b/dotnet/src/webdriver/IE/InternetExplorerDriverService.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Internal; diff --git a/dotnet/src/webdriver/IE/InternetExplorerOptions.cs b/dotnet/src/webdriver/IE/InternetExplorerOptions.cs index c22069d686ee2..b6142ab859165 100644 --- a/dotnet/src/webdriver/IE/InternetExplorerOptions.cs +++ b/dotnet/src/webdriver/IE/InternetExplorerOptions.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/IFileDetector.cs b/dotnet/src/webdriver/IFileDetector.cs index 3a8ea7cf13880..49e6a0387a447 100644 --- a/dotnet/src/webdriver/IFileDetector.cs +++ b/dotnet/src/webdriver/IFileDetector.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium diff --git a/dotnet/src/webdriver/IHasCapabilities.cs b/dotnet/src/webdriver/IHasCapabilities.cs index 77905fe38c530..e15d8038ae80c 100644 --- a/dotnet/src/webdriver/IHasCapabilities.cs +++ b/dotnet/src/webdriver/IHasCapabilities.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium diff --git a/dotnet/src/webdriver/IHasCommandExecutor.cs b/dotnet/src/webdriver/IHasCommandExecutor.cs index f67e982ce8b3a..e9aa61f6f3da1 100644 --- a/dotnet/src/webdriver/IHasCommandExecutor.cs +++ b/dotnet/src/webdriver/IHasCommandExecutor.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium diff --git a/dotnet/src/webdriver/IHasDownloads.cs b/dotnet/src/webdriver/IHasDownloads.cs index e857621495462..a01d377758fa5 100644 --- a/dotnet/src/webdriver/IHasDownloads.cs +++ b/dotnet/src/webdriver/IHasDownloads.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Collections.Generic; diff --git a/dotnet/src/webdriver/IHasSessionId.cs b/dotnet/src/webdriver/IHasSessionId.cs index 7a96689d2b4f6..100aabaaf316a 100644 --- a/dotnet/src/webdriver/IHasSessionId.cs +++ b/dotnet/src/webdriver/IHasSessionId.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium diff --git a/dotnet/src/webdriver/IJavaScriptEngine.cs b/dotnet/src/webdriver/IJavaScriptEngine.cs index 79ff01eea5d5a..0c4481d970b85 100644 --- a/dotnet/src/webdriver/IJavaScriptEngine.cs +++ b/dotnet/src/webdriver/IJavaScriptEngine.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; @@ -38,7 +39,7 @@ public interface IJavaScriptEngine : IDisposable event EventHandler JavaScriptExceptionThrown; /// - /// Occurs when methods on the JavaScript console are called. + /// Occurs when methods on the JavaScript console are called. /// event EventHandler JavaScriptConsoleApiCalled; diff --git a/dotnet/src/webdriver/IJavascriptExecutor.cs b/dotnet/src/webdriver/IJavascriptExecutor.cs index 0835980f0c189..c8680a0c14c6c 100644 --- a/dotnet/src/webdriver/IJavascriptExecutor.cs +++ b/dotnet/src/webdriver/IJavascriptExecutor.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Collections.Generic; @@ -76,7 +77,7 @@ public interface IJavaScriptExecutor /// steps will be taken: /// /// - /// + /// /// For an HTML element, this method returns a /// For a number, a is returned /// For a boolean, a is returned diff --git a/dotnet/src/webdriver/ILocatable.cs b/dotnet/src/webdriver/ILocatable.cs index d701344fd1e42..eeb0bfa0ef475 100644 --- a/dotnet/src/webdriver/ILocatable.cs +++ b/dotnet/src/webdriver/ILocatable.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Interactions.Internal; diff --git a/dotnet/src/webdriver/ILogs.cs b/dotnet/src/webdriver/ILogs.cs index 89a00aa0a39f5..1224f6d4f3666 100644 --- a/dotnet/src/webdriver/ILogs.cs +++ b/dotnet/src/webdriver/ILogs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Collections.ObjectModel; diff --git a/dotnet/src/webdriver/INavigation.cs b/dotnet/src/webdriver/INavigation.cs index a55b4dfda12bf..e105e00b40e81 100644 --- a/dotnet/src/webdriver/INavigation.cs +++ b/dotnet/src/webdriver/INavigation.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/INetwork.cs b/dotnet/src/webdriver/INetwork.cs index a9a4eb2f0b2b4..34e6fa3a6b9f5 100644 --- a/dotnet/src/webdriver/INetwork.cs +++ b/dotnet/src/webdriver/INetwork.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; @@ -38,7 +39,7 @@ public interface INetwork /// /// Adds a to examine incoming network requests, - /// and optionally modify the request or provide a response. + /// and optionally modify the request or provide a response. /// /// The to add. void AddRequestHandler(NetworkRequestHandler handler); @@ -62,7 +63,7 @@ public interface INetwork /// /// Adds a to examine received network responses, - /// and optionally modify the response. + /// and optionally modify the response. /// /// The to add. void AddResponseHandler(NetworkResponseHandler handler); diff --git a/dotnet/src/webdriver/IOptions.cs b/dotnet/src/webdriver/IOptions.cs index 2cac7344a7265..78fd14514ba37 100644 --- a/dotnet/src/webdriver/IOptions.cs +++ b/dotnet/src/webdriver/IOptions.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium diff --git a/dotnet/src/webdriver/IRotatable.cs b/dotnet/src/webdriver/IRotatable.cs index 3cc09b09e3e26..e67b0d401a9dc 100644 --- a/dotnet/src/webdriver/IRotatable.cs +++ b/dotnet/src/webdriver/IRotatable.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium diff --git a/dotnet/src/webdriver/ISearchContext.cs b/dotnet/src/webdriver/ISearchContext.cs index 2483d0eaa3853..6f88562e296c8 100644 --- a/dotnet/src/webdriver/ISearchContext.cs +++ b/dotnet/src/webdriver/ISearchContext.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Collections.ObjectModel; diff --git a/dotnet/src/webdriver/ISupportsLogs.cs b/dotnet/src/webdriver/ISupportsLogs.cs index 75725c6a7e123..1f78ba08f754d 100644 --- a/dotnet/src/webdriver/ISupportsLogs.cs +++ b/dotnet/src/webdriver/ISupportsLogs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium diff --git a/dotnet/src/webdriver/ISupportsPrint.cs b/dotnet/src/webdriver/ISupportsPrint.cs index e3a945f34381a..6c79abf1a08e5 100644 --- a/dotnet/src/webdriver/ISupportsPrint.cs +++ b/dotnet/src/webdriver/ISupportsPrint.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium diff --git a/dotnet/src/webdriver/ITakesScreenshot.cs b/dotnet/src/webdriver/ITakesScreenshot.cs index 753a6ddd27a8d..f2b7de679de5d 100644 --- a/dotnet/src/webdriver/ITakesScreenshot.cs +++ b/dotnet/src/webdriver/ITakesScreenshot.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium diff --git a/dotnet/src/webdriver/ITargetLocator.cs b/dotnet/src/webdriver/ITargetLocator.cs index ed299ef8e8c25..933e9d928ce6f 100644 --- a/dotnet/src/webdriver/ITargetLocator.cs +++ b/dotnet/src/webdriver/ITargetLocator.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium diff --git a/dotnet/src/webdriver/ITimeouts.cs b/dotnet/src/webdriver/ITimeouts.cs index 40e64a4bf7b60..2e39ace5227f4 100644 --- a/dotnet/src/webdriver/ITimeouts.cs +++ b/dotnet/src/webdriver/ITimeouts.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/IWebDriver.cs b/dotnet/src/webdriver/IWebDriver.cs index 1f8d85a912691..9fba695808c4f 100644 --- a/dotnet/src/webdriver/IWebDriver.cs +++ b/dotnet/src/webdriver/IWebDriver.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/IWebElement.cs b/dotnet/src/webdriver/IWebElement.cs index ffe56565fe8f1..e96d734ca34a8 100644 --- a/dotnet/src/webdriver/IWebElement.cs +++ b/dotnet/src/webdriver/IWebElement.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/IWindow.cs b/dotnet/src/webdriver/IWindow.cs index 362cc99d574a3..c09ddd7341b22 100644 --- a/dotnet/src/webdriver/IWindow.cs +++ b/dotnet/src/webdriver/IWindow.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Drawing; diff --git a/dotnet/src/webdriver/IWrapsDriver.cs b/dotnet/src/webdriver/IWrapsDriver.cs index 13c771a28c540..27af4c7e56faa 100644 --- a/dotnet/src/webdriver/IWrapsDriver.cs +++ b/dotnet/src/webdriver/IWrapsDriver.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium diff --git a/dotnet/src/webdriver/IWrapsElement.cs b/dotnet/src/webdriver/IWrapsElement.cs index ebd8d8d00621c..18e91139fd5ec 100644 --- a/dotnet/src/webdriver/IWrapsElement.cs +++ b/dotnet/src/webdriver/IWrapsElement.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium diff --git a/dotnet/src/webdriver/IWritableCapabilities.cs b/dotnet/src/webdriver/IWritableCapabilities.cs index 92cc232e38340..e2ab8ddeaea61 100644 --- a/dotnet/src/webdriver/IWritableCapabilities.cs +++ b/dotnet/src/webdriver/IWritableCapabilities.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium diff --git a/dotnet/src/webdriver/InitializationScript.cs b/dotnet/src/webdriver/InitializationScript.cs index cd59b74bf3184..0fa30bbfded79 100644 --- a/dotnet/src/webdriver/InitializationScript.cs +++ b/dotnet/src/webdriver/InitializationScript.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Globalization; diff --git a/dotnet/src/webdriver/InsecureCertificateException.cs b/dotnet/src/webdriver/InsecureCertificateException.cs index 37da31170bf21..52644886135af 100644 --- a/dotnet/src/webdriver/InsecureCertificateException.cs +++ b/dotnet/src/webdriver/InsecureCertificateException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Interactions/ActionBuilder.cs b/dotnet/src/webdriver/Interactions/ActionBuilder.cs index 7dd73f5156c60..077678605d346 100644 --- a/dotnet/src/webdriver/Interactions/ActionBuilder.cs +++ b/dotnet/src/webdriver/Interactions/ActionBuilder.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Interactions/ActionSequence.cs b/dotnet/src/webdriver/Interactions/ActionSequence.cs index 7aebebd8a3b35..6b60496e37fc1 100644 --- a/dotnet/src/webdriver/Interactions/ActionSequence.cs +++ b/dotnet/src/webdriver/Interactions/ActionSequence.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Interactions/Actions.cs b/dotnet/src/webdriver/Interactions/Actions.cs index 36c58a925b78b..4fc3307982a83 100644 --- a/dotnet/src/webdriver/Interactions/Actions.cs +++ b/dotnet/src/webdriver/Interactions/Actions.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Interactions/IAction.cs b/dotnet/src/webdriver/Interactions/IAction.cs index 8042a866c27ea..57dfdcdd2fc72 100644 --- a/dotnet/src/webdriver/Interactions/IAction.cs +++ b/dotnet/src/webdriver/Interactions/IAction.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium.Interactions diff --git a/dotnet/src/webdriver/Interactions/ICoordinates.cs b/dotnet/src/webdriver/Interactions/ICoordinates.cs index 91b825fea3d08..7f73d2167d3bc 100644 --- a/dotnet/src/webdriver/Interactions/ICoordinates.cs +++ b/dotnet/src/webdriver/Interactions/ICoordinates.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Drawing; diff --git a/dotnet/src/webdriver/Interactions/InputDevice.cs b/dotnet/src/webdriver/Interactions/InputDevice.cs index 5221f80a5df3d..6db6e30a7d8b7 100644 --- a/dotnet/src/webdriver/Interactions/InputDevice.cs +++ b/dotnet/src/webdriver/Interactions/InputDevice.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Interactions/InputDeviceKind.cs b/dotnet/src/webdriver/Interactions/InputDeviceKind.cs index f0ede0091c345..5c707ab72cb9b 100644 --- a/dotnet/src/webdriver/Interactions/InputDeviceKind.cs +++ b/dotnet/src/webdriver/Interactions/InputDeviceKind.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium.Interactions diff --git a/dotnet/src/webdriver/Interactions/Interaction.cs b/dotnet/src/webdriver/Interactions/Interaction.cs index c3c5831f96259..0b3aa8ff6effd 100644 --- a/dotnet/src/webdriver/Interactions/Interaction.cs +++ b/dotnet/src/webdriver/Interactions/Interaction.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Interactions/KeyInputDevice.cs b/dotnet/src/webdriver/Interactions/KeyInputDevice.cs index b228b6810431e..4273a59b6c0c0 100644 --- a/dotnet/src/webdriver/Interactions/KeyInputDevice.cs +++ b/dotnet/src/webdriver/Interactions/KeyInputDevice.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Interactions/PauseInteraction.cs b/dotnet/src/webdriver/Interactions/PauseInteraction.cs index e2aaf0b95e775..7d74731acb7cf 100644 --- a/dotnet/src/webdriver/Interactions/PauseInteraction.cs +++ b/dotnet/src/webdriver/Interactions/PauseInteraction.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Interactions/PointerInputDevice.cs b/dotnet/src/webdriver/Interactions/PointerInputDevice.cs index a579d362fc711..ef57abe4e49cb 100644 --- a/dotnet/src/webdriver/Interactions/PointerInputDevice.cs +++ b/dotnet/src/webdriver/Interactions/PointerInputDevice.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Internal; diff --git a/dotnet/src/webdriver/Interactions/WheelInputDevice.cs b/dotnet/src/webdriver/Interactions/WheelInputDevice.cs index db6e32f3126ed..2016d229a08c2 100644 --- a/dotnet/src/webdriver/Interactions/WheelInputDevice.cs +++ b/dotnet/src/webdriver/Interactions/WheelInputDevice.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Internal; diff --git a/dotnet/src/webdriver/Internal/AndroidOptions.cs b/dotnet/src/webdriver/Internal/AndroidOptions.cs index 738debccb2546..e2d9e5b94763c 100644 --- a/dotnet/src/webdriver/Internal/AndroidOptions.cs +++ b/dotnet/src/webdriver/Internal/AndroidOptions.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Internal/Base64UrlEncoder.cs b/dotnet/src/webdriver/Internal/Base64UrlEncoder.cs index b5fa69b2dfd8b..23c2fc5fae5f9 100644 --- a/dotnet/src/webdriver/Internal/Base64UrlEncoder.cs +++ b/dotnet/src/webdriver/Internal/Base64UrlEncoder.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Internal/FileUtilities.cs b/dotnet/src/webdriver/Internal/FileUtilities.cs index 804f62b280b95..0d83a6927aeca 100644 --- a/dotnet/src/webdriver/Internal/FileUtilities.cs +++ b/dotnet/src/webdriver/Internal/FileUtilities.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Internal.Logging; diff --git a/dotnet/src/webdriver/Internal/IFindsElement.cs b/dotnet/src/webdriver/Internal/IFindsElement.cs index 3409d6ce227d2..a43055f9c91bd 100644 --- a/dotnet/src/webdriver/Internal/IFindsElement.cs +++ b/dotnet/src/webdriver/Internal/IFindsElement.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Collections.ObjectModel; diff --git a/dotnet/src/webdriver/Internal/IHasCapabilitiesDictionary.cs b/dotnet/src/webdriver/Internal/IHasCapabilitiesDictionary.cs index 68ca676d74c8d..8c281818c4e0d 100644 --- a/dotnet/src/webdriver/Internal/IHasCapabilitiesDictionary.cs +++ b/dotnet/src/webdriver/Internal/IHasCapabilitiesDictionary.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Collections.Generic; diff --git a/dotnet/src/webdriver/Internal/IWebDriverObjectReference.cs b/dotnet/src/webdriver/Internal/IWebDriverObjectReference.cs index bc79e68f72672..bc67fdd7c6a6b 100644 --- a/dotnet/src/webdriver/Internal/IWebDriverObjectReference.cs +++ b/dotnet/src/webdriver/Internal/IWebDriverObjectReference.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Collections.Generic; diff --git a/dotnet/src/webdriver/Internal/Logging/ConsoleLogHandler.cs b/dotnet/src/webdriver/Internal/Logging/ConsoleLogHandler.cs index 30f63dd625673..32a51421bf524 100644 --- a/dotnet/src/webdriver/Internal/Logging/ConsoleLogHandler.cs +++ b/dotnet/src/webdriver/Internal/Logging/ConsoleLogHandler.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Internal/Logging/FileLogHandler.cs b/dotnet/src/webdriver/Internal/Logging/FileLogHandler.cs index 12794aea526b3..8c92cf46aa3b4 100644 --- a/dotnet/src/webdriver/Internal/Logging/FileLogHandler.cs +++ b/dotnet/src/webdriver/Internal/Logging/FileLogHandler.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System; using System.IO; diff --git a/dotnet/src/webdriver/Internal/Logging/ILogContext.cs b/dotnet/src/webdriver/Internal/Logging/ILogContext.cs index ffe51d2f666b2..d1cc52cae4509 100644 --- a/dotnet/src/webdriver/Internal/Logging/ILogContext.cs +++ b/dotnet/src/webdriver/Internal/Logging/ILogContext.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Internal/Logging/ILogHandler.cs b/dotnet/src/webdriver/Internal/Logging/ILogHandler.cs index 9c0365e0881e4..59c8133d007b3 100644 --- a/dotnet/src/webdriver/Internal/Logging/ILogHandler.cs +++ b/dotnet/src/webdriver/Internal/Logging/ILogHandler.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium.Internal.Logging diff --git a/dotnet/src/webdriver/Internal/Logging/ILogHandlerList.cs b/dotnet/src/webdriver/Internal/Logging/ILogHandlerList.cs index 60d63ca5251f9..f27b10a53b416 100644 --- a/dotnet/src/webdriver/Internal/Logging/ILogHandlerList.cs +++ b/dotnet/src/webdriver/Internal/Logging/ILogHandlerList.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Collections.Generic; diff --git a/dotnet/src/webdriver/Internal/Logging/ILogger.cs b/dotnet/src/webdriver/Internal/Logging/ILogger.cs index dcb04d98c1aca..a92a43e0d8445 100644 --- a/dotnet/src/webdriver/Internal/Logging/ILogger.cs +++ b/dotnet/src/webdriver/Internal/Logging/ILogger.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Internal/Logging/Log.cs b/dotnet/src/webdriver/Internal/Logging/Log.cs index a44054e13ba78..884e147c8659a 100644 --- a/dotnet/src/webdriver/Internal/Logging/Log.cs +++ b/dotnet/src/webdriver/Internal/Logging/Log.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; @@ -23,7 +24,7 @@ namespace OpenQA.Selenium.Internal.Logging /// /// Provides context aware logging functionality for the Selenium WebDriver. /// - /// + /// /// /// Use the following code to enable logging to console: /// diff --git a/dotnet/src/webdriver/Internal/Logging/LogContext.cs b/dotnet/src/webdriver/Internal/Logging/LogContext.cs index b0f1b55d657fe..ccf902fb9b35b 100644 --- a/dotnet/src/webdriver/Internal/Logging/LogContext.cs +++ b/dotnet/src/webdriver/Internal/Logging/LogContext.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Internal/Logging/LogContextManager.cs b/dotnet/src/webdriver/Internal/Logging/LogContextManager.cs index 7c777e6baafa8..41594f1125447 100644 --- a/dotnet/src/webdriver/Internal/Logging/LogContextManager.cs +++ b/dotnet/src/webdriver/Internal/Logging/LogContextManager.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Threading; diff --git a/dotnet/src/webdriver/Internal/Logging/LogEvent.cs b/dotnet/src/webdriver/Internal/Logging/LogEvent.cs index 103194070ee81..2a4f9daaf27f9 100644 --- a/dotnet/src/webdriver/Internal/Logging/LogEvent.cs +++ b/dotnet/src/webdriver/Internal/Logging/LogEvent.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Internal/Logging/LogEventLevel.cs b/dotnet/src/webdriver/Internal/Logging/LogEventLevel.cs index 61e60f910de92..af8b728f0d326 100644 --- a/dotnet/src/webdriver/Internal/Logging/LogEventLevel.cs +++ b/dotnet/src/webdriver/Internal/Logging/LogEventLevel.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium.Internal.Logging diff --git a/dotnet/src/webdriver/Internal/Logging/LogHandlerList.cs b/dotnet/src/webdriver/Internal/Logging/LogHandlerList.cs index 73ac20c14a5ea..7c75c36f4b2cf 100644 --- a/dotnet/src/webdriver/Internal/Logging/LogHandlerList.cs +++ b/dotnet/src/webdriver/Internal/Logging/LogHandlerList.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Collections.Generic; diff --git a/dotnet/src/webdriver/Internal/Logging/Logger.cs b/dotnet/src/webdriver/Internal/Logging/Logger.cs index 82cd45fbaa388..0c92d0c0f299f 100644 --- a/dotnet/src/webdriver/Internal/Logging/Logger.cs +++ b/dotnet/src/webdriver/Internal/Logging/Logger.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Internal/PortUtilities.cs b/dotnet/src/webdriver/Internal/PortUtilities.cs index 6238a72a845af..26c45a8b2688f 100644 --- a/dotnet/src/webdriver/Internal/PortUtilities.cs +++ b/dotnet/src/webdriver/Internal/PortUtilities.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Net; diff --git a/dotnet/src/webdriver/Internal/ResourceUtilities.cs b/dotnet/src/webdriver/Internal/ResourceUtilities.cs index ddb7afcadce88..2f854a70214d4 100644 --- a/dotnet/src/webdriver/Internal/ResourceUtilities.cs +++ b/dotnet/src/webdriver/Internal/ResourceUtilities.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Globalization; diff --git a/dotnet/src/webdriver/Internal/ResponseValueJsonConverter.cs b/dotnet/src/webdriver/Internal/ResponseValueJsonConverter.cs index 6b888a788236b..2732cebbd13a2 100644 --- a/dotnet/src/webdriver/Internal/ResponseValueJsonConverter.cs +++ b/dotnet/src/webdriver/Internal/ResponseValueJsonConverter.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Internal/ReturnedCapabilities.cs b/dotnet/src/webdriver/Internal/ReturnedCapabilities.cs index 5486efb4c9987..019e63f469ae3 100644 --- a/dotnet/src/webdriver/Internal/ReturnedCapabilities.cs +++ b/dotnet/src/webdriver/Internal/ReturnedCapabilities.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Internal/ReturnedCookie.cs b/dotnet/src/webdriver/Internal/ReturnedCookie.cs index cc2283f505da1..bef50faa49662 100644 --- a/dotnet/src/webdriver/Internal/ReturnedCookie.cs +++ b/dotnet/src/webdriver/Internal/ReturnedCookie.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/InvalidCookieDomainException.cs b/dotnet/src/webdriver/InvalidCookieDomainException.cs index 0b9294bb6d5bd..d77b16a9877ad 100644 --- a/dotnet/src/webdriver/InvalidCookieDomainException.cs +++ b/dotnet/src/webdriver/InvalidCookieDomainException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/InvalidElementStateException.cs b/dotnet/src/webdriver/InvalidElementStateException.cs index 1010a9f084d8f..2ef4f4529f8be 100644 --- a/dotnet/src/webdriver/InvalidElementStateException.cs +++ b/dotnet/src/webdriver/InvalidElementStateException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/InvalidSelectorException.cs b/dotnet/src/webdriver/InvalidSelectorException.cs index 509dc2d74a785..8afe6301dad93 100644 --- a/dotnet/src/webdriver/InvalidSelectorException.cs +++ b/dotnet/src/webdriver/InvalidSelectorException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/JavaScriptCallbackExecutedEventArgs.cs b/dotnet/src/webdriver/JavaScriptCallbackExecutedEventArgs.cs index b7b9df925f2f0..da2c5f652351e 100644 --- a/dotnet/src/webdriver/JavaScriptCallbackExecutedEventArgs.cs +++ b/dotnet/src/webdriver/JavaScriptCallbackExecutedEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/JavaScriptConsoleApiCalledEventArgs.cs b/dotnet/src/webdriver/JavaScriptConsoleApiCalledEventArgs.cs index f812004a8a62e..23909b755aca0 100644 --- a/dotnet/src/webdriver/JavaScriptConsoleApiCalledEventArgs.cs +++ b/dotnet/src/webdriver/JavaScriptConsoleApiCalledEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/JavaScriptEngine.cs b/dotnet/src/webdriver/JavaScriptEngine.cs index 76f89bdf391d5..35dc6764aac54 100644 --- a/dotnet/src/webdriver/JavaScriptEngine.cs +++ b/dotnet/src/webdriver/JavaScriptEngine.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.DevTools; diff --git a/dotnet/src/webdriver/JavaScriptException.cs b/dotnet/src/webdriver/JavaScriptException.cs index 79045e4093c08..1fd58e1543c29 100644 --- a/dotnet/src/webdriver/JavaScriptException.cs +++ b/dotnet/src/webdriver/JavaScriptException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/JavaScriptExceptionThrownEventArgs.cs b/dotnet/src/webdriver/JavaScriptExceptionThrownEventArgs.cs index 9e6cad476d84c..cfd79daae0726 100644 --- a/dotnet/src/webdriver/JavaScriptExceptionThrownEventArgs.cs +++ b/dotnet/src/webdriver/JavaScriptExceptionThrownEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Keys.cs b/dotnet/src/webdriver/Keys.cs index a2f108f144b85..7fa250a4c2720 100644 --- a/dotnet/src/webdriver/Keys.cs +++ b/dotnet/src/webdriver/Keys.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/LogEntry.cs b/dotnet/src/webdriver/LogEntry.cs index a33ad6ba866db..1f43ac5df8a7e 100644 --- a/dotnet/src/webdriver/LogEntry.cs +++ b/dotnet/src/webdriver/LogEntry.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/LogLevel.cs b/dotnet/src/webdriver/LogLevel.cs index 6e91c73bbc96a..962d32cae682e 100644 --- a/dotnet/src/webdriver/LogLevel.cs +++ b/dotnet/src/webdriver/LogLevel.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium diff --git a/dotnet/src/webdriver/LogType.cs b/dotnet/src/webdriver/LogType.cs index 079bb7ebaf70c..9d87c62638890 100644 --- a/dotnet/src/webdriver/LogType.cs +++ b/dotnet/src/webdriver/LogType.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium diff --git a/dotnet/src/webdriver/Logs.cs b/dotnet/src/webdriver/Logs.cs index 6c903dccc9efd..74fa3102977d5 100644 --- a/dotnet/src/webdriver/Logs.cs +++ b/dotnet/src/webdriver/Logs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/MoveTargetOutOfBoundsException.cs b/dotnet/src/webdriver/MoveTargetOutOfBoundsException.cs index d2cbd4ea1f1c0..945858e904238 100644 --- a/dotnet/src/webdriver/MoveTargetOutOfBoundsException.cs +++ b/dotnet/src/webdriver/MoveTargetOutOfBoundsException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Navigator.cs b/dotnet/src/webdriver/Navigator.cs index 48683a03c9fe1..9faf79f6aa3ac 100644 --- a/dotnet/src/webdriver/Navigator.cs +++ b/dotnet/src/webdriver/Navigator.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/NetworkAuthenticationHandler.cs b/dotnet/src/webdriver/NetworkAuthenticationHandler.cs index cb37cb928bf49..a1fa23478f2f1 100644 --- a/dotnet/src/webdriver/NetworkAuthenticationHandler.cs +++ b/dotnet/src/webdriver/NetworkAuthenticationHandler.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/NetworkManager.cs b/dotnet/src/webdriver/NetworkManager.cs index 7d3131c7a6114..b508c32140ca0 100644 --- a/dotnet/src/webdriver/NetworkManager.cs +++ b/dotnet/src/webdriver/NetworkManager.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.DevTools; @@ -92,7 +93,7 @@ public async Task StopMonitoring() /// /// Adds a to examine incoming network requests, - /// and optionally modify the request or provide a response. + /// and optionally modify the request or provide a response. /// /// The to add. public void AddRequestHandler(NetworkRequestHandler handler) @@ -164,7 +165,7 @@ public void ClearAuthenticationHandlers() /// /// Adds a to examine received network responses, - /// and optionally modify the response. + /// and optionally modify the response. /// /// The to add. public void AddResponseHandler(NetworkResponseHandler handler) diff --git a/dotnet/src/webdriver/NetworkRequestHandler.cs b/dotnet/src/webdriver/NetworkRequestHandler.cs index d331349db8708..93c38d84aaef1 100644 --- a/dotnet/src/webdriver/NetworkRequestHandler.cs +++ b/dotnet/src/webdriver/NetworkRequestHandler.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/NetworkRequestSentEventArgs.cs b/dotnet/src/webdriver/NetworkRequestSentEventArgs.cs index 424d2695af7f1..87e6a64a6c1bb 100644 --- a/dotnet/src/webdriver/NetworkRequestSentEventArgs.cs +++ b/dotnet/src/webdriver/NetworkRequestSentEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/NetworkResponseHandler.cs b/dotnet/src/webdriver/NetworkResponseHandler.cs index bce62c7e0fe4c..e38642f8300e7 100644 --- a/dotnet/src/webdriver/NetworkResponseHandler.cs +++ b/dotnet/src/webdriver/NetworkResponseHandler.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/NetworkResponseReceivedEventArgs.cs b/dotnet/src/webdriver/NetworkResponseReceivedEventArgs.cs index 2185474dd079d..2f4d9318b991f 100644 --- a/dotnet/src/webdriver/NetworkResponseReceivedEventArgs.cs +++ b/dotnet/src/webdriver/NetworkResponseReceivedEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/NoAlertPresentException.cs b/dotnet/src/webdriver/NoAlertPresentException.cs index 72c9600280e55..d4e0e3c534c83 100644 --- a/dotnet/src/webdriver/NoAlertPresentException.cs +++ b/dotnet/src/webdriver/NoAlertPresentException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/NoSuchDriverException.cs b/dotnet/src/webdriver/NoSuchDriverException.cs index 9bd0bf09be271..4a411844d5a79 100644 --- a/dotnet/src/webdriver/NoSuchDriverException.cs +++ b/dotnet/src/webdriver/NoSuchDriverException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/NoSuchElementException.cs b/dotnet/src/webdriver/NoSuchElementException.cs index cfce90ed7e621..83a1f9780fcf7 100644 --- a/dotnet/src/webdriver/NoSuchElementException.cs +++ b/dotnet/src/webdriver/NoSuchElementException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/NoSuchFrameException.cs b/dotnet/src/webdriver/NoSuchFrameException.cs index a3c98cef0509e..29592622f6b0e 100644 --- a/dotnet/src/webdriver/NoSuchFrameException.cs +++ b/dotnet/src/webdriver/NoSuchFrameException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/NoSuchShadowRootException.cs b/dotnet/src/webdriver/NoSuchShadowRootException.cs index 32398d6aecfd2..751c2f2fb50bb 100644 --- a/dotnet/src/webdriver/NoSuchShadowRootException.cs +++ b/dotnet/src/webdriver/NoSuchShadowRootException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/NoSuchWindowException.cs b/dotnet/src/webdriver/NoSuchWindowException.cs index 410d1878e3076..5fd9cbfa1c1af 100644 --- a/dotnet/src/webdriver/NoSuchWindowException.cs +++ b/dotnet/src/webdriver/NoSuchWindowException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/NotFoundException.cs b/dotnet/src/webdriver/NotFoundException.cs index 1621ca93d999e..a215ba31f48f3 100644 --- a/dotnet/src/webdriver/NotFoundException.cs +++ b/dotnet/src/webdriver/NotFoundException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/OptionsManager.cs b/dotnet/src/webdriver/OptionsManager.cs index 6f0b6155b2875..4fc01194dc1c5 100644 --- a/dotnet/src/webdriver/OptionsManager.cs +++ b/dotnet/src/webdriver/OptionsManager.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium diff --git a/dotnet/src/webdriver/PasswordCredentials.cs b/dotnet/src/webdriver/PasswordCredentials.cs index 408ebfd2906ec..f22d40f0bb425 100644 --- a/dotnet/src/webdriver/PasswordCredentials.cs +++ b/dotnet/src/webdriver/PasswordCredentials.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium diff --git a/dotnet/src/webdriver/PinnedScript.cs b/dotnet/src/webdriver/PinnedScript.cs index fbc822c9135b9..bf01e982385b6 100644 --- a/dotnet/src/webdriver/PinnedScript.cs +++ b/dotnet/src/webdriver/PinnedScript.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Platform.cs b/dotnet/src/webdriver/Platform.cs index 5b2b7f5d87a41..c143fd682d3b7 100644 --- a/dotnet/src/webdriver/Platform.cs +++ b/dotnet/src/webdriver/Platform.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/PrintDocument.cs b/dotnet/src/webdriver/PrintDocument.cs index 4d7d5c7302619..7244a9c42dde7 100644 --- a/dotnet/src/webdriver/PrintDocument.cs +++ b/dotnet/src/webdriver/PrintDocument.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/PrintOptions.cs b/dotnet/src/webdriver/PrintOptions.cs index b5c4959a8270a..f1d9660565618 100644 --- a/dotnet/src/webdriver/PrintOptions.cs +++ b/dotnet/src/webdriver/PrintOptions.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Proxy.cs b/dotnet/src/webdriver/Proxy.cs index 1a696a7a48c46..0216c50105ce8 100644 --- a/dotnet/src/webdriver/Proxy.cs +++ b/dotnet/src/webdriver/Proxy.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/RelativeBy.cs b/dotnet/src/webdriver/RelativeBy.cs index 087a8c5dc76a2..88bf10f28a0c0 100644 --- a/dotnet/src/webdriver/RelativeBy.cs +++ b/dotnet/src/webdriver/RelativeBy.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Internal; diff --git a/dotnet/src/webdriver/Remote/DesiredCapabilities.cs b/dotnet/src/webdriver/Remote/DesiredCapabilities.cs index 2c09fcdd0b7cd..7784f2395fc3e 100644 --- a/dotnet/src/webdriver/Remote/DesiredCapabilities.cs +++ b/dotnet/src/webdriver/Remote/DesiredCapabilities.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Internal; diff --git a/dotnet/src/webdriver/Remote/DriverServiceCommandExecutor.cs b/dotnet/src/webdriver/Remote/DriverServiceCommandExecutor.cs index 1e486ad96f98d..2a374d5f5eb14 100644 --- a/dotnet/src/webdriver/Remote/DriverServiceCommandExecutor.cs +++ b/dotnet/src/webdriver/Remote/DriverServiceCommandExecutor.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Remote/HttpCommandExecutor.cs b/dotnet/src/webdriver/Remote/HttpCommandExecutor.cs index 251c6bca78fe1..a5d60f67e49ff 100644 --- a/dotnet/src/webdriver/Remote/HttpCommandExecutor.cs +++ b/dotnet/src/webdriver/Remote/HttpCommandExecutor.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Internal; @@ -418,10 +419,10 @@ protected override async Task SendAsync(HttpRequestMessage var responseTask = base.SendAsync(request, cancellationToken); StringBuilder requestLogMessageBuilder = new(); - requestLogMessageBuilder.AppendFormat(">> {0} RequestUri: {1}, Content: {2}, Headers: {3}", - request.Method, - request.RequestUri?.ToString() ?? "null", - request.Content?.ToString() ?? "null", + requestLogMessageBuilder.AppendFormat(">> {0} RequestUri: {1}, Content: {2}, Headers: {3}", + request.Method, + request.RequestUri?.ToString() ?? "null", + request.Content?.ToString() ?? "null", request.Headers?.Count()); if (request.Content != null) diff --git a/dotnet/src/webdriver/Remote/ICommandServer.cs b/dotnet/src/webdriver/Remote/ICommandServer.cs index 5f3c3674d8d9f..395616482f7d5 100644 --- a/dotnet/src/webdriver/Remote/ICommandServer.cs +++ b/dotnet/src/webdriver/Remote/ICommandServer.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Remote/LocalFileDetector.cs b/dotnet/src/webdriver/Remote/LocalFileDetector.cs index de96d629207e5..7e23d0676ed7d 100644 --- a/dotnet/src/webdriver/Remote/LocalFileDetector.cs +++ b/dotnet/src/webdriver/Remote/LocalFileDetector.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.IO; diff --git a/dotnet/src/webdriver/Remote/ReadOnlyDesiredCapabilities.cs b/dotnet/src/webdriver/Remote/ReadOnlyDesiredCapabilities.cs index 50584b7475d59..997c54816fe7c 100644 --- a/dotnet/src/webdriver/Remote/ReadOnlyDesiredCapabilities.cs +++ b/dotnet/src/webdriver/Remote/ReadOnlyDesiredCapabilities.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Internal; diff --git a/dotnet/src/webdriver/Remote/RemoteSessionSettings.cs b/dotnet/src/webdriver/Remote/RemoteSessionSettings.cs index e3ee3359cca30..3061c3504c67f 100644 --- a/dotnet/src/webdriver/Remote/RemoteSessionSettings.cs +++ b/dotnet/src/webdriver/Remote/RemoteSessionSettings.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Remote; diff --git a/dotnet/src/webdriver/Remote/RemoteWebDriver.cs b/dotnet/src/webdriver/Remote/RemoteWebDriver.cs index 2a75c861d0425..35a32af124d78 100644 --- a/dotnet/src/webdriver/Remote/RemoteWebDriver.cs +++ b/dotnet/src/webdriver/Remote/RemoteWebDriver.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.DevTools; diff --git a/dotnet/src/webdriver/Remote/SendingRemoteHttpRequestEventArgs.cs b/dotnet/src/webdriver/Remote/SendingRemoteHttpRequestEventArgs.cs index c16fd7641135f..d7bd585be602c 100644 --- a/dotnet/src/webdriver/Remote/SendingRemoteHttpRequestEventArgs.cs +++ b/dotnet/src/webdriver/Remote/SendingRemoteHttpRequestEventArgs.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Remote/W3CWireProtocolCommandInfoRepository.cs b/dotnet/src/webdriver/Remote/W3CWireProtocolCommandInfoRepository.cs index 162add5ea0f45..8c51b36fd6035 100644 --- a/dotnet/src/webdriver/Remote/W3CWireProtocolCommandInfoRepository.cs +++ b/dotnet/src/webdriver/Remote/W3CWireProtocolCommandInfoRepository.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Response.cs b/dotnet/src/webdriver/Response.cs index ebfd47e2cfa1b..39962a0484a1f 100644 --- a/dotnet/src/webdriver/Response.cs +++ b/dotnet/src/webdriver/Response.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Internal; diff --git a/dotnet/src/webdriver/Safari/SafariDriver.cs b/dotnet/src/webdriver/Safari/SafariDriver.cs index 4c88e90685f55..b8d81c22ed56d 100644 --- a/dotnet/src/webdriver/Safari/SafariDriver.cs +++ b/dotnet/src/webdriver/Safari/SafariDriver.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Remote; diff --git a/dotnet/src/webdriver/Safari/SafariDriverService.cs b/dotnet/src/webdriver/Safari/SafariDriverService.cs index b496252ee3d14..37930054a75d9 100644 --- a/dotnet/src/webdriver/Safari/SafariDriverService.cs +++ b/dotnet/src/webdriver/Safari/SafariDriverService.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Internal; diff --git a/dotnet/src/webdriver/Safari/SafariOptions.cs b/dotnet/src/webdriver/Safari/SafariOptions.cs index a629e80282a36..25f4753ff81ad 100644 --- a/dotnet/src/webdriver/Safari/SafariOptions.cs +++ b/dotnet/src/webdriver/Safari/SafariOptions.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium.Safari diff --git a/dotnet/src/webdriver/ScreenOrientation.cs b/dotnet/src/webdriver/ScreenOrientation.cs index e988d55e72700..fb496b4703c9b 100644 --- a/dotnet/src/webdriver/ScreenOrientation.cs +++ b/dotnet/src/webdriver/ScreenOrientation.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium diff --git a/dotnet/src/webdriver/Screenshot.cs b/dotnet/src/webdriver/Screenshot.cs index 7e782ed3a7a97..67b59aab6ac01 100644 --- a/dotnet/src/webdriver/Screenshot.cs +++ b/dotnet/src/webdriver/Screenshot.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/SeleniumManager.cs b/dotnet/src/webdriver/SeleniumManager.cs index 60c8cd5255389..887978a107f37 100644 --- a/dotnet/src/webdriver/SeleniumManager.cs +++ b/dotnet/src/webdriver/SeleniumManager.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Internal.Logging; diff --git a/dotnet/src/webdriver/SessionId.cs b/dotnet/src/webdriver/SessionId.cs index f644a16ff31d0..7cf90da7f69d1 100644 --- a/dotnet/src/webdriver/SessionId.cs +++ b/dotnet/src/webdriver/SessionId.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium diff --git a/dotnet/src/webdriver/ShadowRoot.cs b/dotnet/src/webdriver/ShadowRoot.cs index 218207a7bf5ec..459674b27c1d5 100644 --- a/dotnet/src/webdriver/ShadowRoot.cs +++ b/dotnet/src/webdriver/ShadowRoot.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Internal; diff --git a/dotnet/src/webdriver/StackTraceElement.cs b/dotnet/src/webdriver/StackTraceElement.cs index ea78043b24334..e16c896764330 100644 --- a/dotnet/src/webdriver/StackTraceElement.cs +++ b/dotnet/src/webdriver/StackTraceElement.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Collections.Generic; diff --git a/dotnet/src/webdriver/StaleElementReferenceException.cs b/dotnet/src/webdriver/StaleElementReferenceException.cs index 81f1fdcd97948..23672a63a33f4 100644 --- a/dotnet/src/webdriver/StaleElementReferenceException.cs +++ b/dotnet/src/webdriver/StaleElementReferenceException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Support/DefaultWait{T}.cs b/dotnet/src/webdriver/Support/DefaultWait{T}.cs index 0297dde79dde8..1f06731ef2fef 100644 --- a/dotnet/src/webdriver/Support/DefaultWait{T}.cs +++ b/dotnet/src/webdriver/Support/DefaultWait{T}.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Support/IClock.cs b/dotnet/src/webdriver/Support/IClock.cs index ce9ec446e48d6..ceb2dab588f04 100644 --- a/dotnet/src/webdriver/Support/IClock.cs +++ b/dotnet/src/webdriver/Support/IClock.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Support/IWait{T}.cs b/dotnet/src/webdriver/Support/IWait{T}.cs index 05fd9f7c38be6..4943de86271a6 100644 --- a/dotnet/src/webdriver/Support/IWait{T}.cs +++ b/dotnet/src/webdriver/Support/IWait{T}.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Support/SystemClock.cs b/dotnet/src/webdriver/Support/SystemClock.cs index 978f27913cda9..49616b76c8c01 100644 --- a/dotnet/src/webdriver/Support/SystemClock.cs +++ b/dotnet/src/webdriver/Support/SystemClock.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Support/WebDriverWait.cs b/dotnet/src/webdriver/Support/WebDriverWait.cs index 7ab05ace5aedb..c0f710b03a377 100644 --- a/dotnet/src/webdriver/Support/WebDriverWait.cs +++ b/dotnet/src/webdriver/Support/WebDriverWait.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/TargetLocator.cs b/dotnet/src/webdriver/TargetLocator.cs index 60652a620b232..c93a783493b90 100644 --- a/dotnet/src/webdriver/TargetLocator.cs +++ b/dotnet/src/webdriver/TargetLocator.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Internal; diff --git a/dotnet/src/webdriver/Timeouts.cs b/dotnet/src/webdriver/Timeouts.cs index ee83696c0401a..63422d21db6f9 100644 --- a/dotnet/src/webdriver/Timeouts.cs +++ b/dotnet/src/webdriver/Timeouts.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/UnableToSetCookieException.cs b/dotnet/src/webdriver/UnableToSetCookieException.cs index 6ff0d1ddcf5e8..07463efb2a225 100644 --- a/dotnet/src/webdriver/UnableToSetCookieException.cs +++ b/dotnet/src/webdriver/UnableToSetCookieException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/UnhandledAlertException.cs b/dotnet/src/webdriver/UnhandledAlertException.cs index 7126a7326728e..78d1c99435b31 100644 --- a/dotnet/src/webdriver/UnhandledAlertException.cs +++ b/dotnet/src/webdriver/UnhandledAlertException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/UserAgent.cs b/dotnet/src/webdriver/UserAgent.cs index 333273c45c32b..68b823b0a16a8 100644 --- a/dotnet/src/webdriver/UserAgent.cs +++ b/dotnet/src/webdriver/UserAgent.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium.DevTools diff --git a/dotnet/src/webdriver/VirtualAuth/Credential.cs b/dotnet/src/webdriver/VirtualAuth/Credential.cs index 262fdae85cd87..170677b12e035 100644 --- a/dotnet/src/webdriver/VirtualAuth/Credential.cs +++ b/dotnet/src/webdriver/VirtualAuth/Credential.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Internal; diff --git a/dotnet/src/webdriver/VirtualAuth/IHasVirtualAuthenticator.cs b/dotnet/src/webdriver/VirtualAuth/IHasVirtualAuthenticator.cs index 947208990a8c7..92619ded68acb 100644 --- a/dotnet/src/webdriver/VirtualAuth/IHasVirtualAuthenticator.cs +++ b/dotnet/src/webdriver/VirtualAuth/IHasVirtualAuthenticator.cs @@ -1,20 +1,22 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // + using System.Collections.Generic; namespace OpenQA.Selenium.VirtualAuth diff --git a/dotnet/src/webdriver/VirtualAuth/VirtualAuthenticatorOptions.cs b/dotnet/src/webdriver/VirtualAuth/VirtualAuthenticatorOptions.cs index 3c45fcfa86018..6e118df89e037 100644 --- a/dotnet/src/webdriver/VirtualAuth/VirtualAuthenticatorOptions.cs +++ b/dotnet/src/webdriver/VirtualAuth/VirtualAuthenticatorOptions.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/WebDriver.cs b/dotnet/src/webdriver/WebDriver.cs index 6125490529a39..1106fb0da8bbd 100644 --- a/dotnet/src/webdriver/WebDriver.cs +++ b/dotnet/src/webdriver/WebDriver.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Interactions; diff --git a/dotnet/src/webdriver/WebDriverArgumentException.cs b/dotnet/src/webdriver/WebDriverArgumentException.cs index dcb16ca2cf38c..586fdd991cc18 100644 --- a/dotnet/src/webdriver/WebDriverArgumentException.cs +++ b/dotnet/src/webdriver/WebDriverArgumentException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/WebDriverError.cs b/dotnet/src/webdriver/WebDriverError.cs index 69f64f212d8ba..e87f8aeae5253 100644 --- a/dotnet/src/webdriver/WebDriverError.cs +++ b/dotnet/src/webdriver/WebDriverError.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System.Collections.Generic; diff --git a/dotnet/src/webdriver/WebDriverException.cs b/dotnet/src/webdriver/WebDriverException.cs index 787f5feed25c4..25daccb516076 100644 --- a/dotnet/src/webdriver/WebDriverException.cs +++ b/dotnet/src/webdriver/WebDriverException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/WebDriverResult.cs b/dotnet/src/webdriver/WebDriverResult.cs index 982e25e18b551..962c21d4bac76 100644 --- a/dotnet/src/webdriver/WebDriverResult.cs +++ b/dotnet/src/webdriver/WebDriverResult.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium diff --git a/dotnet/src/webdriver/WebDriverTimeoutException.cs b/dotnet/src/webdriver/WebDriverTimeoutException.cs index eecadbb915523..513277beaf436 100644 --- a/dotnet/src/webdriver/WebDriverTimeoutException.cs +++ b/dotnet/src/webdriver/WebDriverTimeoutException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/WebElement.cs b/dotnet/src/webdriver/WebElement.cs index c7443a71e0d2a..51cce73e1eb67 100644 --- a/dotnet/src/webdriver/WebElement.cs +++ b/dotnet/src/webdriver/WebElement.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using OpenQA.Selenium.Interactions.Internal; diff --git a/dotnet/src/webdriver/WebElementFactory.cs b/dotnet/src/webdriver/WebElementFactory.cs index 117a568cef8c1..31629129d0e8d 100644 --- a/dotnet/src/webdriver/WebElementFactory.cs +++ b/dotnet/src/webdriver/WebElementFactory.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/Window.cs b/dotnet/src/webdriver/Window.cs index 036f00a7da0ae..6283f1ba3ef77 100644 --- a/dotnet/src/webdriver/Window.cs +++ b/dotnet/src/webdriver/Window.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/src/webdriver/WindowType.cs b/dotnet/src/webdriver/WindowType.cs index 5d4f058171a1a..2b4f3b8e2bc9f 100644 --- a/dotnet/src/webdriver/WindowType.cs +++ b/dotnet/src/webdriver/WindowType.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // namespace OpenQA.Selenium diff --git a/dotnet/src/webdriver/XPathLookupException.cs b/dotnet/src/webdriver/XPathLookupException.cs index eca80a9e29aba..6e706c6837b28 100644 --- a/dotnet/src/webdriver/XPathLookupException.cs +++ b/dotnet/src/webdriver/XPathLookupException.cs @@ -1,19 +1,20 @@ -// +// // Licensed to the Software Freedom Conservancy (SFC) under one -// or more contributor license agreements. See the NOTICE file +// or more contributor license agreements. See the NOTICE file // distributed with this work for additional information -// regarding copyright ownership. The SFC licenses this file -// to you under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at // -// http://www.apache.org/licenses/LICENSE-2.0 +// http://www.apache.org/licenses/LICENSE-2.0 // -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. // using System; diff --git a/dotnet/test/chrome/ChromeSpecificTests.cs b/dotnet/test/chrome/ChromeSpecificTests.cs index 21a91d49091be..40b4faeff3811 100644 --- a/dotnet/test/chrome/ChromeSpecificTests.cs +++ b/dotnet/test/chrome/ChromeSpecificTests.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; diff --git a/dotnet/test/common/AlertsTest.cs b/dotnet/test/common/AlertsTest.cs index d9b2a15bff155..a99706724838b 100644 --- a/dotnet/test/common/AlertsTest.cs +++ b/dotnet/test/common/AlertsTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/AssemblyFixture.cs b/dotnet/test/common/AssemblyFixture.cs index c5254d3502c78..fda821c9ea304 100644 --- a/dotnet/test/common/AssemblyFixture.cs +++ b/dotnet/test/common/AssemblyFixture.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; diff --git a/dotnet/test/common/BiDi/BiDiFixture.cs b/dotnet/test/common/BiDi/BiDiFixture.cs index b7bf01de81b52..b7fff20a06aae 100644 --- a/dotnet/test/common/BiDi/BiDiFixture.cs +++ b/dotnet/test/common/BiDi/BiDiFixture.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System.Threading.Tasks; diff --git a/dotnet/test/common/BiDi/Browser/BrowserTest.cs b/dotnet/test/common/BiDi/Browser/BrowserTest.cs index 74bbd956848a1..ede287cefd953 100644 --- a/dotnet/test/common/BiDi/Browser/BrowserTest.cs +++ b/dotnet/test/common/BiDi/Browser/BrowserTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System.Threading.Tasks; diff --git a/dotnet/test/common/BiDi/BrowsingContext/BrowsingContextTest.cs b/dotnet/test/common/BiDi/BrowsingContext/BrowsingContextTest.cs index 510daceddfb11..45e67e37892fa 100644 --- a/dotnet/test/common/BiDi/BrowsingContext/BrowsingContextTest.cs +++ b/dotnet/test/common/BiDi/BrowsingContext/BrowsingContextTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.BiDi.Modules.BrowsingContext; using System.Linq; diff --git a/dotnet/test/common/BiDi/Input/CombinedInputActionsTest.cs b/dotnet/test/common/BiDi/Input/CombinedInputActionsTest.cs index cb832cdeb9e41..2359cf12e0da0 100644 --- a/dotnet/test/common/BiDi/Input/CombinedInputActionsTest.cs +++ b/dotnet/test/common/BiDi/Input/CombinedInputActionsTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.BiDi.Modules.BrowsingContext; using OpenQA.Selenium.BiDi.Modules.Input; diff --git a/dotnet/test/common/BiDi/Input/DefaultKeyboardTest.cs b/dotnet/test/common/BiDi/Input/DefaultKeyboardTest.cs index f226719e17c0a..f6611d1416063 100644 --- a/dotnet/test/common/BiDi/Input/DefaultKeyboardTest.cs +++ b/dotnet/test/common/BiDi/Input/DefaultKeyboardTest.cs @@ -1,7 +1,21 @@ -//using NUnit.Framework; -//using OpenQA.Selenium.BiDi.Modules.BrowsingContext; -//using OpenQA.Selenium.BiDi.Modules.Input; -//using System.Threading.Tasks; +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// //namespace OpenQA.Selenium.BiDi.Input; diff --git a/dotnet/test/common/BiDi/Input/DefaultMouseTest.cs b/dotnet/test/common/BiDi/Input/DefaultMouseTest.cs index c7408a83101f1..c21f72be20efb 100644 --- a/dotnet/test/common/BiDi/Input/DefaultMouseTest.cs +++ b/dotnet/test/common/BiDi/Input/DefaultMouseTest.cs @@ -1,7 +1,21 @@ -//using NUnit.Framework; -//using OpenQA.Selenium.BiDi.Modules.BrowsingContext; -//using OpenQA.Selenium.BiDi.Modules.Input; -//using System.Threading.Tasks; +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// //namespace OpenQA.Selenium.BiDi.Input; @@ -41,7 +55,7 @@ // public async Task PerformCombined() // { // await context.NavigateAsync("https://nuget.org", new() { Wait = ReadinessState.Complete }); - + // await context.Input.PerformActionsAsync(new SequentialSourceActions().Type("Hello").Pause(2000).KeyDown(Key.Shift).Type("World")); // await Task.Delay(3000); diff --git a/dotnet/test/common/BiDi/Log/LogTest.cs b/dotnet/test/common/BiDi/Log/LogTest.cs index f67621bfc3b43..96db3a77c7517 100644 --- a/dotnet/test/common/BiDi/Log/LogTest.cs +++ b/dotnet/test/common/BiDi/Log/LogTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.BiDi.Modules.Log; using System; diff --git a/dotnet/test/common/BiDi/Network/NetworkEventsTest.cs b/dotnet/test/common/BiDi/Network/NetworkEventsTest.cs index 230351ba436df..14baaf25d8f9a 100644 --- a/dotnet/test/common/BiDi/Network/NetworkEventsTest.cs +++ b/dotnet/test/common/BiDi/Network/NetworkEventsTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.BiDi.Modules.BrowsingContext; using OpenQA.Selenium.BiDi.Modules.Network; diff --git a/dotnet/test/common/BiDi/Network/NetworkTest.cs b/dotnet/test/common/BiDi/Network/NetworkTest.cs index b743378c385ea..b3340edcd942d 100644 --- a/dotnet/test/common/BiDi/Network/NetworkTest.cs +++ b/dotnet/test/common/BiDi/Network/NetworkTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.BiDi.Modules.BrowsingContext; using OpenQA.Selenium.BiDi.Modules.Network; diff --git a/dotnet/test/common/BiDi/Script/CallFunctionParameterTest.cs b/dotnet/test/common/BiDi/Script/CallFunctionParameterTest.cs index 3fc11764fca2e..308734bd3238f 100644 --- a/dotnet/test/common/BiDi/Script/CallFunctionParameterTest.cs +++ b/dotnet/test/common/BiDi/Script/CallFunctionParameterTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.BiDi.Modules.Script; using System.Threading.Tasks; diff --git a/dotnet/test/common/BiDi/Script/EvaluateParametersTest.cs b/dotnet/test/common/BiDi/Script/EvaluateParametersTest.cs index bb526ff9a4d89..c50af92fe9b14 100644 --- a/dotnet/test/common/BiDi/Script/EvaluateParametersTest.cs +++ b/dotnet/test/common/BiDi/Script/EvaluateParametersTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.BiDi.Modules.Script; using System.Threading.Tasks; diff --git a/dotnet/test/common/BiDi/Script/ScriptCommandsTest.cs b/dotnet/test/common/BiDi/Script/ScriptCommandsTest.cs index c013fbbbed2d4..da692fd898111 100644 --- a/dotnet/test/common/BiDi/Script/ScriptCommandsTest.cs +++ b/dotnet/test/common/BiDi/Script/ScriptCommandsTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.BiDi.Modules.Script; using System; diff --git a/dotnet/test/common/BiDi/Script/ScriptEventsTest.cs b/dotnet/test/common/BiDi/Script/ScriptEventsTest.cs index 48fc3b5686371..c2490b8e1431d 100644 --- a/dotnet/test/common/BiDi/Script/ScriptEventsTest.cs +++ b/dotnet/test/common/BiDi/Script/ScriptEventsTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.BiDi.Modules.Script; using System; diff --git a/dotnet/test/common/BiDi/Storage/StorageTest.cs b/dotnet/test/common/BiDi/Storage/StorageTest.cs index 2f9877c4ca1aa..19db76a0d4a7b 100644 --- a/dotnet/test/common/BiDi/Storage/StorageTest.cs +++ b/dotnet/test/common/BiDi/Storage/StorageTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.BiDi.Modules.Network; using System; diff --git a/dotnet/test/common/Browser.cs b/dotnet/test/common/Browser.cs index 11d135e791ca1..9df0012df05ff 100644 --- a/dotnet/test/common/Browser.cs +++ b/dotnet/test/common/Browser.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + namespace OpenQA.Selenium { public enum Browser diff --git a/dotnet/test/common/ChildrenFindingTest.cs b/dotnet/test/common/ChildrenFindingTest.cs index ff1909c72e710..1bbe8ccfe1e6e 100644 --- a/dotnet/test/common/ChildrenFindingTest.cs +++ b/dotnet/test/common/ChildrenFindingTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System.Collections.ObjectModel; diff --git a/dotnet/test/common/ClearTest.cs b/dotnet/test/common/ClearTest.cs index bf094fe68035a..9d31803834b63 100644 --- a/dotnet/test/common/ClearTest.cs +++ b/dotnet/test/common/ClearTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; diff --git a/dotnet/test/common/ClickScrollingTest.cs b/dotnet/test/common/ClickScrollingTest.cs index 474c204ee876c..92489f1c6d943 100644 --- a/dotnet/test/common/ClickScrollingTest.cs +++ b/dotnet/test/common/ClickScrollingTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/ClickTest.cs b/dotnet/test/common/ClickTest.cs index 5a9dbd97acd10..5a5f9cd06a4fa 100644 --- a/dotnet/test/common/ClickTest.cs +++ b/dotnet/test/common/ClickTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/ContentEditableTest.cs b/dotnet/test/common/ContentEditableTest.cs index 99cfc41b909cd..f927694ba078e 100644 --- a/dotnet/test/common/ContentEditableTest.cs +++ b/dotnet/test/common/ContentEditableTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/CookieImplementationTest.cs b/dotnet/test/common/CookieImplementationTest.cs index 7012d0b71ed5b..846d1a832bdeb 100644 --- a/dotnet/test/common/CookieImplementationTest.cs +++ b/dotnet/test/common/CookieImplementationTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using OpenQA.Selenium.Internal; diff --git a/dotnet/test/common/CookieTest.cs b/dotnet/test/common/CookieTest.cs index 091a73bf9bd12..de33df64a6b4d 100644 --- a/dotnet/test/common/CookieTest.cs +++ b/dotnet/test/common/CookieTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Internal; using System; diff --git a/dotnet/test/common/CorrectEventFiringTest.cs b/dotnet/test/common/CorrectEventFiringTest.cs index e1cbe5ddbf1d2..e358197100d08 100644 --- a/dotnet/test/common/CorrectEventFiringTest.cs +++ b/dotnet/test/common/CorrectEventFiringTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using OpenQA.Selenium.Interactions; diff --git a/dotnet/test/common/CssValueTest.cs b/dotnet/test/common/CssValueTest.cs index 5d29289659fe1..d885a6eb8ba1d 100644 --- a/dotnet/test/common/CssValueTest.cs +++ b/dotnet/test/common/CssValueTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; diff --git a/dotnet/test/common/CustomDriverConfigs/DefaultSafariDriver.cs b/dotnet/test/common/CustomDriverConfigs/DefaultSafariDriver.cs index 50d22ddd5a8b7..311a2832a8e2c 100644 --- a/dotnet/test/common/CustomDriverConfigs/DefaultSafariDriver.cs +++ b/dotnet/test/common/CustomDriverConfigs/DefaultSafariDriver.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + namespace OpenQA.Selenium.Safari { // This is a simple wrapper class to create a SafariDriver that diff --git a/dotnet/test/common/CustomDriverConfigs/DevChannelChromeDriver.cs b/dotnet/test/common/CustomDriverConfigs/DevChannelChromeDriver.cs index ff55979c08a58..1f0a17e677583 100644 --- a/dotnet/test/common/CustomDriverConfigs/DevChannelChromeDriver.cs +++ b/dotnet/test/common/CustomDriverConfigs/DevChannelChromeDriver.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + namespace OpenQA.Selenium.Chrome { public class DevChannelChromeDriver : ChromeDriver diff --git a/dotnet/test/common/CustomDriverConfigs/DevChannelEdgeDriver.cs b/dotnet/test/common/CustomDriverConfigs/DevChannelEdgeDriver.cs index e311d5573645e..0fbcbf0189093 100644 --- a/dotnet/test/common/CustomDriverConfigs/DevChannelEdgeDriver.cs +++ b/dotnet/test/common/CustomDriverConfigs/DevChannelEdgeDriver.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + namespace OpenQA.Selenium.Edge { public class DevChannelEdgeDriver : EdgeDriver diff --git a/dotnet/test/common/CustomDriverConfigs/EdgeInternetExplorerModeDriver.cs b/dotnet/test/common/CustomDriverConfigs/EdgeInternetExplorerModeDriver.cs index 8d4a763cc7b07..09c97ba2ea82c 100644 --- a/dotnet/test/common/CustomDriverConfigs/EdgeInternetExplorerModeDriver.cs +++ b/dotnet/test/common/CustomDriverConfigs/EdgeInternetExplorerModeDriver.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + namespace OpenQA.Selenium.IE { // This is a simple wrapper class to create an InternetExplorerDriver that diff --git a/dotnet/test/common/CustomDriverConfigs/NightlyChannelFirefoxDriver.cs b/dotnet/test/common/CustomDriverConfigs/NightlyChannelFirefoxDriver.cs index 6543ad38dbb82..a551057fa4b92 100644 --- a/dotnet/test/common/CustomDriverConfigs/NightlyChannelFirefoxDriver.cs +++ b/dotnet/test/common/CustomDriverConfigs/NightlyChannelFirefoxDriver.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + namespace OpenQA.Selenium.Firefox { // This is a simple wrapper class to create a FirefoxDriver that diff --git a/dotnet/test/common/CustomDriverConfigs/SafariTechnologyPreviewDriver.cs b/dotnet/test/common/CustomDriverConfigs/SafariTechnologyPreviewDriver.cs index 914076ba0a31e..5143122fb416b 100644 --- a/dotnet/test/common/CustomDriverConfigs/SafariTechnologyPreviewDriver.cs +++ b/dotnet/test/common/CustomDriverConfigs/SafariTechnologyPreviewDriver.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + namespace OpenQA.Selenium.Safari { // This is a simple wrapper class to create a SafariDriver that diff --git a/dotnet/test/common/CustomDriverConfigs/StableChannelChromeDriver.cs b/dotnet/test/common/CustomDriverConfigs/StableChannelChromeDriver.cs index 3c336df0166b1..9ed2a32bddfc0 100644 --- a/dotnet/test/common/CustomDriverConfigs/StableChannelChromeDriver.cs +++ b/dotnet/test/common/CustomDriverConfigs/StableChannelChromeDriver.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + namespace OpenQA.Selenium.Chrome { public class StableChannelChromeDriver : ChromeDriver diff --git a/dotnet/test/common/CustomDriverConfigs/StableChannelEdgeDriver.cs b/dotnet/test/common/CustomDriverConfigs/StableChannelEdgeDriver.cs index d29ed8f40e680..f73a1c14faae0 100644 --- a/dotnet/test/common/CustomDriverConfigs/StableChannelEdgeDriver.cs +++ b/dotnet/test/common/CustomDriverConfigs/StableChannelEdgeDriver.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + namespace OpenQA.Selenium.Edge { public class StableChannelEdgeDriver : EdgeDriver diff --git a/dotnet/test/common/CustomDriverConfigs/StableChannelFirefoxDriver.cs b/dotnet/test/common/CustomDriverConfigs/StableChannelFirefoxDriver.cs index 49bae45c931ff..ae487e6e3de35 100644 --- a/dotnet/test/common/CustomDriverConfigs/StableChannelFirefoxDriver.cs +++ b/dotnet/test/common/CustomDriverConfigs/StableChannelFirefoxDriver.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + namespace OpenQA.Selenium.Firefox { // This is a simple wrapper class to create a FirefoxDriver that diff --git a/dotnet/test/common/CustomDriverConfigs/StableChannelRemoteChromeDriver.cs b/dotnet/test/common/CustomDriverConfigs/StableChannelRemoteChromeDriver.cs index b7737dd4825d2..1fb8520f6ad5a 100644 --- a/dotnet/test/common/CustomDriverConfigs/StableChannelRemoteChromeDriver.cs +++ b/dotnet/test/common/CustomDriverConfigs/StableChannelRemoteChromeDriver.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.Chrome; using System; diff --git a/dotnet/test/common/CustomTestAttributes/IgnoreBrowserAttribute.cs b/dotnet/test/common/CustomTestAttributes/IgnoreBrowserAttribute.cs index 83859f5c0a3c0..ff3bc71d50522 100644 --- a/dotnet/test/common/CustomTestAttributes/IgnoreBrowserAttribute.cs +++ b/dotnet/test/common/CustomTestAttributes/IgnoreBrowserAttribute.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using NUnit.Framework.Interfaces; using NUnit.Framework.Internal; diff --git a/dotnet/test/common/CustomTestAttributes/IgnorePlatformAttribute.cs b/dotnet/test/common/CustomTestAttributes/IgnorePlatformAttribute.cs index 6c9df2bafb888..0e6622ebc4ade 100644 --- a/dotnet/test/common/CustomTestAttributes/IgnorePlatformAttribute.cs +++ b/dotnet/test/common/CustomTestAttributes/IgnorePlatformAttribute.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using NUnit.Framework.Interfaces; using NUnit.Framework.Internal; diff --git a/dotnet/test/common/CustomTestAttributes/IgnoreTargetAttribute.cs b/dotnet/test/common/CustomTestAttributes/IgnoreTargetAttribute.cs index 28b8cc5408383..a3b71df30d12d 100644 --- a/dotnet/test/common/CustomTestAttributes/IgnoreTargetAttribute.cs +++ b/dotnet/test/common/CustomTestAttributes/IgnoreTargetAttribute.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using NUnit.Framework.Interfaces; using NUnit.Framework.Internal; diff --git a/dotnet/test/common/CustomTestAttributes/NeedsFreshDriverAttribute.cs b/dotnet/test/common/CustomTestAttributes/NeedsFreshDriverAttribute.cs index 95c5efd1f7cb8..669dd82d01db4 100644 --- a/dotnet/test/common/CustomTestAttributes/NeedsFreshDriverAttribute.cs +++ b/dotnet/test/common/CustomTestAttributes/NeedsFreshDriverAttribute.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using NUnit.Framework.Interfaces; using OpenQA.Selenium.Environment; diff --git a/dotnet/test/common/DevTools/DevToolsConsoleTest.cs b/dotnet/test/common/DevTools/DevToolsConsoleTest.cs index b3d6c959512ff..e352e575c773e 100644 --- a/dotnet/test/common/DevTools/DevToolsConsoleTest.cs +++ b/dotnet/test/common/DevTools/DevToolsConsoleTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/DevTools/DevToolsLogTest.cs b/dotnet/test/common/DevTools/DevToolsLogTest.cs index e1f05af80409a..00872c8729252 100644 --- a/dotnet/test/common/DevTools/DevToolsLogTest.cs +++ b/dotnet/test/common/DevTools/DevToolsLogTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/DevTools/DevToolsNetworkTest.cs b/dotnet/test/common/DevTools/DevToolsNetworkTest.cs index d9fb0269ab681..d9a45c3652be4 100644 --- a/dotnet/test/common/DevTools/DevToolsNetworkTest.cs +++ b/dotnet/test/common/DevTools/DevToolsNetworkTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/DevTools/DevToolsPerformanceTest.cs b/dotnet/test/common/DevTools/DevToolsPerformanceTest.cs index 6b7ea7954432e..50b235311155f 100644 --- a/dotnet/test/common/DevTools/DevToolsPerformanceTest.cs +++ b/dotnet/test/common/DevTools/DevToolsPerformanceTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System.Threading.Tasks; diff --git a/dotnet/test/common/DevTools/DevToolsProfilerTest.cs b/dotnet/test/common/DevTools/DevToolsProfilerTest.cs index fed67173d3c66..0a5c13d16234c 100644 --- a/dotnet/test/common/DevTools/DevToolsProfilerTest.cs +++ b/dotnet/test/common/DevTools/DevToolsProfilerTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System; using System.Threading; diff --git a/dotnet/test/common/DevTools/DevToolsSecurityTest.cs b/dotnet/test/common/DevTools/DevToolsSecurityTest.cs index ede5071b6621b..6ecffc5ab1795 100644 --- a/dotnet/test/common/DevTools/DevToolsSecurityTest.cs +++ b/dotnet/test/common/DevTools/DevToolsSecurityTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/DevTools/DevToolsTabsTest.cs b/dotnet/test/common/DevTools/DevToolsTabsTest.cs index d71c9ed596abb..5bb4065d4fcbe 100644 --- a/dotnet/test/common/DevTools/DevToolsTabsTest.cs +++ b/dotnet/test/common/DevTools/DevToolsTabsTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System.Threading.Tasks; diff --git a/dotnet/test/common/DevTools/DevToolsTargetTest.cs b/dotnet/test/common/DevTools/DevToolsTargetTest.cs index fa31474612254..5b1358bbdf2b9 100644 --- a/dotnet/test/common/DevTools/DevToolsTargetTest.cs +++ b/dotnet/test/common/DevTools/DevToolsTargetTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/DevTools/DevToolsTestFixture.cs b/dotnet/test/common/DevTools/DevToolsTestFixture.cs index 3e72712fe7296..18bb78988557f 100644 --- a/dotnet/test/common/DevTools/DevToolsTestFixture.cs +++ b/dotnet/test/common/DevTools/DevToolsTestFixture.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; diff --git a/dotnet/test/common/DownloadsTest.cs b/dotnet/test/common/DownloadsTest.cs index eb21d23123edb..b03d44d7d8f8d 100644 --- a/dotnet/test/common/DownloadsTest.cs +++ b/dotnet/test/common/DownloadsTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using OpenQA.Selenium.Remote; diff --git a/dotnet/test/common/DriverElementFindingTest.cs b/dotnet/test/common/DriverElementFindingTest.cs index 2dfe4fb170002..f491f4857335b 100644 --- a/dotnet/test/common/DriverElementFindingTest.cs +++ b/dotnet/test/common/DriverElementFindingTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System.Collections.ObjectModel; diff --git a/dotnet/test/common/DriverTestFixture.cs b/dotnet/test/common/DriverTestFixture.cs index 9fa1757e9b011..2f0eacf218f27 100644 --- a/dotnet/test/common/DriverTestFixture.cs +++ b/dotnet/test/common/DriverTestFixture.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/ElementAttributeTest.cs b/dotnet/test/common/ElementAttributeTest.cs index af661b21b7a3c..21ed7305a1801 100644 --- a/dotnet/test/common/ElementAttributeTest.cs +++ b/dotnet/test/common/ElementAttributeTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/ElementElementFindingTest.cs b/dotnet/test/common/ElementElementFindingTest.cs index 23f6c1d8641f8..67cf47bbe8f92 100644 --- a/dotnet/test/common/ElementElementFindingTest.cs +++ b/dotnet/test/common/ElementElementFindingTest.cs @@ -1,9 +1,28 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System.Collections.ObjectModel; namespace OpenQA.Selenium { - // TODO(andre.nogueira): Find better name. This class is to distinguish + // TODO(andre.nogueira): Find better name. This class is to distinguish // finding elements in the driver (whole page), and inside other elements [TestFixture] public class ElementElementFindingTest : DriverTestFixture diff --git a/dotnet/test/common/ElementEqualityTest.cs b/dotnet/test/common/ElementEqualityTest.cs index 1dd57b11a88f9..b86111ae4414c 100644 --- a/dotnet/test/common/ElementEqualityTest.cs +++ b/dotnet/test/common/ElementEqualityTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System.Collections.ObjectModel; diff --git a/dotnet/test/common/ElementFindingTest.cs b/dotnet/test/common/ElementFindingTest.cs index 2fbd7058ef4ba..313077382fc4f 100644 --- a/dotnet/test/common/ElementFindingTest.cs +++ b/dotnet/test/common/ElementFindingTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/ElementPropertyTest.cs b/dotnet/test/common/ElementPropertyTest.cs index 934a2c769abfb..fd93089262c2a 100644 --- a/dotnet/test/common/ElementPropertyTest.cs +++ b/dotnet/test/common/ElementPropertyTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; namespace OpenQA.Selenium diff --git a/dotnet/test/common/ElementSelectingTest.cs b/dotnet/test/common/ElementSelectingTest.cs index 02b720ccd4f8f..0fc8013784878 100644 --- a/dotnet/test/common/ElementSelectingTest.cs +++ b/dotnet/test/common/ElementSelectingTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; namespace OpenQA.Selenium diff --git a/dotnet/test/common/Environment/DriverConfig.cs b/dotnet/test/common/Environment/DriverConfig.cs index 4f81e97086cab..16f0f4475fd77 100644 --- a/dotnet/test/common/Environment/DriverConfig.cs +++ b/dotnet/test/common/Environment/DriverConfig.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using Newtonsoft.Json; using Newtonsoft.Json.Converters; diff --git a/dotnet/test/common/Environment/DriverFactory.cs b/dotnet/test/common/Environment/DriverFactory.cs index 5708ebda6495d..c993a5d37ab5b 100644 --- a/dotnet/test/common/Environment/DriverFactory.cs +++ b/dotnet/test/common/Environment/DriverFactory.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.Chrome; using OpenQA.Selenium.Chromium; using OpenQA.Selenium.Edge; diff --git a/dotnet/test/common/Environment/DriverStartingEventArgs.cs b/dotnet/test/common/Environment/DriverStartingEventArgs.cs index c473332891ca1..2b37ba3c2cbc2 100644 --- a/dotnet/test/common/Environment/DriverStartingEventArgs.cs +++ b/dotnet/test/common/Environment/DriverStartingEventArgs.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + namespace OpenQA.Selenium.Environment { public class DriverStartingEventArgs diff --git a/dotnet/test/common/Environment/EnvironmentManager.cs b/dotnet/test/common/Environment/EnvironmentManager.cs index dd21805b51cb6..20653378c27e8 100644 --- a/dotnet/test/common/Environment/EnvironmentManager.cs +++ b/dotnet/test/common/Environment/EnvironmentManager.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using Bazel; using Newtonsoft.Json; using NUnit.Framework; diff --git a/dotnet/test/common/Environment/InlinePage.cs b/dotnet/test/common/Environment/InlinePage.cs index f538943b56204..660f959a46e01 100644 --- a/dotnet/test/common/Environment/InlinePage.cs +++ b/dotnet/test/common/Environment/InlinePage.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System.Collections.Generic; using System.Text; diff --git a/dotnet/test/common/Environment/RemoteSeleniumServer.cs b/dotnet/test/common/Environment/RemoteSeleniumServer.cs index 0f1b667c5a373..80d3c27e5e0bc 100644 --- a/dotnet/test/common/Environment/RemoteSeleniumServer.cs +++ b/dotnet/test/common/Environment/RemoteSeleniumServer.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System; using System.Diagnostics; using System.IO; diff --git a/dotnet/test/common/Environment/TestEnvironment.cs b/dotnet/test/common/Environment/TestEnvironment.cs index 215bb1532a538..40bffe0c739b3 100644 --- a/dotnet/test/common/Environment/TestEnvironment.cs +++ b/dotnet/test/common/Environment/TestEnvironment.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using Newtonsoft.Json; using System.Collections.Generic; diff --git a/dotnet/test/common/Environment/TestWebServer.cs b/dotnet/test/common/Environment/TestWebServer.cs index d9ebea15ecd3e..b47585cd3c312 100644 --- a/dotnet/test/common/Environment/TestWebServer.cs +++ b/dotnet/test/common/Environment/TestWebServer.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using Bazel; using System; using System.Diagnostics; diff --git a/dotnet/test/common/Environment/TestWebServerConfig.cs b/dotnet/test/common/Environment/TestWebServerConfig.cs index 33973bc3b6c6b..a70ea76412d28 100644 --- a/dotnet/test/common/Environment/TestWebServerConfig.cs +++ b/dotnet/test/common/Environment/TestWebServerConfig.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using Newtonsoft.Json; namespace OpenQA.Selenium.Environment diff --git a/dotnet/test/common/Environment/UrlBuilder.cs b/dotnet/test/common/Environment/UrlBuilder.cs index 7ae6d5273a9a0..2bbe6d1c0351c 100644 --- a/dotnet/test/common/Environment/UrlBuilder.cs +++ b/dotnet/test/common/Environment/UrlBuilder.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using Newtonsoft.Json; using System; using System.Collections.Generic; diff --git a/dotnet/test/common/Environment/WebsiteConfig.cs b/dotnet/test/common/Environment/WebsiteConfig.cs index 4c465d6ca17a4..a550b796f42d3 100644 --- a/dotnet/test/common/Environment/WebsiteConfig.cs +++ b/dotnet/test/common/Environment/WebsiteConfig.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using Newtonsoft.Json; namespace OpenQA.Selenium.Environment diff --git a/dotnet/test/common/ErrorsTest.cs b/dotnet/test/common/ErrorsTest.cs index 9b0b211a033a0..f01894020c3f3 100644 --- a/dotnet/test/common/ErrorsTest.cs +++ b/dotnet/test/common/ErrorsTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; namespace OpenQA.Selenium diff --git a/dotnet/test/common/ExecutingAsyncJavascriptTest.cs b/dotnet/test/common/ExecutingAsyncJavascriptTest.cs index dd7da9378a4c7..077bcd721c0fa 100644 --- a/dotnet/test/common/ExecutingAsyncJavascriptTest.cs +++ b/dotnet/test/common/ExecutingAsyncJavascriptTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System; using System.Collections.ObjectModel; diff --git a/dotnet/test/common/ExecutingJavascriptTest.cs b/dotnet/test/common/ExecutingJavascriptTest.cs index 74761c9af3667..463f82a4c434f 100644 --- a/dotnet/test/common/ExecutingJavascriptTest.cs +++ b/dotnet/test/common/ExecutingJavascriptTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System; using System.Collections.Generic; diff --git a/dotnet/test/common/FormHandlingTests.cs b/dotnet/test/common/FormHandlingTests.cs index 2ea024de161cc..736b77a610f25 100644 --- a/dotnet/test/common/FormHandlingTests.cs +++ b/dotnet/test/common/FormHandlingTests.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/FrameSwitchingTest.cs b/dotnet/test/common/FrameSwitchingTest.cs index f7cc6881dd175..c669ab8fca519 100644 --- a/dotnet/test/common/FrameSwitchingTest.cs +++ b/dotnet/test/common/FrameSwitchingTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/GetLogsTest.cs b/dotnet/test/common/GetLogsTest.cs index bca8161de8c96..59e28ba091aa3 100644 --- a/dotnet/test/common/GetLogsTest.cs +++ b/dotnet/test/common/GetLogsTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Chrome; using System.Collections.Generic; diff --git a/dotnet/test/common/GetMultipleAttributeTest.cs b/dotnet/test/common/GetMultipleAttributeTest.cs index 7ff78631c1e7c..48e441b50d4e5 100644 --- a/dotnet/test/common/GetMultipleAttributeTest.cs +++ b/dotnet/test/common/GetMultipleAttributeTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; namespace OpenQA.Selenium diff --git a/dotnet/test/common/I18Test.cs b/dotnet/test/common/I18Test.cs index adaecf98e9fa8..9c115b89b6dd9 100644 --- a/dotnet/test/common/I18Test.cs +++ b/dotnet/test/common/I18Test.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; diff --git a/dotnet/test/common/ImplicitWaitTest.cs b/dotnet/test/common/ImplicitWaitTest.cs index 987ac2f3adea1..fc55cb7fbd153 100644 --- a/dotnet/test/common/ImplicitWaitTest.cs +++ b/dotnet/test/common/ImplicitWaitTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System; using System.Collections.Generic; diff --git a/dotnet/test/common/Interactions/ActionBuilderTest.cs b/dotnet/test/common/Interactions/ActionBuilderTest.cs index 497e4107c9407..a762bc92639d2 100644 --- a/dotnet/test/common/Interactions/ActionBuilderTest.cs +++ b/dotnet/test/common/Interactions/ActionBuilderTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System; using System.Collections; diff --git a/dotnet/test/common/Interactions/BasicKeyboardInterfaceTest.cs b/dotnet/test/common/Interactions/BasicKeyboardInterfaceTest.cs index b93b102c90802..88f148ca1cf3d 100644 --- a/dotnet/test/common/Interactions/BasicKeyboardInterfaceTest.cs +++ b/dotnet/test/common/Interactions/BasicKeyboardInterfaceTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/Interactions/BasicMouseInterfaceTest.cs b/dotnet/test/common/Interactions/BasicMouseInterfaceTest.cs index b96a414309788..f88252cc4d1a9 100644 --- a/dotnet/test/common/Interactions/BasicMouseInterfaceTest.cs +++ b/dotnet/test/common/Interactions/BasicMouseInterfaceTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/Interactions/BasicWheelInterfaceTest.cs b/dotnet/test/common/Interactions/BasicWheelInterfaceTest.cs index e6ec9f83e0d1b..f46cb647dc510 100644 --- a/dotnet/test/common/Interactions/BasicWheelInterfaceTest.cs +++ b/dotnet/test/common/Interactions/BasicWheelInterfaceTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System; diff --git a/dotnet/test/common/Interactions/CombinedInputActionsTest.cs b/dotnet/test/common/Interactions/CombinedInputActionsTest.cs index 711259b785aa5..9133254c209c5 100644 --- a/dotnet/test/common/Interactions/CombinedInputActionsTest.cs +++ b/dotnet/test/common/Interactions/CombinedInputActionsTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/Interactions/DragAndDropTest.cs b/dotnet/test/common/Interactions/DragAndDropTest.cs index e445fdefdf21f..87a900aefa86b 100644 --- a/dotnet/test/common/Interactions/DragAndDropTest.cs +++ b/dotnet/test/common/Interactions/DragAndDropTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/Internal/Logging/FileLogHandlerTest.cs b/dotnet/test/common/Internal/Logging/FileLogHandlerTest.cs index dae6cccda01ac..63deb2bece47b 100644 --- a/dotnet/test/common/Internal/Logging/FileLogHandlerTest.cs +++ b/dotnet/test/common/Internal/Logging/FileLogHandlerTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System; using System.IO; diff --git a/dotnet/test/common/Internal/Logging/LogTest.cs b/dotnet/test/common/Internal/Logging/LogTest.cs index 5dbdc598b70ae..d872f665c094a 100644 --- a/dotnet/test/common/Internal/Logging/LogTest.cs +++ b/dotnet/test/common/Internal/Logging/LogTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System; using System.Collections.Generic; diff --git a/dotnet/test/common/JavascriptEnabledBrowserTest.cs b/dotnet/test/common/JavascriptEnabledBrowserTest.cs index 78c5a8515c3d1..2c87086c89703 100644 --- a/dotnet/test/common/JavascriptEnabledBrowserTest.cs +++ b/dotnet/test/common/JavascriptEnabledBrowserTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using NUnit.Framework.Constraints; using System; diff --git a/dotnet/test/common/MiscTest.cs b/dotnet/test/common/MiscTest.cs index 63b327936ce53..a979bd1071d60 100644 --- a/dotnet/test/common/MiscTest.cs +++ b/dotnet/test/common/MiscTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System.Collections.Generic; diff --git a/dotnet/test/common/NavigationTest.cs b/dotnet/test/common/NavigationTest.cs index e1b514bf04cb9..32a660f7cd57f 100644 --- a/dotnet/test/common/NavigationTest.cs +++ b/dotnet/test/common/NavigationTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System; using System.Threading.Tasks; diff --git a/dotnet/test/common/NetworkInterceptionTests.cs b/dotnet/test/common/NetworkInterceptionTests.cs index 30da732cd32b0..10234945895d0 100644 --- a/dotnet/test/common/NetworkInterceptionTests.cs +++ b/dotnet/test/common/NetworkInterceptionTests.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.DevTools; using System.Threading.Tasks; diff --git a/dotnet/test/common/ObjectStateAssumptionsTest.cs b/dotnet/test/common/ObjectStateAssumptionsTest.cs index 63211bcc8bed5..a892846ea95f7 100644 --- a/dotnet/test/common/ObjectStateAssumptionsTest.cs +++ b/dotnet/test/common/ObjectStateAssumptionsTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System.Collections.ObjectModel; diff --git a/dotnet/test/common/PageLoadingTest.cs b/dotnet/test/common/PageLoadingTest.cs index 32a488647c0c8..9cbb86c06bcb4 100644 --- a/dotnet/test/common/PageLoadingTest.cs +++ b/dotnet/test/common/PageLoadingTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/PartialLinkTextMatchTest.cs b/dotnet/test/common/PartialLinkTextMatchTest.cs index dcf735ded14e8..111c7e301702a 100644 --- a/dotnet/test/common/PartialLinkTextMatchTest.cs +++ b/dotnet/test/common/PartialLinkTextMatchTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System.Collections.ObjectModel; diff --git a/dotnet/test/common/PositionAndSizeTest.cs b/dotnet/test/common/PositionAndSizeTest.cs index 93e1567f9c06b..8b8f225148ec7 100644 --- a/dotnet/test/common/PositionAndSizeTest.cs +++ b/dotnet/test/common/PositionAndSizeTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/PrintTest.cs b/dotnet/test/common/PrintTest.cs index 1c31882d2db8b..f48f63f4815fc 100644 --- a/dotnet/test/common/PrintTest.cs +++ b/dotnet/test/common/PrintTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System; diff --git a/dotnet/test/common/ProxySettingTest.cs b/dotnet/test/common/ProxySettingTest.cs index 93d39a8f268ba..dd24bcb1260f7 100644 --- a/dotnet/test/common/ProxySettingTest.cs +++ b/dotnet/test/common/ProxySettingTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using BenderProxy; using BenderProxy.Writers; using NUnit.Framework; diff --git a/dotnet/test/common/ProxyTest.cs b/dotnet/test/common/ProxyTest.cs index ebf2f00bbcd3a..f7b944817e749 100644 --- a/dotnet/test/common/ProxyTest.cs +++ b/dotnet/test/common/ProxyTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System.Collections.Generic; diff --git a/dotnet/test/common/RelativeLocatorTest.cs b/dotnet/test/common/RelativeLocatorTest.cs index 7d67e7eeacc36..27f38ce36fc7c 100644 --- a/dotnet/test/common/RelativeLocatorTest.cs +++ b/dotnet/test/common/RelativeLocatorTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System.Collections.Generic; diff --git a/dotnet/test/common/SelectElementHandlingTest.cs b/dotnet/test/common/SelectElementHandlingTest.cs index ce10f5356d258..99ca4bd014251 100644 --- a/dotnet/test/common/SelectElementHandlingTest.cs +++ b/dotnet/test/common/SelectElementHandlingTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System.Collections.Generic; using System.Collections.ObjectModel; diff --git a/dotnet/test/common/SessionHandlingTest.cs b/dotnet/test/common/SessionHandlingTest.cs index af3ec6073be6d..f0c50c329a691 100644 --- a/dotnet/test/common/SessionHandlingTest.cs +++ b/dotnet/test/common/SessionHandlingTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/ShadowRootHandlingTest.cs b/dotnet/test/common/ShadowRootHandlingTest.cs index adb6b61de3fc6..2d014aa865e95 100644 --- a/dotnet/test/common/ShadowRootHandlingTest.cs +++ b/dotnet/test/common/ShadowRootHandlingTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; namespace OpenQA.Selenium diff --git a/dotnet/test/common/SlowLoadingPageTest.cs b/dotnet/test/common/SlowLoadingPageTest.cs index fe6158df61c6a..a4cf51b4f9d25 100644 --- a/dotnet/test/common/SlowLoadingPageTest.cs +++ b/dotnet/test/common/SlowLoadingPageTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System; diff --git a/dotnet/test/common/StaleElementReferenceTest.cs b/dotnet/test/common/StaleElementReferenceTest.cs index 1c2120a3cebae..ff3efe0301968 100644 --- a/dotnet/test/common/StaleElementReferenceTest.cs +++ b/dotnet/test/common/StaleElementReferenceTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System.Drawing; diff --git a/dotnet/test/common/StubDriver.cs b/dotnet/test/common/StubDriver.cs index 8dd0bc9d138f1..3b1ccd5dc72ca 100644 --- a/dotnet/test/common/StubDriver.cs +++ b/dotnet/test/common/StubDriver.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System; using System.Collections.ObjectModel; diff --git a/dotnet/test/common/SvgDocumentTest.cs b/dotnet/test/common/SvgDocumentTest.cs index 88a1628deec1c..5eb5483667c79 100644 --- a/dotnet/test/common/SvgDocumentTest.cs +++ b/dotnet/test/common/SvgDocumentTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; namespace OpenQA.Selenium diff --git a/dotnet/test/common/SvgElementTest.cs b/dotnet/test/common/SvgElementTest.cs index c372548f4ed68..fbefdea76a6ea 100644 --- a/dotnet/test/common/SvgElementTest.cs +++ b/dotnet/test/common/SvgElementTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System.Collections.Generic; using System.Collections.ObjectModel; diff --git a/dotnet/test/common/TagNameTest.cs b/dotnet/test/common/TagNameTest.cs index 981df93a94f88..fec7d75d2cc0d 100644 --- a/dotnet/test/common/TagNameTest.cs +++ b/dotnet/test/common/TagNameTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; namespace OpenQA.Selenium diff --git a/dotnet/test/common/TakesScreenshotTest.cs b/dotnet/test/common/TakesScreenshotTest.cs index 2a567336b72b2..6c09b0acfde93 100644 --- a/dotnet/test/common/TakesScreenshotTest.cs +++ b/dotnet/test/common/TakesScreenshotTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/TargetLocatorTest.cs b/dotnet/test/common/TargetLocatorTest.cs index 0adeb85a3300e..7985431a68a1c 100644 --- a/dotnet/test/common/TargetLocatorTest.cs +++ b/dotnet/test/common/TargetLocatorTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System; diff --git a/dotnet/test/common/TestUtilities.cs b/dotnet/test/common/TestUtilities.cs index b3aef80d5be11..73a2a53470b07 100644 --- a/dotnet/test/common/TestUtilities.cs +++ b/dotnet/test/common/TestUtilities.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System; namespace OpenQA.Selenium diff --git a/dotnet/test/common/TextHandlingTest.cs b/dotnet/test/common/TextHandlingTest.cs index 21d39f9bb4eaf..f087f1fbd2346 100644 --- a/dotnet/test/common/TextHandlingTest.cs +++ b/dotnet/test/common/TextHandlingTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/TextPagesTest.cs b/dotnet/test/common/TextPagesTest.cs index 67f01d7ec4e81..b0d55cc4bd834 100644 --- a/dotnet/test/common/TextPagesTest.cs +++ b/dotnet/test/common/TextPagesTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; diff --git a/dotnet/test/common/TimeoutDriverOptionsTest.cs b/dotnet/test/common/TimeoutDriverOptionsTest.cs index 243fb330d1542..dfdadf08becd4 100644 --- a/dotnet/test/common/TimeoutDriverOptionsTest.cs +++ b/dotnet/test/common/TimeoutDriverOptionsTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/TypingTest.cs b/dotnet/test/common/TypingTest.cs index d71fa7db0ad0a..d2290a210fdc7 100644 --- a/dotnet/test/common/TypingTest.cs +++ b/dotnet/test/common/TypingTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/UnexpectedAlertBehaviorTest.cs b/dotnet/test/common/UnexpectedAlertBehaviorTest.cs index a0ccaf1444e20..53f0e0b03bafc 100644 --- a/dotnet/test/common/UnexpectedAlertBehaviorTest.cs +++ b/dotnet/test/common/UnexpectedAlertBehaviorTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/UploadTest.cs b/dotnet/test/common/UploadTest.cs index b87c2bad0b58e..c83363c2a7b98 100644 --- a/dotnet/test/common/UploadTest.cs +++ b/dotnet/test/common/UploadTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; diff --git a/dotnet/test/common/VirtualAuthn/VirtualAuthenticatorTest.cs b/dotnet/test/common/VirtualAuthn/VirtualAuthenticatorTest.cs index c2e85d6dbfd42..a5a8d53d73da4 100644 --- a/dotnet/test/common/VirtualAuthn/VirtualAuthenticatorTest.cs +++ b/dotnet/test/common/VirtualAuthn/VirtualAuthenticatorTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using OpenQA.Selenium.Internal; diff --git a/dotnet/test/common/VisibilityTest.cs b/dotnet/test/common/VisibilityTest.cs index d2b1e0c3edacc..a48e785e95f8b 100644 --- a/dotnet/test/common/VisibilityTest.cs +++ b/dotnet/test/common/VisibilityTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/WebElementTest.cs b/dotnet/test/common/WebElementTest.cs index 4d22fdc49f85d..5da1ec406f1be 100644 --- a/dotnet/test/common/WebElementTest.cs +++ b/dotnet/test/common/WebElementTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; namespace OpenQA.Selenium diff --git a/dotnet/test/common/WindowSwitchingTest.cs b/dotnet/test/common/WindowSwitchingTest.cs index 449c494019f15..b268200710f92 100644 --- a/dotnet/test/common/WindowSwitchingTest.cs +++ b/dotnet/test/common/WindowSwitchingTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/common/WindowTest.cs b/dotnet/test/common/WindowTest.cs index 655681abb53bc..ac8fd10128444 100644 --- a/dotnet/test/common/WindowTest.cs +++ b/dotnet/test/common/WindowTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System; using System.Drawing; diff --git a/dotnet/test/edge/AssemblyTeardown.cs b/dotnet/test/edge/AssemblyTeardown.cs index 659d34e43e28b..6b8c737e61bbe 100644 --- a/dotnet/test/edge/AssemblyTeardown.cs +++ b/dotnet/test/edge/AssemblyTeardown.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; diff --git a/dotnet/test/edge/EdgeSpecificTests.cs b/dotnet/test/edge/EdgeSpecificTests.cs index 7f6cebd74d6c9..641148da85881 100644 --- a/dotnet/test/edge/EdgeSpecificTests.cs +++ b/dotnet/test/edge/EdgeSpecificTests.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; namespace OpenQA.Selenium.Edge diff --git a/dotnet/test/firefox/AssemblyTeardown.cs b/dotnet/test/firefox/AssemblyTeardown.cs index cc2d60764f82b..4e0438f44aca7 100644 --- a/dotnet/test/firefox/AssemblyTeardown.cs +++ b/dotnet/test/firefox/AssemblyTeardown.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; diff --git a/dotnet/test/firefox/FirefoxDriverTest.cs b/dotnet/test/firefox/FirefoxDriverTest.cs index d0dc281af6fa6..0ea48610a235a 100644 --- a/dotnet/test/firefox/FirefoxDriverTest.cs +++ b/dotnet/test/firefox/FirefoxDriverTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/firefox/FirefoxProfileManagerTest.cs b/dotnet/test/firefox/FirefoxProfileManagerTest.cs index 7f2d6770364cc..82833b3e7c035 100644 --- a/dotnet/test/firefox/FirefoxProfileManagerTest.cs +++ b/dotnet/test/firefox/FirefoxProfileManagerTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; namespace OpenQA.Selenium.Firefox diff --git a/dotnet/test/firefox/FirefoxProfileTests.cs b/dotnet/test/firefox/FirefoxProfileTests.cs index 610215e2d9539..3cc64fd2220fc 100644 --- a/dotnet/test/firefox/FirefoxProfileTests.cs +++ b/dotnet/test/firefox/FirefoxProfileTests.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System.Collections.Generic; diff --git a/dotnet/test/ie/AssemblyTeardown.cs b/dotnet/test/ie/AssemblyTeardown.cs index be6dd3954ec8d..d2780925484f3 100644 --- a/dotnet/test/ie/AssemblyTeardown.cs +++ b/dotnet/test/ie/AssemblyTeardown.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; diff --git a/dotnet/test/ie/IeSpecificTests.cs b/dotnet/test/ie/IeSpecificTests.cs index f4f3c2714782f..444bf96096765 100644 --- a/dotnet/test/ie/IeSpecificTests.cs +++ b/dotnet/test/ie/IeSpecificTests.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using OpenQA.Selenium.Interactions; diff --git a/dotnet/test/remote/AssemblyTeardown.cs b/dotnet/test/remote/AssemblyTeardown.cs index ea9b8555324da..a9fc17ea13a2d 100644 --- a/dotnet/test/remote/AssemblyTeardown.cs +++ b/dotnet/test/remote/AssemblyTeardown.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; diff --git a/dotnet/test/remote/ChromeRemoteWebDriver.cs b/dotnet/test/remote/ChromeRemoteWebDriver.cs index 0d5f3375c4f88..b35909e5f3aa2 100644 --- a/dotnet/test/remote/ChromeRemoteWebDriver.cs +++ b/dotnet/test/remote/ChromeRemoteWebDriver.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.Chrome; using System; diff --git a/dotnet/test/remote/EdgeRemoteWebDriver.cs b/dotnet/test/remote/EdgeRemoteWebDriver.cs index af2c8780ffe78..e398d9f2f631d 100644 --- a/dotnet/test/remote/EdgeRemoteWebDriver.cs +++ b/dotnet/test/remote/EdgeRemoteWebDriver.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.Edge; using System; diff --git a/dotnet/test/remote/FirefoxRemoteWebDriver.cs b/dotnet/test/remote/FirefoxRemoteWebDriver.cs index b0119b0bd844b..8bcc4e175c9a4 100644 --- a/dotnet/test/remote/FirefoxRemoteWebDriver.cs +++ b/dotnet/test/remote/FirefoxRemoteWebDriver.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.Firefox; using System; diff --git a/dotnet/test/remote/RemoteSessionCreationTests.cs b/dotnet/test/remote/RemoteSessionCreationTests.cs index 22567b1af90d9..ace8d71120b14 100644 --- a/dotnet/test/remote/RemoteSessionCreationTests.cs +++ b/dotnet/test/remote/RemoteSessionCreationTests.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; namespace OpenQA.Selenium.Remote diff --git a/dotnet/test/remote/RemoteWebDriverSpecificTests.cs b/dotnet/test/remote/RemoteWebDriverSpecificTests.cs index f27e377e4ad86..1462f4cbc8a9e 100644 --- a/dotnet/test/remote/RemoteWebDriverSpecificTests.cs +++ b/dotnet/test/remote/RemoteWebDriverSpecificTests.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using OpenQA.Selenium.IE; diff --git a/dotnet/test/remote/TestInternetExplorerRemoteWebDriver.cs b/dotnet/test/remote/TestInternetExplorerRemoteWebDriver.cs index 71059322bccdb..4f27d00aec229 100644 --- a/dotnet/test/remote/TestInternetExplorerRemoteWebDriver.cs +++ b/dotnet/test/remote/TestInternetExplorerRemoteWebDriver.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using OpenQA.Selenium.IE; using System; diff --git a/dotnet/test/safari/SafariSpecificTests.cs b/dotnet/test/safari/SafariSpecificTests.cs index 83d6f2c7d4142..1c3ae65b7a0fc 100644 --- a/dotnet/test/safari/SafariSpecificTests.cs +++ b/dotnet/test/safari/SafariSpecificTests.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; namespace OpenQA.Selenium.Safari diff --git a/dotnet/test/support/Events/EventFiringWebDriverElementTest.cs b/dotnet/test/support/Events/EventFiringWebDriverElementTest.cs index dccc0d37dad52..fd668df43d92b 100644 --- a/dotnet/test/support/Events/EventFiringWebDriverElementTest.cs +++ b/dotnet/test/support/Events/EventFiringWebDriverElementTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; namespace OpenQA.Selenium.Support.Events diff --git a/dotnet/test/support/Events/EventFiringWebDriverTest.cs b/dotnet/test/support/Events/EventFiringWebDriverTest.cs index 30ba1b23456f3..8623c02b5f07a 100644 --- a/dotnet/test/support/Events/EventFiringWebDriverTest.cs +++ b/dotnet/test/support/Events/EventFiringWebDriverTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using Moq; using NUnit.Framework; using System; diff --git a/dotnet/test/support/Extensions/ExecuteJavaScriptTest.cs b/dotnet/test/support/Extensions/ExecuteJavaScriptTest.cs index 9fe397d86ec31..88f99381f539d 100644 --- a/dotnet/test/support/Extensions/ExecuteJavaScriptTest.cs +++ b/dotnet/test/support/Extensions/ExecuteJavaScriptTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using Moq; using NUnit.Framework; using System.Collections; diff --git a/dotnet/test/support/UI/DefaultWaitTest.cs b/dotnet/test/support/UI/DefaultWaitTest.cs index d929051fc5a2f..311123a2032eb 100644 --- a/dotnet/test/support/UI/DefaultWaitTest.cs +++ b/dotnet/test/support/UI/DefaultWaitTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using Moq; using NUnit.Framework; using System; diff --git a/dotnet/test/support/UI/FakeClock.cs b/dotnet/test/support/UI/FakeClock.cs index 7ced16416d493..fac13d78238c4 100644 --- a/dotnet/test/support/UI/FakeClock.cs +++ b/dotnet/test/support/UI/FakeClock.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using System; namespace OpenQA.Selenium.Support.UI diff --git a/dotnet/test/support/UI/LoadableComponentTests.cs b/dotnet/test/support/UI/LoadableComponentTests.cs index c3d03c8b502ed..cd86498113cbd 100644 --- a/dotnet/test/support/UI/LoadableComponentTests.cs +++ b/dotnet/test/support/UI/LoadableComponentTests.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System; diff --git a/dotnet/test/support/UI/PopupWindowFinderTest.cs b/dotnet/test/support/UI/PopupWindowFinderTest.cs index 23020d1ef0779..bbbf910d15969 100644 --- a/dotnet/test/support/UI/PopupWindowFinderTest.cs +++ b/dotnet/test/support/UI/PopupWindowFinderTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; diff --git a/dotnet/test/support/UI/SelectBrowserTests.cs b/dotnet/test/support/UI/SelectBrowserTests.cs index 531b054047c92..38c1a9d29f933 100644 --- a/dotnet/test/support/UI/SelectBrowserTests.cs +++ b/dotnet/test/support/UI/SelectBrowserTests.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using OpenQA.Selenium.Environment; using System; diff --git a/dotnet/test/support/UI/SelectTests.cs b/dotnet/test/support/UI/SelectTests.cs index 1d9426c553b91..a6ccaf476b491 100644 --- a/dotnet/test/support/UI/SelectTests.cs +++ b/dotnet/test/support/UI/SelectTests.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using Moq; using NUnit.Framework; using System; diff --git a/dotnet/test/support/UI/SlowLoadableComponentTest.cs b/dotnet/test/support/UI/SlowLoadableComponentTest.cs index 9ad4891186e3a..61543e8dd1c43 100644 --- a/dotnet/test/support/UI/SlowLoadableComponentTest.cs +++ b/dotnet/test/support/UI/SlowLoadableComponentTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using NUnit.Framework; using System; diff --git a/dotnet/test/support/UI/WebDriverWaitTest.cs b/dotnet/test/support/UI/WebDriverWaitTest.cs index b6b2be10b56da..cd6995b48130c 100644 --- a/dotnet/test/support/UI/WebDriverWaitTest.cs +++ b/dotnet/test/support/UI/WebDriverWaitTest.cs @@ -1,3 +1,22 @@ +// +// Licensed to the Software Freedom Conservancy (SFC) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The SFC licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. +// + using Moq; using NUnit.Framework; using System; diff --git a/scripts/update_copyright.py b/scripts/update_copyright.py index 9ca241b65789b..e1af49ec80ce2 100755 --- a/scripts/update_copyright.py +++ b/scripts/update_copyright.py @@ -28,13 +28,13 @@ def __init__(self, comment_characters='//', prefix=None): def update(self, files): for file in files: - with open(file, 'r') as f: + with open(file, 'r', encoding='utf-8-sig') as f: lines = f.readlines() index = -1 for i, line in enumerate(lines): if line.startswith(self._comment_characters) or \ - self.valid_copyright_notice_line(line, index): + self.valid_copyright_notice_line(line, index, file): index += 1 else: break @@ -43,20 +43,24 @@ def update(self, files): self.write_update_notice(file, lines) else: current = ''.join(lines[:index + 1]) - if current != self.copyright_notice: + if current != self.copyright_notice(file): self.write_update_notice(file, lines[index + 1:]) - def valid_copyright_notice_line(self, line, index): - return index + 1 < len(self.copyright_notice_lines) and \ - line.startswith(self.copyright_notice_lines[index + 1]) + def valid_copyright_notice_line(self, line, index, file): + return index + 1 < len(self.copyright_notice_lines(file)) and \ + line.startswith(self.copyright_notice_lines(file)[index + 1]) - @property - def copyright_notice(self): - return ''.join(self.copyright_notice_lines) + def copyright_notice(self, file): + return ''.join(self.copyright_notice_lines(file)) - @property - def copyright_notice_lines(self): - return self._prefix + self.commented_notice_lines + def copyright_notice_lines(self, file): + return self.dotnet(file) if file.endswith("cs") else self._prefix + self.commented_notice_lines + + def dotnet(self, file): + file_name = os.path.basename(file) + first = f"{self._comment_characters} \n" + last = f"{self._comment_characters} " + return [first] + self.commented_notice_lines + [last] @property def commented_notice_lines(self): @@ -65,8 +69,11 @@ def commented_notice_lines(self): def write_update_notice(self, file, lines): print(f"Adding notice to {file}") with open(file, 'w') as f: - f.write(self.copyright_notice + "\n") - f.writelines(lines) + f.write(self.copyright_notice(file) + "\n") + if lines and lines[0] != "\n": + f.write("\n") + trimmed_lines = [line.rstrip() + "\n" for line in lines] + f.writelines(trimmed_lines) ROOT = Path(os.path.realpath(__file__)).parent.parent @@ -109,3 +116,4 @@ def update_files(file_pattern, exclusions, comment_characters='//', prefix=None) update_files(f"{ROOT}/rb/**/*.rb", [], comment_characters="#", prefix=["# frozen_string_literal: true\n", "\n"]) update_files(f"{ROOT}/java/**/*.java", []) update_files(f"{ROOT}/rust/**/*.rs", []) + update_files(f"{ROOT}/dotnet/**/*.cs", []) From d5ab5ffcf2bc4a96b1bb578ee0807057340e9d50 Mon Sep 17 00:00:00 2001 From: Ed Manlove Date: Thu, 7 Nov 2024 19:24:25 -0500 Subject: [PATCH 093/135] Cleaned up Py doc sphinx warnings/errors and added README (#14191) - Cleaned up various sphinx build error and warnings - Added py/docs/README.rst leaving some instructions for the next person --- py/docs/README.rst | 71 +++++++++++++++++++ py/selenium/webdriver/chromium/webdriver.py | 6 +- .../webdriver/common/virtual_authenticator.py | 10 +-- .../webdriver/support/relative_locator.py | 9 +-- 4 files changed, 84 insertions(+), 12 deletions(-) create mode 100644 py/docs/README.rst diff --git a/py/docs/README.rst b/py/docs/README.rst new file mode 100644 index 0000000000000..8b58a410e00ff --- /dev/null +++ b/py/docs/README.rst @@ -0,0 +1,71 @@ +========================== +About Python Documentation +========================== + +This directory, ``py/docs``, is the source for the API Reference Documentation +and basic Python documentation as well as the main README for the GitHub and +PyPI package. + + +How to build docs +================= + +One can build the Python documentation without doing a full bazel build. The +following instructions will build the setup a virtual environment and installs tox, clones the +selenium repo and then runs ``tox -c py/tox.ini`` building the Python documentation. + +.. code-block:: console + + virtualenv test-py38-env + source test-py38-env/bin/activate + pip install tox + git clone git@github.com:SeleniumHQ/selenium.git + cd selenium/ + # uncomment and switch to your development branch if needed + #git switch -c feature-branch origin/feature-branch + tox -c py/tox.ini + +Works in similar manner as the larger selenium bazel doing just the python documentation portion. + +What is happening under the covers of tox, sphinx +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +tox is essentially a build tool for Python. Here it setups its own virtualenv and installs the +documentation packages (sphinx and jinja2) as well as the required selenium python +dependencies. Then tox runs the sphinx generate autodoc stub files and then builds the docs. + +Sphinx is .. well a much larger topic then what we could cover here. Most important to say +here is that the docs are using the "classic" theme and than the majority of the api documentation +is autogenerated. There is plenty of information available and currently the documentation is +fairly small and not complex. So some basic understanding of restructed text and the Sphinx tool chain +should be sufficient to contribute and develop the Python docs. + +To clean up the build / tox cache +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Although there is a Sphinx Makefile option to clean up using the tox environment above one can +manually clean the build by deleting the build directory on the root (selenium/build using the +default directory on git clone). Noting that both Sphinx and tox cache parts of their build and +recognize changes to speed up their respective builds. But at times one wants to start fresh +deleting the aformentioned directory will clean the Sphinx cache or removing selenium/py/.tox +directory for cleaning the tox environment. + + +Known documentation issues +========================== +The API Reference primarily builds from the source code. But currently the initial template stating +which modules to document is hard coded within py/docs/source/api.rst. So if modules are added or +removed then the generated docs will be inaccurate. It would be preferred that the API docs generate +soley from the code if possible. This is being tracked in `#14178 `_ + +We are working through the Sphinx build Warnings and Errors trying to clean up botht the syntax and +the build. + +Contributing to Python docs +=========================== +First it is recommended that you read the main `CONTRIBUTING.md `_. + +Some steps for contibuting to the Python documentation .. + +- Check out changes locally using instruction above. +- Try to resolve any warnings/issues. + - If too arduous either ask for help or add to list of known issue. +- If this process is updated please update this doc as well to help the next person. \ No newline at end of file diff --git a/py/selenium/webdriver/chromium/webdriver.py b/py/selenium/webdriver/chromium/webdriver.py index d7bf5c706a453..af563f41672a8 100644 --- a/py/selenium/webdriver/chromium/webdriver.py +++ b/py/selenium/webdriver/chromium/webdriver.py @@ -77,9 +77,9 @@ def launch_app(self, id): def get_network_conditions(self): """Gets Chromium network emulation settings. - :Returns: A dict. For example: {'latency': 4, - 'download_throughput': 2, 'upload_throughput': 2, 'offline': - False} + :Returns: + A dict. + For example: {'latency': 4, 'download_throughput': 2, 'upload_throughput': 2, 'offline': False} """ return self.execute("getNetworkConditions")["value"] diff --git a/py/selenium/webdriver/common/virtual_authenticator.py b/py/selenium/webdriver/common/virtual_authenticator.py index 290a808d6ae3b..cfc467307f923 100644 --- a/py/selenium/webdriver/common/virtual_authenticator.py +++ b/py/selenium/webdriver/common/virtual_authenticator.py @@ -91,11 +91,11 @@ def __init__( :Args: - credential_id (bytes): Unique base64 encoded string. - is_resident_credential (bool): Whether the credential is client-side discoverable. - rp_id (str): Relying party identifier. - user_handle (bytes): userHandle associated to the credential. Must be Base64 encoded string. Can be None. - private_key (bytes): Base64 encoded PKCS#8 private key. - sign_count (int): intital value for a signature counter. + - is_resident_credential (bool): Whether the credential is client-side discoverable. + - rp_id (str): Relying party identifier. + - user_handle (bytes): userHandle associated to the credential. Must be Base64 encoded string. Can be None. + - private_key (bytes): Base64 encoded PKCS#8 private key. + - sign_count (int): intital value for a signature counter. """ self._id = credential_id self._is_resident_credential = is_resident_credential diff --git a/py/selenium/webdriver/support/relative_locator.py b/py/selenium/webdriver/support/relative_locator.py index 3b7766a7de3de..d1ccbc257ac3f 100644 --- a/py/selenium/webdriver/support/relative_locator.py +++ b/py/selenium/webdriver/support/relative_locator.py @@ -32,11 +32,12 @@ def with_tag_name(tag_name: str) -> "RelativeBy": Note: This method may be removed in future versions, please use `locate_with` instead. + :Args: - tag_name: the DOM tag of element to start searching. :Returns: - - RelativeBy - use this object to create filters within a - `find_elements` call. + - RelativeBy: use this object to create filters within a + `find_elements` call. """ if not tag_name: raise WebDriverException("tag_name can not be null") @@ -50,8 +51,8 @@ def locate_with(by: ByType, using: str) -> "RelativeBy": - by: The value from `By` passed in. - using: search term to find the element with. :Returns: - - RelativeBy - use this object to create filters within a - `find_elements` call. + - RelativeBy: use this object to create filters within a + `find_elements` call. """ assert by is not None, "Please pass in a by argument" assert using is not None, "Please pass in a using argument" From 0a9d6899c15e73cec7a9f8b2d6aede48443d0b1c Mon Sep 17 00:00:00 2001 From: Simon Benzer <69980130+shbenzer@users.noreply.github.com> Date: Thu, 7 Nov 2024 19:26:49 -0500 Subject: [PATCH 094/135] Throw Error When Using Unsupported Linux ARM (#14616) --------- Co-authored-by: Puja Jagani Co-authored-by: Viet Nguyen Duc --- java/src/org/openqa/selenium/manager/SeleniumManager.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/java/src/org/openqa/selenium/manager/SeleniumManager.java b/java/src/org/openqa/selenium/manager/SeleniumManager.java index 2c7acdbc9f1b5..f212b2b899d05 100644 --- a/java/src/org/openqa/selenium/manager/SeleniumManager.java +++ b/java/src/org/openqa/selenium/manager/SeleniumManager.java @@ -194,7 +194,11 @@ private synchronized Path getBinary() { } else if (current.is(MAC)) { folder = "macos"; } else if (current.is(LINUX)) { - folder = "linux"; + if (System.getProperty("os.arch").contains("arm")) { + throw new WebDriverException("Linux ARM is not supported by Selenium Manager"); + } else { + folder = "linux"; + } } else if (current.is(UNIX)) { LOG.warning( String.format( From 19a4546431babd16b5b228720ce435517c412865 Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 8 Nov 2024 07:42:47 +0700 Subject: [PATCH 095/135] [java] case insensitive header names in http requests (#14095) --------- Co-authored-by: Diego Molina Co-authored-by: Viet Nguyen Duc --- .../src/org/openqa/selenium/remote/http/HttpMessage.java | 4 ++-- .../openqa/selenium/devtools/ChangeUserAgentTest.java | 4 ++-- .../selenium/remote/http/DumpHttpExchangeFilterTest.java | 4 ++-- .../org/openqa/selenium/remote/http/HttpMessageTest.java | 9 +++++---- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/java/src/org/openqa/selenium/remote/http/HttpMessage.java b/java/src/org/openqa/selenium/remote/http/HttpMessage.java index d8ec4129d4da7..8d388c8de0084 100644 --- a/java/src/org/openqa/selenium/remote/http/HttpMessage.java +++ b/java/src/org/openqa/selenium/remote/http/HttpMessage.java @@ -123,7 +123,7 @@ public String getHeader(String name) { * @return self */ public M setHeader(String name, String value) { - return removeHeader(name).addHeader(name, value); + return removeHeader(name.toLowerCase()).addHeader(name.toLowerCase(), value); } /** @@ -135,7 +135,7 @@ public M setHeader(String name, String value) { * @return self */ public M addHeader(String name, String value) { - headers.computeIfAbsent(name, (n) -> new ArrayList<>()).add(value); + headers.computeIfAbsent(name.toLowerCase(), (n) -> new ArrayList<>()).add(value); return self(); } diff --git a/java/test/org/openqa/selenium/devtools/ChangeUserAgentTest.java b/java/test/org/openqa/selenium/devtools/ChangeUserAgentTest.java index 1572fdc6012dd..e2c6284202b15 100644 --- a/java/test/org/openqa/selenium/devtools/ChangeUserAgentTest.java +++ b/java/test/org/openqa/selenium/devtools/ChangeUserAgentTest.java @@ -48,8 +48,8 @@ public void canChangeUserAgent() { .collect( Collectors.toMap(cells -> cells.get(0).getText(), cells -> cells.get(1).getText())); assertThat(headers) - .containsEntry("User-Agent", "Camembert 1.0") - .containsEntry("Accept-Language", "da, en-gb;q=0.9, *;q=0.8"); + .containsEntry("user-agent", "Camembert 1.0") + .containsEntry("accept-language", "da, en-gb;q=0.9, *;q=0.8"); Object platform = ((JavascriptExecutor) driver).executeScript("return window.navigator.platform"); diff --git a/java/test/org/openqa/selenium/remote/http/DumpHttpExchangeFilterTest.java b/java/test/org/openqa/selenium/remote/http/DumpHttpExchangeFilterTest.java index ef0bb301db21d..9b068d837c175 100644 --- a/java/test/org/openqa/selenium/remote/http/DumpHttpExchangeFilterTest.java +++ b/java/test/org/openqa/selenium/remote/http/DumpHttpExchangeFilterTest.java @@ -34,7 +34,7 @@ void shouldIncludeRequestAndResponseHeaders() { dumpFilter.requestLogMessage( new HttpRequest(GET, "/foo").addHeader("Peas", "and Sausages")); - assertThat(reqLog).contains("Peas"); + assertThat(reqLog).contains("peas"); assertThat(reqLog).contains("and Sausages"); String resLog = @@ -43,7 +43,7 @@ void shouldIncludeRequestAndResponseHeaders() { .addHeader("Cheese", "Brie") .setContent(string("Hello, World!", UTF_8))); - assertThat(resLog).contains("Cheese"); + assertThat(resLog).contains("cheese"); assertThat(resLog).contains("Brie"); } diff --git a/java/test/org/openqa/selenium/remote/http/HttpMessageTest.java b/java/test/org/openqa/selenium/remote/http/HttpMessageTest.java index 61ee108494749..f29876cc78b0c 100644 --- a/java/test/org/openqa/selenium/remote/http/HttpMessageTest.java +++ b/java/test/org/openqa/selenium/remote/http/HttpMessageTest.java @@ -40,8 +40,8 @@ void allHeadersAreAdded() { message.getHeaderNames().forEach(headers::add); - assertThat(headers.contains("Content-Length")).isTrue(); - assertThat(headers.contains("Content-length")).isTrue(); + assertThat(headers.contains("Content-Length")).isFalse(); + assertThat(headers.contains("Content-length")).isFalse(); assertThat(headers.contains("content-length")).isTrue(); } } @@ -54,7 +54,7 @@ void readingIsCaseInsensitive() { message.addHeader("Content-length", "2048"); message.addHeader("content-length", "4096"); - assertThat(message.getHeader("Content-Length")).isEqualTo("4096"); + assertThat(message.getHeader("Content-Length")).isEqualTo("1024"); } } @@ -74,7 +74,8 @@ void replacingIsCaseInsensitive() { assertThat(message.getHeader("content-length")).isEqualTo("8192"); assertThat(headers.contains("Content-Length")).isFalse(); assertThat(headers.contains("Content-length")).isFalse(); - assertThat(headers.contains("content-length")).isFalse(); + assertThat(headers.contains("contenT-length")).isFalse(); + assertThat(headers.contains("content-length")).isTrue(); } } From b4b8aaba2bd3df57cae31164c614aec5f377c443 Mon Sep 17 00:00:00 2001 From: HeeJun <64578367+syber911911@users.noreply.github.com> Date: Fri, 8 Nov 2024 14:36:38 +0900 Subject: [PATCH 096/135] [java] feat: Add method to select options containing the provided text (#14426) --------- Signed-off-by: Viet Nguyen Duc Co-authored-by: syber911911 Co-authored-by: Viet Nguyen Duc --- common/src/web/formPage.html | 6 + .../openqa/selenium/support/ui/ISelect.java | 17 +++ .../openqa/selenium/support/ui/Select.java | 116 +++++++++++++++++- .../support/ui/SelectElementTest.java | 80 ++++++++++++ .../selenium/support/ui/SelectTest.java | 40 ++++++ 5 files changed, 256 insertions(+), 3 deletions(-) diff --git a/common/src/web/formPage.html b/common/src/web/formPage.html index 748e61bcc9d8a..70a31da55cae6 100644 --- a/common/src/web/formPage.html +++ b/common/src/web/formPage.html @@ -80,6 +80,12 @@ + +