mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-06-20 17:21:52 +00:00
LibGC+Everywhere: Factor out a LibGC from LibJS
Resulting in a massive rename across almost everywhere! Alongside the namespace change, we now have the following names: * JS::NonnullGCPtr -> GC::Ref * JS::GCPtr -> GC::Ptr * JS::HeapFunction -> GC::Function * JS::CellImpl -> GC::Cell * JS::Handle -> GC::Root
This commit is contained in:
parent
ce23efc5f6
commit
f87041bf3a
Notes:
github-actions[bot]
2024-11-15 13:50:17 +00:00
Author: https://github.com/shannonbooth
Commit: f87041bf3a
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2345
1722 changed files with 9939 additions and 9906 deletions
|
@ -61,7 +61,7 @@ bool build_xml_document(DOM::Document& document, ByteBuffer const& data, Optiona
|
|||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/document-lifecycle.html#navigate-html
|
||||
static WebIDL::ExceptionOr<JS::NonnullGCPtr<DOM::Document>> load_html_document(HTML::NavigationParams const& navigation_params)
|
||||
static WebIDL::ExceptionOr<GC::Ref<DOM::Document>> load_html_document(HTML::NavigationParams const& navigation_params)
|
||||
{
|
||||
// To load an HTML document, given navigation params navigationParams:
|
||||
|
||||
|
@ -92,19 +92,19 @@ static WebIDL::ExceptionOr<JS::NonnullGCPtr<DOM::Document>> load_html_document(H
|
|||
// causes a load event to be fired.
|
||||
else {
|
||||
// FIXME: Parse as we receive the document data, instead of waiting for the whole document to be fetched first.
|
||||
auto process_body = JS::create_heap_function(document->heap(), [document, url = navigation_params.response->url().value(), mime_type = navigation_params.response->header_list()->extract_mime_type()](ByteBuffer data) {
|
||||
Platform::EventLoopPlugin::the().deferred_invoke(JS::create_heap_function(document->heap(), [document = document, data = move(data), url = url, mime_type] {
|
||||
auto process_body = GC::create_function(document->heap(), [document, url = navigation_params.response->url().value(), mime_type = navigation_params.response->header_list()->extract_mime_type()](ByteBuffer data) {
|
||||
Platform::EventLoopPlugin::the().deferred_invoke(GC::create_function(document->heap(), [document = document, data = move(data), url = url, mime_type] {
|
||||
auto parser = HTML::HTMLParser::create_with_uncertain_encoding(document, data, mime_type);
|
||||
parser->run(url);
|
||||
}));
|
||||
});
|
||||
|
||||
auto process_body_error = JS::create_heap_function(document->heap(), [](JS::Value) {
|
||||
auto process_body_error = GC::create_function(document->heap(), [](JS::Value) {
|
||||
dbgln("FIXME: Load html page with an error if read of body failed.");
|
||||
});
|
||||
|
||||
auto& realm = document->realm();
|
||||
navigation_params.response->body()->fully_read(realm, process_body, process_body_error, JS::NonnullGCPtr { realm.global_object() });
|
||||
navigation_params.response->body()->fully_read(realm, process_body, process_body_error, GC::Ref { realm.global_object() });
|
||||
}
|
||||
|
||||
// 4. Return document.
|
||||
|
@ -112,7 +112,7 @@ static WebIDL::ExceptionOr<JS::NonnullGCPtr<DOM::Document>> load_html_document(H
|
|||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/document-lifecycle.html#read-xml
|
||||
static WebIDL::ExceptionOr<JS::NonnullGCPtr<DOM::Document>> load_xml_document(HTML::NavigationParams const& navigation_params, MimeSniff::MimeType type)
|
||||
static WebIDL::ExceptionOr<GC::Ref<DOM::Document>> load_xml_document(HTML::NavigationParams const& navigation_params, MimeSniff::MimeType type)
|
||||
{
|
||||
// When faced with displaying an XML file inline, provided navigation params navigationParams and a string type, user agents
|
||||
// must follow the requirements defined in XML and Namespaces in XML, XML Media Types, DOM, and other relevant specifications
|
||||
|
@ -147,7 +147,7 @@ static WebIDL::ExceptionOr<JS::NonnullGCPtr<DOM::Document>> load_xml_document(HT
|
|||
if (auto maybe_encoding = type.parameters().get("charset"sv); maybe_encoding.has_value())
|
||||
content_encoding = maybe_encoding.value();
|
||||
|
||||
auto process_body = JS::create_heap_function(document->heap(), [document, url = navigation_params.response->url().value(), content_encoding = move(content_encoding), mime = type](ByteBuffer data) {
|
||||
auto process_body = GC::create_function(document->heap(), [document, url = navigation_params.response->url().value(), content_encoding = move(content_encoding), mime = type](ByteBuffer data) {
|
||||
Optional<TextCodec::Decoder&> decoder;
|
||||
// The actual HTTP headers and other metadata, not the headers as mutated or implied by the algorithms given in this specification,
|
||||
// are the ones that must be used when determining the character encoding according to the rules given in the above specifications.
|
||||
|
@ -190,18 +190,18 @@ static WebIDL::ExceptionOr<JS::NonnullGCPtr<DOM::Document>> load_xml_document(HT
|
|||
}
|
||||
});
|
||||
|
||||
auto process_body_error = JS::create_heap_function(document->heap(), [](JS::Value) {
|
||||
auto process_body_error = GC::create_function(document->heap(), [](JS::Value) {
|
||||
dbgln("FIXME: Load html page with an error if read of body failed.");
|
||||
});
|
||||
|
||||
auto& realm = document->realm();
|
||||
navigation_params.response->body()->fully_read(realm, process_body, process_body_error, JS::NonnullGCPtr { realm.global_object() });
|
||||
navigation_params.response->body()->fully_read(realm, process_body, process_body_error, GC::Ref { realm.global_object() });
|
||||
|
||||
return document;
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/document-lifecycle.html#navigate-text
|
||||
static WebIDL::ExceptionOr<JS::NonnullGCPtr<DOM::Document>> load_text_document(HTML::NavigationParams const& navigation_params, MimeSniff::MimeType type)
|
||||
static WebIDL::ExceptionOr<GC::Ref<DOM::Document>> load_text_document(HTML::NavigationParams const& navigation_params, MimeSniff::MimeType type)
|
||||
{
|
||||
// To load a text document, given a navigation params navigationParams and a string type:
|
||||
|
||||
|
@ -227,7 +227,7 @@ static WebIDL::ExceptionOr<JS::NonnullGCPtr<DOM::Document>> load_text_document(H
|
|||
// document's relevant global object to have the parser to process the implied EOF character, which eventually causes a
|
||||
// load event to be fired.
|
||||
// FIXME: Parse as we receive the document data, instead of waiting for the whole document to be fetched first.
|
||||
auto process_body = JS::create_heap_function(document->heap(), [document, url = navigation_params.response->url().value(), mime = type](ByteBuffer data) {
|
||||
auto process_body = GC::create_function(document->heap(), [document, url = navigation_params.response->url().value(), mime = type](ByteBuffer data) {
|
||||
auto encoding = run_encoding_sniffing_algorithm(document, data, mime);
|
||||
dbgln_if(HTML_PARSER_DEBUG, "The encoding sniffing algorithm returned encoding '{}'", encoding);
|
||||
|
||||
|
@ -253,19 +253,19 @@ static WebIDL::ExceptionOr<JS::NonnullGCPtr<DOM::Document>> load_text_document(H
|
|||
MUST(title_element->append_child(*title_text));
|
||||
});
|
||||
|
||||
auto process_body_error = JS::create_heap_function(document->heap(), [](JS::Value) {
|
||||
auto process_body_error = GC::create_function(document->heap(), [](JS::Value) {
|
||||
dbgln("FIXME: Load html page with an error if read of body failed.");
|
||||
});
|
||||
|
||||
auto& realm = document->realm();
|
||||
navigation_params.response->body()->fully_read(realm, process_body, process_body_error, JS::NonnullGCPtr { realm.global_object() });
|
||||
navigation_params.response->body()->fully_read(realm, process_body, process_body_error, GC::Ref { realm.global_object() });
|
||||
|
||||
// 6. Return document.
|
||||
return document;
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/document-lifecycle.html#navigate-media
|
||||
static WebIDL::ExceptionOr<JS::NonnullGCPtr<DOM::Document>> load_media_document(HTML::NavigationParams const& navigation_params, MimeSniff::MimeType type)
|
||||
static WebIDL::ExceptionOr<GC::Ref<DOM::Document>> load_media_document(HTML::NavigationParams const& navigation_params, MimeSniff::MimeType type)
|
||||
{
|
||||
// To load a media document, given navigationParams and a string type:
|
||||
|
||||
|
@ -348,9 +348,9 @@ static WebIDL::ExceptionOr<JS::NonnullGCPtr<DOM::Document>> load_media_document(
|
|||
auto& realm = document->realm();
|
||||
navigation_params.response->body()->fully_read(
|
||||
realm,
|
||||
JS::create_heap_function(document->heap(), [document](ByteBuffer) { HTML::HTMLParser::the_end(document); }),
|
||||
JS::create_heap_function(document->heap(), [](JS::Value) {}),
|
||||
JS::NonnullGCPtr { realm.global_object() });
|
||||
GC::create_function(document->heap(), [document](ByteBuffer) { HTML::HTMLParser::the_end(document); }),
|
||||
GC::create_function(document->heap(), [](JS::Value) {}),
|
||||
GC::Ref { realm.global_object() });
|
||||
|
||||
// 9. Return document.
|
||||
return document;
|
||||
|
@ -393,7 +393,7 @@ bool can_load_document_with_type(MimeSniff::MimeType const& type)
|
|||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/browsing-the-web.html#loading-a-document
|
||||
JS::GCPtr<DOM::Document> load_document(HTML::NavigationParams const& navigation_params)
|
||||
GC::Ptr<DOM::Document> load_document(HTML::NavigationParams const& navigation_params)
|
||||
{
|
||||
// To load a document given navigation params navigationParams, source snapshot params sourceSnapshotParams,
|
||||
// and origin initiatorOrigin, perform the following steps. They return a Document or null.
|
||||
|
@ -404,7 +404,7 @@ JS::GCPtr<DOM::Document> load_document(HTML::NavigationParams const& navigation_
|
|||
navigation_params.response->body()->source().visit(
|
||||
[](Empty) { return ReadonlyBytes {}; },
|
||||
[](ByteBuffer const& buffer) { return ReadonlyBytes { buffer }; },
|
||||
[](JS::Handle<FileAPI::Blob> const& blob) { return blob->raw_bytes(); }),
|
||||
[](GC::Root<FileAPI::Blob> const& blob) { return blob->raw_bytes(); }),
|
||||
MimeSniff::SniffingConfiguration {
|
||||
.sniffing_context = MimeSniff::SniffingContext::Browsing,
|
||||
.supplied_type = move(supplied_type) });
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue