ladybird/Libraries/LibWeb/PermissionsAPI/Permissions.h
Niccolo Antonelli-Dziri 920bb84fd7 LibWeb: Support Geolocation permission
Add the 'requesting permission to use a powerful feature' algorithm to
PermissionsAPI.
In requesting geolocation, now checks for permission status. UI element
to request permission to the user does not exist yet, and like
previously, defaults to denied.

A few tests pass because they use "geolocation" feature.
2026-05-11 21:01:01 +02:00

42 lines
1.2 KiB
C++

/*
* Copyright (c) 2026, Niccolo Antonelli-Dziri <niccolo.antonelli-dziri@protonmail.com>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/Optional.h>
#include <AK/String.h>
#include <LibJS/Runtime/Realm.h>
#include <LibWeb/Bindings/PermissionStatus.h>
#include <LibWeb/Bindings/PlatformObject.h>
namespace Web::PermissionsAPI {
bool is_permission_supported(String const&);
Bindings::PermissionState permission_state(Bindings::PermissionDescriptor descriptor, Optional<HTML::EnvironmentSettingsObject&> settings = {});
Bindings::PermissionState get_current_permission_state(String const& name, Optional<HTML::EnvironmentSettingsObject&> settings = {});
Bindings::PermissionState request_permission(Bindings::PermissionDescriptor const& descriptor);
class WEB_API Permissions : public Bindings::PlatformObject {
WEB_PLATFORM_OBJECT(Permissions, Bindings::PlatformObject);
GC_DECLARE_ALLOCATOR(Permissions);
public:
static GC::Ref<Permissions> create(JS::Realm&);
GC::Ref<Web::WebIDL::Promise> query(JS::Value permission_desc);
private:
Permissions(JS::Realm&);
virtual void initialize(JS::Realm&) override;
};
void permission_query_algorithm(Bindings::PermissionDescriptor const&, PermissionStatus&);
}