Introduce DispatchScrollEventsUntilDeadline [chromium/src : main]

0 views
Skip to first unread message

Jonathan Ross (Gerrit)

unread,
Oct 18, 2024, 3:07:42 PMOct 18
to Victor Miura, chromium...@chromium.org, Ian Vollick, blink-...@chromium.org, cc-...@chromium.org, jbauma...@chromium.org, kinuko...@chromium.org
Attention needed from Victor Miura

Jonathan Ross added 1 comment

Patchset-level comments
File-level comment, Patchset 1 (Latest):
Jonathan Ross . resolved

Hey,

I wanted your early thoughts on this. I'm giving thought on how to have `InputHandlerProxy::DeliverInputForBeginFrame` not throttle on devices that are constantly over the deadline.

I decided to upload early to also run vs the benchmarks.

Open in Gerrit

Related details

Attention is currently required from:
  • Victor Miura
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Review
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: I199ea0fd1fd0a0f58533498a709bb18b0397fe96
Gerrit-Change-Number: 5943540
Gerrit-PatchSet: 1
Gerrit-Owner: Jonathan Ross <jon...@chromium.org>
Gerrit-Reviewer: Victor Miura <vmi...@chromium.org>
Gerrit-CC: Ian Vollick <vol...@chromium.org>
Gerrit-Attention: Victor Miura <vmi...@chromium.org>
Gerrit-Comment-Date: Fri, 18 Oct 2024 19:07:35 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

chromeperf@appspot.gserviceaccount.com (Gerrit)

unread,
Oct 18, 2024, 8:31:12 PMOct 18
to Jonathan Ross, Tricium, Victor Miura, chromium...@chromium.org, Ian Vollick, blink-...@chromium.org, cc-...@chromium.org, jbauma...@chromium.org, kinuko...@chromium.org
Attention needed from Jonathan Ross and Victor Miura

Message from chrom...@appspot.gserviceaccount.com

Attention is currently required from:
  • Jonathan Ross
  • Victor Miura
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Review
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: I199ea0fd1fd0a0f58533498a709bb18b0397fe96
Gerrit-Change-Number: 5943540
Gerrit-PatchSet: 1
Gerrit-Owner: Jonathan Ross <jon...@chromium.org>
Gerrit-Reviewer: Victor Miura <vmi...@chromium.org>
Gerrit-CC: Ian Vollick <vol...@chromium.org>
Gerrit-Attention: Victor Miura <vmi...@chromium.org>
Gerrit-Attention: Jonathan Ross <jon...@chromium.org>
Gerrit-Comment-Date: Sat, 19 Oct 2024 00:31:02 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Jonathan Ross (Gerrit)

unread,
Oct 23, 2024, 2:08:59 PMOct 23
to chrom...@appspot.gserviceaccount.com, Tricium, Victor Miura, chromium...@chromium.org, Ian Vollick, blink-...@chromium.org, cc-...@chromium.org, jbauma...@chromium.org, kinuko...@chromium.org
Attention needed from Victor Miura

Jonathan Ross added 4 comments

Commit Message
Line 10, Patchset 1:DispatchScrollEventsImmediately. Which shows signifcant improvements to
Jonathan Ross . resolved

"signifcant" is a possible misspelling of "significant".

Please fix.

Line 13, Patchset 1:However it encounters issues on platforms/devices with a signle dicrete
Jonathan Ross . resolved

"signle" is a possible misspelling of "single" or "signal".

Please fix.

Line 13, Patchset 1:However it encounters issues on platforms/devices with a signle dicrete
Jonathan Ross . resolved

"dicrete" is a possible misspelling of "discrete".

Please fix.

File third_party/blink/renderer/platform/widget/input/input_handler_proxy.cc
Line 1539, Patchset 1: // We likely need to cap the number of consequtive times duing which this
Jonathan Ross . resolved

"consequtive" is a possible misspelling of "consecutive".

Please fix.

Open in Gerrit

Related details

Attention is currently required from:
  • Victor Miura
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Review
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: I199ea0fd1fd0a0f58533498a709bb18b0397fe96
Gerrit-Change-Number: 5943540
Gerrit-PatchSet: 3
Gerrit-Owner: Jonathan Ross <jon...@chromium.org>
Gerrit-Reviewer: Victor Miura <vmi...@chromium.org>
Gerrit-CC: Ian Vollick <vol...@chromium.org>
Gerrit-Attention: Victor Miura <vmi...@chromium.org>
Gerrit-Comment-Date: Wed, 23 Oct 2024 18:08:49 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Jonathan Ross (Gerrit)

unread,
Oct 29, 2024, 11:37:17 AMOct 29
to Chromium Metrics Reviews, AyeAye, chrom...@appspot.gserviceaccount.com, Tricium, Victor Miura, chromium...@chromium.org, Ian Vollick, asvitkine...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, jbauma...@chromium.org, kinuko...@chromium.org
Attention needed from Victor Miura

Jonathan Ross added 1 comment

