From 821702fadd551ffa987d7caae98ba10b18a8b153 Mon Sep 17 00:00:00 2001 From: Luke Wilde Date: Fri, 14 Apr 2023 09:21:59 +0100 Subject: [PATCH] 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. --- Userland/Libraries/LibWeb/DOM/Comment.cpp | 9 +++++++++ Userland/Libraries/LibWeb/DOM/Comment.h | 2 ++ 2 files changed, 11 insertions(+) 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 #include #include #include @@ -22,4 +23,12 @@ WebIDL::ExceptionOr> Comment::construct_impl(JS::Realm return MUST_OR_THROW_OOM(realm.heap().allocate(realm, window.associated_document(), data)); } +JS::ThrowCompletionOr Comment::initialize(JS::Realm& realm) +{ + MUST_OR_THROW_OOM(Base::initialize(realm)); + set_prototype(&Bindings::ensure_web_prototype(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 initialize(JS::Realm&) override; }; template<>