commit 9afedeaa9b72cc8ea36dd6549a44c81a06c7ddf1
parent ee8248f82648584f5ef44539d4b6b942a53eccc1
Author: jalonthomas <64996364+jalonthomas@users.noreply.github.com>
Date: Tue, 21 Oct 2025 10:23:07 +0000
Bug 1994436 [wpt PR 55137] - [wdspec] add `embeddedOrigin` to permissions, a=testonly
Automatic update from web-platform-tests
[wdspec] add `embeddedOrigin` to permissions (#55137)
--
wpt-commits: 0a45e46f1b0d839672e6d7b813f8ed2c3ff81880
wpt-pr: 55137
Diffstat:
2 files changed, 59 insertions(+), 5 deletions(-)
diff --git a/testing/web-platform/tests/tools/webdriver/webdriver/bidi/modules/permissions.py b/testing/web-platform/tests/tools/webdriver/webdriver/bidi/modules/permissions.py
@@ -6,15 +6,19 @@ from ._module import BidiModule, command
class Permissions(BidiModule):
@command
- def set_permission(self,
- descriptor: Union[Optional[Mapping[str, Any]], Undefined] = UNDEFINED,
- state: Union[Optional[str], Undefined] = UNDEFINED,
- origin: Union[Optional[str], Undefined] = UNDEFINED,
- user_context: Union[Optional[str], Undefined] = UNDEFINED) -> Mapping[str, Any]:
+ def set_permission(
+ self,
+ descriptor: Union[Optional[Mapping[str, Any]], Undefined] = UNDEFINED,
+ state: Union[Optional[str], Undefined] = UNDEFINED,
+ origin: Union[Optional[str], Undefined] = UNDEFINED,
+ user_context: Union[Optional[str], Undefined] = UNDEFINED,
+ embedded_origin: Union[Optional[str], Undefined] = UNDEFINED,
+ ) -> Mapping[str, Any]:
params: MutableMapping[str, Any] = {
"descriptor": descriptor,
"state": state,
"origin": origin,
"userContext": user_context,
+ "embeddedOrigin": embedded_origin,
}
return params
diff --git a/testing/web-platform/tests/webdriver/tests/bidi/external/permissions/set_permission/set_permission.py b/testing/web-platform/tests/webdriver/tests/bidi/external/permissions/set_permission/set_permission.py
@@ -101,3 +101,53 @@ async def test_set_permission_origin_unknown(bidi_session, new_tab, origin, url)
origin=origin,
)
assert await get_permission_state(bidi_session, new_tab, "geolocation") == "prompt"
+
+
+@pytest.mark.asyncio
+async def test_set_permission_iframe(
+ bidi_session, new_tab, test_page_cross_origin_frame
+):
+ await bidi_session.browsing_context.navigate(
+ context=new_tab["context"],
+ url=test_page_cross_origin_frame,
+ wait="complete",
+ )
+ contexts = await bidi_session.browsing_context.get_tree(root=new_tab["context"])
+
+ frames = contexts[0]["children"]
+ assert len(frames) == 1
+ iframe_context_id = frames[0]["context"]
+ assert iframe_context_id
+ iframe_context = {"context": iframe_context_id}
+ iframe_orgin = await get_context_origin(bidi_session, iframe_context)
+
+ # Ensure the initial permission for the frame is prompt.
+ assert (
+ await get_permission_state(bidi_session, iframe_context, "storage-access")
+ == "prompt"
+ )
+
+ # Set permissions for the top-level context's origin.
+ tab_origin = await get_context_origin(bidi_session, new_tab)
+ await bidi_session.permissions.set_permission(
+ descriptor={"name": "storage-access"},
+ state="prompt",
+ origin=tab_origin,
+ )
+ # Assert the frame's permission is still prompt.
+ assert (
+ await get_permission_state(bidi_session, iframe_context, "storage-access")
+ == "prompt"
+ )
+
+ # Set permissions for the frame's origin.
+ await bidi_session.permissions.set_permission(
+ descriptor={"name": "storage-access"},
+ state="granted",
+ origin=tab_origin,
+ embedded_origin=iframe_orgin,
+ )
+ assert (
+ await get_permission_state(bidi_session, iframe_context, "storage-access")
+ == "granted"
+ )