File third_party/blink/renderer/platform/widget/input/input_handler_proxy.cc
Line 1539, Patchset 4: // We likely need to cap the number of consequtive times duing which this
Jonathan Ross . resolved

"consequtive" is a possible misspelling of "consecutive".

Please fix.

Open in Gerrit

Related details

Attention is currently required from:
  • Victor Miura
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Review
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: I199ea0fd1fd0a0f58533498a709bb18b0397fe96
Gerrit-Change-Number: 5943540
Gerrit-PatchSet: 6
Gerrit-Owner: Jonathan Ross <jon...@chromium.org>
Gerrit-Reviewer: Victor Miura <vmi...@chromium.org>
Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
Gerrit-Comment-Date: Tue, 29 Oct 2024 15:37:06 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Jonathan Ross (Gerrit)

unread,
Oct 31, 2024, 12:55:02 PMOct 31
to Chromium LUCI CQ, Chromium Metrics Reviews, AyeAye, chrom...@appspot.gserviceaccount.com, Tricium, Victor Miura, chromium...@chromium.org, Ian Vollick, asvitkine...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, jbauma...@chromium.org, kinuko...@chromium.org
Attention needed from Victor Miura

Jonathan Ross added 1 comment

Patchset-level comments
File-level comment, Patchset 8 (Latest):
Jonathan Ross . resolved

Hey, I plan to add a unit test to this, but the core feature is ready for review

Open in Gerrit

Related details

Attention is currently required from:
  • Victor Miura
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Review
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: I199ea0fd1fd0a0f58533498a709bb18b0397fe96
Gerrit-Change-Number: 5943540
Gerrit-PatchSet: 8
Gerrit-Owner: Jonathan Ross <jon...@chromium.org>
Gerrit-Reviewer: Jonathan Ross <jon...@chromium.org>
Gerrit-Reviewer: Victor Miura <vmi...@chromium.org>
Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
Gerrit-CC: Ian Vollick <vol...@chromium.org>
Gerrit-Attention: Victor Miura <vmi...@chromium.org>
Gerrit-Comment-Date: Thu, 31 Oct 2024 16:54:53 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Jonathan Ross (Gerrit)

unread,
Nov 1, 2024, 4:16:19 PMNov 1
to Chromium LUCI CQ, Chromium Metrics Reviews, AyeAye, chrom...@appspot.gserviceaccount.com, Tricium, Victor Miura, chromium...@chromium.org, Ian Vollick, asvitkine...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, jbauma...@chromium.org, kinuko...@chromium.org
Attention needed from Victor Miura

Jonathan Ross added 1 comment

Patchset-level comments
File-level comment, Patchset 9 (Latest):
Jonathan Ross . resolved

Added unittest coverage. Could you PTAL? Thanks!

Open in Gerrit

Related details

Attention is currently required from:
  • Victor Miura
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Review
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: I199ea0fd1fd0a0f58533498a709bb18b0397fe96
Gerrit-Change-Number: 5943540
Gerrit-PatchSet: 9
Gerrit-Owner: Jonathan Ross <jon...@chromium.org>
Gerrit-Reviewer: Jonathan Ross <jon...@chromium.org>
Gerrit-Reviewer: Victor Miura <vmi...@chromium.org>
Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
Gerrit-CC: Ian Vollick <vol...@chromium.org>
Gerrit-Attention: Victor Miura <vmi...@chromium.org>
Gerrit-Comment-Date: Fri, 01 Nov 2024 20:16:09 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Victor Miura (Gerrit)

unread,
Nov 5, 2024, 7:37:23 PMNov 5
to Jonathan Ross, Chromium LUCI CQ, Chromium Metrics Reviews, AyeAye, chrom...@appspot.gserviceaccount.com, Tricium, chromium...@chromium.org, Ian Vollick, asvitkine...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, jbauma...@chromium.org, kinuko...@chromium.org
Attention needed from Jonathan Ross

Victor Miura added 3 comments

Patchset-level comments
Victor Miura . resolved

Looks good. A couple of questions in cases that are not currently covered.

