Bläddra i källkod

LibWeb: Add support HTMLScriptElement.supports

See https://github.com/whatwg/html/commit/33ff054a6caa014f4cce2912c93a19547a2e2717
Luke Wilde 3 år sedan
förälder
incheckning
2f426765a6

+ 6 - 0
Userland/Libraries/LibWeb/HTML/HTMLScriptElement.h

@@ -32,6 +32,12 @@ public:
 
     virtual void inserted() override;
 
+    // https://html.spec.whatwg.org/multipage/scripting.html#dom-script-supports
+    static bool supports(String const& type)
+    {
+        return type.is_one_of("classic", "module");
+    }
+
 private:
     void prepare_script();
     void script_became_ready();

+ 2 - 0
Userland/Libraries/LibWeb/HTML/HTMLScriptElement.idl

@@ -6,6 +6,8 @@ interface HTMLScriptElement : HTMLElement {
     [Reflect] attribute boolean defer;
     [Reflect] attribute DOMString integrity;
 
+    static boolean supports(DOMString type);
+
     [Reflect] attribute DOMString charset;
     [Reflect] attribute DOMString event;
     [Reflect=for] attribute DOMString htmlFor;

+ 25 - 0
Userland/Libraries/LibWeb/Tests/HTML/HTMLScriptElement.supports.js

@@ -0,0 +1,25 @@
+describe("HTMLScriptElement.supports", () => {
+    loadLocalPage("/res/html/misc/blank.html");
+
+    afterInitialPageLoad(page => {
+        test("length is 1", () => {
+            expect(page.HTMLScriptElement.supports).toHaveLength(1);
+        });
+
+        test("Basic functionality", () => {
+            expect(page.HTMLScriptElement.supports("classic")).toBeTrue();
+            expect(page.HTMLScriptElement.supports("module")).toBeTrue();
+            expect(page.HTMLScriptElement.supports("abc")).toBeFalse();
+
+            // Is case sensitive.
+            expect(page.HTMLScriptElement.supports("Classic")).toBeFalse();
+            expect(page.HTMLScriptElement.supports("Module")).toBeFalse();
+
+            // Doesn't strip whitespace.
+            expect(page.HTMLScriptElement.supports(" classic ")).toBeFalse();
+            expect(page.HTMLScriptElement.supports(" module ")).toBeFalse();
+        });
+    });
+
+    waitForPageToLoad();
+});