Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions tools/webdriver/webdriver/bidi/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions tools/webdriver/webdriver/bidi/modules/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
13 changes: 0 additions & 13 deletions tools/webdriver/webdriver/bidi/modules/emulation.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
19 changes: 19 additions & 0 deletions tools/webdriver/webdriver/bidi/modules/user_agent_client_hints.py
Original file line number Diff line number Diff line change
@@ -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,
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
)
Expand All @@ -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
)
Expand All @@ -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
)
Expand All @@ -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
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
)

Expand All @@ -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
)

Expand All @@ -46,22 +46,22 @@ 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
)

# The override per context should still be active.
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
)
Expand All @@ -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
)

Expand All @@ -80,22 +80,22 @@ 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
)

# The override per user context should still be active.
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
)
Expand All @@ -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
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,30 +12,30 @@
@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
)


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=[])


@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_"],
)
Expand All @@ -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"]],
)
Expand All @@ -63,15 +63,15 @@ 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,
)


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=[],
)
Expand All @@ -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],
)
Expand All @@ -89,15 +89,15 @@ 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],
)


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"],
Expand All @@ -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"]],
)
Expand All @@ -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"]],
)
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand All @@ -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,
)
Expand All @@ -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
)
Expand All @@ -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
)
Expand All @@ -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
)
Expand All @@ -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
)
Expand All @@ -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,
)
Expand Down
Loading