File third_party/blink/renderer/platform/widget/input/input_handler_proxy.cc
Line 440, Patchset 9 (Latest):void InputHandlerProxy::ContinueScrollBeginAfterMainThreadHitTest(
Victor Miura . unresolved

Do we need to avoid dispatching late events in cases like this too?

Line 1584, Patchset 9 (Latest): DispatchQueuedInputEvents(false /* frame_aligned */);
Victor Miura . unresolved

What do we expect in this case for high latency mode?

Open in Gerrit

Related details

Attention is currently required from:
  • Jonathan Ross
Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I199ea0fd1fd0a0f58533498a709bb18b0397fe96
    Gerrit-Change-Number: 5943540
    Gerrit-PatchSet: 9
    Gerrit-Owner: Jonathan Ross <jon...@chromium.org>
    Gerrit-Reviewer: Jonathan Ross <jon...@chromium.org>
    Gerrit-Reviewer: Victor Miura <vmi...@chromium.org>
    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
    Gerrit-CC: Ian Vollick <vol...@chromium.org>
    Gerrit-Attention: Jonathan Ross <jon...@chromium.org>
    Gerrit-Comment-Date: Wed, 06 Nov 2024 00:37:13 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Jonathan Ross (Gerrit)

    unread,
    Nov 6, 2024, 3:58:34 PMNov 6
    to Chromium LUCI CQ, Chromium Metrics Reviews, AyeAye, chrom...@appspot.gserviceaccount.com, Tricium, Victor Miura, chromium...@chromium.org, Ian Vollick, asvitkine...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, jbauma...@chromium.org, kinuko...@chromium.org
    Attention needed from Victor Miura

    Jonathan Ross added 3 comments

    Patchset-level comments
    File-level comment, Patchset 9:
    Jonathan Ross . resolved

    Since the new delay is for main thread targeting gonna run a perf test vs tough_scrolling_cases/text_on_non_opaque_background.html to see effect on main thread scrolling

    File third_party/blink/renderer/platform/widget/input/input_handler_proxy.cc
    Line 440, Patchset 9:void InputHandlerProxy::ContinueScrollBeginAfterMainThreadHitTest(
    Victor Miura . unresolved

    Do we need to avoid dispatching late events in cases like this too?

    Jonathan Ross

    Good catch. I'm adding the delay at the bottom, to where we attempt to run any `scroll updates` that are queued.

    I think since the `callback` is for the Browser process, that we should run that immediately. The other side effects here are setting that we are in a scrolling state. Which we'd want for queueing/scheduling decisions.

    Line 1584, Patchset 9: DispatchQueuedInputEvents(false /* frame_aligned */);
    Victor Miura . unresolved

    What do we expect in this case for high latency mode?

    Jonathan Ross

    I think this method is actually dead code. `ResamplingScrollEvents` has been enabled by default since 2023. So we should always have a scroll predictor.

    I can do a follow up to clean up this class some. Should make plan to refactor it to `components/input` easier too.

    Though in general I would +1 to not handling input after commit completes

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Victor Miura
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I199ea0fd1fd0a0f58533498a709bb18b0397fe96
    Gerrit-Change-Number: 5943540
    Gerrit-PatchSet: 9
    Gerrit-Owner: Jonathan Ross <jon...@chromium.org>
    Gerrit-Reviewer: Jonathan Ross <jon...@chromium.org>
    Gerrit-Reviewer: Victor Miura <vmi...@chromium.org>
    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
    Gerrit-CC: Ian Vollick <vol...@chromium.org>
    Gerrit-Attention: Victor Miura <vmi...@chromium.org>
    Gerrit-Comment-Date: Wed, 06 Nov 2024 20:58:26 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Victor Miura <vmi...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Jonathan Ross (Gerrit)

    unread,
    Nov 6, 2024, 3:59:08 PMNov 6
    to Chromium LUCI CQ, Chromium Metrics Reviews, AyeAye, chrom...@appspot.gserviceaccount.com, Tricium, Victor Miura, chromium...@chromium.org, Ian Vollick, asvitkine...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, jbauma...@chromium.org, kinuko...@chromium.org
    Attention needed from Victor Miura

    Jonathan Ross voted Code-Review+1

    Code-Review+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Victor Miura
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I199ea0fd1fd0a0f58533498a709bb18b0397fe96
    Gerrit-Change-Number: 5943540
    Gerrit-PatchSet: 10
    Gerrit-Owner: Jonathan Ross <jon...@chromium.org>
    Gerrit-Reviewer: Jonathan Ross <jon...@chromium.org>
    Gerrit-Reviewer: Victor Miura <vmi...@chromium.org>
    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
    Gerrit-CC: Ian Vollick <vol...@chromium.org>
    Gerrit-Attention: Victor Miura <vmi...@chromium.org>
    Gerrit-Comment-Date: Wed, 06 Nov 2024 20:58:58 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Jonathan Ross (Gerrit)

    unread,
    Nov 6, 2024, 3:59:13 PMNov 6
    to Chromium LUCI CQ, Chromium Metrics Reviews, AyeAye, chrom...@appspot.gserviceaccount.com, Tricium, Victor Miura, chromium...@chromium.org, Ian Vollick, asvitkine...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, jbauma...@chromium.org, kinuko...@chromium.org
    Attention needed from Victor Miura

    Jonathan Ross voted Code-Review+0

    Code-Review+0
    Gerrit-Comment-Date: Wed, 06 Nov 2024 20:59:06 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    chromeperf@appspot.gserviceaccount.com (Gerrit)

    unread,
    Nov 6, 2024, 4:40:45 PMNov 6
    to Jonathan Ross, Chromium LUCI CQ, Chromium Metrics Reviews, AyeAye, Tricium, Victor Miura, chromium...@chromium.org, Ian Vollick, asvitkine...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, jbauma...@chromium.org, kinuko...@chromium.org
    Attention needed from Jonathan Ross and Victor Miura

    Message from chrom...@appspot.gserviceaccount.com

    Attention is currently required from:
    • Jonathan Ross
    • Victor Miura
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I199ea0fd1fd0a0f58533498a709bb18b0397fe96
    Gerrit-Change-Number: 5943540
    Gerrit-PatchSet: 10
    Gerrit-Owner: Jonathan Ross <jon...@chromium.org>
    Gerrit-Reviewer: Jonathan Ross <jon...@chromium.org>
    Gerrit-Reviewer: Victor Miura <vmi...@chromium.org>
    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
    Gerrit-CC: Ian Vollick <vol...@chromium.org>
    Gerrit-Attention: Victor Miura <vmi...@chromium.org>
    Gerrit-Attention: Jonathan Ross <jon...@chromium.org>
    Gerrit-Comment-Date: Wed, 06 Nov 2024 21:40:34 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Jonathan Ross (Gerrit)

    unread,
    Nov 7, 2024, 11:29:13 AMNov 7
    to Chromium LUCI CQ, Chromium Metrics Reviews, AyeAye, chrom...@appspot.gserviceaccount.com, Tricium, Victor Miura, chromium...@chromium.org, Ian Vollick, asvitkine...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, jbauma...@chromium.org, kinuko...@chromium.org
    Attention needed from Victor Miura

    Jonathan Ross added 1 comment

    File third_party/blink/renderer/platform/widget/input/input_handler_proxy.cc
    Line 440, Patchset 9:void InputHandlerProxy::ContinueScrollBeginAfterMainThreadHitTest(
    Victor Miura . unresolved

    Do we need to avoid dispatching late events in cases like this too?

    Jonathan Ross

    Good catch. I'm adding the delay at the bottom, to where we attempt to run any `scroll updates` that are queued.

    I think since the `callback` is for the Browser process, that we should run that immediately. The other side effects here are setting that we are in a scrolling state. Which we'd want for queueing/scheduling decisions.

    Jonathan Ross

    Pinpoint didn't like the extra arg I was trying to set, so a local repro on macOS of `non_opaque_background_main_thread_scrolling_00050_pixels_per_second` does validate that this change isn't breaking the behaviour of main thread targetting.

    The variant on the pinpoint apparently now needs `--disable-features=RasterInducingScroll` added to the story. As that feature gets scrolling on compositor thread for this case now. I'll update that separately.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Victor Miura
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I199ea0fd1fd0a0f58533498a709bb18b0397fe96
    Gerrit-Change-Number: 5943540
    Gerrit-PatchSet: 10
    Gerrit-Owner: Jonathan Ross <jon...@chromium.org>
    Gerrit-Reviewer: Jonathan Ross <jon...@chromium.org>
    Gerrit-Reviewer: Victor Miura <vmi...@chromium.org>
    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
    Gerrit-CC: Ian Vollick <vol...@chromium.org>
    Gerrit-Attention: Victor Miura <vmi...@chromium.org>
    Gerrit-Comment-Date: Thu, 07 Nov 2024 16:29:03 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Victor Miura <vmi...@chromium.org>
    Comment-In-Reply-To: Jonathan Ross <jon...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Jonathan Ross (Gerrit)

    unread,
    Nov 12, 2024, 1:51:57 PMNov 12
    to Chromium LUCI CQ, Chromium Metrics Reviews, AyeAye, chrom...@appspot.gserviceaccount.com, Tricium, Victor Miura, chromium...@chromium.org, Ian Vollick, asvitkine...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, jbauma...@chromium.org, kinuko...@chromium.org
    Attention needed from Victor Miura

    Jonathan Ross added 1 comment

    Patchset-level comments
    File-level comment, Patchset 10 (Latest):
    Jonathan Ross . resolved

    Gentle ping

    Gerrit-Comment-Date: Tue, 12 Nov 2024 18:51:49 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Jonathan Ross (Gerrit)

    unread,
    Nov 15, 2024, 10:15:26 AMNov 15
    to Ian Vollick, Chromium LUCI CQ, Chromium Metrics Reviews, AyeAye, chrom...@appspot.gserviceaccount.com, Tricium, Victor Miura, chromium...@chromium.org, asvitkine...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, jbauma...@chromium.org, kinuko...@chromium.org
    Attention needed from Ian Vollick and Victor Miura

    Jonathan Ross added 1 comment

    Patchset-level comments
    Jonathan Ross . resolved

    Hey vollick, could you PTAL? Thanks!

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Ian Vollick
    • Victor Miura
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I199ea0fd1fd0a0f58533498a709bb18b0397fe96
    Gerrit-Change-Number: 5943540
    Gerrit-PatchSet: 10
    Gerrit-Owner: Jonathan Ross <jon...@chromium.org>
    Gerrit-Reviewer: Ian Vollick <vol...@chromium.org>
    Gerrit-Reviewer: Jonathan Ross <jon...@chromium.org>
    Gerrit-Reviewer: Victor Miura <vmi...@chromium.org>
    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
    Gerrit-Attention: Ian Vollick <vol...@chromium.org>
    Gerrit-Comment-Date: Fri, 15 Nov 2024 15:15:18 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Jonathan Ross (Gerrit)

    unread,
    Nov 15, 2024, 11:49:10 AMNov 15
    to Ian Vollick, Chromium LUCI CQ, Chromium Metrics Reviews, AyeAye, chrom...@appspot.gserviceaccount.com, Tricium, Victor Miura, chromium...@chromium.org, asvitkine...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, jbauma...@chromium.org, kinuko...@chromium.org
    Attention needed from Ian Vollick and Victor Miura

    Jonathan Ross added 5 comments

    File cc/base/features.h
    Line 160, Patchset 11:// same as `kScrollEventDispatchModeDispatchScrollEventsImmediately` until the
    // deadline is encountered. At which point input will no longer be dispatched,
    Jonathan Ross . resolved

    input handler proxy enforcing the deadline itself

    Line 146, Patchset 11:// deadline we will resume frame production and enqueuing input.
    //
    Jonathan Ross . resolved

    cc::schedule deadline, overridden if waiting for main thread content

    Line 145, Patchset 11:// During this time scroll events will be dispatched immediately. At the
    Jonathan Ross . resolved

    The first scroll event. Subsequent will be enqueued

    File third_party/blink/renderer/platform/widget/input/input_handler_proxy.cc
    Line 440, Patchset 9:void InputHandlerProxy::ContinueScrollBeginAfterMainThreadHitTest(
    Victor Miura . resolved

    Do we need to avoid dispatching late events in cases like this too?

    Jonathan Ross

    Good catch. I'm adding the delay at the bottom, to where we attempt to run any `scroll updates` that are queued.

    I think since the `callback` is for the Browser process, that we should run that immediately. The other side effects here are setting that we are in a scrolling state. Which we'd want for queueing/scheduling decisions.

    Jonathan Ross

    Pinpoint didn't like the extra arg I was trying to set, so a local repro on macOS of `non_opaque_background_main_thread_scrolling_00050_pixels_per_second` does validate that this change isn't breaking the behaviour of main thread targetting.

    The variant on the pinpoint apparently now needs `--disable-features=RasterInducingScroll` added to the story. As that feature gets scrolling on compositor thread for this case now. I'll update that separately.

    Jonathan Ross

    Done

    Line 1584, Patchset 9: DispatchQueuedInputEvents(false /* frame_aligned */);
    Victor Miura . resolved

    What do we expect in this case for high latency mode?

    Jonathan Ross

    I think this method is actually dead code. `ResamplingScrollEvents` has been enabled by default since 2023. So we should always have a scroll predictor.

    I can do a follow up to clean up this class some. Should make plan to refactor it to `components/input` easier too.

    Though in general I would +1 to not handling input after commit completes

    Jonathan Ross

    Done

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Ian Vollick
    • Victor Miura
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Review
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I199ea0fd1fd0a0f58533498a709bb18b0397fe96
    Gerrit-Change-Number: 5943540
    Gerrit-PatchSet: 12
    Gerrit-Owner: Jonathan Ross <jon...@chromium.org>
    Gerrit-Reviewer: Ian Vollick <vol...@chromium.org>
    Gerrit-Reviewer: Jonathan Ross <jon...@chromium.org>
    Gerrit-Reviewer: Victor Miura <vmi...@chromium.org>
    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
    Gerrit-Attention: Victor Miura <vmi...@chromium.org>
    Gerrit-Attention: Ian Vollick <vol...@chromium.org>
    Gerrit-Comment-Date: Fri, 15 Nov 2024 16:48:59 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Ian Vollick (Gerrit)

    unread,
    Nov 15, 2024, 4:41:45 PMNov 15
    to Jonathan Ross, Chromium LUCI CQ, Chromium Metrics Reviews, AyeAye, chrom...@appspot.gserviceaccount.com, Tricium, Victor Miura, chromium...@chromium.org, asvitkine...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, jbauma...@chromium.org, kinuko...@chromium.org
    Attention needed from Jonathan Ross and Victor Miura

    Ian Vollick added 9 comments

    File cc/base/features.h
    Line 169, Patchset 12 (Latest):// from scheduling bugs. Allowing us to no longer dispatch events, even if frame
    Ian Vollick . unresolved

    Nit: "cc scheduling bugs".

    Line 147, Patchset 12 (Latest):// input. During this time the first scroll event will be dispatched
    Ian Vollick . unresolved

    It looks like we could call DispatchQueuedInputEvents, which looks like it'll dispatch a number of single events. Is that right?

    File third_party/blink/renderer/platform/widget/input/input_handler_proxy.cc
    Line 205, Patchset 12 (Latest):bool DoNotEnqueueLateScrollEvents(
    Ian Vollick . unresolved

    Does this mean "ImmediatelyDispatchFirstScrollEventBeforDeadline"? (% question above about a single event -- similar for my other comments that reference the "first" event).

    The DoNotEnqueue threw me given that we do enqueue after the first event (prior to the deadline), and we always enqueue after the deadline.

    Line 219, Patchset 12 (Latest):bool ShouldNotDispatchLateInputEvent(
    Ian Vollick . unresolved

    nit: The early return if the feature is disabled combined with the function name make this a bit of a confusing double negative.

    Wdyt of ForceImmediateDispatchOfFirstLateInputEvent?

    That way
    * if the feature is off, we return true (IHP forces dispatch counting on someone else to handle gating dispatch, if needed)
    * if we're >= one VSync out, we force (no sense waiting)
    * otherwise, we return whether or not the frame delta < deadline.
    Line 225, Patchset 12 (Latest): kDispatchScrollEventsUntilDeadline) {
    Ian Vollick . unresolved

    If we keep the function named as is, could you please add a comment here explaining this this will cause us to dispatch (and why that's ok)?

    Line 371, Patchset 12 (Latest): // DeliverInputForBeginFrame we want to dispatch those immediately. We will
    Ian Vollick . unresolved

    s/those/the first event/ ?

    Line 423, Patchset 12 (Latest): synchronous_input_handler_) {
    Ian Vollick . unresolved

    Just to confirm my understanding, the next time we hit this fn after hitting the if block above (and have set `enqueue_scroll_events_ = true`), we'll not enter the if block above and will instead end up here.

    We could still end up dispatching here, though, if it happens to be the scroll end from wheel (wouldn't be the first wheel scroll because this is the 2nd time hitting this fn), or if this is WebView.

    Is that right? If so, enqueue_scroll_events_ seems a bit confusing and might warrant a comment here.

    Line 1560, Patchset 12 (Latest): enqueue_scroll_events_ = true;
    Ian Vollick . unresolved

    I was a bit surprised to see that we don't return in this case. Is the idea that we'd generate an extra synthetic event and then adjust and dispatch the others in the while loop below?

    Line 1583, Patchset 12 (Latest): DispatchQueuedInputEvents(false /* frame_aligned */);
    Ian Vollick . unresolved

    Do we need to gate this, too?

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Jonathan Ross
    • Victor Miura
    Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: I199ea0fd1fd0a0f58533498a709bb18b0397fe96
      Gerrit-Change-Number: 5943540
      Gerrit-PatchSet: 12
      Gerrit-Owner: Jonathan Ross <jon...@chromium.org>
      Gerrit-Reviewer: Ian Vollick <vol...@chromium.org>
      Gerrit-Reviewer: Jonathan Ross <jon...@chromium.org>
      Gerrit-Reviewer: Victor Miura <vmi...@chromium.org>
      Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
      Gerrit-Attention: Victor Miura <vmi...@chromium.org>
      Gerrit-Attention: Jonathan Ross <jon...@chromium.org>
      Gerrit-Comment-Date: Fri, 15 Nov 2024 21:41:36 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Jonathan Ross (Gerrit)

      unread,
      Nov 18, 2024, 10:25:57 AMNov 18
      to Ian Vollick, Chromium LUCI CQ, Chromium Metrics Reviews, AyeAye, chrom...@appspot.gserviceaccount.com, Tricium, Victor Miura, chromium...@chromium.org, asvitkine...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, jbauma...@chromium.org, kinuko...@chromium.org
      Attention needed from Ian Vollick and Victor Miura

      Jonathan Ross added 8 comments

      File cc/base/features.h
      Line 147, Patchset 12:// input. During this time the first scroll event will be dispatched
      Ian Vollick . unresolved

      It looks like we could call DispatchQueuedInputEvents, which looks like it'll dispatch a number of single events. Is that right?

      Jonathan Ross

      It's more "Dispatch instead of queue" and "only if we are close to vysnc" mode.

      The system was setup expecting all input to arrive before a VSync. So it was queueing them, then dispatching the queue during the VSync.

      The failure case is when we get to the VSync and the queue is empty. So `kScrollEventDispatchModeNameDispatchScrollEventsImmediately` waits and performs "Dispatch instead of queue".

      However if that's too late, we end up backing up pipeline and dropping frames. So `kScrollEventDispatchModeDispatchScrollEventsUntilDeadline` checks "if we are close to vysnc". Otherwise it queues

      File third_party/blink/renderer/platform/widget/input/input_handler_proxy.cc
      Line 205, Patchset 12:bool DoNotEnqueueLateScrollEvents(
      Ian Vollick . resolved

      Does this mean "ImmediatelyDispatchFirstScrollEventBeforDeadline"? (% question above about a single event -- similar for my other comments that reference the "first" event).

      The DoNotEnqueue threw me given that we do enqueue after the first event (prior to the deadline), and we always enqueue after the deadline.

      Jonathan Ross

      Yeah the name was from when we were either "dispatch immediately" or "enqueue". However on devices with two inputs per vsync this was problematic.

      So this is effectively "ImmediatelyDispatchFirstScrollEventBeforeDeadline". Renamed.

      Line 219, Patchset 12:bool ShouldNotDispatchLateInputEvent(
      Ian Vollick . unresolved

      nit: The early return if the feature is disabled combined with the function name make this a bit of a confusing double negative.

      Wdyt of ForceImmediateDispatchOfFirstLateInputEvent?

      That way
      * if the feature is off, we return true (IHP forces dispatch counting on someone else to handle gating dispatch, if needed)
      * if we're >= one VSync out, we force (no sense waiting)
      * otherwise, we return whether or not the frame delta < deadline.
      Jonathan Ross

      I knew it was a bit of a double negative. However I felt the inverse would have just required negation in the if statements anyways.


      eg
      ```
      if (!ForceImmediateDispatchOfFirstLateInputEvent(
      scroll_event_dispatch_mode_, scroll_deadline_ratio_,
      current_begin_frame_args_, tick_clock_)) {
      input_handler_->SetNeedsAnimateInput();
      return;
      }
      ```
      Line 225, Patchset 12: kDispatchScrollEventsUntilDeadline) {
      Ian Vollick . resolved

      If we keep the function named as is, could you please add a comment here explaining this this will cause us to dispatch (and why that's ok)?

      Jonathan Ross

      Done

      Line 371, Patchset 12: // DeliverInputForBeginFrame we want to dispatch those immediately. We will
      Ian Vollick . resolved

      s/those/the first event/ ?

      Jonathan Ross

      Done

      Line 423, Patchset 12: synchronous_input_handler_) {
      Ian Vollick . unresolved

      Just to confirm my understanding, the next time we hit this fn after hitting the if block above (and have set `enqueue_scroll_events_ = true`), we'll not enter the if block above and will instead end up here.

      We could still end up dispatching here, though, if it happens to be the scroll end from wheel (wouldn't be the first wheel scroll because this is the 2nd time hitting this fn), or if this is WebView.

      Is that right? If so, enqueue_scroll_events_ seems a bit confusing and might warrant a comment here.

      Jonathan Ross

      That is correct. Adding a note.

      Interestingly at `line 401` above bokan@ mentions that this might not be needed anymore for scroll wheel.

      Separately, since WebView just always forwards, a lot of this class is kinda redundant. It might be worth keeping the core targeting/dispatch code. Then have the receiving/queueing be in different sub-classes.

      Line 1560, Patchset 12: enqueue_scroll_events_ = true;
      Ian Vollick . unresolved

      I was a bit surprised to see that we don't return in this case. Is the idea that we'd generate an extra synthetic event and then adjust and dispatch the others in the while loop below?

      Jonathan Ross

      So this does perform the `DispatchSingleInputEvent`. However we may still have `queue_flushed_callback_` to fire.

      With `!scroll_predictor_` being not a mode anymore, I can remove that in the feature cleanup. Which means this block could become an explicit `else` with the `while` below it. Might be more clear

      Line 1583, Patchset 12: DispatchQueuedInputEvents(false /* frame_aligned */);
      Ian Vollick . unresolved

      Do we need to gate this, too?

      Jonathan Ross

      Actually no. `scroll_predictor_` is only `null` when `ResamplingScrollEvents` is disabled. However that experiment was enabled by default over a year ago.

      I plan to go through and clean up that feature. So this path will be removed

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Ian Vollick
      • Victor Miura
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: I199ea0fd1fd0a0f58533498a709bb18b0397fe96
      Gerrit-Change-Number: 5943540
      Gerrit-PatchSet: 12
      Gerrit-Owner: Jonathan Ross <jon...@chromium.org>
      Gerrit-Reviewer: Ian Vollick <vol...@chromium.org>
      Gerrit-Reviewer: Jonathan Ross <jon...@chromium.org>
      Gerrit-Reviewer: Victor Miura <vmi...@chromium.org>
      Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
      Gerrit-Attention: Victor Miura <vmi...@chromium.org>
      Gerrit-Attention: Ian Vollick <vol...@chromium.org>
      Gerrit-Comment-Date: Mon, 18 Nov 2024 15:25:47 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Ian Vollick <vol...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Ian Vollick (Gerrit)

      unread,
      Nov 18, 2024, 6:24:02 PMNov 18
      to Jonathan Ross, Chromium LUCI CQ, Chromium Metrics Reviews, AyeAye, chrom...@appspot.gserviceaccount.com, Tricium, Victor Miura, chromium...@chromium.org, asvitkine...@chromium.org, blink-...@chromium.org, cc-...@chromium.org, jbauma...@chromium.org, kinuko...@chromium.org
      Attention needed from Jonathan Ross and Victor Miura

      Ian Vollick added 5 comments

      File cc/base/features.h
      Line 147, Patchset 12:// input. During this time the first scroll event will be dispatched
      Ian Vollick . unresolved

      It looks like we could call DispatchQueuedInputEvents, which looks like it'll dispatch a number of single events. Is that right?

      Jonathan Ross

      It's more "Dispatch instead of queue" and "only if we are close to vysnc" mode.

      The system was setup expecting all input to arrive before a VSync. So it was queueing them, then dispatching the queue during the VSync.

      The failure case is when we get to the VSync and the queue is empty. So `kScrollEventDispatchModeNameDispatchScrollEventsImmediately` waits and performs "Dispatch instead of queue".

      However if that's too late, we end up backing up pipeline and dropping frames. So `kScrollEventDispatchModeDispatchScrollEventsUntilDeadline` checks "if we are close to vysnc". Otherwise it queues

      Ian Vollick

      I think I follow, though when we dispatch instead of queue, could we not dispatch multiple events? I'm asking because we've now switched to using "first scroll event"-type terminology and I wanted to double check that it is actually the first event (and not multiple events) that we might dispatch.

      File third_party/blink/renderer/platform/widget/input/input_handler_proxy.cc
      Line 219, Patchset 12:bool ShouldNotDispatchLateInputEvent(
      Ian Vollick . resolved

      nit: The early return if the feature is disabled combined with the function name make this a bit of a confusing double negative.

      Wdyt of ForceImmediateDispatchOfFirstLateInputEvent?

      That way
      * if the feature is off, we return true (IHP forces dispatch counting on someone else to handle gating dispatch, if needed)
      * if we're >= one VSync out, we force (no sense waiting)
      * otherwise, we return whether or not the frame delta < deadline.
      Jonathan Ross

      I knew it was a bit of a double negative. However I felt the inverse would have just required negation in the if statements anyways.


      eg
      ```
      if (!ForceImmediateDispatchOfFirstLateInputEvent(
      scroll_event_dispatch_mode_, scroll_deadline_ratio_,
      current_begin_frame_args_, tick_clock_)) {
      input_handler_->SetNeedsAnimateInput();
      return;
      }
      ```
      Ian Vollick

      Acknowledged

      Line 423, Patchset 12: synchronous_input_handler_) {
      Ian Vollick . resolved

      Just to confirm my understanding, the next time we hit this fn after hitting the if block above (and have set `enqueue_scroll_events_ = true`), we'll not enter the if block above and will instead end up here.

      We could still end up dispatching here, though, if it happens to be the scroll end from wheel (wouldn't be the first wheel scroll because this is the 2nd time hitting this fn), or if this is WebView.

      Is that right? If so, enqueue_scroll_events_ seems a bit confusing and might warrant a comment here.

      Jonathan Ross

      That is correct. Adding a note.

      Interestingly at `line 401` above bokan@ mentions that this might not be needed anymore for scroll wheel.

      Separately, since WebView just always forwards, a lot of this class is kinda redundant. It might be worth keeping the core targeting/dispatch code. Then have the receiving/queueing be in different sub-classes.

      Ian Vollick

      Thanks for adding the note.

      Line 1560, Patchset 12: enqueue_scroll_events_ = true;
      Ian Vollick . unresolved

      I was a bit surprised to see that we don't return in this case. Is the idea that we'd generate an extra synthetic event and then adjust and dispatch the others in the while loop below?

      Jonathan Ross

      So this does perform the `DispatchSingleInputEvent`. However we may still have `queue_flushed_callback_` to fire.

      With `!scroll_predictor_` being not a mode anymore, I can remove that in the feature cleanup. Which means this block could become an explicit `else` with the `while` below it. Might be more clear

      Ian Vollick

      That makes sense, though I'm more wondering about the while loop where we're dealing with the events from compositor_event_queue_. If we've generated and dispatched the synthetic scroll prediction, I'm wondering the purpose of dispatching the events in compositor_event_queue_ (do we need to flush the queue or could we just issue the callback and empty the queue?)

      Line 1583, Patchset 12: DispatchQueuedInputEvents(false /* frame_aligned */);
      Ian Vollick . resolved

      Do we need to gate this, too?

      Jonathan Ross

      Actually no. `scroll_predictor_` is only `null` when `ResamplingScrollEvents` is disabled. However that experiment was enabled by default over a year ago.

      I plan to go through and clean up that feature. So this path will be removed

      Ian Vollick

      Acknowledged

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Jonathan Ross
      • Victor Miura
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: I199ea0fd1fd0a0f58533498a709bb18b0397fe96
      Gerrit-Change-Number: 5943540
      Gerrit-PatchSet: 13
      Gerrit-Owner: Jonathan Ross <jon...@chromium.org>
      Gerrit-Reviewer: Ian Vollick <vol...@chromium.org>
      Gerrit-Reviewer: Jonathan Ross <jon...@chromium.org>
      Gerrit-Reviewer: Victor Miura <vmi...@chromium.org>
      Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
      Gerrit-Attention: Victor Miura <vmi...@chromium.org>
      Gerrit-Attention: Jonathan Ross <jon...@chromium.org>
      Gerrit-Comment-Date: Mon, 18 Nov 2024 23:23:53 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Ian Vollick <vol...@chromium.org>
      Comment-In-Reply-To: Jonathan Ross <jon...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open