/* * Copyright (c) 2022, Andrew Kaster * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include #include #include #include #include namespace Web::HTML { class Navigator : public Bindings::PlatformObject , public NavigatorConcurrentHardwareMixin , public NavigatorIDMixin , public NavigatorLanguageMixin , public NavigatorOnLineMixin { WEB_PLATFORM_OBJECT(Navigator, Bindings::PlatformObject); public: static WebIDL::ExceptionOr> create(JS::Realm&); // FIXME: Implement NavigatorContentUtilsMixin // NavigatorCookies // FIXME: Hook up to Agent level state // https://html.spec.whatwg.org/multipage/system-state.html#dom-navigator-cookieenabled bool cookie_enabled() const { return true; } // NavigatorPlugins // https://html.spec.whatwg.org/multipage/system-state.html#dom-navigator-javaenabled bool java_enabled() const { return false; } bool pdf_viewer_enabled() const; bool webdriver() const; JS::ThrowCompletionOr> mime_types(); JS::ThrowCompletionOr> plugins(); virtual ~Navigator() override; protected: virtual void visit_edges(Cell::Visitor&) override; private: explicit Navigator(JS::Realm&); virtual JS::ThrowCompletionOr initialize(JS::Realm&) override; JS::GCPtr m_plugin_array; JS::GCPtr m_mime_type_array; }; }