New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 882663 link

Starred by 12 users

Issue metadata

Status: Assigned
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Android , Windows , Chrome , Mac
Pri: 2
Type: Feature

Blocked on:
issue 907613
issue 907619



Sign in to add a comment

Implement display locking

Project Member Reported by vmp...@chromium.org, Sep 10

Issue description

Project Member

Comment 1 by bugdroid1@chromium.org, Oct 4

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/d5f146f30d4fbd276c59e3985a2dc39971c55e15

commit d5f146f30d4fbd276c59e3985a2dc39971c55e15
Author: Vladimir Levin <vmpstr@chromium.org>
Date: Thu Oct 04 23:47:44 2018

Add DisplayLock idl with a sample layout test.

This patch adds an idl for acquireDisplayLock and DisplayLockContext
with a schedule function. Also adds a naive implementation that just
runs the callback immediately, which makes the layout test pass.

The test should keep passing whenever we actually start implementing
the feature.

See the bug for description of the feature.

R=chrishtr@chromium.org

Bug: 882663
Change-Id: Ia8770e2ca3e6387eec3946c770d0f47cf57d23b4
Reviewed-on: https://chromium-review.googlesource.com/c/1258247
Commit-Queue: vmpstr <vmpstr@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#596927}
[modify] https://crrev.com/d5f146f30d4fbd276c59e3985a2dc39971c55e15/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/d5f146f30d4fbd276c59e3985a2dc39971c55e15/third_party/WebKit/LayoutTests/VirtualTestSuites
[add] https://crrev.com/d5f146f30d4fbd276c59e3985a2dc39971c55e15/third_party/WebKit/LayoutTests/display-lock/acquire-display-lock-expected.html
[add] https://crrev.com/d5f146f30d4fbd276c59e3985a2dc39971c55e15/third_party/WebKit/LayoutTests/display-lock/acquire-display-lock.html
[add] https://crrev.com/d5f146f30d4fbd276c59e3985a2dc39971c55e15/third_party/WebKit/LayoutTests/virtual/display-lock/display-lock/README.txt
[modify] https://crrev.com/d5f146f30d4fbd276c59e3985a2dc39971c55e15/third_party/blink/renderer/bindings/core/v8/BUILD.gn
[modify] https://crrev.com/d5f146f30d4fbd276c59e3985a2dc39971c55e15/third_party/blink/renderer/core/BUILD.gn
[modify] https://crrev.com/d5f146f30d4fbd276c59e3985a2dc39971c55e15/third_party/blink/renderer/core/core_idl_files.gni
[add] https://crrev.com/d5f146f30d4fbd276c59e3985a2dc39971c55e15/third_party/blink/renderer/core/display_lock/BUILD.gn
[add] https://crrev.com/d5f146f30d4fbd276c59e3985a2dc39971c55e15/third_party/blink/renderer/core/display_lock/display_lock_context.cc
[add] https://crrev.com/d5f146f30d4fbd276c59e3985a2dc39971c55e15/third_party/blink/renderer/core/display_lock/display_lock_context.h
[add] https://crrev.com/d5f146f30d4fbd276c59e3985a2dc39971c55e15/third_party/blink/renderer/core/display_lock/display_lock_context.idl
[modify] https://crrev.com/d5f146f30d4fbd276c59e3985a2dc39971c55e15/third_party/blink/renderer/core/dom/element.cc
[modify] https://crrev.com/d5f146f30d4fbd276c59e3985a2dc39971c55e15/third_party/blink/renderer/core/dom/element.h
[modify] https://crrev.com/d5f146f30d4fbd276c59e3985a2dc39971c55e15/third_party/blink/renderer/core/dom/element.idl
[modify] https://crrev.com/d5f146f30d4fbd276c59e3985a2dc39971c55e15/third_party/blink/renderer/platform/runtime_enabled_features.json5

Project Member

Comment 2 by bugdroid1@chromium.org, Oct 18

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/7c8fc7878f280dce712d052aac4821bc67b1dcc4

commit 7c8fc7878f280dce712d052aac4821bc67b1dcc4
Author: Vladimir Levin <vmpstr@chromium.org>
Date: Thu Oct 18 17:39:01 2018

[DL] Add a DisplayLocking callback queue.

This patch adds a callback queue to display locking context in order to
process scheduled tasks in the correct order.

Currently the behavior is:
- Put callbacks in a queue, and post a task to run them.
- While running the task, process all callbacks in the existing queue
- If any of the callbacks schedule a _new_ callback, then they go into
  a new queue, and a new task is scheduled to run them.

R=chrishtr@chromium.org

Bug: 882663
Change-Id: I41dfc756bb5585d33da85746054a42cc7f5072ef
Reviewed-on: https://chromium-review.googlesource.com/c/1277696
Commit-Queue: vmpstr <vmpstr@chromium.org>
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#600814}
[modify] https://crrev.com/7c8fc7878f280dce712d052aac4821bc67b1dcc4/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/7c8fc7878f280dce712d052aac4821bc67b1dcc4/third_party/blink/renderer/core/display_lock/display_lock_context.cc
[modify] https://crrev.com/7c8fc7878f280dce712d052aac4821bc67b1dcc4/third_party/blink/renderer/core/display_lock/display_lock_context.h
[modify] https://crrev.com/7c8fc7878f280dce712d052aac4821bc67b1dcc4/third_party/blink/renderer/core/display_lock/display_lock_context.idl
[modify] https://crrev.com/7c8fc7878f280dce712d052aac4821bc67b1dcc4/third_party/blink/renderer/core/dom/element.cc
[modify] https://crrev.com/7c8fc7878f280dce712d052aac4821bc67b1dcc4/third_party/blink/renderer/core/dom/element_rare_data.cc
[modify] https://crrev.com/7c8fc7878f280dce712d052aac4821bc67b1dcc4/third_party/blink/renderer/core/dom/element_rare_data.h

Project Member

Comment 3 by bugdroid1@chromium.org, Nov 15

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/69afc0963fca341b741ad17e1706921ddf0368f8

commit 69afc0963fca341b741ad17e1706921ddf0368f8
Author: Vladimir Levin <vmpstr@chromium.org>
Date: Thu Nov 15 19:22:08 2018

[DL] Implement all-or-nothing display locking.

This patch adds ability to delay style until display lock is committed.
However, once committed it will go through all the phases and display
contents synchronously.

It adds the ability for the DisplayLockContext to keep track of the
current state, making it easier to reason about what should happen
next. As well, it adds a lifecycle update state to keep track of which
lifecycle stage should occur next.

This is a stepping stone towards a correct solution.

R=chrishtr@chromium.org

Bug: 882663
Change-Id: I660e81d9cd30604883f8f4971920a1bb19dafe67
Reviewed-on: https://chromium-review.googlesource.com/c/1334656
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Commit-Queue: vmpstr <vmpstr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#608470}
[modify] https://crrev.com/69afc0963fca341b741ad17e1706921ddf0368f8/third_party/WebKit/LayoutTests/TestExpectations
[modify] https://crrev.com/69afc0963fca341b741ad17e1706921ddf0368f8/third_party/WebKit/LayoutTests/display-lock/context-suspend-resume-empty.html
[modify] https://crrev.com/69afc0963fca341b741ad17e1706921ddf0368f8/third_party/blink/renderer/core/display_lock/display_lock_context.cc
[modify] https://crrev.com/69afc0963fca341b741ad17e1706921ddf0368f8/third_party/blink/renderer/core/display_lock/display_lock_context.h
[modify] https://crrev.com/69afc0963fca341b741ad17e1706921ddf0368f8/third_party/blink/renderer/core/dom/element.cc
[modify] https://crrev.com/69afc0963fca341b741ad17e1706921ddf0368f8/third_party/blink/renderer/core/dom/element.h
[modify] https://crrev.com/69afc0963fca341b741ad17e1706921ddf0368f8/third_party/blink/renderer/core/dom/element_rare_data.h
[modify] https://crrev.com/69afc0963fca341b741ad17e1706921ddf0368f8/third_party/blink/renderer/core/inspector/inspector_trace_events.cc
[modify] https://crrev.com/69afc0963fca341b741ad17e1706921ddf0368f8/third_party/blink/renderer/core/inspector/inspector_trace_events.h
[modify] https://crrev.com/69afc0963fca341b741ad17e1706921ddf0368f8/third_party/blink/renderer/core/layout/layout_block.cc
[modify] https://crrev.com/69afc0963fca341b741ad17e1706921ddf0368f8/third_party/blink/renderer/core/layout/layout_block_flow.cc
[modify] https://crrev.com/69afc0963fca341b741ad17e1706921ddf0368f8/third_party/blink/renderer/core/layout/layout_box.cc
[modify] https://crrev.com/69afc0963fca341b741ad17e1706921ddf0368f8/third_party/blink/renderer/core/layout/layout_object.h
[modify] https://crrev.com/69afc0963fca341b741ad17e1706921ddf0368f8/third_party/blink/renderer/core/layout/subtree_layout_scope.cc
[modify] https://crrev.com/69afc0963fca341b741ad17e1706921ddf0368f8/third_party/blink/renderer/core/paint/paint_layer_painter.cc
[modify] https://crrev.com/69afc0963fca341b741ad17e1706921ddf0368f8/third_party/blink/renderer/core/paint/pre_paint_tree_walk.cc

