summaryrefslogtreecommitdiff
path: root/Userland/Libraries/LibWeb
diff options
context:
space:
mode:
authorLuke Wilde <lukew@serenityos.org>2023-04-14 09:21:59 +0100
committerAndreas Kling <kling@serenityos.org>2023-04-14 12:30:43 +0200
commit821702fadd551ffa987d7caae98ba10b18a8b153 (patch)
tree15bf86ac177d81c547cc00b73d46495c082277d6 /Userland/Libraries/LibWeb
parent18565dd286ee6f164e54f8cb6cd1dcb716b2a72a (diff)
downloadserenity-821702fadd551ffa987d7caae98ba10b18a8b153.zip
LibWeb: Set Comment's prototype
This makes YouTube's thumbnails start appearing on the homepage. Yes,seriously. Simply put, this is because this check failed when Comment had the incorrect prototype: https://github.com/webcomponents/polyfills/blob/90cb97f847ce918289dac0978c50dcda0a0afd72/packages/shadycss/src/style-util.js#L397 This causes it to try and reconvert style sheets that are already in Shady format, which would cause it to spuriously add things such as class selectors on the end of tag selectors. This caused nothing to match the selectors. When YouTube is generating the thumbnails, it checks if the thumbnail grid container has a non-zero clientWidth. If it's zero, it simply bails generating thumbnails. Since the selectors for this container did not apply, we would not properly create a paint box for it, causing clientWidth to return zero.
Diffstat (limited to 'Userland/Libraries/LibWeb')
-rw-r--r--Userland/Libraries/LibWeb/DOM/Comment.cpp9
-rw-r--r--Userland/Libraries/LibWeb/DOM/Comment.h2
2 files changed, 11 insertions, 0 deletions
diff --git a/Userland/Libraries/LibWeb/DOM/Comment.cpp b/Userland/Libraries/LibWeb/DOM/Comment.cpp
index cbd4ac1448..1a8794837c 100644
--- a/Userland/Libraries/LibWeb/DOM/Comment.cpp
+++ b/Userland/Libraries/LibWeb/DOM/Comment.cpp
@@ -4,6 +4,7 @@
* SPDX-License-Identifier: BSD-2-Clause
*/
+#include <LibWeb/Bindings/CommentPrototype.h>
#include <LibWeb/DOM/Comment.h>
#include <LibWeb/HTML/Window.h>
#include <LibWeb/Layout/TextNode.h>
@@ -22,4 +23,12 @@ WebIDL::ExceptionOr<JS::NonnullGCPtr<Comment>> Comment::construct_impl(JS::Realm
return MUST_OR_THROW_OOM(realm.heap().allocate<Comment>(realm, window.associated_document(), data));
}
+JS::ThrowCompletionOr<void> Comment::initialize(JS::Realm& realm)
+{
+ MUST_OR_THROW_OOM(Base::initialize(realm));
+ set_prototype(&Bindings::ensure_web_prototype<Bindings::CommentPrototype>(realm, "Comment"));
+
+ return {};
+}
+
}
diff --git a/Userland/Libraries/LibWeb/DOM/Comment.h b/Userland/Libraries/LibWeb/DOM/Comment.h
index 0b509672c7..b0fe1d482e 100644
--- a/Userland/Libraries/LibWeb/DOM/Comment.h
+++ b/Userland/Libraries/LibWeb/DOM/Comment.h
@@ -22,6 +22,8 @@ public:
private:
Comment(Document&, DeprecatedString const&);
+
+ virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
};
template<>