diff --git a/Userland/Libraries/LibWeb/HTML/HTMLObjectElement.cpp b/Userland/Libraries/LibWeb/HTML/HTMLObjectElement.cpp index 6ecac55c9b..eed482c125 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLObjectElement.cpp +++ b/Userland/Libraries/LibWeb/HTML/HTMLObjectElement.cpp @@ -109,7 +109,7 @@ void HTMLObjectElement::resource_did_load() // 4.8. Determine the resource type, as follows: // 1. Let the resource type be unknown. - String resource_type = "unknown"sv; + Optional resource_type; // 2. FIXME: If the user agent is configured to strictly obey Content-Type headers for this resource, and the resource has associated Content-Type metadata, then let the resource type be the type specified in the resource's Content-Type metadata, and jump to the step below labeled handler. // 3. FIXME: If there is a type attribute present on the object element, and that attribute's value is not a type that the user agent supports, but it is a type that a plugin supports, then let the resource type be the type specified in that type attribute, and jump to the step below labeled handler. @@ -135,7 +135,7 @@ void HTMLObjectElement::resource_did_load() // 1. If the attribute's value is a type that a plugin supports, or the attribute's value is a type that starts with "image/" that is not also an XML MIME type, then let the resource type be the type specified in that type attribute. // FIXME: This only partially implements this step. if (type.starts_with("image/"sv)) - resource_type = type; + resource_type = move(type); // 2. Jump to the step below labeled handler. } @@ -158,11 +158,11 @@ void HTMLObjectElement::resource_did_load() // 5. FIXME: If applying the URL parser algorithm to the URL of the specified resource (after any redirects) results in a URL record whose path component matches a pattern that a plugin supports, then let resource type be the type that that plugin can handle. - run_object_representation_handler_steps(resource_type); + run_object_representation_handler_steps(move(resource_type)); } // https://html.spec.whatwg.org/multipage/iframe-embed-object.html#the-object-element:plugin-11 -void HTMLObjectElement::run_object_representation_handler_steps(StringView resource_type) +void HTMLObjectElement::run_object_representation_handler_steps(Optional resource_type) { // 4.9. Handler: Handle the content as given by the first of the following cases that matches: @@ -173,7 +173,7 @@ void HTMLObjectElement::run_object_representation_handler_steps(StringView resou // * If the resource type is an XML MIME type, or if the resource type does not start with "image/" // FIXME: Handle XML MIME types. - if (!resource_type.starts_with("image/"sv)) { + if (resource_type.has_value() && !resource_type->starts_with("image/"sv)) { // If the object element's nested browsing context is null, then create a new nested browsing context for the element. if (!m_nested_browsing_context) create_new_nested_browsing_context(); @@ -189,7 +189,7 @@ void HTMLObjectElement::run_object_representation_handler_steps(StringView resou // * If the resource type starts with "image/", and support for images has not been disabled // FIXME: Handle disabling image support. - else if (resource_type.starts_with("image/"sv)) { + else if (resource_type.has_value() && resource_type->starts_with("image/"sv)) { // FIXME: If the object element's nested browsing context is non-null, then it must be discarded and then set to null. // Apply the image sniffing rules to determine the type of the image. diff --git a/Userland/Libraries/LibWeb/HTML/HTMLObjectElement.h b/Userland/Libraries/LibWeb/HTML/HTMLObjectElement.h index c46da7224a..60ea359d1f 100644 --- a/Userland/Libraries/LibWeb/HTML/HTMLObjectElement.h +++ b/Userland/Libraries/LibWeb/HTML/HTMLObjectElement.h @@ -49,7 +49,7 @@ private: virtual RefPtr create_layout_node(NonnullRefPtr) override; void queue_element_task_to_run_object_representation_steps(); - void run_object_representation_handler_steps(StringView resource_type); + void run_object_representation_handler_steps(Optional resource_type); void run_object_representation_completed_steps(); void run_object_representation_fallback_steps();