diff options
author | Luke Wilde <lukew@serenityos.org> | 2023-04-14 09:21:59 +0100 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2023-04-14 12:30:43 +0200 |
commit | 821702fadd551ffa987d7caae98ba10b18a8b153 (patch) | |
tree | 15bf86ac177d81c547cc00b73d46495c082277d6 /Userland/Libraries/LibWeb | |
parent | 18565dd286ee6f164e54f8cb6cd1dcb716b2a72a (diff) | |
download | serenity-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.cpp | 9 | ||||
-rw-r--r-- | Userland/Libraries/LibWeb/DOM/Comment.h | 2 |
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<> |