Skip to content

Permissions

The permissions module grants or denies browser permissions without user dialogs. For full usage examples, see Permissions.

Methods

set_permission

Grant, deny, or reset a browser permission:

await client.permissions.set_permission(
    descriptor={"name": "geolocation"},
    state="granted",
    origin="https://example.com",
)

Reference

PermissionsModule

Module for managing browser permissions.

Commands
  • set_permission — set a permission state (granted, denied, prompt)
Example

await client.permissions.set_permission( descriptor={"name": "geolocation"}, state="granted", origin="https://example.com", )

Source code in bidiwave/modules/permissions.py
class PermissionsModule:
    """Module for managing browser permissions.

    Commands:
        - set_permission — set a permission state (granted, denied, prompt)

    Example:
        await client.permissions.set_permission(
            descriptor={"name": "geolocation"},
            state="granted",
            origin="https://example.com",
        )
    """

    def __init__(self, connection: Connection) -> None:
        self._connection = connection

    async def set_permission(
        self,
        descriptor: dict[str, Any],
        state: Literal["granted", "denied", "prompt"],
        origin: str,
        embedded_origin: str | None = None,
        user_context: str | None = None,
    ) -> None:
        """Sets the state of a browser permission.

        Args:
            descriptor: Permission descriptor (e.g. {"name": "geolocation"}).
            state: Permission state to set.
            origin: Top-level origin to apply the permission to. Required
                per the W3C Permissions spec.
            embedded_origin: Origin of a document embedded in `origin`
                (optional).
            user_context: User context ID to scope to (optional).
        """
        params: dict[str, Any] = {
            "descriptor": descriptor,
            "state": state,
            "origin": origin,
        }
        if embedded_origin is not None:
            params["embeddedOrigin"] = embedded_origin
        if user_context is not None:
            params["userContext"] = user_context
        await self._connection.send_command(PERMISSIONS_SET, params)

set_permission async

set_permission(descriptor: dict[str, Any], state: Literal['granted', 'denied', 'prompt'], origin: str, embedded_origin: str | None = None, user_context: str | None = None) -> None

Sets the state of a browser permission.

Parameters:

Name Type Description Default
descriptor dict[str, Any]

Permission descriptor (e.g. {"name": "geolocation"}).

required
state Literal['granted', 'denied', 'prompt']

Permission state to set.

required
origin str

Top-level origin to apply the permission to. Required per the W3C Permissions spec.

required
embedded_origin str | None

Origin of a document embedded in origin (optional).

None
user_context str | None

User context ID to scope to (optional).

None
Source code in bidiwave/modules/permissions.py
async def set_permission(
    self,
    descriptor: dict[str, Any],
    state: Literal["granted", "denied", "prompt"],
    origin: str,
    embedded_origin: str | None = None,
    user_context: str | None = None,
) -> None:
    """Sets the state of a browser permission.

    Args:
        descriptor: Permission descriptor (e.g. {"name": "geolocation"}).
        state: Permission state to set.
        origin: Top-level origin to apply the permission to. Required
            per the W3C Permissions spec.
        embedded_origin: Origin of a document embedded in `origin`
            (optional).
        user_context: User context ID to scope to (optional).
    """
    params: dict[str, Any] = {
        "descriptor": descriptor,
        "state": state,
        "origin": origin,
    }
    if embedded_origin is not None:
        params["embeddedOrigin"] = embedded_origin
    if user_context is not None:
        params["userContext"] = user_context
    await self._connection.send_command(PERMISSIONS_SET, params)