mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 19:52:45 +00:00 
			
		
		
		
	LibWeb: Port Document interface from DeprecatedString to String
This commit is contained in:
		
							parent
							
								
									9d88e14f20
								
							
						
					
					
						commit
						e74031a396
					
				
					 15 changed files with 108 additions and 96 deletions
				
			
		|  | @ -56,7 +56,7 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<Document>> DOMImplementation::create_docume | ||||||
| 
 | 
 | ||||||
|     // 3. If qualifiedName is not the empty string, then set element to the result of running the internal createElementNS steps, given document, namespace, qualifiedName, and an empty dictionary.
 |     // 3. If qualifiedName is not the empty string, then set element to the result of running the internal createElementNS steps, given document, namespace, qualifiedName, and an empty dictionary.
 | ||||||
|     if (!qualified_name.is_empty()) |     if (!qualified_name.is_empty()) | ||||||
|         element = TRY(xml_document->create_element_ns(namespace_.value().to_deprecated_string(), qualified_name.to_deprecated_string(), ElementCreationOptions {})); |         element = TRY(xml_document->create_element_ns(namespace_.value(), qualified_name, ElementCreationOptions {})); | ||||||
| 
 | 
 | ||||||
|     // 4. If doctype is non-null, append doctype to document.
 |     // 4. If doctype is non-null, append doctype to document.
 | ||||||
|     if (doctype) |     if (doctype) | ||||||
|  | @ -74,13 +74,13 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<Document>> DOMImplementation::create_docume | ||||||
| 
 | 
 | ||||||