Project Member

Comment 4 by bugdroid1@chromium.org, Nov 20

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0697b0c24186b5c5deff58d69439ee97bfe4f84c

commit 0697b0c24186b5c5deff58d69439ee97bfe4f84c
Author: Vladimir Levin <vmpstr@chromium.org>
Date: Tue Nov 20 14:53:16 2018

[DL] Add style recalc as one of the needed lifecycle states.

This patch adds style recalc and one of the stages that the display
lock prevents. Note that in order to reach the element during commit,
this also adds a "style needs recalc" to the element.

I'll replace these with smaller hammers after updating the layout tests,
and fixing any bugs that popup there.

R=chrishtr@chromium.org

Bug: 882663
Change-Id: Icf8ac9c285b5e340c38addca7483b419f34ebadc
Reviewed-on: https://chromium-review.googlesource.com/c/1340570
Reviewed-by: Rune Lillesveen <futhark@chromium.org>
Commit-Queue: vmpstr <vmpstr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#609700}
[modify] https://crrev.com/0697b0c24186b5c5deff58d69439ee97bfe4f84c/third_party/blink/renderer/core/display_lock/display_lock_context.cc
[modify] https://crrev.com/0697b0c24186b5c5deff58d69439ee97bfe4f84c/third_party/blink/renderer/core/display_lock/display_lock_context.h
[modify] https://crrev.com/0697b0c24186b5c5deff58d69439ee97bfe4f84c/third_party/blink/renderer/core/dom/document.cc
[modify] https://crrev.com/0697b0c24186b5c5deff58d69439ee97bfe4f84c/third_party/blink/renderer/core/dom/element.cc
[modify] https://crrev.com/0697b0c24186b5c5deff58d69439ee97bfe4f84c/third_party/blink/renderer/core/dom/element.h
[modify] https://crrev.com/0697b0c24186b5c5deff58d69439ee97bfe4f84c/third_party/blink/renderer/core/dom/node.cc
[modify] https://crrev.com/0697b0c24186b5c5deff58d69439ee97bfe4f84c/third_party/blink/renderer/core/dom/node.h

Blockedon: 907613
Blockedon: 907619
Project Member

Comment 7 by bugdroid1@chromium.org, Nov 27

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ddc12b7ef38ce5964982162f13b9a9276ca4c189

commit ddc12b7ef38ce5964982162f13b9a9276ca4c189
Author: Vladimir Levin <vmpstr@chromium.org>
Date: Tue Nov 27 19:53:37 2018

[DL] Update layout tests to be mode 2 tests.

This updates the layout test and some code changes to make those tests
pass to be mode 2 tests (ie append after lock).

R=chrishtr@chromium.org

Bug: 882663
Change-Id: I44554d486c5af0db1c680d5be719d687fd2745d2
Reviewed-on: https://chromium-review.googlesource.com/c/1344263
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Reviewed-by: Morten Stenshorne <mstensho@chromium.org>
Commit-Queue: vmpstr <vmpstr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#611264}
[modify] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/renderer/core/display_lock/display_lock_context.cc
[modify] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/renderer/core/display_lock/display_lock_context.h
[modify] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/renderer/core/dom/element.cc
[modify] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/renderer/core/layout/layout_object.h
[modify] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/renderer/core/style/computed_style.h
[modify] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNG
[modify] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/TestExpectations
[delete] https://crrev.com/d3efa8220b06059cfa1a2ebf15c543131122071f/third_party/blink/web_tests/display-lock/context-suspend-empty-expected.html
[delete] https://crrev.com/d3efa8220b06059cfa1a2ebf15c543131122071f/third_party/blink/web_tests/display-lock/context-suspend-expected.html
[delete] https://crrev.com/d3efa8220b06059cfa1a2ebf15c543131122071f/third_party/blink/web_tests/display-lock/context-suspend-no-schedules-expected.html
[delete] https://crrev.com/d3efa8220b06059cfa1a2ebf15c543131122071f/third_party/blink/web_tests/display-lock/context-suspend-resume-expected.html
[delete] https://crrev.com/d3efa8220b06059cfa1a2ebf15c543131122071f/third_party/blink/web_tests/display-lock/context-two-suspend-resume-expected.html
[rename] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/acquire-callback-throws-expected.html
[add] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/acquire-callback-throws-expected.txt
[add] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/acquire-callback-throws-removes-container-expected.html
[add] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/acquire-callback-throws-removes-container-expected.txt
[add] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/acquire-callback-throws-removes-container.html
[rename] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/acquire-callback-throws.html
[rename] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/acquire-display-lock-expected.html
[rename] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/acquire-display-lock.html
[add] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/acquire-on-inline-fails-expected.html
[add] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/acquire-on-inline-fails.html
[copy] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/acquire-on-no-containment-added-expected.html
[add] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/acquire-on-no-containment-added.html
[add] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/acquire-on-no-containment-fails-expected.html
[add] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/acquire-on-no-containment-fails.html
[add] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/context-suspend-empty-expected.html
[rename] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/context-suspend-empty.html
[add] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/context-suspend-expected.html
[add] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/context-suspend-no-schedules-expected.html
[rename] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/context-suspend-no-schedules.html
[rename] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/context-suspend-resume-empty-expected.html
[rename] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/context-suspend-resume-empty.html
[copy] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/context-suspend-resume-expected.html
[rename] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/context-suspend-resume.html
[rename] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/context-suspend.html
[copy] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/context-two-suspend-resume-expected.html
[rename] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/context-two-suspend-resume.html
[copy] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/element-retained-by-context-expected.html
[add] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/element-retained-by-context.html
[rename] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/multiple-schedules-expected.html
[rename] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/multiple-schedules-recursive-expected.html
[rename] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/multiple-schedules-recursive.html
[rename] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/multiple-schedules.html
[rename] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/simple-schedule-1-expected.html
[rename] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/simple-schedule-1.html
[copy] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/simple-schedule-2-expected.html
[rename] https://crrev.com/ddc12b7ef38ce5964982162f13b9a9276ca4c189/third_party/blink/web_tests/display-lock/lock-before-append/simple-schedule-2.html
[delete] https://crrev.com/d3efa8220b06059cfa1a2ebf15c543131122071f/third_party/blink/web_tests/display-lock/simple-schedule-2-expected.html
[delete] https://crrev.com/d3efa8220b06059cfa1a2ebf15c543131122071f/third_party/blink/web_tests/virtual/display-lock/display-lock/acquire-callback-throws-expected.txt

Project Member

Comment 8 by bugdroid1@chromium.org, Nov 28

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/ad949985f1d715372f9280d46b134ad9ceb859a7

commit ad949985f1d715372f9280d46b134ad9ceb859a7
Author: Vladimir Levin <vmpstr@chromium.org>
Date: Wed Nov 28 18:40:33 2018

