Title: [264913] releases/WebKitGTK/webkit-2.28/Source/WebCore
Revision
264913
Author
carlo...@webkit.org
Date
2020-07-27 03:48:09 -0700 (Mon, 27 Jul 2020)

Log Message

Merge r262594 - HTMLAppletElement::updateWidget should check for renderer after the overlapping test.
https://bugs.webkit.org/show_bug.cgi?id=212789
<rdar://problem/61854614>

Reviewed by Simon Fraser.

createJavaAppletWidget needs to check if the plugin(replacement) is obscured.
Since the overlapping test requires up-to-date geometry, it initiates a top level style recalc/layout.
We need to check if the apple element still has a renderer after the style recalc.

* html/HTMLAppletElement.cpp:
(WebCore::HTMLAppletElement::updateWidget):

Modified Paths

Diff

Modified: releases/WebKitGTK/webkit-2.28/Source/WebCore/ChangeLog (264912 => 264913)


--- releases/WebKitGTK/webkit-2.28/Source/WebCore/ChangeLog	2020-07-27 10:48:05 UTC (rev 264912)
+++ releases/WebKitGTK/webkit-2.28/Source/WebCore/ChangeLog	2020-07-27 10:48:09 UTC (rev 264913)
@@ -1,3 +1,18 @@
+2020-06-04  Zalan Bujtas  <za...@apple.com>
+
+        HTMLAppletElement::updateWidget should check for renderer after the overlapping test.
+        https://bugs.webkit.org/show_bug.cgi?id=212789
+        <rdar://problem/61854614>
+
+        Reviewed by Simon Fraser.
+
+        createJavaAppletWidget needs to check if the plugin(replacement) is obscured.
+        Since the overlapping test requires up-to-date geometry, it initiates a top level style recalc/layout.
+        We need to check if the apple element still has a renderer after the style recalc.
+
+        * html/HTMLAppletElement.cpp:
+        (WebCore::HTMLAppletElement::updateWidget):
+
 2020-05-05  Antoine Quint  <grao...@apple.com>
 
         Fix animation ordering to make imported/w3c/web-platform-tests/css/css-animations/Element-getAnimations.tentative.html pass

Modified: releases/WebKitGTK/webkit-2.28/Source/WebCore/html/HTMLAppletElement.cpp (264912 => 264913)


--- releases/WebKitGTK/webkit-2.28/Source/WebCore/html/HTMLAppletElement.cpp	2020-07-27 10:48:05 UTC (rev 264912)
+++ releases/WebKitGTK/webkit-2.28/Source/WebCore/html/HTMLAppletElement.cpp	2020-07-27 10:48:09 UTC (rev 264913)
@@ -124,13 +124,6 @@
 
     setNeedsWidgetUpdate(false);
 
-    RenderEmbeddedObject* renderer = renderEmbeddedObject();
-
-    LayoutUnit contentWidth = renderer->style().width().isFixed() ? LayoutUnit(renderer->style().width().value()) :
-        renderer->width() - renderer->horizontalBorderAndPaddingExtent();
-    LayoutUnit contentHeight = renderer->style().height().isFixed() ? LayoutUnit(renderer->style().height().value()) :
-        renderer->height() - renderer->verticalBorderAndPaddingExtent();
-
     Vector<String> paramNames;
     Vector<String> paramValues;
 
@@ -175,7 +168,20 @@
     RefPtr<Frame> frame = document().frame();
     ASSERT(frame);
 
-    renderer->setWidget(frame->loader().subframeLoader().createJavaAppletWidget(roundedIntSize(LayoutSize(contentWidth, contentHeight)), *this, paramNames, paramValues));
+    auto contentSize = LayoutSize { };
+    {
+        auto* renderer = renderEmbeddedObject();
+        auto& style = renderer->style();
+
+        contentSize = LayoutSize { style.width().isFixed() ? LayoutUnit(style.width().value()) : renderer->width() - renderer->horizontalBorderAndPaddingExtent(),
+            style.height().isFixed() ? LayoutUnit(style.height().value()) : renderer->height() - renderer->verticalBorderAndPaddingExtent() };
+    }
+
+    auto widget = frame->loader().subframeLoader().createJavaAppletWidget(roundedIntSize(contentSize), *this, paramNames, paramValues);
+    // createJavaAppletWidget needs to check if the plugin(replacement) is obscured. Since the overlapping test requires up-to-date geometry, it initiates a top level style recalc/layout.
+    // Let's see if this element still has a renderer after the style recalc.
+    if (auto* renderer = renderEmbeddedObject())
+        renderer->setWidget(WTFMove(widget));
 #endif // !PLATFORM(IOS_FAMILY)
 }
 
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to