Title: [191778] branches/safari-601-branch/Source/WebCore
Revision
191778
Author
[email protected]
Date
2015-10-29 22:47:21 -0700 (Thu, 29 Oct 2015)

Log Message

Merged r191756.  rdar://problem/23322223

Modified Paths

Diff

Modified: branches/safari-601-branch/Source/WebCore/ChangeLog (191777 => 191778)


--- branches/safari-601-branch/Source/WebCore/ChangeLog	2015-10-30 05:37:05 UTC (rev 191777)
+++ branches/safari-601-branch/Source/WebCore/ChangeLog	2015-10-30 05:47:21 UTC (rev 191778)
@@ -1,3 +1,26 @@
+2015-10-29  Babak Shafiei  <[email protected]>
+
+        Merge r191756.
+
+    2015-10-29  Simon Fraser  <[email protected]>
+
+            Very slow typing on pages with wheel event handlers on the body, and deep content
+            https://bugs.webkit.org/show_bug.cgi?id=150692
+            rdar://problem/23242631
+
+            Reviewed by Zalan Bujtas.
+
+            On a large page with a wheel event handler on the body, we would call
+            Element::absoluteEventHandlerBounds() for every element under the body,
+            and compute an absolute bounds for each one. This is very slow.
+
+            For now, optimize computing a region for the <body> by just using the document
+            bounds, which will always be as big or larger. It's OK for this region to
+            be an overestimate.
+
+            * dom/Document.cpp:
+            (WebCore::Document::absoluteRegionForEventTargets):
+
 2015-10-29  Lucas Forschler  <[email protected]>
 
         Merge r191706. rdar://problem/23319292

Modified: branches/safari-601-branch/Source/WebCore/dom/Document.cpp (191777 => 191778)


--- branches/safari-601-branch/Source/WebCore/dom/Document.cpp	2015-10-30 05:37:05 UTC (rev 191777)
+++ branches/safari-601-branch/Source/WebCore/dom/Document.cpp	2015-10-30 05:47:21 UTC (rev 191778)
@@ -6190,7 +6190,12 @@
                 rootRelativeBounds = element->absoluteEventHandlerBounds(insideFixedPosition);
         } else if (is<Element>(keyValuePair.key)) {
             Element* element = downcast<Element>(keyValuePair.key);
-            rootRelativeBounds = element->absoluteEventHandlerBounds(insideFixedPosition);
+            if (is<HTMLBodyElement>(element)) {
+                // For the body, just use the document bounds.
+                // The body may not cover this whole area, but it's OK for this region to be an overestimate.
+                rootRelativeBounds = absoluteEventHandlerBounds(insideFixedPosition);
+            } else
+                rootRelativeBounds = element->absoluteEventHandlerBounds(insideFixedPosition);
         }
         
         if (!rootRelativeBounds.isEmpty())
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to