فهرست منبع

LibWeb: Move pdfViewerSupported's answer to Page

This will also be accessed by navigator.{plugins,mimeTypes} to
determine if they should expose any information.
Luke Wilde 2 سال پیش
والد
کامیت
5e422bdae0
3فایلهای تغییر یافته به همراه18 افزوده شده و 2 حذف شده
  1. 9 0
      Userland/Libraries/LibWeb/HTML/Navigator.cpp
  2. 1 2
      Userland/Libraries/LibWeb/HTML/Navigator.h
  3. 8 0
      Userland/Libraries/LibWeb/Page/Page.h

+ 9 - 0
Userland/Libraries/LibWeb/HTML/Navigator.cpp

@@ -35,6 +35,15 @@ JS::ThrowCompletionOr<void> Navigator::initialize(JS::Realm& realm)
     return {};
     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::Window>(HTML::current_global_object());
+    return window.page()->pdf_viewer_supported();
+}
+
 // https://w3c.github.io/webdriver/#dfn-webdriver
 // https://w3c.github.io/webdriver/#dfn-webdriver
 bool Navigator::webdriver() const
 bool Navigator::webdriver() const
 {
 {

+ 1 - 2
Userland/Libraries/LibWeb/HTML/Navigator.h

@@ -32,12 +32,11 @@ public:
     bool cookie_enabled() const { return true; }
     bool cookie_enabled() const { return true; }
 
 
     // NavigatorPlugins
     // NavigatorPlugins
-    // FIXME: Actually support pdf viewing
     // https://html.spec.whatwg.org/multipage/system-state.html#dom-navigator-javaenabled
     // https://html.spec.whatwg.org/multipage/system-state.html#dom-navigator-javaenabled
     bool java_enabled() const { return false; }
     bool java_enabled() const { return false; }
 
 
     // https://html.spec.whatwg.org/multipage/system-state.html#dom-navigator-pdfviewerenabled
     // 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;
     bool webdriver() const;
 
 

+ 8 - 0
Userland/Libraries/LibWeb/Page/Page.h

@@ -114,6 +114,8 @@ public:
     void dismiss_dialog();
     void dismiss_dialog();
     void accept_dialog();
     void accept_dialog();
 
 
+    bool pdf_viewer_supported() const { return m_pdf_viewer_supported; }
+
 private:
 private:
     PageClient& m_client;
     PageClient& m_client;
 
 
@@ -139,6 +141,12 @@ private:
     Optional<Empty> m_pending_alert_response;
     Optional<Empty> m_pending_alert_response;
     Optional<bool> m_pending_confirm_response;
     Optional<bool> m_pending_confirm_response;
     Optional<DeprecatedString> m_pending_prompt_response;
     Optional<DeprecatedString> 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 {
 class PageClient {