New issue
Advanced search Search tips

Issue 831762 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Jul 30
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Android , Windows , Chrome , Mac
Pri: 2
Type: Task

Blocking:
issue 847468



Sign in to add a comment

Optimize performance of IntersectionObserver

Project Member Reported by chrishtr@chromium.org, Apr 11 2018

Issue description

One way to do so is by using GeometryMapper to compute rects. See crbug.com/831696
for promising results with hit testing.
 
Project Member

Comment 1 by bugdroid1@chromium.org, Apr 13 2018

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

Labels: -Pri-2 Target-67 Merge-Request-67 ReleaseBlock-Stable Pri-1
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.
Labels: OS-Android OS-Linux OS-Mac OS-Windows

Comment 4 by gov...@chromium.org, Apr 13 2018

Labels: -Merge-Request-67 Merge-Approved-67
Approving merge to M67 branch 3396 per comment #2 and per offline chat with 	chrishtr@. 
Project Member

Comment 5 by bugdroid1@chromium.org, Apr 13 2018

Labels: -merge-approved-67 merge-merged-3396
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

Labels: -ReleaseBlock-Stable
Project Member

Comment 7 by bugdroid1@chromium.org, Apr 17 2018

Labels: merge-merged-testbranch
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

Comment 8 by e...@chromium.org, Apr 30 2018

Labels: -Pri-1 -Type-Bug Pri-2 Type-Task
Project Member

Comment 9 by bugdroid1@chromium.org, May 10 2018

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

Project Member

Comment 10 by bugdroid1@chromium.org, May 12 2018

Project Member

Comment 12 by bugdroid1@chromium.org, May 21 2018

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

Blocking: 847468
Project Member

Comment 14 by bugdroid1@chromium.org, Jun 16 2018

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

Project Member

Comment 16 by bugdroid1@chromium.org, Jun 19 2018

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

Project Member

Comment 17 by bugdroid1@chromium.org, Jun 26 2018

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

Project Member

Comment 18 by bugdroid1@chromium.org, Jun 29 2018

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

Project Member

Comment 19 by bugdroid1@chromium.org, Jul 3

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

Project Member

Comment 20 by bugdroid1@chromium.org, Jul 11

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

Project Member

Comment 21 by bugdroid1@chromium.org, Jul 12

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

Project Member

Comment 22 by bugdroid1@chromium.org, Jul 16

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

Project Member

Comment 23 by bugdroid1@chromium.org, Jul 19

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

Project Member

Comment 24 by bugdroid1@chromium.org, Jul 20

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

Project Member

Comment 25 by bugdroid1@chromium.org, Jul 23

Labels: merge-merged-3497
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

Project Member

Comment 26 by bugdroid1@chromium.org, Jul 27

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

Project Member

Comment 27 by bugdroid1@chromium.org, Jul 30

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

Status: Fixed (was: Assigned)

Sign in to add a comment