[DL] Don't do full layout invalidation when committing a lock.

This patch mimics the style code in that it tries not to propagate the
invalidation up the container chain if the element is locked for display

When the lock commits and the element needs layout, then it marks
the ancestor chain so that the code can reach it in layout.

R=chrishtr@chromium.org, mstensho@chromium.org

Bug: 882663
Change-Id: I499e91e6a14f61e5dfbeae74d3c93ac8b321e944
Reviewed-on: https://chromium-review.googlesource.com/c/1344825
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Commit-Queue: vmpstr <vmpstr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#611792}
[modify] https://crrev.com/ad949985f1d715372f9280d46b134ad9ceb859a7/third_party/blink/renderer/core/display_lock/display_lock_context.cc
[modify] https://crrev.com/ad949985f1d715372f9280d46b134ad9ceb859a7/third_party/blink/renderer/core/display_lock/display_lock_context.h
[modify] https://crrev.com/ad949985f1d715372f9280d46b134ad9ceb859a7/third_party/blink/renderer/core/layout/layout_object.cc
[modify] https://crrev.com/ad949985f1d715372f9280d46b134ad9ceb859a7/third_party/blink/renderer/core/layout/layout_object.h

Project Member

Comment 9 by bugdroid1@chromium.org, Nov 28

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/def8247a37e4afa0b009436d1f9554f6f03b8157

commit def8247a37e4afa0b009436d1f9554f6f03b8157
Author: Vladimir Levin <vmpstr@chromium.org>
Date: Wed Nov 28 20:41:11 2018

[DL] Reject the promise if it's acquired while connected.

This patch ensures that we don't accidentally use display locking in
mode 1, which isn't currently supported.

R=chrishtr@chromium.org

Bug: 882663
Change-Id: I2be26e2573ebe93a97bd6df4c8fcb7cd6221b28c
Reviewed-on: https://chromium-review.googlesource.com/c/1347102
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Commit-Queue: vmpstr <vmpstr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#611859}
[modify] https://crrev.com/def8247a37e4afa0b009436d1f9554f6f03b8157/third_party/blink/renderer/core/display_lock/display_lock_context.h
[modify] https://crrev.com/def8247a37e4afa0b009436d1f9554f6f03b8157/third_party/blink/renderer/core/dom/element.cc

Project Member

Comment 10 by bugdroid1@chromium.org, Dec 5

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2f3e8883f2ed560cd9645dbb3ea4d6d14717b417

commit 2f3e8883f2ed560cd9645dbb3ea4d6d14717b417
Author: Vladimir Levin <vmpstr@chromium.org>
Date: Wed Dec 05 15:25:15 2018

[DL]: Eliminate a leak caused by active script wrappable + element ref.

This patch fixes a leak:
- DisplayLockContext is an active script wrappable meaning it can keep
  itself alive. It does so as long as we're not resolved.
- It also holds a strong reference to the locked element since it can
  be accessed via callbacks (via context.lockedElement). The reference
  prevents GC from cleaning it up.

However, what can happen is that we get into the disconnected state, and
script loses the element reference. In that case the context is alive
because it's unresolved, and it's keeping the element alive as well.

Instead, when we become disconnected, we only hold on to a weak reference
to the element.

R=chrishtr@chromium.org

Bug: 882663
Change-Id: I1106b4862444578a1290e7188b5e24b3c61761dd
Reviewed-on: https://chromium-review.googlesource.com/c/1361659
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Commit-Queue: vmpstr <vmpstr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#613972}
[modify] https://crrev.com/2f3e8883f2ed560cd9645dbb3ea4d6d14717b417/third_party/blink/renderer/core/BUILD.gn
[modify] https://crrev.com/2f3e8883f2ed560cd9645dbb3ea4d6d14717b417/third_party/blink/renderer/core/DEPS
[modify] https://crrev.com/2f3e8883f2ed560cd9645dbb3ea4d6d14717b417/third_party/blink/renderer/core/display_lock/display_lock_context.cc
[modify] https://crrev.com/2f3e8883f2ed560cd9645dbb3ea4d6d14717b417/third_party/blink/renderer/core/display_lock/display_lock_context.h
[add] https://crrev.com/2f3e8883f2ed560cd9645dbb3ea4d6d14717b417/third_party/blink/renderer/core/display_lock/display_lock_context_test.cc

Project Member

Comment 11 by bugdroid1@chromium.org, Dec 6

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/43a377d1697ac74ec5e45f739ee90becbcf253df

commit 43a377d1697ac74ec5e45f739ee90becbcf253df
Author: Vladimir Levin <vmpstr@chromium.org>
Date: Thu Dec 06 16:15:58 2018

[DL] Don't immediately update the locked element frame rect.

This patch ensures that we do layout in a pending frame rect, which is
only put in place for children of the locked element during layout.

After the promise is resolved, we put the pending frame rect as the
active one and ensure that we relayout the previously locked box itself.

This means that if the promise resolution, for example, removed the
element as is the case in
https://docs.google.com/document/d/1VrcVA5JyBmYn0Yi4wjPt1l9ce5Mhf-zu6o63p_mt98w/edit

Then we never commit what was a pending layout and never see a flash
of laid out content.

R=chrishtr@chromium.org, mstensho@chromium.org

Bug:  907613 , 882663
Change-Id: I7d03ae73ea4cb96c17ce8bb4162718155c2072be
Reviewed-on: https://chromium-review.googlesource.com/c/1358969
Reviewed-by: Morten Stenshorne <mstensho@chromium.org>
Commit-Queue: vmpstr <vmpstr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#614373}
[modify] https://crrev.com/43a377d1697ac74ec5e45f739ee90becbcf253df/third_party/blink/renderer/core/display_lock/display_lock_context.cc
[modify] https://crrev.com/43a377d1697ac74ec5e45f739ee90becbcf253df/third_party/blink/renderer/core/display_lock/display_lock_context.h
[modify] https://crrev.com/43a377d1697ac74ec5e45f739ee90becbcf253df/third_party/blink/renderer/core/layout/layout_block.cc
[modify] https://crrev.com/43a377d1697ac74ec5e45f739ee90becbcf253df/third_party/blink/renderer/core/layout/layout_box.h
[modify] https://crrev.com/43a377d1697ac74ec5e45f739ee90becbcf253df/third_party/blink/renderer/core/layout/layout_object.h
[add] https://crrev.com/43a377d1697ac74ec5e45f739ee90becbcf253df/third_party/blink/web_tests/display-lock/lock-before-append/measure-and-remove-expected.html
[add] https://crrev.com/43a377d1697ac74ec5e45f739ee90becbcf253df/third_party/blink/web_tests/display-lock/lock-before-append/measure-and-remove.html

Project Member

Comment 12 by bugdroid1@chromium.org, Dec 11

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/26cbade5de8d3803d9bf83ee1686022056e2d295

commit 26cbade5de8d3803d9bf83ee1686022056e2d295
Author: Vladimir Levin <vmpstr@chromium.org>
Date: Tue Dec 11 16:56:36 2018

[DL] Handle forced layouts.

If the layout is forced, then we temporarily allow the processing of
the subtree. The locked element's frame rect still remains to be the same
as at the time the lock was acquired.

R=chrishtr@chromium.org, mstensho@chromium.org, futhark@chromium.org

