WK1: arbitrary JS execution while tearing down renderers in Element::addShadowRoot
authorrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 16 Jan 2020 19:55:03 +0000 (19:55 +0000)
committerrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 16 Jan 2020 19:55:03 +0000 (19:55 +0000)
https://bugs.webkit.org/show_bug.cgi?id=206335

Reviewed by Antti Koivisto.

Delay the widget hierarchy updates until we're done attaching a shadow root.
Otherwise, WK1 would retry to update the focus synchronously.

* dom/Element.cpp:
(WebCore::Element::addShadowRoot):

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@254700 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/dom/Element.cpp

index a74d590..7bb9bb8 100644 (file)
@@ -1,3 +1,16 @@
+2020-01-16  Ryosuke Niwa  <rniwa@webkit.org>
+
+        WK1: arbitrary JS execution while tearing down renderers in Element::addShadowRoot
+        https://bugs.webkit.org/show_bug.cgi?id=206335
+
+        Reviewed by Antti Koivisto.
+
+        Delay the widget hierarchy updates until we're done attaching a shadow root.
+        Otherwise, WK1 would retry to update the focus synchronously.
+
+        * dom/Element.cpp:
+        (WebCore::Element::addShadowRoot):
+
 2020-01-16  Chris Lord  <clord@igalia.com>
 
         REGRESSION (r254291): [ Catalina wk2 Debug ] Flaky ASSERT on fast/images/animated-image-loop-count.html
index b84297e..ff98eee 100644 (file)
@@ -2279,6 +2279,7 @@ void Element::addShadowRoot(Ref<ShadowRoot>&& newShadowRoot)
 
     ShadowRoot& shadowRoot = newShadowRoot;
     {
+        WidgetHierarchyUpdatesSuspensionScope suspendWidgetHierarchyUpdates;
         ScriptDisallowedScope::InMainThread scriptDisallowedScope;
         if (renderer())
             RenderTreeUpdater::tearDownRenderers(*this);