|     if (deprecated_namespace == Namespace::HTML) { |     if (deprecated_namespace == Namespace::HTML) { | ||||||
|         // -> HTML namespace
 |         // -> HTML namespace
 | ||||||
|         xml_document->set_content_type("application/xhtml+xml"); |         xml_document->set_content_type("application/xhtml+xml"_string); | ||||||
|     } else if (deprecated_namespace == Namespace::SVG) { |     } else if (deprecated_namespace == Namespace::SVG) { | ||||||
|         // -> SVG namespace
 |         // -> SVG namespace
 | ||||||
|         xml_document->set_content_type("image/svg+xml"); |         xml_document->set_content_type("image/svg+xml"_string); | ||||||
|     } else { |     } else { | ||||||
|         // -> Any other namespace
 |         // -> Any other namespace
 | ||||||
|         xml_document->set_content_type("application/xml"); |         xml_document->set_content_type("application/xml"_string); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // 8. Return document.
 |     // 8. Return document.
 | ||||||
|  | @ -94,7 +94,7 @@ JS::NonnullGCPtr<Document> DOMImplementation::create_html_document(Optional<Stri | ||||||
|     auto html_document = Document::create(realm()); |     auto html_document = Document::create(realm()); | ||||||
| 
 | 
 | ||||||
|     // 2. Set doc’s content type to "text/html".
 |     // 2. Set doc’s content type to "text/html".
 | ||||||
|     html_document->set_content_type("text/html"); |     html_document->set_content_type("text/html"_string); | ||||||
| 
 | 
 | ||||||
|     html_document->set_ready_for_post_load_tasks(true); |     html_document->set_ready_for_post_load_tasks(true); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -257,7 +257,7 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<Document>> Document::create_and_initialize( | ||||||
|     //    and navigation id is navigationParams's id.
 |     //    and navigation id is navigationParams's id.
 | ||||||
|     auto document = HTML::HTMLDocument::create(window->realm()); |     auto document = HTML::HTMLDocument::create(window->realm()); | ||||||
|     document->m_type = type; |     document->m_type = type; | ||||||
|     document->m_content_type = move(content_type); |     document->m_content_type = MUST(String::from_deprecated_string(content_type)); | ||||||
|     document->set_origin(navigation_params.origin); |     document->set_origin(navigation_params.origin); | ||||||
|     document->m_policy_container = navigation_params.policy_container; |     document->m_policy_container = navigation_params.policy_container; | ||||||
|     document->m_active_sandboxing_flag_set = navigation_params.final_sandboxing_flag_set; |     document->m_active_sandboxing_flag_set = navigation_params.final_sandboxing_flag_set; | ||||||
|  | @ -410,7 +410,7 @@ JS::GCPtr<Selection::Selection> Document::get_selection() const | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-document-write
 | // https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-document-write
 | ||||||
| WebIDL::ExceptionOr<void> Document::write(Vector<DeprecatedString> const& strings) | WebIDL::ExceptionOr<void> Document::write(Vector<String> const& strings) | ||||||
| { | { | ||||||
|     StringBuilder builder; |     StringBuilder builder; | ||||||
|     builder.join(""sv, strings); |     builder.join(""sv, strings); | ||||||
|  | @ -419,7 +419,7 @@ WebIDL::ExceptionOr<void> Document::write(Vector<DeprecatedString> const& string | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-document-writeln
 | // https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-document-writeln
 | ||||||
| WebIDL::ExceptionOr<void> Document::writeln(Vector<DeprecatedString> const& strings) | WebIDL::ExceptionOr<void> Document::writeln(Vector<String> const& strings) | ||||||
| { | { | ||||||
|     StringBuilder builder; |     StringBuilder builder; | ||||||
|     builder.join(""sv, strings); |     builder.join(""sv, strings); | ||||||
|  | @ -464,7 +464,7 @@ WebIDL::ExceptionOr<void> Document::run_the_document_write_steps(StringView inpu | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-document-open
 | // https://html.spec.whatwg.org/multipage/dynamic-markup-insertion.html#dom-document-open
 | ||||||
| WebIDL::ExceptionOr<Document*> Document::open(StringView, StringView) | WebIDL::ExceptionOr<Document*> Document::open(Optional<String> const&, Optional<String> const&) | ||||||
| { | { | ||||||
|     // 1. If document is an XML document, then throw an "InvalidStateError" DOMException exception.
 |     // 1. If document is an XML document, then throw an "InvalidStateError" DOMException exception.
 | ||||||
|     if (m_type == Type::XML) |     if (m_type == Type::XML) | ||||||
|  | @ -720,7 +720,7 @@ DeprecatedString Document::title() const | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // https://html.spec.whatwg.org/multipage/dom.html#document.title
 | // https://html.spec.whatwg.org/multipage/dom.html#document.title
 | ||||||
| WebIDL::ExceptionOr<void> Document::set_title(DeprecatedString const& title) | WebIDL::ExceptionOr<void> Document::set_title(String const& title) | ||||||
| { | { | ||||||
|     auto* document_element = this->document_element(); |     auto* document_element = this->document_element(); | ||||||
| 
 | 
 | ||||||
|  | @ -744,7 +744,7 @@ WebIDL::ExceptionOr<void> Document::set_title(DeprecatedString const& title) | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         // 3. String replace all with the given value within element.
 |         // 3. String replace all with the given value within element.
 | ||||||
|         element->string_replace_all(title); |         element->string_replace_all(title.to_deprecated_string()); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // -> If the document element is in the HTML namespace
 |     // -> If the document element is in the HTML namespace
 | ||||||
|  | @ -773,7 +773,7 @@ WebIDL::ExceptionOr<void> Document::set_title(DeprecatedString const& title) | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         // 4. String replace all with the given value within element.
 |         // 4. String replace all with the given value within element.
 | ||||||
|         element->string_replace_all(title); |         element->string_replace_all(title.to_deprecated_string()); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // -> Otherwise
 |     // -> Otherwise
 | ||||||
|  | @ -784,7 +784,7 @@ WebIDL::ExceptionOr<void> Document::set_title(DeprecatedString const& title) | ||||||
| 
 | 
 | ||||||
|     if (auto* page = this->page()) { |     if (auto* page = this->page()) { | ||||||
|         if (browsing_context() == &page->top_level_browsing_context()) |         if (browsing_context() == &page->top_level_browsing_context()) | ||||||
|             page->client().page_did_change_title(title); |             page->client().page_did_change_title(title.to_deprecated_string()); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     return {}; |     return {}; | ||||||
|  | @ -1182,10 +1182,11 @@ void Document::set_hovered_node(Node* node) | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| JS::NonnullGCPtr<HTMLCollection> Document::get_elements_by_name(DeprecatedString const& name) | JS::NonnullGCPtr<HTMLCollection> Document::get_elements_by_name(String const& name) | ||||||
| { | { | ||||||
|     return HTMLCollection::create(*this, HTMLCollection::Scope::Descendants, [name](Element const& element) { |     auto deprecated_name = name.to_deprecated_string(); | ||||||
|         return element.name() == name; |     return HTMLCollection::create(*this, HTMLCollection::Scope::Descendants, [deprecated_name](Element const& element) { | ||||||
|  |         return element.name() == deprecated_name; | ||||||
|     }); |     }); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -1359,14 +1360,12 @@ void Document::evaluate_javascript_url(StringView url) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // https://dom.spec.whatwg.org/#dom-document-createelement
 | // https://dom.spec.whatwg.org/#dom-document-createelement
 | ||||||
| WebIDL::ExceptionOr<JS::NonnullGCPtr<Element>> Document::create_element(DeprecatedString const& a_local_name, Variant<DeprecatedString, ElementCreationOptions> const& options) | WebIDL::ExceptionOr<JS::NonnullGCPtr<Element>> Document::create_element(String const& a_local_name, Variant<String, ElementCreationOptions> const& options) | ||||||
| { | { | ||||||
|     auto& vm = this->vm(); |     auto local_name = a_local_name.to_deprecated_string(); | ||||||
| 
 |  | ||||||
|     auto local_name = a_local_name; |  | ||||||
| 
 | 
 | ||||||
|     // 1. If localName does not match the Name production, then throw an "InvalidCharacterError" DOMException.
 |     // 1. If localName does not match the Name production, then throw an "InvalidCharacterError" DOMException.
 | ||||||
|     if (!is_valid_name(local_name)) |     if (!is_valid_name(a_local_name)) | ||||||
|         return WebIDL::InvalidCharacterError::create(realm(), "Invalid character in tag name."_fly_string); |         return WebIDL::InvalidCharacterError::create(realm(), "Invalid character in tag name."_fly_string); | ||||||
| 
 | 
 | ||||||
|     // 2. If this is an HTML document, then set localName to localName in ASCII lowercase.
 |     // 2. If this is an HTML document, then set localName to localName in ASCII lowercase.
 | ||||||
|  | @ -1379,8 +1378,8 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<Element>> Document::create_element(Deprecat | ||||||
|     // 4. If options is a dictionary and options["is"] exists, then set is to it.
 |     // 4. If options is a dictionary and options["is"] exists, then set is to it.
 | ||||||
|     if (options.has<ElementCreationOptions>()) { |     if (options.has<ElementCreationOptions>()) { | ||||||
|         auto const& element_creation_options = options.get<ElementCreationOptions>(); |         auto const& element_creation_options = options.get<ElementCreationOptions>(); | ||||||
|         if (!element_creation_options.is.is_null()) |         if (element_creation_options.is.has_value()) | ||||||
|             is_value = TRY_OR_THROW_OOM(vm, String::from_deprecated_string(element_creation_options.is)); |             is_value = element_creation_options.is.value(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // 5. Let namespace be the HTML namespace, if this is an HTML document or this’s content type is "application/xhtml+xml"; otherwise null.
 |     // 5. Let namespace be the HTML namespace, if this is an HTML document or this’s content type is "application/xhtml+xml"; otherwise null.
 | ||||||
|  | @ -1394,12 +1393,15 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<Element>> Document::create_element(Deprecat | ||||||
| 
 | 
 | ||||||
| // https://dom.spec.whatwg.org/#dom-document-createelementns
 | // https://dom.spec.whatwg.org/#dom-document-createelementns
 | ||||||
| // https://dom.spec.whatwg.org/#internal-createelementns-steps
 | // https://dom.spec.whatwg.org/#internal-createelementns-steps
 | ||||||
| WebIDL::ExceptionOr<JS::NonnullGCPtr<Element>> Document::create_element_ns(DeprecatedString const& namespace_, DeprecatedString const& qualified_name, Variant<DeprecatedString, ElementCreationOptions> const& options) | WebIDL::ExceptionOr<JS::NonnullGCPtr<Element>> Document::create_element_ns(Optional<String> const& namespace_, String const& qualified_name, Variant<String, ElementCreationOptions> const& options) | ||||||
| { | { | ||||||
|     auto& vm = this->vm(); |     // FIXME: This conversion is ugly
 | ||||||
|  |     StringView namespace_view; | ||||||
|  |     if (namespace_.has_value()) | ||||||
|  |         namespace_view = namespace_->bytes_as_string_view(); | ||||||
| 
 | 
 | ||||||
|     // 1. Let namespace, prefix, and localName be the result of passing namespace and qualifiedName to validate and extract.
 |     // 1. Let namespace, prefix, and localName be the result of passing namespace and qualifiedName to validate and extract.
 | ||||||
|     auto extracted_qualified_name = TRY(validate_and_extract(realm(), namespace_, qualified_name)); |     auto extracted_qualified_name = TRY(validate_and_extract(realm(), namespace_view, qualified_name.to_deprecated_string())); | ||||||
| 
 | 
 | ||||||
|     // 2. Let is be null.
 |     // 2. Let is be null.
 | ||||||
|     Optional<String> is_value; |     Optional<String> is_value; | ||||||
|  | @ -1407,8 +1409,8 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<Element>> Document::create_element_ns(Depre | ||||||
|     // 3. If options is a dictionary and options["is"] exists, then set is to it.
 |     // 3. If options is a dictionary and options["is"] exists, then set is to it.
 | ||||||
|     if (options.has<ElementCreationOptions>()) { |     if (options.has<ElementCreationOptions>()) { | ||||||
|         auto const& element_creation_options = options.get<ElementCreationOptions>(); |         auto const& element_creation_options = options.get<ElementCreationOptions>(); | ||||||
|         if (!element_creation_options.is.is_null()) |         if (element_creation_options.is.has_value()) | ||||||
|             is_value = TRY_OR_THROW_OOM(vm, String::from_deprecated_string(element_creation_options.is)); |             is_value = element_creation_options.is.value(); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     // 4. Return the result of creating an element given document, localName, namespace, prefix, is, and with the synchronous custom elements flag set.
 |     // 4. Return the result of creating an element given document, localName, namespace, prefix, is, and with the synchronous custom elements flag set.
 | ||||||
|  | @ -1420,25 +1422,25 @@ JS::NonnullGCPtr<DocumentFragment> Document::create_document_fragment() | ||||||
|     return heap().allocate<DocumentFragment>(realm(), *this); |     return heap().allocate<DocumentFragment>(realm(), *this); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| JS::NonnullGCPtr<Text> Document::create_text_node(DeprecatedString const& data) | JS::NonnullGCPtr<Text> Document::create_text_node(String const& data) | ||||||
| { | { | ||||||
|     return heap().allocate<Text>(realm(), *this, MUST(String::from_deprecated_string(data))); |     return heap().allocate<Text>(realm(), *this, data); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| JS::NonnullGCPtr<Comment> Document::create_comment(DeprecatedString const& data) | JS::NonnullGCPtr<Comment> Document::create_comment(String const& data) | ||||||
| { | { | ||||||
|     return heap().allocate<Comment>(realm(), *this, MUST(String::from_deprecated_string(data))); |     return heap().allocate<Comment>(realm(), *this, data); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // https://dom.spec.whatwg.org/#dom-document-createprocessinginstruction
 | // https://dom.spec.whatwg.org/#dom-document-createprocessinginstruction
 | ||||||
| WebIDL::ExceptionOr<JS::NonnullGCPtr<ProcessingInstruction>> Document::create_processing_instruction(DeprecatedString const& target, DeprecatedString const& data) | WebIDL::ExceptionOr<JS::NonnullGCPtr<ProcessingInstruction>> Document::create_processing_instruction(String const& target, String const& data) | ||||||
| { | { | ||||||
|     // FIXME: 1. If target does not match the Name production, then throw an "InvalidCharacterError" DOMException.
 |     // FIXME: 1. If target does not match the Name production, then throw an "InvalidCharacterError" DOMException.
 | ||||||
| 
 | 
 | ||||||
|     // FIXME: 2. If data contains the string "?>", then throw an "InvalidCharacterError" DOMException.
 |     // FIXME: 2. If data contains the string "?>", then throw an "InvalidCharacterError" DOMException.
 | ||||||
| 
 | 
 | ||||||
|     // 3. Return a new ProcessingInstruction node, with target set to target, data set to data, and node document set to this.
 |     // 3. Return a new ProcessingInstruction node, with target set to target, data set to data, and node document set to this.
 | ||||||
|     return heap().allocate<ProcessingInstruction>(realm(), *this, data, target); |     return heap().allocate<ProcessingInstruction>(realm(), *this, data.to_deprecated_string(), target.to_deprecated_string()); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| JS::NonnullGCPtr<Range> Document::create_range() | JS::NonnullGCPtr<Range> Document::create_range() | ||||||
|  | @ -1447,7 +1449,7 @@ JS::NonnullGCPtr<Range> Document::create_range() | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // https://dom.spec.whatwg.org/#dom-document-createevent
 | // https://dom.spec.whatwg.org/#dom-document-createevent
 | ||||||
| WebIDL::ExceptionOr<JS::NonnullGCPtr<Event>> Document::create_event(DeprecatedString const& interface) | WebIDL::ExceptionOr<JS::NonnullGCPtr<Event>> Document::create_event(StringView interface) | ||||||
| { | { | ||||||
|     auto& realm = this->realm(); |     auto& realm = this->realm(); | ||||||
| 
 | 
 | ||||||
|  | @ -2242,7 +2244,7 @@ static inline bool is_valid_name_character(u32 code_point) | ||||||
|         || (code_point >= 0x203f && code_point <= 0x2040); |         || (code_point >= 0x203f && code_point <= 0x2040); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| bool Document::is_valid_name(DeprecatedString const& name) | bool Document::is_valid_name(String const& name) | ||||||
| { | { | ||||||
|     auto code_points = Utf8View { name }; |     auto code_points = Utf8View { name }; | ||||||
|     auto it = code_points.begin(); |     auto it = code_points.begin(); | ||||||
|  | @ -2491,7 +2493,7 @@ DeprecatedString Document::domain() const | ||||||
|     return URLParser::serialize_host(effective_domain.release_value()).release_value_but_fixme_should_propagate_errors().to_deprecated_string(); |     return URLParser::serialize_host(effective_domain.release_value()).release_value_but_fixme_should_propagate_errors().to_deprecated_string(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void Document::set_domain(DeprecatedString const& domain) | void Document::set_domain(String const& domain) | ||||||
| { | { | ||||||
|     dbgln("(STUBBED) Document::set_domain(domain='{}')", domain); |     dbgln("(STUBBED) Document::set_domain(domain='{}')", domain); | ||||||
| } | } | ||||||
|  | @ -2919,7 +2921,7 @@ void Document::did_stop_being_active_document_in_browsing_context(Badge<HTML::Br | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // https://w3c.github.io/editing/docs/execCommand/#querycommandsupported()
 | // https://w3c.github.io/editing/docs/execCommand/#querycommandsupported()
 | ||||||
| bool Document::query_command_supported(DeprecatedString const& command) const | bool Document::query_command_supported(String const& command) const | ||||||
| { | { | ||||||
|     dbgln("(STUBBED) Document::query_command_supported(command='{}')", command); |     dbgln("(STUBBED) Document::query_command_supported(command='{}')", command); | ||||||
|     return false; |     return false; | ||||||
|  | @ -2981,7 +2983,7 @@ DeprecatedString Document::dump_accessibility_tree_as_json() | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // https://dom.spec.whatwg.org/#dom-document-createattribute
 | // https://dom.spec.whatwg.org/#dom-document-createattribute
 | ||||||
| WebIDL::ExceptionOr<JS::NonnullGCPtr<Attr>> Document::create_attribute(DeprecatedString const& local_name) | WebIDL::ExceptionOr<JS::NonnullGCPtr<Attr>> Document::create_attribute(String const& local_name) | ||||||
| { | { | ||||||
|     // 1. If localName does not match the Name production in XML, then throw an "InvalidCharacterError" DOMException.
 |     // 1. If localName does not match the Name production in XML, then throw an "InvalidCharacterError" DOMException.
 | ||||||
|     if (!is_valid_name(local_name)) |     if (!is_valid_name(local_name)) | ||||||
|  | @ -2989,14 +2991,20 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<Attr>> Document::create_attribute(Deprecate | ||||||
| 
 | 
 | ||||||
|     // 2. If this is an HTML document, then set localName to localName in ASCII lowercase.
 |     // 2. If this is an HTML document, then set localName to localName in ASCII lowercase.
 | ||||||
|     // 3. Return a new attribute whose local name is localName and node document is this.
 |     // 3. Return a new attribute whose local name is localName and node document is this.
 | ||||||
|     return Attr::create(*this, is_html_document() ? local_name.to_lowercase() : local_name); |     auto deprecated_local_name = local_name.to_deprecated_string(); | ||||||
|  |     return Attr::create(*this, is_html_document() ? deprecated_local_name.to_lowercase() : deprecated_local_name); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // https://dom.spec.whatwg.org/#dom-document-createattributens
 | // https://dom.spec.whatwg.org/#dom-document-createattributens
 | ||||||
| WebIDL::ExceptionOr<JS::NonnullGCPtr<Attr>> Document::create_attribute_ns(DeprecatedString const& namespace_, DeprecatedString const& qualified_name) | WebIDL::ExceptionOr<JS::NonnullGCPtr<Attr>> Document::create_attribute_ns(Optional<String> const& namespace_, String const& qualified_name) | ||||||
| { | { | ||||||
|  |     // FIXME: This conversion is ugly
 | ||||||
|  |     StringView namespace_view; | ||||||
|  |     if (namespace_.has_value()) | ||||||
|  |         namespace_view = namespace_->bytes_as_string_view(); | ||||||
|  | 
 | ||||||
|     // 1. Let namespace, prefix, and localName be the result of passing namespace and qualifiedName to validate and extract.
 |     // 1. Let namespace, prefix, and localName be the result of passing namespace and qualifiedName to validate and extract.
 | ||||||
|     auto extracted_qualified_name = TRY(validate_and_extract(realm(), namespace_, qualified_name)); |     auto extracted_qualified_name = TRY(validate_and_extract(realm(), namespace_view, qualified_name.to_deprecated_string())); | ||||||
| 
 | 
 | ||||||
|     // 2. Return a new attribute whose namespace is namespace, namespace prefix is prefix, local name is localName, and node document is this.
 |     // 2. Return a new attribute whose namespace is namespace, namespace prefix is prefix, local name is localName, and node document is this.
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -70,7 +70,7 @@ struct DocumentUnloadTimingInfo { | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| struct ElementCreationOptions { | struct ElementCreationOptions { | ||||||
|     DeprecatedString is; |     Optional<String> is; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| enum class PolicyControlledFeature { | enum class PolicyControlledFeature { | ||||||
|  | @ -173,7 +173,7 @@ public: | ||||||
|     WebIDL::ExceptionOr<void> set_body(HTML::HTMLElement* new_body); |     WebIDL::ExceptionOr<void> set_body(HTML::HTMLElement* new_body); | ||||||
| 
 | 
 | ||||||
|     DeprecatedString title() const; |     DeprecatedString title() const; | ||||||
|     WebIDL::ExceptionOr<void> set_title(DeprecatedString const&); |     WebIDL::ExceptionOr<void> set_title(String const&); | ||||||
| 
 | 
 | ||||||
|     HTML::BrowsingContext* browsing_context() { return m_browsing_context.ptr(); } |     HTML::BrowsingContext* browsing_context() { return m_browsing_context.ptr(); } | ||||||
|     HTML::BrowsingContext const* browsing_context() const { return m_browsing_context.ptr(); } |     HTML::BrowsingContext const* browsing_context() const { return m_browsing_context.ptr(); } | ||||||
|  | @ -216,7 +216,7 @@ public: | ||||||
|     void schedule_style_update(); |     void schedule_style_update(); | ||||||
|     void schedule_layout_update(); |     void schedule_layout_update(); | ||||||
| 
 | 
 | ||||||
|     JS::NonnullGCPtr<HTMLCollection> get_elements_by_name(DeprecatedString const&); |     JS::NonnullGCPtr<HTMLCollection> get_elements_by_name(String const&); | ||||||
|     JS::NonnullGCPtr<HTMLCollection> get_elements_by_class_name(StringView); |     JS::NonnullGCPtr<HTMLCollection> get_elements_by_class_name(StringView); | ||||||
| 
 | 
 | ||||||
|     JS::NonnullGCPtr<HTMLCollection> applets(); |     JS::NonnullGCPtr<HTMLCollection> applets(); | ||||||
|  | @ -237,17 +237,17 @@ public: | ||||||
|     void navigate_to_javascript_url(StringView url); |     void navigate_to_javascript_url(StringView url); | ||||||
|     void evaluate_javascript_url(StringView url); |     void evaluate_javascript_url(StringView url); | ||||||
| 
 | 
 | ||||||
|     WebIDL::ExceptionOr<JS::NonnullGCPtr<Element>> create_element(DeprecatedString const& local_name, Variant<DeprecatedString, ElementCreationOptions> const& options); |     WebIDL::ExceptionOr<JS::NonnullGCPtr<Element>> create_element(String const& local_name, Variant<String, ElementCreationOptions> const& options); | ||||||
|     WebIDL::ExceptionOr<JS::NonnullGCPtr<Element>> create_element_ns(DeprecatedString const& namespace_, DeprecatedString const& qualified_name, Variant<DeprecatedString, ElementCreationOptions> const& options); |     WebIDL::ExceptionOr<JS::NonnullGCPtr<Element>> create_element_ns(Optional<String> const& namespace_, String const& qualified_name, Variant<String, ElementCreationOptions> const& options); | ||||||
|     JS::NonnullGCPtr<DocumentFragment> create_document_fragment(); |     JS::NonnullGCPtr<DocumentFragment> create_document_fragment(); | ||||||
|     JS::NonnullGCPtr<Text> create_text_node(DeprecatedString const& data); |     JS::NonnullGCPtr<Text> create_text_node(String const& data); | ||||||
|     JS::NonnullGCPtr<Comment> create_comment(DeprecatedString const& data); |     JS::NonnullGCPtr<Comment> create_comment(String const& data); | ||||||
|     WebIDL::ExceptionOr<JS::NonnullGCPtr<ProcessingInstruction>> create_processing_instruction(DeprecatedString const& target, DeprecatedString const& data); |     WebIDL::ExceptionOr<JS::NonnullGCPtr<ProcessingInstruction>> create_processing_instruction(String const& target, String const& data); | ||||||
| 
 | 
 | ||||||
|     WebIDL::ExceptionOr<JS::NonnullGCPtr<Attr>> create_attribute(DeprecatedString const& local_name); |     WebIDL::ExceptionOr<JS::NonnullGCPtr<Attr>> create_attribute(String const& local_name); | ||||||
|     WebIDL::ExceptionOr<JS::NonnullGCPtr<Attr>> create_attribute_ns(DeprecatedString const& namespace_, DeprecatedString const& qualified_name); |     WebIDL::ExceptionOr<JS::NonnullGCPtr<Attr>> create_attribute_ns(Optional<String> const& namespace_, String const& qualified_name); | ||||||
| 
 | 
 | ||||||
|     WebIDL::ExceptionOr<JS::NonnullGCPtr<Event>> create_event(DeprecatedString const& interface); |     WebIDL::ExceptionOr<JS::NonnullGCPtr<Event>> create_event(StringView interface); | ||||||
|     JS::NonnullGCPtr<Range> create_range(); |     JS::NonnullGCPtr<Range> create_range(); | ||||||
| 
 | 
 | ||||||
|     void set_pending_parsing_blocking_script(Badge<HTML::HTMLScriptElement>, HTML::HTMLScriptElement*); |     void set_pending_parsing_blocking_script(Badge<HTML::HTMLScriptElement>, HTML::HTMLScriptElement*); | ||||||
|  | @ -316,28 +316,28 @@ public: | ||||||
| 
 | 
 | ||||||
|     void set_window(HTML::Window&); |     void set_window(HTML::Window&); | ||||||
| 
 | 
 | ||||||
|     WebIDL::ExceptionOr<void> write(Vector<DeprecatedString> const& strings); |     WebIDL::ExceptionOr<void> write(Vector<String> const& strings); | ||||||
|     WebIDL::ExceptionOr<void> writeln(Vector<DeprecatedString> const& strings); |     WebIDL::ExceptionOr<void> writeln(Vector<String> const& strings); | ||||||
| 
 | 
 | ||||||
|     WebIDL::ExceptionOr<Document*> open(StringView = ""sv, StringView = ""sv); |     WebIDL::ExceptionOr<Document*> open(Optional<String> const& = {}, Optional<String> const& = {}); | ||||||
|     WebIDL::ExceptionOr<JS::GCPtr<HTML::WindowProxy>> open(StringView url, StringView name, StringView features); |     WebIDL::ExceptionOr<JS::GCPtr<HTML::WindowProxy>> open(StringView url, StringView name, StringView features); | ||||||
|     WebIDL::ExceptionOr<void> close(); |     WebIDL::ExceptionOr<void> close(); | ||||||
| 
 | 
 | ||||||
|     HTML::Window* default_view() { return m_window.ptr(); } |     HTML::Window* default_view() { return m_window.ptr(); } | ||||||
|     HTML::Window const* default_view() const { return m_window.ptr(); } |     HTML::Window const* default_view() const { return m_window.ptr(); } | ||||||
| 
 | 
 | ||||||
|     DeprecatedString const& content_type() const { return m_content_type; } |     String const& content_type() const { return m_content_type; } | ||||||
|     void set_content_type(DeprecatedString const& content_type) { m_content_type = content_type; } |     void set_content_type(String content_type) { m_content_type = move(content_type); } | ||||||
| 
 | 
 | ||||||
|     bool has_encoding() const { return m_encoding.has_value(); } |     bool has_encoding() const { return m_encoding.has_value(); } | ||||||
|     Optional<DeprecatedString> const& encoding() const { return m_encoding; } |     Optional<String> const& encoding() const { return m_encoding; } | ||||||
|     DeprecatedString encoding_or_default() const { return m_encoding.value_or("UTF-8"); } |     String encoding_or_default() const { return m_encoding.value_or("UTF-8"_string); } | ||||||
|     void set_encoding(Optional<DeprecatedString> const& encoding) { m_encoding = encoding; } |     void set_encoding(Optional<String> encoding) { m_encoding = move(encoding); } | ||||||
| 
 | 
 | ||||||
|     // NOTE: These are intended for the JS bindings
 |     // NOTE: These are intended for the JS bindings
 | ||||||
|     DeprecatedString character_set() const { return encoding_or_default(); } |     String character_set() const { return encoding_or_default(); } | ||||||
|     DeprecatedString charset() const { return encoding_or_default(); } |     String charset() const { return encoding_or_default(); } | ||||||
|     DeprecatedString input_encoding() const { return encoding_or_default(); } |     String input_encoding() const { return encoding_or_default(); } | ||||||
| 
 | 
 | ||||||
|     bool ready_for_post_load_tasks() const { return m_ready_for_post_load_tasks; } |     bool ready_for_post_load_tasks() const { return m_ready_for_post_load_tasks; } | ||||||
|     void set_ready_for_post_load_tasks(bool ready) { m_ready_for_post_load_tasks = ready; } |     void set_ready_for_post_load_tasks(bool ready) { m_ready_for_post_load_tasks = ready; } | ||||||
|  | @ -409,7 +409,7 @@ public: | ||||||
|     void set_is_temporary_document_for_fragment_parsing(Badge<HTML::HTMLParser>) { m_temporary_document_for_fragment_parsing = true; } |     void set_is_temporary_document_for_fragment_parsing(Badge<HTML::HTMLParser>) { m_temporary_document_for_fragment_parsing = true; } | ||||||
|     [[nodiscard]] bool is_temporary_document_for_fragment_parsing() const { return m_temporary_document_for_fragment_parsing; } |     [[nodiscard]] bool is_temporary_document_for_fragment_parsing() const { return m_temporary_document_for_fragment_parsing; } | ||||||
| 
 | 
 | ||||||
|     static bool is_valid_name(DeprecatedString const&); |     static bool is_valid_name(String const&); | ||||||
| 
 | 
 | ||||||
|     struct PrefixAndTagName { |     struct PrefixAndTagName { | ||||||
|         DeprecatedFlyString prefix; |         DeprecatedFlyString prefix; | ||||||
|  | @ -449,7 +449,7 @@ public: | ||||||
|     void set_is_initial_about_blank(bool b) { m_is_initial_about_blank = b; } |     void set_is_initial_about_blank(bool b) { m_is_initial_about_blank = b; } | ||||||
| 
 | 
 | ||||||
|     DeprecatedString domain() const; |     DeprecatedString domain() const; | ||||||
|     void set_domain(DeprecatedString const& domain); |     void set_domain(String const&); | ||||||
| 
 | 
 | ||||||
|     auto& pending_scroll_event_targets() { return m_pending_scroll_event_targets; } |     auto& pending_scroll_event_targets() { return m_pending_scroll_event_targets; } | ||||||
|     auto& pending_scrollend_event_targets() { return m_pending_scrollend_event_targets; } |     auto& pending_scrollend_event_targets() { return m_pending_scrollend_event_targets; } | ||||||
|  | @ -504,7 +504,7 @@ public: | ||||||
| 
 | 
 | ||||||
|     void did_stop_being_active_document_in_browsing_context(Badge<HTML::BrowsingContext>); |     void did_stop_being_active_document_in_browsing_context(Badge<HTML::BrowsingContext>); | ||||||
| 
 | 
 | ||||||
|     bool query_command_supported(DeprecatedString const&) const; |     bool query_command_supported(String const&) const; | ||||||
| 
 | 
 | ||||||
|     DeprecatedString dump_accessibility_tree_as_json(); |     DeprecatedString dump_accessibility_tree_as_json(); | ||||||
| 
 | 
 | ||||||
|  | @ -604,8 +604,8 @@ private: | ||||||
|     JS::GCPtr<Document> m_appropriate_template_contents_owner_document; |     JS::GCPtr<Document> m_appropriate_template_contents_owner_document; | ||||||
| 
 | 
 | ||||||
|     HTML::DocumentReadyState m_readiness { HTML::DocumentReadyState::Loading }; |     HTML::DocumentReadyState m_readiness { HTML::DocumentReadyState::Loading }; | ||||||
|     DeprecatedString m_content_type { "application/xml" }; |     String m_content_type { "application/xml"_string }; | ||||||
|     Optional<DeprecatedString> m_encoding; |     Optional<String> m_encoding; | ||||||
| 
 | 
 | ||||||
|     bool m_ready_for_post_load_tasks { false }; |     bool m_ready_for_post_load_tasks { false }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -23,7 +23,7 @@ | ||||||
| #import <Selection/Selection.idl> | #import <Selection/Selection.idl> | ||||||
| 
 | 
 | ||||||
| // https://dom.spec.whatwg.org/#document | // https://dom.spec.whatwg.org/#document | ||||||
| [Exposed=Window, UseDeprecatedAKString] | [Exposed=Window] | ||||||
| interface Document : Node { | interface Document : Node { | ||||||
|     constructor(); |     constructor(); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -87,7 +87,7 @@ static bool build_text_document(DOM::Document& document, ByteBuffer const& data) | ||||||
|     auto title_element = DOM::create_element(document, HTML::TagNames::title, Namespace::HTML).release_value_but_fixme_should_propagate_errors(); |     auto title_element = DOM::create_element(document, HTML::TagNames::title, Namespace::HTML).release_value_but_fixme_should_propagate_errors(); | ||||||
|     MUST(head_element->append_child(title_element)); |     MUST(head_element->append_child(title_element)); | ||||||
| 
 | 
 | ||||||
|     auto title_text = document.create_text_node(document.url().basename()); |     auto title_text = document.create_text_node(MUST(String::from_deprecated_string(document.url().basename()))); | ||||||
|     MUST(title_element->append_child(title_text)); |     MUST(title_element->append_child(title_text)); | ||||||
| 
 | 
 | ||||||
|     auto body_element = DOM::create_element(document, HTML::TagNames::body, Namespace::HTML).release_value_but_fixme_should_propagate_errors(); |     auto body_element = DOM::create_element(document, HTML::TagNames::body, Namespace::HTML).release_value_but_fixme_should_propagate_errors(); | ||||||
|  | @ -96,7 +96,7 @@ static bool build_text_document(DOM::Document& document, ByteBuffer const& data) | ||||||
|     auto pre_element = DOM::create_element(document, HTML::TagNames::pre, Namespace::HTML).release_value_but_fixme_should_propagate_errors(); |     auto pre_element = DOM::create_element(document, HTML::TagNames::pre, Namespace::HTML).release_value_but_fixme_should_propagate_errors(); | ||||||
|     MUST(body_element->append_child(pre_element)); |     MUST(body_element->append_child(pre_element)); | ||||||
| 
 | 
 | ||||||
|     MUST(pre_element->append_child(document.create_text_node(DeprecatedString::copy(data)))); |     MUST(pre_element->append_child(document.create_text_node(String::from_utf8(StringView { data }).release_value_but_fixme_should_propagate_errors()))); | ||||||
|     return true; |     return true; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -206,13 +206,13 @@ bool parse_document(DOM::Document& document, ByteBuffer const& data) | ||||||
|         parser->run(document.url()); |         parser->run(document.url()); | ||||||
|         return true; |         return true; | ||||||
|     } |     } | ||||||
|     if (mime_type.ends_with("+xml"sv) || mime_type.is_one_of("text/xml", "application/xml")) |     if (mime_type.ends_with_bytes("+xml"sv) || mime_type.is_one_of("text/xml", "application/xml")) | ||||||
|         return build_xml_document(document, data); |         return build_xml_document(document, data); | ||||||
|     if (mime_type.starts_with("image/"sv)) |     if (mime_type.starts_with_bytes("image/"sv)) | ||||||
|         return build_image_document(document, data); |         return build_image_document(document, data); | ||||||
|     if (mime_type.starts_with("video/"sv)) |     if (mime_type.starts_with_bytes("video/"sv)) | ||||||
|         return build_video_document(document); |         return build_video_document(document); | ||||||
|     if (mime_type.starts_with("audio/"sv)) |     if (mime_type.starts_with_bytes("audio/"sv)) | ||||||
|         return build_audio_document(document); |         return build_audio_document(document); | ||||||
|     if (mime_type == "text/plain" || mime_type == "application/json") |     if (mime_type == "text/plain" || mime_type == "application/json") | ||||||
|         return build_text_document(document, data); |         return build_text_document(document, data); | ||||||
|  | @ -236,8 +236,8 @@ JS::GCPtr<DOM::Document> load_document(Optional<HTML::NavigationParams> navigati | ||||||
|     if (navigation_params->response->body()) { |     if (navigation_params->response->body()) { | ||||||
|         auto process_body = [navigation_params, document](ByteBuffer bytes) { |         auto process_body = [navigation_params, document](ByteBuffer bytes) { | ||||||
|             auto extracted_mime_type = navigation_params->response->header_list()->extract_mime_type().release_value_but_fixme_should_propagate_errors(); |             auto extracted_mime_type = navigation_params->response->header_list()->extract_mime_type().release_value_but_fixme_should_propagate_errors(); | ||||||
|             auto mime_type = extracted_mime_type.has_value() ? extracted_mime_type.value().essence().bytes_as_string_view() : StringView {}; |             auto mime_type = extracted_mime_type.has_value() ? extracted_mime_type.value().essence() : String {}; | ||||||
|             document->set_content_type(mime_type); |             document->set_content_type(move(mime_type)); | ||||||
| 
 | 
 | ||||||
|             if (!parse_document(*document, bytes)) { |             if (!parse_document(*document, bytes)) { | ||||||
|                 // FIXME: Load html page with an error if parsing failed.
 |                 // FIXME: Load html page with an error if parsing failed.
 | ||||||
|  |  | ||||||
|  | @ -210,7 +210,7 @@ JS::NonnullGCPtr<BrowsingContext> BrowsingContext::create_a_new_browsing_context | ||||||
|     window->set_associated_document(*document); |     window->set_associated_document(*document); | ||||||
| 
 | 
 | ||||||
|     document->set_quirks_mode(DOM::QuirksMode::Yes); |     document->set_quirks_mode(DOM::QuirksMode::Yes); | ||||||
|     document->set_content_type("text/html"); |     document->set_content_type("text/html"_string); | ||||||
|     document->set_origin(origin); |     document->set_origin(origin); | ||||||
|     document->set_url(AK::URL("about:blank")); |     document->set_url(AK::URL("about:blank")); | ||||||
|     document->set_cross_origin_opener_policy(coop); |     document->set_cross_origin_opener_policy(coop); | ||||||
|  | @ -370,7 +370,7 @@ WebIDL::ExceptionOr<BrowsingContext::BrowsingContextAndDocument> BrowsingContext | ||||||
|     document->set_document_type(DOM::Document::Type::HTML); |     document->set_document_type(DOM::Document::Type::HTML); | ||||||
| 
 | 
 | ||||||
|     // content type: "text/html"
 |     // content type: "text/html"
 | ||||||
|     document->set_content_type("text/html"); |     document->set_content_type("text/html"_string); | ||||||
| 
 | 
 | ||||||
|     // mode: "quirks"
 |     // mode: "quirks"
 | ||||||
|     document->set_quirks_mode(DOM::QuirksMode::Yes); |     document->set_quirks_mode(DOM::QuirksMode::Yes); | ||||||
|  | @ -626,7 +626,7 @@ void BrowsingContext::scroll_to_anchor(DeprecatedString const& fragment) | ||||||
| 
 | 
 | ||||||
|     auto element = document->get_element_by_id(fragment); |     auto element = document->get_element_by_id(fragment); | ||||||
|     if (!element) { |     if (!element) { | ||||||
|         auto candidates = document->get_elements_by_name(fragment); |         auto candidates = document->get_elements_by_name(MUST(String::from_deprecated_string(fragment))); | ||||||
|         for (auto& candidate : candidates->collect_matching_elements()) { |         for (auto& candidate : candidates->collect_matching_elements()) { | ||||||
|             if (is<HTML::HTMLAnchorElement>(*candidate)) { |             if (is<HTML::HTMLAnchorElement>(*candidate)) { | ||||||
|                 element = &verify_cast<HTML::HTMLAnchorElement>(*candidate); |                 element = &verify_cast<HTML::HTMLAnchorElement>(*candidate); | ||||||
|  |  | ||||||
|  | @ -43,7 +43,7 @@ JS::NonnullGCPtr<DOM::Document> DOMParser::parse_from_string(StringView string, | ||||||
|         // -> "text/html"
 |         // -> "text/html"
 | ||||||
|         // 1. Set document's type to "html".
 |         // 1. Set document's type to "html".
 | ||||||
|         document = HTML::HTMLDocument::create(realm(), verify_cast<HTML::Window>(relevant_global_object(*this)).associated_document().url()); |         document = HTML::HTMLDocument::create(realm(), verify_cast<HTML::Window>(relevant_global_object(*this)).associated_document().url()); | ||||||
|         document->set_content_type(Bindings::idl_enum_to_string(type).to_deprecated_string()); |         document->set_content_type(Bindings::idl_enum_to_string(type)); | ||||||
|         document->set_document_type(DOM::Document::Type::HTML); |         document->set_document_type(DOM::Document::Type::HTML); | ||||||
| 
 | 
 | ||||||
|         // 2. Create an HTML parser parser, associated with document.
 |         // 2. Create an HTML parser parser, associated with document.
 | ||||||
|  | @ -57,7 +57,7 @@ JS::NonnullGCPtr<DOM::Document> DOMParser::parse_from_string(StringView string, | ||||||
|     } else { |     } else { | ||||||
|         // -> Otherwise
 |         // -> Otherwise
 | ||||||
|         document = DOM::Document::create(realm(), verify_cast<HTML::Window>(relevant_global_object(*this)).associated_document().url()); |         document = DOM::Document::create(realm(), verify_cast<HTML::Window>(relevant_global_object(*this)).associated_document().url()); | ||||||
|         document->set_content_type(Bindings::idl_enum_to_string(type).to_deprecated_string()); |         document->set_content_type(Bindings::idl_enum_to_string(type)); | ||||||
| 
 | 
 | ||||||
|         // 1. Create an XML parser parse, associated with document, and with XML scripting support disabled.
 |         // 1. Create an XML parser parse, associated with document, and with XML scripting support disabled.
 | ||||||
|         XML::Parser parser(string, { .resolve_external_resource = resolve_xml_resource }); |         XML::Parser parser(string, { .resolve_external_resource = resolve_xml_resource }); | ||||||
|  |  | ||||||
|  | @ -125,7 +125,7 @@ WebIDL::ExceptionOr<void> HTMLElement::set_content_editable(StringView content_e | ||||||
| void HTMLElement::set_inner_text(StringView text) | void HTMLElement::set_inner_text(StringView text) | ||||||
| { | { | ||||||
|     remove_all_children(); |     remove_all_children(); | ||||||
|     MUST(append_child(document().create_text_node(text))); |     MUST(append_child(document().create_text_node(MUST(String::from_utf8(text))))); | ||||||
| 
 | 
 | ||||||
|     set_needs_style_update(true); |     set_needs_style_update(true); | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -346,7 +346,7 @@ void HTMLLinkElement::process_stylesheet_resource(bool success, Fetch::Infrastru | ||||||
|         if (auto charset = deprecated_attribute(HTML::AttributeNames::charset); !charset.is_null()) |         if (auto charset = deprecated_attribute(HTML::AttributeNames::charset); !charset.is_null()) | ||||||
|             encoding = charset; |             encoding = charset; | ||||||
|         else |         else | ||||||
|             encoding = document().encoding_or_default(); |             encoding = document().encoding_or_default().to_deprecated_string(); | ||||||
| 
 | 
 | ||||||
|         auto decoder = TextCodec::decoder_for(encoding); |         auto decoder = TextCodec::decoder_for(encoding); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -290,8 +290,7 @@ void HTMLScriptElement::prepare_script() | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     if (!encoding.has_value()) { |     if (!encoding.has_value()) { | ||||||
|         auto document_encoding = document().encoding_or_default(); |         encoding = document().encoding_or_default(); | ||||||
|         encoding = String::from_deprecated_string(document_encoding).release_value_but_fixme_should_propagate_errors(); |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     VERIFY(encoding.has_value()); |     VERIFY(encoding.has_value()); | ||||||
|  |  | ||||||
|  | @ -136,7 +136,7 @@ HTMLParser::HTMLParser(DOM::Document& document, StringView input, DeprecatedStri | ||||||
|     m_document->set_parser({}, *this); |     m_document->set_parser({}, *this); | ||||||
|     auto standardized_encoding = TextCodec::get_standardized_encoding(encoding); |     auto standardized_encoding = TextCodec::get_standardized_encoding(encoding); | ||||||
|     VERIFY(standardized_encoding.has_value()); |     VERIFY(standardized_encoding.has_value()); | ||||||
|     m_document->set_encoding(standardized_encoding.value()); |     m_document->set_encoding(MUST(String::from_utf8(standardized_encoding.value()))); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| HTMLParser::HTMLParser(DOM::Document& document) | HTMLParser::HTMLParser(DOM::Document& document) | ||||||
|  | @ -3774,7 +3774,7 @@ JS::NonnullGCPtr<HTMLParser> HTMLParser::create_for_scripting(DOM::Document& doc | ||||||
| JS::NonnullGCPtr<HTMLParser> HTMLParser::create_with_uncertain_encoding(DOM::Document& document, ByteBuffer const& input) | JS::NonnullGCPtr<HTMLParser> HTMLParser::create_with_uncertain_encoding(DOM::Document& document, ByteBuffer const& input) | ||||||
| { | { | ||||||
|     if (document.has_encoding()) |     if (document.has_encoding()) | ||||||
|         return document.heap().allocate_without_realm<HTMLParser>(document, input, document.encoding().value()); |         return document.heap().allocate_without_realm<HTMLParser>(document, input, document.encoding().value().to_deprecated_string()); | ||||||
|     auto encoding = run_encoding_sniffing_algorithm(document, input); |     auto encoding = run_encoding_sniffing_algorithm(document, input); | ||||||
|     dbgln_if(HTML_PARSER_DEBUG, "The encoding sniffing algorithm returned encoding '{}'", encoding); |     dbgln_if(HTML_PARSER_DEBUG, "The encoding sniffing algorithm returned encoding '{}'", encoding); | ||||||
|     return document.heap().allocate_without_realm<HTMLParser>(document, input, encoding); |     return document.heap().allocate_without_realm<HTMLParser>(document, input, encoding); | ||||||
|  |  | ||||||
|  | @ -91,7 +91,7 @@ JS::GCPtr<DOM::Document> WindowEnvironmentSettingsObject::responsible_document() | ||||||
| DeprecatedString WindowEnvironmentSettingsObject::api_url_character_encoding() | DeprecatedString WindowEnvironmentSettingsObject::api_url_character_encoding() | ||||||
| { | { | ||||||
|     // Return the current character encoding of window's associated Document.
 |     // Return the current character encoding of window's associated Document.
 | ||||||
|     return m_window->associated_document().encoding_or_default(); |     return m_window->associated_document().encoding_or_default().to_deprecated_string(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // https://html.spec.whatwg.org/multipage/window-object.html#script-settings-for-window-objects:api-base-url
 | // https://html.spec.whatwg.org/multipage/window-object.html#script-settings-for-window-objects:api-base-url
 | ||||||
|  |  | ||||||
|  | @ -326,8 +326,13 @@ void FrameLoader::resource_did_load() | ||||||
|     }; |     }; | ||||||
|     auto document = DOM::Document::create_and_initialize(DOM::Document::Type::HTML, "text/html", move(navigation_params)).release_value_but_fixme_should_propagate_errors(); |     auto document = DOM::Document::create_and_initialize(DOM::Document::Type::HTML, "text/html", move(navigation_params)).release_value_but_fixme_should_propagate_errors(); | ||||||
|     document->set_url(url); |     document->set_url(url); | ||||||
|     document->set_encoding(resource()->encoding()); | 
 | ||||||
|     document->set_content_type(resource()->mime_type()); |     if (resource()->encoding().has_value()) | ||||||
|  |         document->set_encoding(MUST(String::from_deprecated_string(resource()->encoding().value()))); | ||||||
|  |     else | ||||||
|  |         document->set_encoding({}); | ||||||
|  | 
 | ||||||
|  |     document->set_content_type(MUST(String::from_deprecated_string(resource()->mime_type()))); | ||||||
| 
 | 
 | ||||||
|     browsing_context().set_active_document(document); |     browsing_context().set_active_document(document); | ||||||
|     if (auto* page = browsing_context().page()) |     if (auto* page = browsing_context().page()) | ||||||
|  |  | ||||||
|  | @ -324,10 +324,10 @@ void XMLHttpRequest::set_document_response() | ||||||
|         charset = "UTF-8"sv; |         charset = "UTF-8"sv; | ||||||
| 
 | 
 | ||||||
|     // 8. Set document’s encoding to charset.
 |     // 8. Set document’s encoding to charset.
 | ||||||
|     document->set_encoding(charset->to_deprecated_string()); |     document->set_encoding(MUST(String::from_utf8(charset.value()))); | ||||||
| 
 | 
 | ||||||
|     // 9. Set document’s content type to finalMIME.
 |     // 9. Set document’s content type to finalMIME.
 | ||||||
|     document->set_content_type(MUST(final_mine.serialized()).to_deprecated_string()); |     document->set_content_type(MUST(final_mine.serialized())); | ||||||
| 
 | 
 | ||||||
|     // 10. Set document’s URL to xhr’s response’s URL.
 |     // 10. Set document’s URL to xhr’s response’s URL.
 | ||||||
|     document->set_url(m_response->url().value_or({})); |     document->set_url(m_response->url().value_or({})); | ||||||
|  |  | ||||||
|  | @ -146,7 +146,7 @@ void XMLDocumentBuilder::text(StringView data) | ||||||
|         auto string = DeprecatedString::empty(); |         auto string = DeprecatedString::empty(); | ||||||
|         if (!data.is_null()) |         if (!data.is_null()) | ||||||
|             string = data.to_deprecated_string(); |             string = data.to_deprecated_string(); | ||||||
|         auto node = m_document->create_text_node(string); |         auto node = m_document->create_text_node(MUST(String::from_deprecated_string(string))); | ||||||
|         MUST(m_current_node->append_child(node)); |         MUST(m_current_node->append_child(node)); | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | @ -158,7 +158,7 @@ void XMLDocumentBuilder::comment(StringView data) | ||||||
|     auto string = DeprecatedString::empty(); |     auto string = DeprecatedString::empty(); | ||||||
|     if (!data.is_null()) |     if (!data.is_null()) | ||||||
|         string = data.to_deprecated_string(); |         string = data.to_deprecated_string(); | ||||||
|     MUST(m_document->append_child(m_document->create_comment(string))); |     MUST(m_document->append_child(m_document->create_comment(MUST(String::from_deprecated_string(string))))); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void XMLDocumentBuilder::document_end() | void XMLDocumentBuilder::document_end() | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Shannon Booth
						Shannon Booth