Bug:  907613 , 882663
Change-Id: I9d1f63c287a73e7a8f3cbc9cb5acc2a009ddd024
Reviewed-on: https://chromium-review.googlesource.com/c/1363957
Commit-Queue: vmpstr <vmpstr@chromium.org>
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Reviewed-by: Rune Lillesveen <futhark@chromium.org>
Reviewed-by: Morten Stenshorne <mstensho@chromium.org>
Cr-Commit-Position: refs/heads/master@{#615556}
[modify] https://crrev.com/26cbade5de8d3803d9bf83ee1686022056e2d295/third_party/blink/renderer/core/display_lock/display_lock_context.cc
[modify] https://crrev.com/26cbade5de8d3803d9bf83ee1686022056e2d295/third_party/blink/renderer/core/display_lock/display_lock_context.h
[modify] https://crrev.com/26cbade5de8d3803d9bf83ee1686022056e2d295/third_party/blink/renderer/core/dom/document.cc
[add] https://crrev.com/26cbade5de8d3803d9bf83ee1686022056e2d295/third_party/blink/web_tests/display-lock/lock-before-append/measure-forced-layout.html

Project Member

Comment 13 by bugdroid1@chromium.org, Dec 14

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/bfa40879994ac2a1370653c0f1188cb8e775d25a

commit bfa40879994ac2a1370653c0f1188cb8e775d25a
Author: Vladimir Levin <vmpstr@chromium.org>
Date: Fri Dec 14 15:49:51 2018

[DL]: Implement a budget interface in display locking.

This patch does a few things:
- Removes the debugging macro code since it's losing its value.
- Add a DisplayLockBudget with two implementations:
  - Unyielding budget that never yields and finishes everything
  - Strict yielding budget that always yields between every lifecycle phase.
- Pulls out the lifecycle state from the context to the budget
- Adds tests for the budgets.

The step after this would be to implement a yielding budget, which should
be a combination of strictly yielding logic with some sort of a deadline.

R=chrishtr@chromium.org, mstensho@chromium.org

Bug:  907619 , 882663
Change-Id: Idc75abd2334ce7b5aa6b48714b5b720d3da81b42
Reviewed-on: https://chromium-review.googlesource.com/c/1372307
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Commit-Queue: vmpstr <vmpstr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#616687}
[modify] https://crrev.com/bfa40879994ac2a1370653c0f1188cb8e775d25a/third_party/blink/renderer/core/BUILD.gn
[modify] https://crrev.com/bfa40879994ac2a1370653c0f1188cb8e775d25a/third_party/blink/renderer/core/display_lock/BUILD.gn
[add] https://crrev.com/bfa40879994ac2a1370653c0f1188cb8e775d25a/third_party/blink/renderer/core/display_lock/display_lock_budget.cc
[add] https://crrev.com/bfa40879994ac2a1370653c0f1188cb8e775d25a/third_party/blink/renderer/core/display_lock/display_lock_budget.h
[add] https://crrev.com/bfa40879994ac2a1370653c0f1188cb8e775d25a/third_party/blink/renderer/core/display_lock/display_lock_budget_test.cc
[modify] https://crrev.com/bfa40879994ac2a1370653c0f1188cb8e775d25a/third_party/blink/renderer/core/display_lock/display_lock_context.cc
[modify] https://crrev.com/bfa40879994ac2a1370653c0f1188cb8e775d25a/third_party/blink/renderer/core/display_lock/display_lock_context.h
[modify] https://crrev.com/bfa40879994ac2a1370653c0f1188cb8e775d25a/third_party/blink/renderer/core/display_lock/display_lock_context_test.cc
[add] https://crrev.com/bfa40879994ac2a1370653c0f1188cb8e775d25a/third_party/blink/renderer/core/display_lock/strict_yielding_display_lock_budget.cc
[add] https://crrev.com/bfa40879994ac2a1370653c0f1188cb8e775d25a/third_party/blink/renderer/core/display_lock/strict_yielding_display_lock_budget.h
[add] https://crrev.com/bfa40879994ac2a1370653c0f1188cb8e775d25a/third_party/blink/renderer/core/display_lock/unyielding_display_lock_budget.cc
[add] https://crrev.com/bfa40879994ac2a1370653c0f1188cb8e775d25a/third_party/blink/renderer/core/display_lock/unyielding_display_lock_budget.h
[modify] https://crrev.com/bfa40879994ac2a1370653c0f1188cb8e775d25a/third_party/blink/renderer/core/dom/element.cc
[modify] https://crrev.com/bfa40879994ac2a1370653c0f1188cb8e775d25a/third_party/blink/renderer/core/frame/local_frame_view.cc
[modify] https://crrev.com/bfa40879994ac2a1370653c0f1188cb8e775d25a/third_party/blink/renderer/core/frame/local_frame_view.h

Project Member

Comment 14 by bugdroid1@chromium.org, Dec 20

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/57a3d4408f85df4286704d379d59ba85eb959b2c

commit 57a3d4408f85df4286704d379d59ba85eb959b2c
Author: Vladimir Levin <vmpstr@chromium.org>
Date: Thu Dec 20 18:58:35 2018

[DL]: Update display locking to use the revised API.

This patch replaces acquireDisplayLock() and all associated context
operations with getDisplayLock() and three ops:
- acquire
- update
- commit.

R=chrishtr@chromium.org

Bug: 882663
Change-Id: I7e85a3d164538f826a411498e1cddcf58a4c70a1
Reviewed-on: https://chromium-review.googlesource.com/c/1378669
Commit-Queue: vmpstr <vmpstr@chromium.org>
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#618283}
[modify] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/renderer/bindings/core/v8/BUILD.gn
[modify] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/renderer/core/BUILD.gn
[modify] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/renderer/core/DEPS
[modify] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/renderer/core/core_idl_files.gni
[modify] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/renderer/core/display_lock/BUILD.gn
[modify] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/renderer/core/display_lock/display_lock_budget_test.cc
[modify] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/renderer/core/display_lock/display_lock_context.cc
[modify] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/renderer/core/display_lock/display_lock_context.h
[modify] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/renderer/core/display_lock/display_lock_context.idl
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/renderer/core/display_lock/display_lock_context_test.cc
[rename] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/renderer/core/display_lock/display_lock_options.idl
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/renderer/core/display_lock/display_lock_suspended_handle.cc
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/renderer/core/display_lock/display_lock_suspended_handle.h
[modify] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/renderer/core/dom/element.cc
[modify] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/renderer/core/dom/element.h
[modify] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/renderer/core/dom/element.idl
[modify] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/renderer/core/dom/element_rare_data.h
[modify] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/renderer/core/layout/layout_object.h
[modify] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/renderer/core/paint/paint_layer.cc
[modify] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNG
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/web_tests/display-lock/lock-before-append/acquire-callback-throws-expected.txt
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/web_tests/display-lock/lock-before-append/acquire-callback-throws-removes-container-expected.html
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/web_tests/display-lock/lock-before-append/acquire-callback-throws-removes-container-expected.txt
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/web_tests/display-lock/lock-before-append/acquire-callback-throws-removes-container.html
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/web_tests/display-lock/lock-before-append/acquire-callback-throws.html
[rename] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/web_tests/display-lock/lock-before-append/acquire-commit-expected.html
[add] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/web_tests/display-lock/lock-before-append/acquire-commit.html
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/web_tests/display-lock/lock-before-append/acquire-display-lock-expected.html
[copy] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/web_tests/display-lock/lock-before-append/acquire-infinite-timeout-no-commit-expected.html
[rename] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/web_tests/display-lock/lock-before-append/acquire-infinite-timeout-no-commit.html
[copy] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/web_tests/display-lock/lock-before-append/acquire-timeout-expected.html
[add] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/web_tests/display-lock/lock-before-append/acquire-timeout.html
[copy] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/web_tests/display-lock/lock-before-append/acquire-update-commit-expected.html
[add] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/web_tests/display-lock/lock-before-append/acquire-update-commit.html
[rename] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/web_tests/display-lock/lock-before-append/acquire-update-measure-remove-expected.html
[rename] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/web_tests/display-lock/lock-before-append/acquire-update-measure-remove.html
[rename] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/web_tests/display-lock/lock-before-append/commit-on-added-containment-expected.html
[rename] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/web_tests/display-lock/lock-before-append/commit-on-added-containment.html
[rename] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/web_tests/display-lock/lock-before-append/commit-on-inline-fails-expected.html
[rename] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/web_tests/display-lock/lock-before-append/commit-on-inline-fails.html
[rename] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/web_tests/display-lock/lock-before-append/commit-on-no-containment-fails-expected.html
[rename] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/web_tests/display-lock/lock-before-append/commit-on-no-containment-fails.html
[rename] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/web_tests/display-lock/lock-before-append/commit-without-acquire-fails-expected.html
[copy] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/web_tests/display-lock/lock-before-append/commit-without-acquire-fails.html
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/web_tests/display-lock/lock-before-append/context-suspend-empty-expected.html
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/web_tests/display-lock/lock-before-append/context-suspend-expected.html
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/web_tests/display-lock/lock-before-append/context-suspend-no-schedules-expected.html
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/web_tests/display-lock/lock-before-append/context-suspend-no-schedules.html
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/web_tests/display-lock/lock-before-append/context-suspend-resume-empty-expected.html
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/web_tests/display-lock/lock-before-append/context-suspend-resume-empty.html
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/web_tests/display-lock/lock-before-append/context-suspend-resume.html
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/web_tests/display-lock/lock-before-append/context-suspend.html
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/web_tests/display-lock/lock-before-append/context-two-suspend-resume-expected.html
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/web_tests/display-lock/lock-before-append/context-two-suspend-resume.html
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/web_tests/display-lock/lock-before-append/element-retained-by-context-expected.html
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/web_tests/display-lock/lock-before-append/element-retained-by-context.html
[modify] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/web_tests/display-lock/lock-before-append/measure-forced-layout.html
[add] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/web_tests/display-lock/lock-before-append/measure-updated-layout.html
[copy] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/web_tests/display-lock/lock-before-append/multiple-acquires-all-succeed-expected.html
[add] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/web_tests/display-lock/lock-before-append/multiple-acquires-all-succeed.html
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/web_tests/display-lock/lock-before-append/multiple-schedules-expected.html
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/web_tests/display-lock/lock-before-append/multiple-schedules-recursive-expected.html
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/web_tests/display-lock/lock-before-append/multiple-schedules-recursive.html
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/web_tests/display-lock/lock-before-append/multiple-schedules.html
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/web_tests/display-lock/lock-before-append/simple-schedule-1-expected.html
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/web_tests/display-lock/lock-before-append/simple-schedule-1.html
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/web_tests/display-lock/lock-before-append/simple-schedule-2-expected.html
[delete] https://crrev.com/c81c4ea7dd504df864602f92929bbf1764455e4a/third_party/blink/web_tests/display-lock/lock-before-append/simple-schedule-2.html
[copy] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/web_tests/display-lock/lock-before-append/update-together-with-commit-both-succeed-expected.html
[add] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/web_tests/display-lock/lock-before-append/update-together-with-commit-both-succeed.html
[copy] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/web_tests/display-lock/lock-before-append/update-without-acquire-fails-expected.html
[rename] https://crrev.com/57a3d4408f85df4286704d379d59ba85eb959b2c/third_party/blink/web_tests/display-lock/lock-before-append/update-without-acquire-fails.html

Project Member

Comment 15 by bugdroid1@chromium.org, Dec 20

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/61b12f24706aeb661de0d1cd1b6e48b2e2e3b194

commit 61b12f24706aeb661de0d1cd1b6e48b2e2e3b194
Author: Vladimir Levin <vmpstr@chromium.org>
Date: Thu Dec 20 22:10:45 2018

[DL]: Make update() not do the paint phase.

This patch changes the display locking update() function to not paint.
The reason for this is that update cannot release the lock on its own
and painted information is not needed for any information that script
might want.

Note that this updates the budget to actually check if any work is
required since we cannot reliably wait for any lifecycle phase.
Previously we waited for paint which was always guaranteed to happen.
Note that this updates the budget API to have NeedsLifecycleUpdates
instead of DidFinishLifecycleUpdates, which now checks the dirty bits
for any phases that might need updating.

It might be nice to implement co-operative painting that stashes the
paint for later use, but at this point it is only doing extra work.

R=chrishtr@chromium.org

Bug: 882663
Change-Id: Ie426dc75ea036b6f2e16b1b592763267957685ce
Reviewed-on: https://chromium-review.googlesource.com/c/1383324
Commit-Queue: vmpstr <vmpstr@chromium.org>
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#618351}
[modify] https://crrev.com/61b12f24706aeb661de0d1cd1b6e48b2e2e3b194/third_party/blink/renderer/core/display_lock/display_lock_budget.cc
[modify] https://crrev.com/61b12f24706aeb661de0d1cd1b6e48b2e2e3b194/third_party/blink/renderer/core/display_lock/display_lock_budget.h
[modify] https://crrev.com/61b12f24706aeb661de0d1cd1b6e48b2e2e3b194/third_party/blink/renderer/core/display_lock/display_lock_budget_test.cc
[modify] https://crrev.com/61b12f24706aeb661de0d1cd1b6e48b2e2e3b194/third_party/blink/renderer/core/display_lock/display_lock_context.cc
[modify] https://crrev.com/61b12f24706aeb661de0d1cd1b6e48b2e2e3b194/third_party/blink/renderer/core/display_lock/display_lock_context.h
[modify] https://crrev.com/61b12f24706aeb661de0d1cd1b6e48b2e2e3b194/third_party/blink/renderer/core/display_lock/strict_yielding_display_lock_budget.cc
[modify] https://crrev.com/61b12f24706aeb661de0d1cd1b6e48b2e2e3b194/third_party/blink/renderer/core/display_lock/strict_yielding_display_lock_budget.h
[modify] https://crrev.com/61b12f24706aeb661de0d1cd1b6e48b2e2e3b194/third_party/blink/renderer/core/display_lock/unyielding_display_lock_budget.cc
[modify] https://crrev.com/61b12f24706aeb661de0d1cd1b6e48b2e2e3b194/third_party/blink/renderer/core/display_lock/unyielding_display_lock_budget.h

Project Member

Comment 16 by bugdroid1@chromium.org, Dec 22

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/5f4ce97e16f4a7c1d57f5685ad230923285cf549

commit 5f4ce97e16f4a7c1d57f5685ad230923285cf549
Author: Vladimir Levin <vmpstr@chromium.org>
Date: Sat Dec 22 02:09:42 2018

[DL]: Ensure to reject update/commit promises on disconnected elements.

This patch ensures that we reject update/commit when it happens on
a disconnected element.

R=chrishtr@chromium.org

Bug: 882663
Change-Id: Iaee923a4f41714b437c0a2b85bbb175359a2f32c
Reviewed-on: https://chromium-review.googlesource.com/c/1387944
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Commit-Queue: Chris Harrelson <chrishtr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#618713}
[modify] https://crrev.com/5f4ce97e16f4a7c1d57f5685ad230923285cf549/third_party/blink/renderer/core/display_lock/display_lock_context.cc
[modify] https://crrev.com/5f4ce97e16f4a7c1d57f5685ad230923285cf549/third_party/blink/renderer/core/display_lock/display_lock_context.h
[add] https://crrev.com/5f4ce97e16f4a7c1d57f5685ad230923285cf549/third_party/blink/web_tests/display-lock/lock-before-append/commit-while-disconnected-expected.html
[add] https://crrev.com/5f4ce97e16f4a7c1d57f5685ad230923285cf549/third_party/blink/web_tests/display-lock/lock-before-append/commit-while-disconnected.html
[add] https://crrev.com/5f4ce97e16f4a7c1d57f5685ad230923285cf549/third_party/blink/web_tests/display-lock/lock-before-append/update-while-disconnected-expected.html
[add] https://crrev.com/5f4ce97e16f4a7c1d57f5685ad230923285cf549/third_party/blink/web_tests/display-lock/lock-before-append/update-while-disconnected.html

Project Member

Comment 17 by bugdroid1@chromium.org, Dec 24

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a36e6e1d9422377bb173d2c1139e66276933c51c

commit a36e6e1d9422377bb173d2c1139e66276933c51c
Author: Avi Drissman <avi@chromium.org>
Date: Mon Dec 24 23:55:04 2018

Revert "[DL]: Ensure to reject update/commit promises on disconnected elements."

This reverts commit 5f4ce97e16f4a7c1d57f5685ad230923285cf549.

Reason for revert: On https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/Linux%20Tests%20%28dbg%29%281%29?limit=200, virtual/display-lock/display-lock/lock-before-append/acquire-update-measure-remove.html has been failing about 90% of the time since this landed.

Original change's description:
> [DL]: Ensure to reject update/commit promises on disconnected elements.
> 
> This patch ensures that we reject update/commit when it happens on
> a disconnected element.
> 
> R=​chrishtr@chromium.org
> 
> Bug: 882663
> Change-Id: Iaee923a4f41714b437c0a2b85bbb175359a2f32c
> Reviewed-on: https://chromium-review.googlesource.com/c/1387944
> Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
> Commit-Queue: Chris Harrelson <chrishtr@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#618713}

TBR=vmpstr@chromium.org,chrishtr@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: 882663
Change-Id: I491a3f7db511a69f2538e3158bc4666c6f9eaf85
Reviewed-on: https://chromium-review.googlesource.com/c/1390433
Reviewed-by: Avi Drissman <avi@chromium.org>
Commit-Queue: Avi Drissman <avi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#618847}
[modify] https://crrev.com/a36e6e1d9422377bb173d2c1139e66276933c51c/third_party/blink/renderer/core/display_lock/display_lock_context.cc
[modify] https://crrev.com/a36e6e1d9422377bb173d2c1139e66276933c51c/third_party/blink/renderer/core/display_lock/display_lock_context.h
[delete] https://crrev.com/92d47cc92a00edfb6aa7c7878db0565bd17ca964/third_party/blink/web_tests/display-lock/lock-before-append/commit-while-disconnected-expected.html
[delete] https://crrev.com/92d47cc92a00edfb6aa7c7878db0565bd17ca964/third_party/blink/web_tests/display-lock/lock-before-append/commit-while-disconnected.html
[delete] https://crrev.com/92d47cc92a00edfb6aa7c7878db0565bd17ca964/third_party/blink/web_tests/display-lock/lock-before-append/update-while-disconnected-expected.html
[delete] https://crrev.com/92d47cc92a00edfb6aa7c7878db0565bd17ca964/third_party/blink/web_tests/display-lock/lock-before-append/update-while-disconnected.html

Project Member

Comment 18 by bugdroid1@chromium.org, Jan 2

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1266d1fbfe7bc8ea757a5a3712917b8be61a4ffb

commit 1266d1fbfe7bc8ea757a5a3712917b8be61a4ffb
Author: Vladimir Levin <vmpstr@chromium.org>
Date: Wed Jan 02 19:17:31 2019

[DL]: Add a budget that yields between lifecycles if the deadline is passed.

This patch adds a yielding budget which tries to do as much work as
possible within the budget. If the budget expires, it yields between
lifecycles.

This patch also makes this the default budget, since it's the best
behavior currently implemented.

See YieldingDisplayLockBudget::GetCurrentBudgetMs() for the time budgets.
These were picked arbitrarily, but I think they seem reasonable.

R=chrishtr@chromium.org

Bug:  907619 , 882663
Change-Id: If8b3680df6b52690c238f23a319591dd8e181add
Reviewed-on: https://chromium-review.googlesource.com/c/1388159
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Commit-Queue: vmpstr <vmpstr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#619453}
[modify] https://crrev.com/1266d1fbfe7bc8ea757a5a3712917b8be61a4ffb/third_party/blink/renderer/core/display_lock/BUILD.gn
[modify] https://crrev.com/1266d1fbfe7bc8ea757a5a3712917b8be61a4ffb/third_party/blink/renderer/core/display_lock/display_lock_budget_test.cc
[modify] https://crrev.com/1266d1fbfe7bc8ea757a5a3712917b8be61a4ffb/third_party/blink/renderer/core/display_lock/display_lock_context.cc
[modify] https://crrev.com/1266d1fbfe7bc8ea757a5a3712917b8be61a4ffb/third_party/blink/renderer/core/display_lock/display_lock_context.h
[add] https://crrev.com/1266d1fbfe7bc8ea757a5a3712917b8be61a4ffb/third_party/blink/renderer/core/display_lock/yielding_display_lock_budget.cc
[add] https://crrev.com/1266d1fbfe7bc8ea757a5a3712917b8be61a4ffb/third_party/blink/renderer/core/display_lock/yielding_display_lock_budget.h

Project Member

Comment 19 by bugdroid1@chromium.org, Jan 2

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/40b00c4bcb4ed2ac12dd977f07aff072cca356f8

commit 40b00c4bcb4ed2ac12dd977f07aff072cca356f8
Author: Vladimir Levin <vmpstr@chromium.org>
Date: Wed Jan 02 21:04:12 2019

Reland "[DL]: Ensure to reject update/commit promises on disconnected elements."

This reverts commit a36e6e1d9422377bb173d2c1139e66276933c51c, which reverted
the initial patch.

The original patch description is:
"""
    This patch ensures that we reject update/commit when it happens on
    a disconnected element.

"""

The changes in this CL include:
- Ensuring that we can commit a disconnected element, since it just
  unlocks the lock
- Ensuring that a timeout triggered on a disconnected element does not DCHECK
  (this was the cause of the revert to begin with)
- Updates the test to have an explicit infinite timeout if timeout is not being
  tested, since bots can be slow and timeout the lock thus making tests flaky.
- Adds a test for timeout on disconnected element.

R=chrishtr@chromium.org

Bug:  917584 , 882663
Change-Id: I6a417fde2c6bd113959128c8bb33a865c97cac8b
Reviewed-on: https://chromium-review.googlesource.com/c/1393346
Commit-Queue: vmpstr <vmpstr@chromium.org>
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#619490}
[modify] https://crrev.com/40b00c4bcb4ed2ac12dd977f07aff072cca356f8/third_party/blink/renderer/core/display_lock/display_lock_context.cc
[modify] https://crrev.com/40b00c4bcb4ed2ac12dd977f07aff072cca356f8/third_party/blink/renderer/core/display_lock/display_lock_context.h
[modify] https://crrev.com/40b00c4bcb4ed2ac12dd977f07aff072cca356f8/third_party/blink/web_tests/display-lock/lock-before-append/acquire-commit.html
[modify] https://crrev.com/40b00c4bcb4ed2ac12dd977f07aff072cca356f8/third_party/blink/web_tests/display-lock/lock-before-append/acquire-infinite-timeout-no-commit.html
[modify] https://crrev.com/40b00c4bcb4ed2ac12dd977f07aff072cca356f8/third_party/blink/web_tests/display-lock/lock-before-append/acquire-update-measure-remove.html
[add] https://crrev.com/40b00c4bcb4ed2ac12dd977f07aff072cca356f8/third_party/blink/web_tests/display-lock/lock-before-append/acquire-update-remove-expected.html
[add] https://crrev.com/40b00c4bcb4ed2ac12dd977f07aff072cca356f8/third_party/blink/web_tests/display-lock/lock-before-append/acquire-update-remove.html
[modify] https://crrev.com/40b00c4bcb4ed2ac12dd977f07aff072cca356f8/third_party/blink/web_tests/display-lock/lock-before-append/commit-on-added-containment.html
[modify] https://crrev.com/40b00c4bcb4ed2ac12dd977f07aff072cca356f8/third_party/blink/web_tests/display-lock/lock-before-append/commit-on-inline-fails.html
[modify] https://crrev.com/40b00c4bcb4ed2ac12dd977f07aff072cca356f8/third_party/blink/web_tests/display-lock/lock-before-append/commit-on-no-containment-fails.html
[add] https://crrev.com/40b00c4bcb4ed2ac12dd977f07aff072cca356f8/third_party/blink/web_tests/display-lock/lock-before-append/commit-while-disconnected-expected.html
[add] https://crrev.com/40b00c4bcb4ed2ac12dd977f07aff072cca356f8/third_party/blink/web_tests/display-lock/lock-before-append/commit-while-disconnected.html
[modify] https://crrev.com/40b00c4bcb4ed2ac12dd977f07aff072cca356f8/third_party/blink/web_tests/display-lock/lock-before-append/measure-forced-layout.html
[modify] https://crrev.com/40b00c4bcb4ed2ac12dd977f07aff072cca356f8/third_party/blink/web_tests/display-lock/lock-before-append/measure-updated-layout.html
[modify] https://crrev.com/40b00c4bcb4ed2ac12dd977f07aff072cca356f8/third_party/blink/web_tests/display-lock/lock-before-append/multiple-acquires-all-succeed.html
[add] https://crrev.com/40b00c4bcb4ed2ac12dd977f07aff072cca356f8/third_party/blink/web_tests/display-lock/lock-before-append/timeout-while-disconnected-expected.html
[add] https://crrev.com/40b00c4bcb4ed2ac12dd977f07aff072cca356f8/third_party/blink/web_tests/display-lock/lock-before-append/timeout-while-disconnected.html
[modify] https://crrev.com/40b00c4bcb4ed2ac12dd977f07aff072cca356f8/third_party/blink/web_tests/display-lock/lock-before-append/update-together-with-commit-both-succeed.html
[add] https://crrev.com/40b00c4bcb4ed2ac12dd977f07aff072cca356f8/third_party/blink/web_tests/display-lock/lock-before-append/update-while-disconnected-expected.html
[add] https://crrev.com/40b00c4bcb4ed2ac12dd977f07aff072cca356f8/third_party/blink/web_tests/display-lock/lock-before-append/update-while-disconnected.html

Project Member

Comment 20 by bugdroid1@chromium.org, Jan 3

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c105b0e24ec489854870f181393c6ed29e82a579

commit c105b0e24ec489854870f181393c6ed29e82a579
Author: Vladimir Levin <vmpstr@chromium.org>
Date: Thu Jan 03 17:22:55 2019

[DL]: Add an acquire-update-disconnect-commit test.

This patch adds a test that does an acquire and update, then
before the update finishes it removes the element from the DOM and does
a commit. This fails the update promise.

This test is meant to be paired with another one already checked in
where we don't call a commit and also expect the update to fail.

R=chrishtr@chromium.org

Bug: 882663
Change-Id: Idbe58b5162d4189da05379ed2044a0e620ce5dd9
Reviewed-on: https://chromium-review.googlesource.com/c/1393451
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Commit-Queue: vmpstr <vmpstr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#619669}
[add] https://crrev.com/c105b0e24ec489854870f181393c6ed29e82a579/third_party/blink/web_tests/display-lock/lock-before-append/acquire-update-remove-commit-expected.html
[add] https://crrev.com/c105b0e24ec489854870f181393c6ed29e82a579/third_party/blink/web_tests/display-lock/lock-before-append/acquire-update-remove-commit.html

Project Member

Comment 21 by bugdroid1@chromium.org, Jan 10

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/0b68d81fea801ff52940d48ee14fa1994bb8d889

commit 0b68d81fea801ff52940d48ee14fa1994bb8d889
Author: Vladimir Levin <vmpstr@chromium.org>
Date: Thu Jan 10 16:41:47 2019

[DL]: Loosen the requirement for containment from content to style & layout

This patch ensures that we don't need paint containment to use display
locking. Updates all the tests to use the least needed containment
(style & layout)

R=chrishtr@chromium.org

Bug: 882663
Change-Id: I4deedb9f298cf63dd69dd0828420451e291684f0
Reviewed-on: https://chromium-review.googlesource.com/c/1396310
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Commit-Queue: vmpstr <vmpstr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#621604}
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/renderer/core/display_lock/display_lock_context.cc
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/renderer/core/display_lock/display_lock_context.h
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/acquire-commit-expected.html
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/acquire-commit.html
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/acquire-infinite-timeout-no-commit.html
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/acquire-timeout-expected.html
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/acquire-timeout.html
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/acquire-update-commit-expected.html
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/acquire-update-commit.html
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/acquire-update-measure-remove.html
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/acquire-update-remove-commit-expected.html
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/acquire-update-remove-commit.html
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/acquire-update-remove.html
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/commit-on-added-containment-expected.html
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/commit-on-added-containment.html
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/commit-on-inline-fails.html
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/commit-while-disconnected-expected.html
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/commit-while-disconnected.html
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/commit-without-acquire-fails-expected.html
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/commit-without-acquire-fails.html
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/measure-forced-layout.html
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/measure-updated-layout.html
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/multiple-acquires-all-succeed-expected.html
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/multiple-acquires-all-succeed.html
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/timeout-while-disconnected-expected.html
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/timeout-while-disconnected.html
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/update-together-with-commit-both-succeed-expected.html
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/update-together-with-commit-both-succeed.html
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/update-without-acquire-fails-expected.html
[modify] https://crrev.com/0b68d81fea801ff52940d48ee14fa1994bb8d889/third_party/blink/web_tests/display-lock/lock-before-append/update-without-acquire-fails.html

Project Member

Comment 22 by bugdroid1@chromium.org, Jan 10

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c96acfdcb3eddfedd5348e6d81cbd8f1fef0cab4

commit c96acfdcb3eddfedd5348e6d81cbd8f1fef0cab4
Author: Vladimir Levin <vmpstr@chromium.org>
Date: Thu Jan 10 19:20:28 2019

[DL]: Implement lock after append mode.

This patch adds the lock after append mode which "clears" the painted
output while retaining the size information for the locked element.

Also adds a few tests to test the new functionality.

R=chrishtr@chromium.org

Bug: 882663
Change-Id: Id70d7af9d99e919d34691b032db26fec9199e02e
Reviewed-on: https://chromium-review.googlesource.com/c/1401269
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Commit-Queue: vmpstr <vmpstr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#621693}
[modify] https://crrev.com/c96acfdcb3eddfedd5348e6d81cbd8f1fef0cab4/third_party/blink/renderer/core/display_lock/display_lock_context.cc
[modify] https://crrev.com/c96acfdcb3eddfedd5348e6d81cbd8f1fef0cab4/third_party/blink/renderer/core/display_lock/display_lock_context.h
[modify] https://crrev.com/c96acfdcb3eddfedd5348e6d81cbd8f1fef0cab4/third_party/blink/web_tests/FlagExpectations/enable-blink-features=LayoutNG
[add] https://crrev.com/c96acfdcb3eddfedd5348e6d81cbd8f1fef0cab4/third_party/blink/web_tests/display-lock/lock-after-append/acquire-after-resize-expected.html
[add] https://crrev.com/c96acfdcb3eddfedd5348e6d81cbd8f1fef0cab4/third_party/blink/web_tests/display-lock/lock-after-append/acquire-after-resize.html
[add] https://crrev.com/c96acfdcb3eddfedd5348e6d81cbd8f1fef0cab4/third_party/blink/web_tests/display-lock/lock-after-append/acquire-commit-expected.html
[add] https://crrev.com/c96acfdcb3eddfedd5348e6d81cbd8f1fef0cab4/third_party/blink/web_tests/display-lock/lock-after-append/acquire-commit.html
[add] https://crrev.com/c96acfdcb3eddfedd5348e6d81cbd8f1fef0cab4/third_party/blink/web_tests/display-lock/lock-after-append/acquire-immediate-commit-expected.html
[add] https://crrev.com/c96acfdcb3eddfedd5348e6d81cbd8f1fef0cab4/third_party/blink/web_tests/display-lock/lock-after-append/acquire-immediate-commit.html
[add] https://crrev.com/c96acfdcb3eddfedd5348e6d81cbd8f1fef0cab4/third_party/blink/web_tests/display-lock/lock-after-append/acquire-on-added-containment-expected.html
[add] https://crrev.com/c96acfdcb3eddfedd5348e6d81cbd8f1fef0cab4/third_party/blink/web_tests/display-lock/lock-after-append/acquire-on-added-containment.html
[add] https://crrev.com/c96acfdcb3eddfedd5348e6d81cbd8f1fef0cab4/third_party/blink/web_tests/display-lock/lock-after-append/acquire-on-no-containment-expected.html
[add] https://crrev.com/c96acfdcb3eddfedd5348e6d81cbd8f1fef0cab4/third_party/blink/web_tests/display-lock/lock-after-append/acquire-on-no-containment.html
[add] https://crrev.com/c96acfdcb3eddfedd5348e6d81cbd8f1fef0cab4/third_party/blink/web_tests/display-lock/lock-after-append/delayed-acquire-removes-painted-output-expected.html
[add] https://crrev.com/c96acfdcb3eddfedd5348e6d81cbd8f1fef0cab4/third_party/blink/web_tests/display-lock/lock-after-append/delayed-acquire-removes-painted-output.html
[add] https://crrev.com/c96acfdcb3eddfedd5348e6d81cbd8f1fef0cab4/third_party/blink/web_tests/display-lock/lock-after-append/measure-forced-layout.html
[add] https://crrev.com/c96acfdcb3eddfedd5348e6d81cbd8f1fef0cab4/third_party/blink/web_tests/display-lock/lock-after-append/measure-updated-layout.html

Project Member

Comment 23 by bugdroid1@chromium.org, Jan 10

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/56c6845f7e8908e56d5cc3c9c960f6eae3c327ba

commit 56c6845f7e8908e56d5cc3c9c960f6eae3c327ba
Author: Vladimir Levin <vmpstr@chromium.org>
Date: Thu Jan 10 21:46:39 2019

[DL]: Add locked-element-moved test for lock-after-append mode.

This patch adds another test to ensure that the locked element can be
moved by other elements during layout, and it also itself moves other
elements.

R=chrishtr@chromium.org

Bug: 882663
Change-Id: I4378b3e6e52fd2781efcded7fe1da9f815cc527b
Reviewed-on: https://chromium-review.googlesource.com/c/1403084
Commit-Queue: vmpstr <vmpstr@chromium.org>
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#621746}
[add] https://crrev.com/56c6845f7e8908e56d5cc3c9c960f6eae3c327ba/third_party/blink/web_tests/display-lock/lock-after-append/locked-element-shifted-down-expected.html
[add] https://crrev.com/56c6845f7e8908e56d5cc3c9c960f6eae3c327ba/third_party/blink/web_tests/display-lock/lock-after-append/locked-element-shifted-down.html

Cc: shans@chromium.org flackr@chromium.org ajuma@chromium.org zakinasab@chromium.org chrishtr@google.com nduca@chromium.org vmp...@chromium.org vollick@chromium.org
 Issue 230233  has been merged into this issue.
Project Member

Comment 25 by bugdroid1@chromium.org, Jan 14

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/3e3ea49c7dac96988481345ade25e6eb5118333c

commit 3e3ea49c7dac96988481345ade25e6eb5118333c
Author: Vladimir Levin <vmpstr@chromium.org>
Date: Mon Jan 14 19:54:46 2019

[DL]: Reject the acquire promise if we commit while acquiring.

This patch ensures that we reject the acquire promise if we call commit
before lock acquire finishes. Since we unlock the lock because of the
commit, it makes sense that "acquire" rejects.

R=chrishtr@chromium.org

Bug: 882663
Change-Id: I89a079427c155ba227fcacff083ac0fdf2a38982
Reviewed-on: https://chromium-review.googlesource.com/c/1409608
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Commit-Queue: vmpstr <vmpstr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#622557}
[modify] https://crrev.com/3e3ea49c7dac96988481345ade25e6eb5118333c/third_party/blink/renderer/core/display_lock/display_lock_context.cc
[copy] https://crrev.com/3e3ea49c7dac96988481345ade25e6eb5118333c/third_party/blink/web_tests/display-lock/lock-after-append/acquire-immediate-commit-resolves-expected.html
[rename] https://crrev.com/3e3ea49c7dac96988481345ade25e6eb5118333c/third_party/blink/web_tests/display-lock/lock-after-append/acquire-immediate-commit-resolves.html
[rename] https://crrev.com/3e3ea49c7dac96988481345ade25e6eb5118333c/third_party/blink/web_tests/display-lock/lock-after-append/acquire-rejects-after-immediate-commit-expected.html
[add] https://crrev.com/3e3ea49c7dac96988481345ade25e6eb5118333c/third_party/blink/web_tests/display-lock/lock-after-append/acquire-rejects-after-immediate-commit.html

Project Member

Comment 26 by bugdroid1@chromium.org, Jan 15

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6daacb6388772e0b6d0d78e616bf9f0ba0111101

commit 6daacb6388772e0b6d0d78e616bf9f0ba0111101
Author: Vladimir Levin <vmpstr@chromium.org>
Date: Tue Jan 15 23:58:11 2019

[DL]: Ensure find in page doesn't find locked not searchable elements.

This patch ensures that find in page skips elements that are locked for
display and for which the context IsSearchable returns false.

IsSearchable is currently set to return false for any locked element.

R=chrishtr@chromium.org, rakina@chromium.org

Bug: 882663
Change-Id: I8e9ee9b20c7cece7f70c81b5d77da7070bb907a8
Reviewed-on: https://chromium-review.googlesource.com/c/1403914
Reviewed-by: Rakina Zata Amni <rakina@chromium.org>
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Commit-Queue: vmpstr <vmpstr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#622884}
[modify] https://crrev.com/6daacb6388772e0b6d0d78e616bf9f0ba0111101/third_party/blink/renderer/core/BUILD.gn
[modify] https://crrev.com/6daacb6388772e0b6d0d78e616bf9f0ba0111101/third_party/blink/renderer/core/display_lock/display_lock_context.cc
[modify] https://crrev.com/6daacb6388772e0b6d0d78e616bf9f0ba0111101/third_party/blink/renderer/core/display_lock/display_lock_context.h
[add] https://crrev.com/6daacb6388772e0b6d0d78e616bf9f0ba0111101/third_party/blink/renderer/core/display_lock/display_lock_context_test.cc
[modify] https://crrev.com/6daacb6388772e0b6d0d78e616bf9f0ba0111101/third_party/blink/renderer/core/editing/finder/find_buffer.cc
[modify] https://crrev.com/6daacb6388772e0b6d0d78e616bf9f0ba0111101/third_party/blink/renderer/core/editing/iterators/text_iterator.cc

Project Member

Comment 27 by bugdroid1@chromium.org, Jan 16

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/6daacb6388772e0b6d0d78e616bf9f0ba0111101

commit 6daacb6388772e0b6d0d78e616bf9f0ba0111101
Author: Vladimir Levin <vmpstr@chromium.org>
Date: Tue Jan 15 23:58:11 2019

[DL]: Ensure find in page doesn't find locked not searchable elements.

This patch ensures that find in page skips elements that are locked for
display and for which the context IsSearchable returns false.

IsSearchable is currently set to return false for any locked element.

R=chrishtr@chromium.org, rakina@chromium.org

Bug: 882663
Change-Id: I8e9ee9b20c7cece7f70c81b5d77da7070bb907a8
Reviewed-on: https://chromium-review.googlesource.com/c/1403914
Reviewed-by: Rakina Zata Amni <rakina@chromium.org>
Reviewed-by: Chris Harrelson <chrishtr@chromium.org>
Commit-Queue: vmpstr <vmpstr@chromium.org>
Cr-Commit-Position: refs/heads/master@{#622884}
[modify] https://crrev.com/6daacb6388772e0b6d0d78e616bf9f0ba0111101/third_party/blink/renderer/core/BUILD.gn
[modify] https://crrev.com/6daacb6388772e0b6d0d78e616bf9f0ba0111101/third_party/blink/renderer/core/display_lock/display_lock_context.cc
[modify] https://crrev.com/6daacb6388772e0b6d0d78e616bf9f0ba0111101/third_party/blink/renderer/core/display_lock/display_lock_context.h
[add] https://crrev.com/6daacb6388772e0b6d0d78e616bf9f0ba0111101/third_party/blink/renderer/core/display_lock/display_lock_context_test.cc
[modify] https://crrev.com/6daacb6388772e0b6d0d78e616bf9f0ba0111101/third_party/blink/renderer/core/editing/finder/find_buffer.cc
[modify] https://crrev.com/6daacb6388772e0b6d0d78e616bf9f0ba0111101/third_party/blink/renderer/core/editing/iterators/text_iterator.cc

Sign in to add a comment