浏览代码

LibWeb: Use the task queue to fire "error" events on scripts

Andreas Kling 3 年之前
父节点
当前提交
5356de1c58
共有 1 个文件被更改,包括 7 次插入5 次删除
  1. 7 5
      Userland/Libraries/LibWeb/HTML/HTMLScriptElement.cpp

+ 7 - 5
Userland/Libraries/LibWeb/HTML/HTMLScriptElement.cpp

@@ -243,11 +243,12 @@ void HTMLScriptElement::prepare_script()
     if (has_attribute(HTML::AttributeNames::src)) {
     if (has_attribute(HTML::AttributeNames::src)) {
         // 1. Let src be the value of the element's src attribute.
         // 1. Let src be the value of the element's src attribute.
         auto src = attribute(HTML::AttributeNames::src);
         auto src = attribute(HTML::AttributeNames::src);
-        // FIXME: 2. If src is the empty string, queue a task to fire an event named error at the element, and return.
+        // 2. If src is the empty string, queue a task to fire an event named error at the element, and return.
         if (src.is_empty()) {
         if (src.is_empty()) {
             dbgln("HTMLScriptElement: Refusing to run script because the src attribute is empty.");
             dbgln("HTMLScriptElement: Refusing to run script because the src attribute is empty.");
-            // FIXME: Queue a task to do this.
-            dispatch_event(DOM::Event::create(HTML::EventNames::error));
+            queue_an_element_task(HTML::Task::Source::Unspecified, [this] {
+                dispatch_event(DOM::Event::create(HTML::EventNames::error));
+            });
             return;
             return;
         }
         }
         // 3. Set the element's from an external file flag.
         // 3. Set the element's from an external file flag.
@@ -258,8 +259,9 @@ void HTMLScriptElement::prepare_script()
         // 5. If the previous step failed, queue a task to fire an event named error at the element, and return. Otherwise, let url be the resulting URL record.
         // 5. If the previous step failed, queue a task to fire an event named error at the element, and return. Otherwise, let url be the resulting URL record.
         if (!url.is_valid()) {
         if (!url.is_valid()) {
             dbgln("HTMLScriptElement: Refusing to run script because the src URL '{}' is invalid.", url);
             dbgln("HTMLScriptElement: Refusing to run script because the src URL '{}' is invalid.", url);
-            // FIXME: Queue a task to do this.
-            dispatch_event(DOM::Event::create(HTML::EventNames::error));
+            queue_an_element_task(HTML::Task::Source::Unspecified, [this] {
+                dispatch_event(DOM::Event::create(HTML::EventNames::error));
+            });
             return;
             return;
         }
         }