diff --git a/tools/webdriver/webdriver/bidi/client.py b/tools/webdriver/webdriver/bidi/client.py index 48604c54764b30..8d4e2c44641f66 100644 --- a/tools/webdriver/webdriver/bidi/client.py +++ b/tools/webdriver/webdriver/bidi/client.py @@ -100,6 +100,7 @@ def __init__(self, self.script = modules.Script(self) self.session = modules.Session(self) self.storage = modules.Storage(self) + self.user_agent_client_hints = modules.UserAgentClientHints(self) self.web_extension = modules.WebExtension(self) @property diff --git a/tools/webdriver/webdriver/bidi/modules/__init__.py b/tools/webdriver/webdriver/bidi/modules/__init__.py index 3ed98e259987de..afbb872590c460 100644 --- a/tools/webdriver/webdriver/bidi/modules/__init__.py +++ b/tools/webdriver/webdriver/bidi/modules/__init__.py @@ -10,4 +10,5 @@ from .script import Script from .session import Session from .storage import Storage +from .user_agent_client_hints import UserAgentClientHints from .web_extension import WebExtension diff --git a/tools/webdriver/webdriver/bidi/modules/emulation.py b/tools/webdriver/webdriver/bidi/modules/emulation.py index 0cb532080dc9fc..e7b067f62c73f9 100644 --- a/tools/webdriver/webdriver/bidi/modules/emulation.py +++ b/tools/webdriver/webdriver/bidi/modules/emulation.py @@ -118,19 +118,6 @@ def set_user_agent_override( "userContexts": user_contexts, } - @command - def set_client_hints_override( - self, - client_hints: Nullable[Dict[str, Any]], - contexts: Maybe[List[str]] = UNDEFINED, - user_contexts: Maybe[List[str]] = UNDEFINED, - ) -> Mapping[str, Any]: - return { - "clientHints": client_hints, - "contexts": contexts, - "userContexts": user_contexts, - } - @command def set_network_conditions( self, diff --git a/tools/webdriver/webdriver/bidi/modules/user_agent_client_hints.py b/tools/webdriver/webdriver/bidi/modules/user_agent_client_hints.py new file mode 100644 index 00000000000000..521f5221329854 --- /dev/null +++ b/tools/webdriver/webdriver/bidi/modules/user_agent_client_hints.py @@ -0,0 +1,19 @@ +from typing import Any, Dict, List, Mapping + +from ._module import BidiModule, command +from ..undefined import UNDEFINED, Maybe, Nullable + + +class UserAgentClientHints(BidiModule): + @command + def set_client_hints_override( + self, + client_hints: Nullable[Dict[str, Any]], + contexts: Maybe[List[str]] = UNDEFINED, + user_contexts: Maybe[List[str]] = UNDEFINED, + ) -> Mapping[str, Any]: + return { + "clientHints": client_hints, + "contexts": contexts, + "userContexts": user_contexts, + } diff --git a/webdriver/tests/bidi/external/emulation/set_client_hints_override/__init__.py b/webdriver/tests/bidi/external/user_agent_client_hints/set_client_hints_override/__init__.py similarity index 100% rename from webdriver/tests/bidi/external/emulation/set_client_hints_override/__init__.py rename to webdriver/tests/bidi/external/user_agent_client_hints/set_client_hints_override/__init__.py diff --git a/webdriver/tests/bidi/external/emulation/set_client_hints_override/client_hints.py b/webdriver/tests/bidi/external/user_agent_client_hints/set_client_hints_override/client_hints.py similarity index 76% rename from webdriver/tests/bidi/external/emulation/set_client_hints_override/client_hints.py rename to webdriver/tests/bidi/external/user_agent_client_hints/set_client_hints_override/client_hints.py index cc52a2bf8f16e5..785d081c755be1 100644 --- a/webdriver/tests/bidi/external/emulation/set_client_hints_override/client_hints.py +++ b/webdriver/tests/bidi/external/user_agent_client_hints/set_client_hints_override/client_hints.py @@ -9,12 +9,12 @@ async def test_set_override_and_reset(bidi_session, top_context, default_client_hints, assert_client_hints): await assert_client_hints(top_context, default_client_hints) - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( client_hints=SOME_CLIENT_HINTS ) await assert_client_hints(top_context, SOME_CLIENT_HINTS) - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( client_hints=None ) diff --git a/webdriver/tests/bidi/external/emulation/set_client_hints_override/conftest.py b/webdriver/tests/bidi/external/user_agent_client_hints/set_client_hints_override/conftest.py similarity index 100% rename from webdriver/tests/bidi/external/emulation/set_client_hints_override/conftest.py rename to webdriver/tests/bidi/external/user_agent_client_hints/set_client_hints_override/conftest.py diff --git a/webdriver/tests/bidi/external/emulation/set_client_hints_override/contexts.py b/webdriver/tests/bidi/external/user_agent_client_hints/set_client_hints_override/contexts.py similarity index 84% rename from webdriver/tests/bidi/external/emulation/set_client_hints_override/contexts.py rename to webdriver/tests/bidi/external/user_agent_client_hints/set_client_hints_override/contexts.py index 6ea1771df96c1f..e35b0f239ce30a 100644 --- a/webdriver/tests/bidi/external/emulation/set_client_hints_override/contexts.py +++ b/webdriver/tests/bidi/external/user_agent_client_hints/set_client_hints_override/contexts.py @@ -8,7 +8,7 @@ async def test_contexts(bidi_session, new_tab, top_context, default_client_hints, assert_client_hints): # Set client hints override. - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( contexts=[new_tab["context"]], client_hints=SOME_CLIENT_HINTS ) @@ -18,7 +18,7 @@ async def test_contexts(bidi_session, new_tab, top_context, await assert_client_hints(top_context, default_client_hints) # Reset client hints override. - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( contexts=[new_tab["context"]], client_hints=None ) @@ -33,7 +33,7 @@ async def test_multiple_contexts(bidi_session, new_tab, default_client_hints, new_context = await bidi_session.browsing_context.create(type_hint="tab") # Set client hints override - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( contexts=[new_tab["context"], new_context["context"]], client_hints=SOME_CLIENT_HINTS ) @@ -43,7 +43,7 @@ async def test_multiple_contexts(bidi_session, new_tab, default_client_hints, await assert_client_hints(new_context, SOME_CLIENT_HINTS) # Reset client hints override. - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( contexts=[new_tab["context"], new_context["context"]], client_hints=None ) diff --git a/webdriver/tests/bidi/external/emulation/set_client_hints_override/global.py b/webdriver/tests/bidi/external/user_agent_client_hints/set_client_hints_override/global.py similarity index 81% rename from webdriver/tests/bidi/external/emulation/set_client_hints_override/global.py rename to webdriver/tests/bidi/external/user_agent_client_hints/set_client_hints_override/global.py index f38aa44d42f052..c998677595a37f 100644 --- a/webdriver/tests/bidi/external/emulation/set_client_hints_override/global.py +++ b/webdriver/tests/bidi/external/user_agent_client_hints/set_client_hints_override/global.py @@ -14,7 +14,7 @@ async def test_set_override_and_reset_globally(bidi_session, context_in_user_context = await bidi_session.browsing_context.create( user_context=user_context, type_hint="tab") - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( client_hints=SOME_CLIENT_HINTS ) @@ -28,7 +28,7 @@ async def test_set_override_and_reset_globally(bidi_session, SOME_CLIENT_HINTS) # Reset global override. - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( client_hints=None ) @@ -46,14 +46,14 @@ async def test_set_override_and_reset_globally(bidi_session, async def test_set_override_and_reset_globally_and_per_context( bidi_session, top_context, default_client_hints, assert_client_hints): - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( contexts=[top_context["context"]], client_hints=SOME_CLIENT_HINTS ) await assert_client_hints(top_context, SOME_CLIENT_HINTS) # Set global override. - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( client_hints=ANOTHER_CLIENT_HINTS ) @@ -61,7 +61,7 @@ async def test_set_override_and_reset_globally_and_per_context( await assert_client_hints(top_context, SOME_CLIENT_HINTS) # Reset per-context override. - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( contexts=[top_context["context"]], client_hints=None ) @@ -70,7 +70,7 @@ async def test_set_override_and_reset_globally_and_per_context( await assert_client_hints(top_context, ANOTHER_CLIENT_HINTS) # Reset global override. - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( client_hints=None ) @@ -80,14 +80,14 @@ async def test_set_override_and_reset_globally_and_per_context( async def test_set_override_and_reset_globally_and_per_user_context( bidi_session, top_context, default_client_hints, assert_client_hints): - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( user_contexts=["default"], client_hints=SOME_CLIENT_HINTS ) await assert_client_hints(top_context, SOME_CLIENT_HINTS) # Set global override. - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( client_hints=ANOTHER_CLIENT_HINTS ) @@ -95,7 +95,7 @@ async def test_set_override_and_reset_globally_and_per_user_context( await assert_client_hints(top_context, SOME_CLIENT_HINTS) # Reset per user context override. - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( user_contexts=["default"], client_hints=None ) @@ -104,7 +104,7 @@ async def test_set_override_and_reset_globally_and_per_user_context( await assert_client_hints(top_context, ANOTHER_CLIENT_HINTS) # Reset global override. - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( client_hints=None ) diff --git a/webdriver/tests/bidi/external/emulation/set_client_hints_override/invalid.py b/webdriver/tests/bidi/external/user_agent_client_hints/set_client_hints_override/invalid.py similarity index 79% rename from webdriver/tests/bidi/external/emulation/set_client_hints_override/invalid.py rename to webdriver/tests/bidi/external/user_agent_client_hints/set_client_hints_override/invalid.py index f2757020eb3327..17635f3c62a814 100644 --- a/webdriver/tests/bidi/external/emulation/set_client_hints_override/invalid.py +++ b/webdriver/tests/bidi/external/user_agent_client_hints/set_client_hints_override/invalid.py @@ -12,7 +12,7 @@ @pytest.mark.parametrize("value", get_invalid_cases("list")) async def test_params_contexts_invalid_type(bidi_session, value): with pytest.raises(error.InvalidArgumentException): - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( client_hints=SOME_CLIENT_HINTS, contexts=value ) @@ -20,7 +20,7 @@ async def test_params_contexts_invalid_type(bidi_session, value): async def test_params_contexts_empty_list(bidi_session): with pytest.raises(error.InvalidArgumentException): - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( client_hints=SOME_CLIENT_HINTS, contexts=[]) @@ -28,14 +28,14 @@ async def test_params_contexts_empty_list(bidi_session): @pytest.mark.parametrize("value", get_invalid_cases("string")) async def test_params_contexts_entry_invalid_type(bidi_session, value): with pytest.raises(error.InvalidArgumentException): - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( client_hints=SOME_CLIENT_HINTS, contexts=[value]) async def test_params_contexts_entry_invalid_value(bidi_session): with pytest.raises(error.NoSuchFrameException): - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( client_hints=SOME_CLIENT_HINTS, contexts=["_invalid_"], ) @@ -54,7 +54,7 @@ async def test_params_contexts_iframe(bidi_session, new_tab, get_test_page): assert len(frames) == 1 with pytest.raises(error.InvalidArgumentException): - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( client_hints=SOME_CLIENT_HINTS, contexts=[frames[0]["context"]], ) @@ -63,7 +63,7 @@ async def test_params_contexts_iframe(bidi_session, new_tab, get_test_page): @pytest.mark.parametrize("value", get_invalid_cases("list")) async def test_params_user_contexts_invalid_type(bidi_session, value): with pytest.raises(error.InvalidArgumentException): - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( client_hints=SOME_CLIENT_HINTS, user_contexts=value, ) @@ -71,7 +71,7 @@ async def test_params_user_contexts_invalid_type(bidi_session, value): async def test_params_user_contexts_empty_list(bidi_session): with pytest.raises(error.InvalidArgumentException): - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( client_hints=SOME_CLIENT_HINTS, user_contexts=[], ) @@ -80,7 +80,7 @@ async def test_params_user_contexts_empty_list(bidi_session): @pytest.mark.parametrize("value", get_invalid_cases("string")) async def test_params_user_contexts_entry_invalid_type(bidi_session, value): with pytest.raises(error.InvalidArgumentException): - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( client_hints=SOME_CLIENT_HINTS, user_contexts=[value], ) @@ -89,7 +89,7 @@ async def test_params_user_contexts_entry_invalid_type(bidi_session, value): @pytest.mark.parametrize("value", ["", "somestring"]) async def test_params_user_contexts_entry_invalid_value(bidi_session, value): with pytest.raises(error.NoSuchUserContextException): - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( client_hints=SOME_CLIENT_HINTS, user_contexts=[value], ) @@ -97,7 +97,7 @@ async def test_params_user_contexts_entry_invalid_value(bidi_session, value): async def test_params_contexts_and_user_contexts(bidi_session, top_context): with pytest.raises(error.InvalidArgumentException): - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( client_hints=SOME_CLIENT_HINTS, contexts=[top_context["context"]], user_contexts=["default"], @@ -106,7 +106,7 @@ async def test_params_contexts_and_user_contexts(bidi_session, top_context): async def test_params_client_hints_missing(bidi_session, top_context): with pytest.raises(error.InvalidArgumentException): - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( client_hints=UNDEFINED, contexts=[top_context["context"]], ) @@ -116,7 +116,7 @@ async def test_params_client_hints_missing(bidi_session, top_context): async def test_params_client_hints_invalid_type(bidi_session, top_context, value): with pytest.raises(error.InvalidArgumentException): - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( client_hints=value, contexts=[top_context["context"]], ) diff --git a/webdriver/tests/bidi/external/emulation/set_client_hints_override/user_contexts.py b/webdriver/tests/bidi/external/user_agent_client_hints/set_client_hints_override/user_contexts.py similarity index 90% rename from webdriver/tests/bidi/external/emulation/set_client_hints_override/user_contexts.py rename to webdriver/tests/bidi/external/user_agent_client_hints/set_client_hints_override/user_contexts.py index 097a113bcb3cb8..f5fda0e740b23c 100644 --- a/webdriver/tests/bidi/external/emulation/set_client_hints_override/user_contexts.py +++ b/webdriver/tests/bidi/external/user_agent_client_hints/set_client_hints_override/user_contexts.py @@ -14,7 +14,7 @@ async def test_user_contexts(bidi_session, create_user_context, new_tab, await assert_client_hints(new_tab, default_client_hints) # Set client hints override - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( user_contexts=[user_context], client_hints=SOME_CLIENT_HINTS) @@ -41,7 +41,7 @@ async def test_set_to_default_user_context(bidi_session, new_tab, user_context=user_context, type_hint="tab" ) - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( user_contexts=["default"], client_hints=SOME_CLIENT_HINTS, ) @@ -59,7 +59,7 @@ async def test_set_to_default_user_context(bidi_session, new_tab, await assert_client_hints(context_in_default_context, SOME_CLIENT_HINTS) # Reset client hints override. - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( user_contexts=["default"], client_hints=None ) @@ -80,7 +80,7 @@ async def test_set_to_multiple_user_contexts(bidi_session, create_user_context, user_context=user_context_2, type_hint="tab" ) # Set client hints override for both user contexts. - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( user_contexts=[user_context_1, user_context_2], client_hints=SOME_CLIENT_HINTS ) @@ -103,13 +103,13 @@ async def test_set_to_user_context_and_then_to_context(bidi_session, ) # Add user context override. - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( user_contexts=[user_context], client_hints=SOME_CLIENT_HINTS ) # Add context override. - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( contexts=[context_in_user_context["context"]], client_hints=ANOTHER_CLIENT_HINTS ) @@ -123,7 +123,7 @@ async def test_set_to_user_context_and_then_to_context(bidi_session, await assert_client_hints(context_in_user_context, ANOTHER_CLIENT_HINTS) # Remove context override. - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( contexts=[context_in_user_context["context"]], client_hints=None ) @@ -138,7 +138,7 @@ async def test_set_to_user_context_and_then_to_context(bidi_session, await assert_client_hints(context_in_user_context, SOME_CLIENT_HINTS) # Remove user context override. - await bidi_session.emulation.set_client_hints_override( + await bidi_session.user_agent_client_hints.set_client_hints_override( user_contexts=[user_context], client_hints=None, )