diff --git a/resources/testdriver.js b/resources/testdriver.js index e25c8989da2580..e7df7ede41eb97 100644 --- a/resources/testdriver.js +++ b/resources/testdriver.js @@ -973,9 +973,12 @@ * @param {PermissionState} params.state - a `PermissionState * `_ * value. - * @param {string} [params.origin] - an optional `origin` string to set the + * @param {string} [params.origin] - an optional top-level `origin` string to set the * permission for. If omitted, the permission is set for the * current window's origin. + * @param {string} [params.embeddedOrigin] - an optional embedded `origin` string to set the + * permission for. If omitted, the top-level `origin` is used as the + * embedded origin. * @returns {Promise} fulfilled after the permission is set, or rejected if setting * the permission fails. */ diff --git a/tools/wptrunner/wptrunner/executors/asyncactions.py b/tools/wptrunner/wptrunner/executors/asyncactions.py index 783656984c3966..bd27b62f61d0ea 100644 --- a/tools/wptrunner/wptrunner/executors/asyncactions.py +++ b/tools/wptrunner/wptrunner/executors/asyncactions.py @@ -292,9 +292,11 @@ async def __call__(self, payload): descriptor = payload['descriptor'] state = payload['state'] origin = payload['origin'] + embedded_origin = payload.get('embeddedOrigin') return await self.protocol.bidi_permissions.set_permission(descriptor, state, - origin) + origin, + embedded_origin) async_actions = [ diff --git a/tools/wptrunner/wptrunner/executors/executorwebdriver.py b/tools/wptrunner/wptrunner/executors/executorwebdriver.py index b004f007300e6d..5738aa05434d44 100644 --- a/tools/wptrunner/wptrunner/executors/executorwebdriver.py +++ b/tools/wptrunner/wptrunner/executors/executorwebdriver.py @@ -398,9 +398,18 @@ def __init__(self, parent): def setup(self): self.webdriver = self.parent.webdriver - async def set_permission(self, descriptor, state, origin): - return await self.webdriver.bidi_session.permissions.set_permission( - descriptor=descriptor, state=state, origin=origin) + async def set_permission( + self, + descriptor: Dict[str, Any], + state: str, + origin: str, + embedded_origin: Optional[str] = None, + ) -> Any: + params = {"descriptor": descriptor, "state": state, "origin": origin} + if embedded_origin is not None: + params["embeddedOrigin"] = embedded_origin + + return await self.webdriver.bidi_session.permissions.set_permission(**params) class WebDriverBidiWebExtensionsProtocolPart(WebExtensionsProtocolPart): def __init__(self, parent): diff --git a/tools/wptrunner/wptrunner/executors/protocol.py b/tools/wptrunner/wptrunner/executors/protocol.py index bcdcfcc21e737c..d5f9b0bfc4bb89 100644 --- a/tools/wptrunner/wptrunner/executors/protocol.py +++ b/tools/wptrunner/wptrunner/executors/protocol.py @@ -598,7 +598,13 @@ class BidiPermissionsProtocolPart(ProtocolPart): name = "bidi_permissions" @abstractmethod - async def set_permission(self, descriptor, state, origin): + async def set_permission( + self, + descriptor: Dict[str, Any], + state: str, + origin: str, + embedded_origin: Optional[str] = None, + ) -> Any: pass