diff --git a/src/browser/js/Snapshot.zig b/src/browser/js/Snapshot.zig index e9a6aa29..3c435f20 100644 --- a/src/browser/js/Snapshot.zig +++ b/src/browser/js/Snapshot.zig @@ -196,12 +196,22 @@ pub fn create(allocator: Allocator) !Snapshot { // Attach to global if it has a name if (@hasDecl(JsApi.Meta, "name")) { - const class_name = if (@hasDecl(JsApi.Meta, "constructor_alias")) - JsApi.Meta.constructor_alias - else - JsApi.Meta.name; - const v8_class_name = v8.String.initUtf8(isolate, class_name); - _ = global_obj.setValue(context, v8_class_name, func); + if (@hasDecl(JsApi.Meta, "constructor_alias")) { + const v8_class_name = v8.String.initUtf8(isolate, JsApi.Meta.constructor_alias); + _ = global_obj.setValue(context, v8_class_name, func); + + // @TODO: This is wrong. This name should be registered with the + // illegalConstructorCallback. I.e. new Image() is OK, but + // new HTMLImageElement() isn't. + // But we _have_ to register the name, i.e. HTMLImageElement + // has to be registered so, for now, instead of creating another + // template, we just hook it into the constructor. + const illegal_class_name = v8.String.initUtf8(isolate, JsApi.Meta.name); + _ = global_obj.setValue(context, illegal_class_name, func); + } else { + const v8_class_name = v8.String.initUtf8(isolate, JsApi.Meta.name); + _ = global_obj.setValue(context, v8_class_name, func); + } } } diff --git a/src/browser/tests/domparser.html b/src/browser/tests/domparser.html index 7f65ebd9..cd701d59 100644 --- a/src/browser/tests/domparser.html +++ b/src/browser/tests/domparser.html @@ -237,3 +237,10 @@ testing.expectEqual(null, doc2.getElementById('doc1-el')); } + + diff --git a/src/browser/webapi/DOMParser.zig b/src/browser/webapi/DOMParser.zig index 051f004b..0d714264 100644 --- a/src/browser/webapi/DOMParser.zig +++ b/src/browser/webapi/DOMParser.zig @@ -42,10 +42,15 @@ pub fn parseFromString(self: *const DOMParser, html: []const u8, mime_type: []co ._proto = undefined, }); + var normalized = std.mem.trim(u8, html, &std.ascii.whitespace); + if (normalized.len == 0) { + normalized = ""; + } + // Parse HTML into the document const Parser = @import("../parser/Parser.zig"); var parser = Parser.init(page.arena, doc.asNode(), page); - parser.parse(html); + parser.parse(normalized); if (parser.err) |pe| { return pe.err;