From 5e422bdae03f1287e5ea3d7af80794e8aa25c919 Mon Sep 17 00:00:00 2001 From: Luke Wilde Date: Tue, 28 Feb 2023 00:20:09 +0000 Subject: [PATCH] LibWeb: Move pdfViewerSupported's answer to Page This will also be accessed by navigator.{plugins,mimeTypes} to determine if they should expose any information. --- Userland/Libraries/LibWeb/HTML/Navigator.cpp | 9 +++++++++ Userland/Libraries/LibWeb/HTML/Navigator.h | 3 +-- Userland/Libraries/LibWeb/Page/Page.h | 8 ++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/Userland/Libraries/LibWeb/HTML/Navigator.cpp b/Userland/Libraries/LibWeb/HTML/Navigator.cpp index c1155874956..67c8fb36afa 100644 --- a/Userland/Libraries/LibWeb/HTML/Navigator.cpp +++ b/Userland/Libraries/LibWeb/HTML/Navigator.cpp @@ -35,6 +35,15 @@ JS::ThrowCompletionOr Navigator::initialize(JS::Realm& realm) return {}; } +// https://html.spec.whatwg.org/multipage/system-state.html#dom-navigator-pdfviewerenabled +bool Navigator::pdf_viewer_enabled() const +{ + // The NavigatorPlugins mixin's pdfViewerEnabled getter steps are to return the user agent's PDF viewer supported. + // NOTE: THe NavigatorPlugins mixin should only be exposed on the Window object. + auto const& window = verify_cast(HTML::current_global_object()); + return window.page()->pdf_viewer_supported(); +} + // https://w3c.github.io/webdriver/#dfn-webdriver bool Navigator::webdriver() const { diff --git a/Userland/Libraries/LibWeb/HTML/Navigator.h b/Userland/Libraries/LibWeb/HTML/Navigator.h index 3f580f04035..9d6123e5ffe 100644 --- a/Userland/Libraries/LibWeb/HTML/Navigator.h +++ b/Userland/Libraries/LibWeb/HTML/Navigator.h @@ -32,12 +32,11 @@ public: bool cookie_enabled() const { return true; } // NavigatorPlugins - // FIXME: Actually support pdf viewing // https://html.spec.whatwg.org/multipage/system-state.html#dom-navigator-javaenabled bool java_enabled() const { return false; } // https://html.spec.whatwg.org/multipage/system-state.html#dom-navigator-pdfviewerenabled - bool pdf_viewer_enabled() const { return false; } + bool pdf_viewer_enabled() const; bool webdriver() const; diff --git a/Userland/Libraries/LibWeb/Page/Page.h b/Userland/Libraries/LibWeb/Page/Page.h index 28579204773..7bd0fbdee44 100644 --- a/Userland/Libraries/LibWeb/Page/Page.h +++ b/Userland/Libraries/LibWeb/Page/Page.h @@ -114,6 +114,8 @@ public: void dismiss_dialog(); void accept_dialog(); + bool pdf_viewer_supported() const { return m_pdf_viewer_supported; } + private: PageClient& m_client; @@ -139,6 +141,12 @@ private: Optional m_pending_alert_response; Optional m_pending_confirm_response; Optional m_pending_prompt_response; + + // https://html.spec.whatwg.org/multipage/system-state.html#pdf-viewer-supported + // Each user agent has a PDF viewer supported boolean, whose value is implementation-defined (and might vary according to user preferences). + // Spec Note: This value also impacts the navigation processing model. + // FIXME: Actually support pdf viewing + bool m_pdf_viewer_supported { false }; }; class PageClient {