One way to do so is by using GeometryMapper to compute rects. See crbug.com/831696 for promising results with hit testing.
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/787bde4bbab8870f7ec720f1b3766859d8b0f71b commit 787bde4bbab8870f7ec720f1b3766859d8b0f71b Author: Chris Harrelson <chrishtr@chromium.org> Date: Fri Apr 13 04:32:42 2018 [IOv2] Add an UMA and UKM for IntersectionObserver observation time. Bug:831762,783383 Change-Id: I3aea3afb2669f83f0d40674218c82a4f399b4e6f Reviewed-on: https://chromium-review.googlesource.com/1008270 Commit-Queue: Chris Harrelson <chrishtr@chromium.org> Reviewed-by: Stefan Zager <szager@chromium.org> Reviewed-by: Alexei Svitkine <asvitkine@chromium.org> Reviewed-by: vmpstr <vmpstr@chromium.org> Reviewed-by: Mark Pearson <mpearson@chromium.org> Cr-Commit-Position: refs/heads/master@{#550518} [modify] https://crrev.com/787bde4bbab8870f7ec720f1b3766859d8b0f71b/third_party/blink/renderer/core/frame/local_frame_view.cc [modify] https://crrev.com/787bde4bbab8870f7ec720f1b3766859d8b0f71b/third_party/blink/renderer/platform/ukm_time_aggregator.h [modify] https://crrev.com/787bde4bbab8870f7ec720f1b3766859d8b0f71b/tools/metrics/histograms/histograms.xml [modify] https://crrev.com/787bde4bbab8870f7ec720f1b3766859d8b0f71b/tools/metrics/ukm/ukm.xml
Adding a merge request. The patch from comment 1 missed the cutoff by only a few hours. It adds an important new statistic for measuring performance.
Approving merge to M67 branch 3396 per comment #2 and per offline chat with chrishtr@.
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/d53f0b384d93e0ab2c24297ad404b496bd8c6dba commit d53f0b384d93e0ab2c24297ad404b496bd8c6dba Author: Chris Harrelson <chrishtr@chromium.org> Date: Fri Apr 13 20:42:10 2018 [IOv2] Add an UMA and UKM for IntersectionObserver observation time. Bug:831762,783383 TBR=chrishtr@chromium.org (cherry picked from commit 787bde4bbab8870f7ec720f1b3766859d8b0f71b) Change-Id: I3aea3afb2669f83f0d40674218c82a4f399b4e6f Reviewed-on: https://chromium-review.googlesource.com/1008270 Commit-Queue: Chris Harrelson <chrishtr@chromium.org> Reviewed-by: Stefan Zager <szager@chromium.org> Reviewed-by: Alexei Svitkine <asvitkine@chromium.org> Reviewed-by: vmpstr <vmpstr@chromium.org> Reviewed-by: Mark Pearson <mpearson@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#550518} Reviewed-on: https://chromium-review.googlesource.com/1012570 Reviewed-by: Chris Harrelson <chrishtr@chromium.org> Cr-Commit-Position: refs/branch-heads/3396@{#2} Cr-Branched-From: 9ef2aa869bc7bc0c089e255d698cca6e47d6b038-refs/heads/master@{#550428} [modify] https://crrev.com/d53f0b384d93e0ab2c24297ad404b496bd8c6dba/third_party/blink/renderer/core/frame/local_frame_view.cc [modify] https://crrev.com/d53f0b384d93e0ab2c24297ad404b496bd8c6dba/third_party/blink/renderer/platform/ukm_time_aggregator.h [modify] https://crrev.com/d53f0b384d93e0ab2c24297ad404b496bd8c6dba/tools/metrics/histograms/histograms.xml [modify] https://crrev.com/d53f0b384d93e0ab2c24297ad404b496bd8c6dba/tools/metrics/ukm/ukm.xml
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/9decdfe1e7a0d56b7a8edc28c0239a16e5424d3c commit 9decdfe1e7a0d56b7a8edc28c0239a16e5424d3c Author: Chris Harrelson <chrishtr@chromium.org> Date: Thu May 10 22:32:51 2018 [IOv2] Implement edge-inclusive intersection in GeometryMapper Bug: 831762 Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Change-Id: Ic7ddaf8b86fb8d0f1d7bb3a83b62c5cc2ee2b78c Reviewed-on: https://chromium-review.googlesource.com/1053487 Reviewed-by: Stefan Zager <szager@chromium.org> Commit-Queue: Chris Harrelson <chrishtr@chromium.org> Cr-Commit-Position: refs/heads/master@{#557703} [modify] https://crrev.com/9decdfe1e7a0d56b7a8edc28c0239a16e5424d3c/third_party/blink/renderer/core/layout/layout_object.cc [modify] https://crrev.com/9decdfe1e7a0d56b7a8edc28c0239a16e5424d3c/third_party/blink/renderer/core/layout/layout_object.h [modify] https://crrev.com/9decdfe1e7a0d56b7a8edc28c0239a16e5424d3c/third_party/blink/renderer/core/layout/layout_view.cc [modify] https://crrev.com/9decdfe1e7a0d56b7a8edc28c0239a16e5424d3c/third_party/blink/renderer/core/layout/visual_rect_mapping_test.cc [modify] https://crrev.com/9decdfe1e7a0d56b7a8edc28c0239a16e5424d3c/third_party/blink/renderer/platform/geometry/float_rect.cc [modify] https://crrev.com/9decdfe1e7a0d56b7a8edc28c0239a16e5424d3c/third_party/blink/renderer/platform/geometry/float_rect.h [modify] https://crrev.com/9decdfe1e7a0d56b7a8edc28c0239a16e5424d3c/third_party/blink/renderer/platform/geometry/float_rect_test.cc [modify] https://crrev.com/9decdfe1e7a0d56b7a8edc28c0239a16e5424d3c/third_party/blink/renderer/platform/graphics/paint/float_clip_rect.h [modify] https://crrev.com/9decdfe1e7a0d56b7a8edc28c0239a16e5424d3c/third_party/blink/renderer/platform/graphics/paint/geometry_mapper.cc [modify] https://crrev.com/9decdfe1e7a0d56b7a8edc28c0239a16e5424d3c/third_party/blink/renderer/platform/graphics/paint/geometry_mapper.h [modify] https://crrev.com/9decdfe1e7a0d56b7a8edc28c0239a16e5424d3c/third_party/blink/renderer/platform/graphics/paint/geometry_mapper_test.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/36589a211131282572f9025999b4e4e4fecb9200 commit 36589a211131282572f9025999b4e4e4fecb9200 Author: Chris Harrelson <chrishtr@chromium.org> Date: Sat May 12 22:00:07 2018 [IOv2] Add support for GeometryMapper-based rect computation. This is behind a new runtime-enabled flag called IntersectionObserverGeometryMapper. Bug:831762 Change-Id: I022e988d3abee45e767c04487e8e9662bfc109f2 Reviewed-on: https://chromium-review.googlesource.com/1055783 Commit-Queue: Stefan Zager <szager@chromium.org> Reviewed-by: Stefan Zager <szager@chromium.org> Cr-Commit-Position: refs/heads/master@{#558143} [modify] https://crrev.com/36589a211131282572f9025999b4e4e4fecb9200/third_party/blink/renderer/core/frame/remote_frame_view.cc [modify] https://crrev.com/36589a211131282572f9025999b4e4e4fecb9200/third_party/blink/renderer/core/intersection_observer/intersection_observer_test.cc [modify] https://crrev.com/36589a211131282572f9025999b4e4e4fecb9200/third_party/blink/renderer/core/layout/intersection_geometry.cc [modify] https://crrev.com/36589a211131282572f9025999b4e4e4fecb9200/third_party/blink/renderer/platform/runtime_enabled_features.json5
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/b21e6f6ae3433d0a328c7ae27c4b62672a78de8c commit b21e6f6ae3433d0a328c7ae27c4b62672a78de8c Author: Chris Harrelson <chrishtr@chromium.org> Date: Mon May 14 22:16:59 2018 [IOv2] Add a feature for turning on IntersectionObserverGeometryMapper. Bug: 831762 Change-Id: I0656bebfd64014fe52853029003833dc195537f7 Reviewed-on: https://chromium-review.googlesource.com/1056159 Commit-Queue: Chris Harrelson <chrishtr@chromium.org> Reviewed-by: Charlie Reis <creis@chromium.org> Cr-Commit-Position: refs/heads/master@{#558490} [modify] https://crrev.com/b21e6f6ae3433d0a328c7ae27c4b62672a78de8c/content/child/runtime_features.cc [modify] https://crrev.com/b21e6f6ae3433d0a328c7ae27c4b62672a78de8c/content/public/common/content_features.cc [modify] https://crrev.com/b21e6f6ae3433d0a328c7ae27c4b62672a78de8c/content/public/common/content_features.h [modify] https://crrev.com/b21e6f6ae3433d0a328c7ae27c4b62672a78de8c/third_party/blink/public/platform/web_runtime_features.h [modify] https://crrev.com/b21e6f6ae3433d0a328c7ae27c4b62672a78de8c/third_party/blink/renderer/core/layout/intersection_geometry.cc [modify] https://crrev.com/b21e6f6ae3433d0a328c7ae27c4b62672a78de8c/third_party/blink/renderer/platform/exported/web_runtime_features.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/0979d604280832621995a32898ef096237536a5c commit 0979d604280832621995a32898ef096237536a5c Author: Chris Harrelson <chrishtr@chromium.org> Date: Mon May 21 21:54:06 2018 Add a performance test to measure MapToVisualRectInAncestorSpace. The test compares two versions of MapToVisualRectInAncestorSpace, one with GeometryMapper and one without. Bug: 831762 Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2 Change-Id: If385614a90d5276f1e995f268e81c04cc72abeff Reviewed-on: https://chromium-review.googlesource.com/1065174 Reviewed-by: Stefan Zager <szager@chromium.org> Commit-Queue: Chris Harrelson <chrishtr@chromium.org> Cr-Commit-Position: refs/heads/master@{#560357} [modify] https://crrev.com/0979d604280832621995a32898ef096237536a5c/third_party/blink/renderer/controller/BUILD.gn [modify] https://crrev.com/0979d604280832621995a32898ef096237536a5c/third_party/blink/renderer/core/BUILD.gn [add] https://crrev.com/0979d604280832621995a32898ef096237536a5c/third_party/blink/renderer/core/layout/visual_rect_mapping_perftest.cc [modify] https://crrev.com/0979d604280832621995a32898ef096237536a5c/third_party/blink/renderer/platform/graphics/paint/clip_paint_property_node.cc [modify] https://crrev.com/0979d604280832621995a32898ef096237536a5c/third_party/blink/renderer/platform/graphics/paint/clip_paint_property_node.h [modify] https://crrev.com/0979d604280832621995a32898ef096237536a5c/third_party/blink/renderer/platform/graphics/paint/effect_paint_property_node.h [modify] https://crrev.com/0979d604280832621995a32898ef096237536a5c/third_party/blink/renderer/platform/graphics/paint/property_tree_state.cc [modify] https://crrev.com/0979d604280832621995a32898ef096237536a5c/third_party/blink/renderer/platform/graphics/paint/property_tree_state.h [modify] https://crrev.com/0979d604280832621995a32898ef096237536a5c/third_party/blink/renderer/platform/graphics/paint/transform_paint_property_node.cc [modify] https://crrev.com/0979d604280832621995a32898ef096237536a5c/third_party/blink/renderer/platform/graphics/paint/transform_paint_property_node.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/fb5f137034621fa26276b1b11d17e3f2288196f2 commit fb5f137034621fa26276b1b11d17e3f2288196f2 Author: Chris Harrelson <chrishtr@chromium.org> Date: Sat Jun 16 21:30:20 2018 [IOv2] Don't clip at the root for hit tests. Now that RLS exists, the LayoutView has a different ClipPaintPropertyNode than every other node. Therefore PLC::CalculateRects will need to calculate a clip across this node difference for every PaintLayer. We don't need this clip at all, since the IOv1 parts of IO already handle such clipping. For CPU traces of intersection-observer/deep-layers.html, this avoids about 4% of runtime. Bug: 831762 Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_slimming_paint_v2;master.tryserver.blink:linux_trusty_blink_rel Change-Id: I2faa6761edc15854d35cd4a18a466383b6c9d5d8 Reviewed-on: https://chromium-review.googlesource.com/1101970 Reviewed-by: Stefan Zager <szager@chromium.org> Reviewed-by: Philip Rogers <pdr@chromium.org> Commit-Queue: Chris Harrelson <chrishtr@chromium.org> Cr-Commit-Position: refs/heads/master@{#567897} [modify] https://crrev.com/fb5f137034621fa26276b1b11d17e3f2288196f2/third_party/blink/renderer/core/layout/layout_object.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/cff6ac338d9d56e3d20039b154a004eda118f24e commit cff6ac338d9d56e3d20039b154a004eda118f24e Author: Chris Harrelson <chrishtr@chromium.org> Date: Sun Jun 17 02:02:31 2018 De-virtualize LayoutBox::ShouldClipOverflow. For CPU traces of intersection-observer/deep-layers.html, this avoids > 4% of runtime. Bug: 831762 Change-Id: If7e3cf6b37b7e9e724856c2c2e0b0f7ec33739e1 Reviewed-on: https://chromium-review.googlesource.com/1102024 Commit-Queue: Chris Harrelson <chrishtr@chromium.org> Reviewed-by: Philip Rogers <pdr@chromium.org> Cr-Commit-Position: refs/heads/master@{#567905} [modify] https://crrev.com/cff6ac338d9d56e3d20039b154a004eda118f24e/third_party/blink/renderer/core/layout/layout_box.cc [modify] https://crrev.com/cff6ac338d9d56e3d20039b154a004eda118f24e/third_party/blink/renderer/core/layout/layout_box.h [modify] https://crrev.com/cff6ac338d9d56e3d20039b154a004eda118f24e/third_party/blink/renderer/core/layout/layout_object.h [modify] https://crrev.com/cff6ac338d9d56e3d20039b154a004eda118f24e/third_party/blink/renderer/core/layout/layout_table_cell.cc [modify] https://crrev.com/cff6ac338d9d56e3d20039b154a004eda118f24e/third_party/blink/renderer/core/layout/layout_table_cell.h [modify] https://crrev.com/cff6ac338d9d56e3d20039b154a004eda118f24e/third_party/blink/renderer/core/layout/svg/layout_svg_root.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/17a9c540dc6298a82ebd8288f84c355dc1179463 commit 17a9c540dc6298a82ebd8288f84c355dc1179463 Author: Chris Harrelson <chrishtr@chromium.org> Date: Tue Jun 19 23:04:37 2018 [Hit Testing] Optimize for the case of infinite clip rects * Don't intersect with the overall dirty rect except at changes of root layer, because otherwise the location and rect don't change * Early out intersections when a ClipRect is infinite (since it has no effect) * Don't adjust infinite ClipRects (since it has no effect) * Simplify / resolve TODOs in some cases where we previously had to construct an "infinite" layout rect In local testing, this CL yields a 10% improvement on the intersection-observer/deep-layers.html performance test due to faster hit testing. Bug: 831762 Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_slimming_paint_v2;master.tryserver.blink:linux_trusty_blink_rel Change-Id: Ie7a1e2fb5cbeb8f7f9a267489785266ed7b8ca47 Reviewed-on: https://chromium-review.googlesource.com/1104964 Commit-Queue: Chris Harrelson <chrishtr@chromium.org> Reviewed-by: Xianzhu Wang <wangxianzhu@chromium.org> Cr-Commit-Position: refs/heads/master@{#568631} [modify] https://crrev.com/17a9c540dc6298a82ebd8288f84c355dc1179463/third_party/blink/renderer/core/BUILD.gn [modify] https://crrev.com/17a9c540dc6298a82ebd8288f84c355dc1179463/third_party/blink/renderer/core/layout/layout_tree_as_text.cc [modify] https://crrev.com/17a9c540dc6298a82ebd8288f84c355dc1179463/third_party/blink/renderer/core/paint/clip_rect.cc [modify] https://crrev.com/17a9c540dc6298a82ebd8288f84c355dc1179463/third_party/blink/renderer/core/paint/clip_rect.h [add] https://crrev.com/17a9c540dc6298a82ebd8288f84c355dc1179463/third_party/blink/renderer/core/paint/clip_rect_test.cc [modify] https://crrev.com/17a9c540dc6298a82ebd8288f84c355dc1179463/third_party/blink/renderer/core/paint/paint_layer.cc [modify] https://crrev.com/17a9c540dc6298a82ebd8288f84c355dc1179463/third_party/blink/renderer/core/paint/paint_layer.h [modify] https://crrev.com/17a9c540dc6298a82ebd8288f84c355dc1179463/third_party/blink/renderer/core/paint/paint_layer_clipper.cc [modify] https://crrev.com/17a9c540dc6298a82ebd8288f84c355dc1179463/third_party/blink/renderer/core/paint/paint_layer_clipper.h [modify] https://crrev.com/17a9c540dc6298a82ebd8288f84c355dc1179463/third_party/blink/renderer/core/paint/paint_layer_clipper_test.cc [modify] https://crrev.com/17a9c540dc6298a82ebd8288f84c355dc1179463/third_party/blink/renderer/core/paint/paint_layer_painter.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/88151691ad1b7388b29400a8ecf84ecc82fefcd1 commit 88151691ad1b7388b29400a8ecf84ecc82fefcd1 Author: Chris Harrelson <chrishtr@chromium.org> Date: Tue Jun 26 17:37:26 2018 Only allocate a PaintLayerStackingNode if actually needed. The reasons to have one are: * the PaintLayer is for a stacking context, or * the PaintLayer has at least one non-stacked child. Allocate and update stacking nodes during the descendant-dependent tree walk. Related to the above, removes a bunch of calls to PaintLayerStackingNode::UpdateLayerListsIfNeeded() which should not be needed, because now the method called during the descendant-dependent flags update. Bug: 831762 Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_slimming_paint_v2;master.tryserver.blink:linux_trusty_blink_rel Change-Id: Id43787f6a8c2e962ec856306edbb89a11fd4f624 Reviewed-on: https://chromium-review.googlesource.com/1106962 Commit-Queue: Chris Harrelson <chrishtr@chromium.org> Reviewed-by: Chris Harrelson <chrishtr@chromium.org> Reviewed-by: Tien-Ren Chen <trchen@chromium.org> Cr-Commit-Position: refs/heads/master@{#570449} [modify] https://crrev.com/88151691ad1b7388b29400a8ecf84ecc82fefcd1/third_party/WebKit/LayoutTests/paint/invalidation/compositing/containing-block-added-individual.html [modify] https://crrev.com/88151691ad1b7388b29400a8ecf84ecc82fefcd1/third_party/blink/renderer/core/clipboard/data_transfer.cc [modify] https://crrev.com/88151691ad1b7388b29400a8ecf84ecc82fefcd1/third_party/blink/renderer/core/inspector/inspector_dom_snapshot_agent.cc [modify] https://crrev.com/88151691ad1b7388b29400a8ecf84ecc82fefcd1/third_party/blink/renderer/core/layout/layout_box_model_object.cc [modify] https://crrev.com/88151691ad1b7388b29400a8ecf84ecc82fefcd1/third_party/blink/renderer/core/layout/layout_tree_as_text.cc [modify] https://crrev.com/88151691ad1b7388b29400a8ecf84ecc82fefcd1/third_party/blink/renderer/core/layout/paint_containment_test.cc [modify] https://crrev.com/88151691ad1b7388b29400a8ecf84ecc82fefcd1/third_party/blink/renderer/core/paint/compositing/composited_layer_mapping.cc [modify] https://crrev.com/88151691ad1b7388b29400a8ecf84ecc82fefcd1/third_party/blink/renderer/core/paint/compositing/compositing_inputs_updater.cc [modify] https://crrev.com/88151691ad1b7388b29400a8ecf84ecc82fefcd1/third_party/blink/renderer/core/paint/compositing/compositing_layer_assigner.cc [modify] https://crrev.com/88151691ad1b7388b29400a8ecf84ecc82fefcd1/third_party/blink/renderer/core/paint/compositing/compositing_requirements_updater.cc [modify] https://crrev.com/88151691ad1b7388b29400a8ecf84ecc82fefcd1/third_party/blink/renderer/core/paint/compositing/graphics_layer_tree_builder.cc [modify] https://crrev.com/88151691ad1b7388b29400a8ecf84ecc82fefcd1/third_party/blink/renderer/core/paint/compositing/graphics_layer_updater.cc [modify] https://crrev.com/88151691ad1b7388b29400a8ecf84ecc82fefcd1/third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.cc [modify] https://crrev.com/88151691ad1b7388b29400a8ecf84ecc82fefcd1/third_party/blink/renderer/core/paint/paint_layer.cc [modify] https://crrev.com/88151691ad1b7388b29400a8ecf84ecc82fefcd1/third_party/blink/renderer/core/paint/paint_layer.h [modify] https://crrev.com/88151691ad1b7388b29400a8ecf84ecc82fefcd1/third_party/blink/renderer/core/paint/paint_layer_painter.cc [modify] https://crrev.com/88151691ad1b7388b29400a8ecf84ecc82fefcd1/third_party/blink/renderer/core/paint/paint_layer_stacking_node.cc [modify] https://crrev.com/88151691ad1b7388b29400a8ecf84ecc82fefcd1/third_party/blink/renderer/core/paint/paint_layer_stacking_node.h [modify] https://crrev.com/88151691ad1b7388b29400a8ecf84ecc82fefcd1/third_party/blink/renderer/core/paint/paint_layer_stacking_node_iterator.cc [modify] https://crrev.com/88151691ad1b7388b29400a8ecf84ecc82fefcd1/third_party/blink/renderer/core/paint/paint_layer_stacking_node_iterator.h [modify] https://crrev.com/88151691ad1b7388b29400a8ecf84ecc82fefcd1/third_party/blink/renderer/core/paint/paint_layer_test.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/3c6dd7a9a1a24a70ec20be493fe8d5355c375a1c commit 3c6dd7a9a1a24a70ec20be493fe8d5355c375a1c Author: Chris Harrelson <chrishtr@chromium.org> Date: Fri Jun 29 21:26:06 2018 [IO] Use GeometryMapper unconditionally in IntersectionObserver. An experiment was run on the beta channel. Health metrics were unchanged, and performance improved at 75th (slight improvement), 95th (~10%) and 99th (~3%) percentiles on both Android and Windows. Bug: 831762 Change-Id: Iee215f53317d9508f49061c08d961ca01366a4e0 Reviewed-on: https://chromium-review.googlesource.com/1120690 Reviewed-by: Charlie Reis <creis@chromium.org> Reviewed-by: Stefan Zager <szager@chromium.org> Commit-Queue: Chris Harrelson <chrishtr@chromium.org> Cr-Commit-Position: refs/heads/master@{#571637} [modify] https://crrev.com/3c6dd7a9a1a24a70ec20be493fe8d5355c375a1c/content/child/runtime_features.cc [modify] https://crrev.com/3c6dd7a9a1a24a70ec20be493fe8d5355c375a1c/content/public/common/content_features.cc [modify] https://crrev.com/3c6dd7a9a1a24a70ec20be493fe8d5355c375a1c/content/public/common/content_features.h [modify] https://crrev.com/3c6dd7a9a1a24a70ec20be493fe8d5355c375a1c/third_party/blink/public/platform/web_runtime_features.h [modify] https://crrev.com/3c6dd7a9a1a24a70ec20be493fe8d5355c375a1c/third_party/blink/renderer/core/frame/remote_frame_view.cc [modify] https://crrev.com/3c6dd7a9a1a24a70ec20be493fe8d5355c375a1c/third_party/blink/renderer/core/intersection_observer/intersection_observer_test.cc [modify] https://crrev.com/3c6dd7a9a1a24a70ec20be493fe8d5355c375a1c/third_party/blink/renderer/core/layout/intersection_geometry.cc [modify] https://crrev.com/3c6dd7a9a1a24a70ec20be493fe8d5355c375a1c/third_party/blink/renderer/platform/exported/web_runtime_features.cc [modify] https://crrev.com/3c6dd7a9a1a24a70ec20be493fe8d5355c375a1c/third_party/blink/renderer/platform/runtime_enabled_features.json5
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/1a827feb3ee5620587c6769a0a420d7426c64ea8 commit 1a827feb3ee5620587c6769a0a420d7426c64ea8 Author: Chris Harrelson <chrishtr@chromium.org> Date: Tue Jul 03 19:57:34 2018 [Hit Testing] Separate HitTestLocation from HitTestResult. This (a) avoids extra cost in copy constructors for HitTestResult (which happen often in PaintLayer::HitTestLayer), and (b) is cleaner because the hit testing code on the layout tree doesn't ever call GetHitTestLocation. This improves performance due to fewer copies happening when we need to create temporary outputs. Bug:831762 Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_layout_ng;luci.chromium.try:linux_layout_tests_slimming_paint_v2;master.tryserver.blink:linux_trusty_blink_rel Change-Id: I2d0716fd74b566d3c18646a8c685d184e49dd7d4 Reviewed-on: https://chromium-review.googlesource.com/1111472 Reviewed-by: Fredrik Söderquist <fs@opera.com> Commit-Queue: Chris Harrelson <chrishtr@chromium.org> Cr-Commit-Position: refs/heads/master@{#572327} [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/dom/document.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/dom/tree_scope.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/editing/frame_selection.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/editing/selection_controller.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/editing/selection_controller_test.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/editing/visible_units.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/exported/web_dev_tools_agent_impl.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/exported/web_frame_test.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/exported/web_plugin_container_impl.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/exported/web_view_impl.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/frame/local_frame.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/frame/rotation_viewport_anchor.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/frame/web_frame_widget_impl.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/frame/web_local_frame_impl.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/input/event_handler.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/input/event_handler.h [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/input/event_handler_test.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/input/event_handling_util.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/input/gesture_manager.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/input/mouse_event_manager.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/input/mouse_wheel_event_manager.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/input/pointer_event_manager.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/input/scroll_manager.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/input/touch_action_test.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/inspector/inspector_css_agent.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/inspector/inspector_dom_agent.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/inspector/inspector_overlay_agent.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/layout/hit_test_cache.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/layout/hit_test_cache.h [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/layout/hit_test_location.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/layout/hit_test_location.h [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/layout/hit_test_result.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/layout/hit_test_result.h [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/layout/layout_embedded_content.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/layout/layout_image.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/layout/layout_inline_test.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/layout/layout_object.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/layout/layout_view.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/layout/layout_view.h [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/layout/svg/layout_svg_container.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/layout/svg/layout_svg_foreign_object.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/layout/svg/layout_svg_foreign_object_test.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/layout/svg/layout_svg_image.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/layout/svg/layout_svg_resource_clipper.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/layout/svg/layout_svg_shape.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/layout/svg/layout_svg_text.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/page/chrome_client.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/page/chrome_client.h [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/page/chrome_client_test.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/page/context_menu_controller.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/page/drag_controller.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/page/event_with_hit_test_results.h [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/page/focus_controller.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/page/page_widget_delegate.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/page/touch_disambiguation.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/paint/paint_layer.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/paint/paint_layer.h [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/paint/paint_layer_scrollable_area_test.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/paint/paint_layer_test.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/testing/core_unit_test_helper.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/testing/internals.cc [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/core/testing/internals.h [modify] https://crrev.com/1a827feb3ee5620587c6769a0a420d7426c64ea8/third_party/blink/renderer/modules/accessibility/ax_layout_object.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a335c9fe7f2ded9e83b64e85d45e623b2cf6b729 commit a335c9fe7f2ded9e83b64e85d45e623b2cf6b729 Author: Chris Harrelson <chrishtr@chromium.org> Date: Wed Jul 11 20:46:36 2018 Optimize infinite ClipRect cases a bit more. This reduced time in deep-layers.html (rom https://chromium-review.googlesource.com/c/chromium/src/+/1101824) by about 5%. Bug:831762 Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_slimming_paint_v2;master.tryserver.blink:linux_trusty_blink_rel Change-Id: I338274cd96335300054ca347cd5bc53aff700de6 Reviewed-on: https://chromium-review.googlesource.com/1132490 Reviewed-by: vmpstr <vmpstr@chromium.org> Commit-Queue: Chris Harrelson <chrishtr@chromium.org> Cr-Commit-Position: refs/heads/master@{#574320} [modify] https://crrev.com/a335c9fe7f2ded9e83b64e85d45e623b2cf6b729/third_party/blink/renderer/core/paint/clip_rect.cc [modify] https://crrev.com/a335c9fe7f2ded9e83b64e85d45e623b2cf6b729/third_party/blink/renderer/core/paint/clip_rect.h [modify] https://crrev.com/a335c9fe7f2ded9e83b64e85d45e623b2cf6b729/third_party/blink/renderer/core/paint/clip_rect_test.cc [modify] https://crrev.com/a335c9fe7f2ded9e83b64e85d45e623b2cf6b729/third_party/blink/renderer/core/paint/paint_layer_clipper.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/cdea59c0db145f8e85ea00e9f6d31642929e2397 commit cdea59c0db145f8e85ea00e9f6d31642929e2397 Author: Chris Harrelson <chrishtr@chromium.org> Date: Thu Jul 12 22:37:48 2018 [IO] Only compute intersection observations if any property tree state has changed, and only for full-frame updates. This avoids re-computing intersection observations when nothing has changed. It is correct for IOv1 and also IOv2. It is correct for IOv2 because at present IOv2 and hit testing do not depend on paint output. Bug: 831762 Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_slimming_paint_v2;master.tryserver.blink:linux_trusty_blink_rel Change-Id: I196ca3a64e26d2227bc8cbb6b73ea81c1adbb4b2 Reviewed-on: https://chromium-review.googlesource.com/1134348 Reviewed-by: Stefan Zager <szager@chromium.org> Reviewed-by: vmpstr <vmpstr@chromium.org> Commit-Queue: Chris Harrelson <chrishtr@chromium.org> Cr-Commit-Position: refs/heads/master@{#574755} [modify] https://crrev.com/cdea59c0db145f8e85ea00e9f6d31642929e2397/third_party/blink/renderer/core/frame/frame_view.h [modify] https://crrev.com/cdea59c0db145f8e85ea00e9f6d31642929e2397/third_party/blink/renderer/core/frame/local_frame_view.cc [modify] https://crrev.com/cdea59c0db145f8e85ea00e9f6d31642929e2397/third_party/blink/renderer/core/frame/local_frame_view.h [modify] https://crrev.com/cdea59c0db145f8e85ea00e9f6d31642929e2397/third_party/blink/renderer/core/frame/remote_frame_view.cc [modify] https://crrev.com/cdea59c0db145f8e85ea00e9f6d31642929e2397/third_party/blink/renderer/core/frame/remote_frame_view.h [modify] https://crrev.com/cdea59c0db145f8e85ea00e9f6d31642929e2397/third_party/blink/renderer/core/scheduler/frame_throttling_test.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/31d871700a2c92f0c03023f10c8b77b08694e487 commit 31d871700a2c92f0c03023f10c8b77b08694e487 Author: Xiaocheng Hu <xiaochengh@chromium.org> Date: Mon Jul 16 23:16:59 2018 Revert "[IO] Only compute intersection observations if any property tree state has changed, and only for full-frame updates." This reverts commit cdea59c0db145f8e85ea00e9f6d31642929e2397. Reason for revert: Suspect of causing flakes in SitePerProcessBrowserTest.ChildFrameCrashMetrics_ScrolledIntoView Original change's description: > [IO] Only compute intersection observations if any property tree state has changed, and only for full-frame updates. > > This avoids re-computing intersection observations when nothing has changed. > > It is correct for IOv1 and also IOv2. It is correct for IOv2 because at present > IOv2 and hit testing do not depend on paint output. > > Bug: 831762 > Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_slimming_paint_v2;master.tryserver.blink:linux_trusty_blink_rel > Change-Id: I196ca3a64e26d2227bc8cbb6b73ea81c1adbb4b2 > Reviewed-on: https://chromium-review.googlesource.com/1134348 > Reviewed-by: Stefan Zager <szager@chromium.org> > Reviewed-by: vmpstr <vmpstr@chromium.org> > Commit-Queue: Chris Harrelson <chrishtr@chromium.org> > Cr-Commit-Position: refs/heads/master@{#574755} TBR=szager@chromium.org,vmpstr@chromium.org,chrishtr@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: 831762 , 863946 Change-Id: I30ab56ebce4cb3e677623f7663eb2795b0201274 Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_slimming_paint_v2;master.tryserver.blink:linux_trusty_blink_rel Reviewed-on: https://chromium-review.googlesource.com/1138894 Reviewed-by: Xiaocheng Hu <xiaochengh@chromium.org> Commit-Queue: Xiaocheng Hu <xiaochengh@chromium.org> Cr-Commit-Position: refs/heads/master@{#575473} [modify] https://crrev.com/31d871700a2c92f0c03023f10c8b77b08694e487/third_party/blink/renderer/core/frame/frame_view.h [modify] https://crrev.com/31d871700a2c92f0c03023f10c8b77b08694e487/third_party/blink/renderer/core/frame/local_frame_view.cc [modify] https://crrev.com/31d871700a2c92f0c03023f10c8b77b08694e487/third_party/blink/renderer/core/frame/local_frame_view.h [modify] https://crrev.com/31d871700a2c92f0c03023f10c8b77b08694e487/third_party/blink/renderer/core/frame/remote_frame_view.cc [modify] https://crrev.com/31d871700a2c92f0c03023f10c8b77b08694e487/third_party/blink/renderer/core/frame/remote_frame_view.h [modify] https://crrev.com/31d871700a2c92f0c03023f10c8b77b08694e487/third_party/blink/renderer/core/scheduler/frame_throttling_test.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/880521f770bb5d4cf420a2b12268fbeaece6ea41 commit 880521f770bb5d4cf420a2b12268fbeaece6ea41 Author: Chris Harrelson <chrishtr@chromium.org> Date: Thu Jul 19 03:11:56 2018 Partial re-land: [IO] Only compute intersection observations if any property tree state has changed, and only for full-frame updates. This CL includes only the refactoring aspect of the original CL, not the part about avoiding intersection observations when possible. Bug: 831762 Change-Id: I6dd2786e61faedd4b3b6fdedc0f6d3080b4a9bf1 Reviewed-on: https://chromium-review.googlesource.com/1141065 Reviewed-by: vmpstr <vmpstr@chromium.org> Commit-Queue: Chris Harrelson <chrishtr@chromium.org> Cr-Commit-Position: refs/heads/master@{#576343} [modify] https://crrev.com/880521f770bb5d4cf420a2b12268fbeaece6ea41/third_party/blink/renderer/core/frame/frame_view.h [modify] https://crrev.com/880521f770bb5d4cf420a2b12268fbeaece6ea41/third_party/blink/renderer/core/frame/local_frame_view.cc [modify] https://crrev.com/880521f770bb5d4cf420a2b12268fbeaece6ea41/third_party/blink/renderer/core/frame/local_frame_view.h [modify] https://crrev.com/880521f770bb5d4cf420a2b12268fbeaece6ea41/third_party/blink/renderer/core/frame/remote_frame_view.cc [modify] https://crrev.com/880521f770bb5d4cf420a2b12268fbeaece6ea41/third_party/blink/renderer/core/frame/remote_frame_view.h [modify] https://crrev.com/880521f770bb5d4cf420a2b12268fbeaece6ea41/third_party/blink/renderer/core/scheduler/frame_throttling_test.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/e8856ddfcf3774e1f6982fb85974bc387ae08059 commit e8856ddfcf3774e1f6982fb85974bc387ae08059 Author: Chris Harrelson <chrishtr@chromium.org> Date: Fri Jul 20 21:57:28 2018 Re-land: only compute intersection observations if any property tree state has changed. The refactoring aspect re-landed earlier; this is a re-land of the core logic in [1] with a bugfix for the case when a lifecycle update to PrePaintClean intervened after property tree dirty bit mutation. [1] https://chromium.googlesource.com/chromium/src/+/cdea59c0db145f8e85ea00e9f6d31642929e2397 Bug: 831762 Change-Id: I3cea18ee7b6ef8865e8db6733de90197451f9589 Reviewed-on: https://chromium-review.googlesource.com/1144630 Commit-Queue: Chris Harrelson <chrishtr@chromium.org> Reviewed-by: vmpstr <vmpstr@chromium.org> Cr-Commit-Position: refs/heads/master@{#577001} [modify] https://crrev.com/e8856ddfcf3774e1f6982fb85974bc387ae08059/third_party/blink/renderer/core/frame/local_frame_view.cc [modify] https://crrev.com/e8856ddfcf3774e1f6982fb85974bc387ae08059/third_party/blink/renderer/core/frame/local_frame_view.h [modify] https://crrev.com/e8856ddfcf3774e1f6982fb85974bc387ae08059/third_party/blink/renderer/core/intersection_observer/intersection_observer.cc [modify] https://crrev.com/e8856ddfcf3774e1f6982fb85974bc387ae08059/third_party/blink/renderer/core/intersection_observer/intersection_observer_test.cc [modify] https://crrev.com/e8856ddfcf3774e1f6982fb85974bc387ae08059/third_party/blink/renderer/core/layout/layout_object.cc [modify] https://crrev.com/e8856ddfcf3774e1f6982fb85974bc387ae08059/third_party/blink/renderer/core/scheduler/frame_throttling_test.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/6f559fb2b7519555247138e3a94366b1fc030c48 commit 6f559fb2b7519555247138e3a94366b1fc030c48 Author: Chris Harrelson <chrishtr@chromium.org> Date: Mon Jul 23 18:29:04 2018 Re-land: only compute intersection observations if any property tree state has changed. The refactoring aspect re-landed earlier; this is a re-land of the core logic in [1] with a bugfix for the case when a lifecycle update to PrePaintClean intervened after property tree dirty bit mutation. [1] https://chromium.googlesource.com/chromium/src/+/cdea59c0db145f8e85ea00e9f6d31642929e2397 Bug: 831762 TBR=chrishtr@chromium.org (cherry picked from commit e8856ddfcf3774e1f6982fb85974bc387ae08059) Change-Id: I3cea18ee7b6ef8865e8db6733de90197451f9589 Reviewed-on: https://chromium-review.googlesource.com/1144630 Commit-Queue: Chris Harrelson <chrishtr@chromium.org> Reviewed-by: vmpstr <vmpstr@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#577001} Reviewed-on: https://chromium-review.googlesource.com/1147206 Reviewed-by: Chris Harrelson <chrishtr@chromium.org> Cr-Commit-Position: refs/branch-heads/3497@{#18} Cr-Branched-From: 271eaf50594eb818c9295dc78d364aea18c82ea8-refs/heads/master@{#576753} [modify] https://crrev.com/6f559fb2b7519555247138e3a94366b1fc030c48/third_party/blink/renderer/core/frame/local_frame_view.cc [modify] https://crrev.com/6f559fb2b7519555247138e3a94366b1fc030c48/third_party/blink/renderer/core/frame/local_frame_view.h [modify] https://crrev.com/6f559fb2b7519555247138e3a94366b1fc030c48/third_party/blink/renderer/core/intersection_observer/intersection_observer.cc [modify] https://crrev.com/6f559fb2b7519555247138e3a94366b1fc030c48/third_party/blink/renderer/core/intersection_observer/intersection_observer_test.cc [modify] https://crrev.com/6f559fb2b7519555247138e3a94366b1fc030c48/third_party/blink/renderer/core/layout/layout_object.cc [modify] https://crrev.com/6f559fb2b7519555247138e3a94366b1fc030c48/third_party/blink/renderer/core/scheduler/frame_throttling_test.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/2685a6b3e82be7711c6d3b02f225b1b90bb9bf46 commit 2685a6b3e82be7711c6d3b02f225b1b90bb9bf46 Author: Chris Harrelson <chrishtr@chromium.org> Date: Fri Jul 27 18:08:01 2018 Add a bitfield in LayoutObject for whether it corresponds to an effective root scroller. This saves almost 4% of hit test time on some examples, and improves performance of occlusion hit testing for IOv2 accordingly. Bug: 831762 Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_layout_ng;luci.chromium.try:linux_layout_tests_slimming_paint_v2;master.tryserver.blink:linux_trusty_blink_rel Change-Id: I045e0414c84208b60796fe44ea023ebbb3fbe40a Reviewed-on: https://chromium-review.googlesource.com/1152296 Commit-Queue: Chris Harrelson <chrishtr@chromium.org> Reviewed-by: Philip Rogers <pdr@chromium.org> Cr-Commit-Position: refs/heads/master@{#578704} [modify] https://crrev.com/2685a6b3e82be7711c6d3b02f225b1b90bb9bf46/third_party/blink/renderer/core/layout/layout_box.cc [modify] https://crrev.com/2685a6b3e82be7711c6d3b02f225b1b90bb9bf46/third_party/blink/renderer/core/layout/layout_embedded_content.cc [modify] https://crrev.com/2685a6b3e82be7711c6d3b02f225b1b90bb9bf46/third_party/blink/renderer/core/layout/layout_object.cc [modify] https://crrev.com/2685a6b3e82be7711c6d3b02f225b1b90bb9bf46/third_party/blink/renderer/core/layout/layout_object.h [modify] https://crrev.com/2685a6b3e82be7711c6d3b02f225b1b90bb9bf46/third_party/blink/renderer/core/layout/ng/layout_ng_mixin.cc [modify] https://crrev.com/2685a6b3e82be7711c6d3b02f225b1b90bb9bf46/third_party/blink/renderer/core/page/scrolling/root_scroller_controller.cc [modify] https://crrev.com/2685a6b3e82be7711c6d3b02f225b1b90bb9bf46/third_party/blink/renderer/core/page/scrolling/root_scroller_util.cc [modify] https://crrev.com/2685a6b3e82be7711c6d3b02f225b1b90bb9bf46/third_party/blink/renderer/core/page/scrolling/root_scroller_util.h [modify] https://crrev.com/2685a6b3e82be7711c6d3b02f225b1b90bb9bf46/third_party/blink/renderer/core/paint/paint_layer.cc
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/3426e16c19b08a099050df13bb029618955c36a6 commit 3426e16c19b08a099050df13bb029618955c36a6 Author: Stefan Zager <szager@chromium.org> Date: Mon Jul 30 23:13:20 2018 [IntersectionObserverV2] Don't use a list-based hit test Previously, rect-based hit tests were assumed to be list-based as well. However, that's not necessary for IO. It's sufficient to return the first hit test result -- if it's the target element, then the target is not occluded; otherwise, it is occluded. Also add the kIgnoreZeroOpacityObjects flag, since zero opacity objects are not considered occluding by IO. With this change, the "deep layers" benchmark for IOV2 runs 6-7 times slower with visibility checking enabled, which is a big improvement over previous measurements (which were up to 50x slower). BUG= 831762 , 823748 R=chrishtr@chromium.org Cq-Include-Trybots: luci.chromium.try:linux_layout_tests_slimming_paint_v2;master.tryserver.blink:linux_trusty_blink_rel Change-Id: I7471221357de465e9e5c1673537e7f11ee287e6a Reviewed-on: https://chromium-review.googlesource.com/1153547 Commit-Queue: Chris Harrelson <chrishtr@chromium.org> Reviewed-by: Chris Harrelson <chrishtr@chromium.org> Cr-Commit-Position: refs/heads/master@{#579223} [modify] https://crrev.com/3426e16c19b08a099050df13bb029618955c36a6/third_party/blink/renderer/core/intersection_observer/intersection_observation.cc [modify] https://crrev.com/3426e16c19b08a099050df13bb029618955c36a6/third_party/blink/renderer/core/intersection_observer/intersection_observer_test.cc [modify] https://crrev.com/3426e16c19b08a099050df13bb029618955c36a6/third_party/blink/renderer/core/layout/hit_test_request.h [modify] https://crrev.com/3426e16c19b08a099050df13bb029618955c36a6/third_party/blink/renderer/core/layout/layout_object.cc [modify] https://crrev.com/3426e16c19b08a099050df13bb029618955c36a6/third_party/blink/renderer/core/layout/layout_view.cc [modify] https://crrev.com/3426e16c19b08a099050df13bb029618955c36a6/third_party/blink/renderer/core/paint/paint_layer.cc
Comment 1 by bugdroid1@chromium.org
, Apr 13 2018