Title: [222546] trunk
Revision
222546
Author
za...@apple.com
Date
2017-09-26 19:54:16 -0700 (Tue, 26 Sep 2017)

Log Message

AX: Defer RenderImage's imageChanged event until after layout is done.
https://bugs.webkit.org/show_bug.cgi?id=177446

Reviewed by Dean Jackson.

Source/WebCore:

This is to avoid unintentional tree mutation during layout.

Covered by existing tests.

* rendering/RenderImage.cpp:
(WebCore::RenderImage::imageChanged):

LayoutTests:

* accessibility/image-load-on-delay.html:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (222545 => 222546)


--- trunk/LayoutTests/ChangeLog	2017-09-27 02:38:57 UTC (rev 222545)
+++ trunk/LayoutTests/ChangeLog	2017-09-27 02:54:16 UTC (rev 222546)
@@ -1,3 +1,12 @@
+2017-09-26  Zalan Bujtas  <za...@apple.com>
+
+        AX: Defer RenderImage's imageChanged event until after layout is done.
+        https://bugs.webkit.org/show_bug.cgi?id=177446
+
+        Reviewed by Dean Jackson.
+
+        * accessibility/image-load-on-delay.html:
+
 2017-09-26  Joanmarie Diggs  <jdi...@igalia.com>
 
         AX: Several ARIA roles with presentational children are exposing children

Modified: trunk/LayoutTests/accessibility/image-load-on-delay.html (222545 => 222546)


--- trunk/LayoutTests/accessibility/image-load-on-delay.html	2017-09-27 02:38:57 UTC (rev 222545)
+++ trunk/LayoutTests/accessibility/image-load-on-delay.html	2017-09-27 02:54:16 UTC (rev 222546)
@@ -18,11 +18,13 @@
     description("This verifies that when an image loads its resource late, the AX tree is updated to re-add the image.");
 
     if (window.accessibilityController) {
+          document.body.offsetHeight;
           window.jsTestIsAsync = true;
           var content = accessibilityController.accessibleElementById("content");
           debug("BEFORE: Group count: " + content.childrenCount);
 
           document.getElementById("image")._onload_ = function() {
+              document.body.offsetHeight;
               debug("AFTER: Group count: " + content.childrenCount);
               finishJSTest();
           };
@@ -29,7 +31,7 @@
 
           setTimeout(function() { 
               document.getElementById("image").src = "" 
-          }, 1000);
+          }, 100);
     }
 
 </script>

Modified: trunk/LayoutTests/platform/mac/TestExpectations (222545 => 222546)


--- trunk/LayoutTests/platform/mac/TestExpectations	2017-09-27 02:38:57 UTC (rev 222545)
+++ trunk/LayoutTests/platform/mac/TestExpectations	2017-09-27 02:54:16 UTC (rev 222546)
@@ -1770,3 +1770,5 @@
 webkit.org/b/177322 [ Debug ] imported/w3c/web-platform-tests/html/semantics/document-metadata/the-meta-element/pragma-directives/attr-meta-http-equiv-refresh/parsing.html [ Pass Failure ]
 
 webkit.org/b/177323 imported/w3c/web-platform-tests/fetch/security/embedded-credentials.tentative.sub.html [ Pass Failure ]
+
+webkit.org/b/177520 accessibility/image-load-on-delay.html [ Pass Failure ]

Modified: trunk/Source/WebCore/ChangeLog (222545 => 222546)


--- trunk/Source/WebCore/ChangeLog	2017-09-27 02:38:57 UTC (rev 222545)
+++ trunk/Source/WebCore/ChangeLog	2017-09-27 02:54:16 UTC (rev 222546)
@@ -1,3 +1,17 @@
+2017-09-26  Zalan Bujtas  <za...@apple.com>
+
+        AX: Defer RenderImage's imageChanged event until after layout is done.
+        https://bugs.webkit.org/show_bug.cgi?id=177446
+
+        Reviewed by Dean Jackson.
+
+        This is to avoid unintentional tree mutation during layout.
+
+        Covered by existing tests.
+
+        * rendering/RenderImage.cpp:
+        (WebCore::RenderImage::imageChanged):
+
 2017-09-26  Joanmarie Diggs  <jdi...@igalia.com>
 
         AX: Several ARIA roles with presentational children are exposing children

Modified: trunk/Source/WebCore/rendering/RenderImage.cpp (222545 => 222546)


--- trunk/Source/WebCore/rendering/RenderImage.cpp	2017-09-27 02:38:57 UTC (rev 222545)
+++ trunk/Source/WebCore/rendering/RenderImage.cpp	2017-09-27 02:54:16 UTC (rev 222546)
@@ -268,7 +268,7 @@
 
     if (UNLIKELY(AXObjectCache::accessibilityEnabled())) {
         if (AXObjectCache* cache = document().existingAXObjectCache())
-            cache->recomputeIsIgnored(this);
+            cache->deferRecomputeIsIgnored(element());
     }
 
     repaintOrMarkForLayout(imageSizeChange, rect);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to