LibWeb: Stub Geolocation API
Some checks are pending
CI / macOS, arm64, Sanitizer_CI, Clang (push) Waiting to run
CI / Linux, x86_64, Fuzzers_CI, Clang (push) Waiting to run
CI / Linux, x86_64, Sanitizer_CI, GNU (push) Waiting to run
CI / Linux, x86_64, Sanitizer_CI, Clang (push) Waiting to run
Package the js repl as a binary artifact / macOS, arm64 (push) Waiting to run
Package the js repl as a binary artifact / Linux, x86_64 (push) Waiting to run
Run test262 and test-wasm / run_and_update_results (push) Waiting to run
Lint Code / lint (push) Waiting to run
Label PRs with merge conflicts / auto-labeler (push) Waiting to run
Push notes / build (push) Waiting to run

This commit is contained in:
Jelle Raaijmakers 2025-06-19 15:28:02 +02:00 committed by Jelle Raaijmakers
commit 22bda8e5e2
Notes: github-actions[bot] 2025-06-21 08:01:30 +00:00
25 changed files with 480 additions and 57 deletions

View file

@ -0,0 +1,36 @@
/*
* Copyright (c) 2025, Jelle Raaijmakers <jelle@ladybird.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <LibWeb/Bindings/PlatformObject.h>
#include <LibWeb/WebIDL/Types.h>
namespace Web::Geolocation {
// https://w3c.github.io/geolocation/#dom-positionoptions
struct PositionOptions {
bool enable_high_accuracy { false };
WebIDL::UnsignedLong timeout { 0xFFFFFFFF };
WebIDL::UnsignedLong maximum_age { 0 };
};
// https://w3c.github.io/geolocation/#geolocation_interface
class Geolocation : public Bindings::PlatformObject {
WEB_PLATFORM_OBJECT(Geolocation, Bindings::PlatformObject);
GC_DECLARE_ALLOCATOR(Geolocation);
public:
void get_current_position(GC::Ref<WebIDL::CallbackType>, GC::Ptr<WebIDL::CallbackType>, Optional<PositionOptions>);
WebIDL::Long watch_position(GC::Ref<WebIDL::CallbackType>, GC::Ptr<WebIDL::CallbackType>, Optional<PositionOptions>);
void clear_watch(WebIDL::Long);
private:
Geolocation(JS::Realm&);
virtual void initialize(JS::Realm&) override;
};
}