Fix time datalist Other picker when popup opens upward [chromium/src : main]

0 views
Skip to first unread message

Helmut Januschka (Gerrit)

unread,
May 18, 2026, 5:50:49 PMMay 18
to Helmut Januschka, David Baron, Chromium LUCI CQ, android-bu...@system.gserviceaccount.com, chromium...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org
Attention needed from David Baron

Helmut Januschka voted and added 1 comment

Votes added by Helmut Januschka

Commit-Queue+1

1 comment

Patchset-level comments
File-level comment, Patchset 1 (Latest):
Helmut Januschka . unresolved

dba...@chromium.org, thanks in advance for your review and time.

I was able to reproduce this on my Windows machine, and this CL fixes the issue for me. On an unpatched debug build, clicking "Other" can hit:

```
FATAL:cc/layers/nine_patch_generator.cc:75
DCHECK failed: output_bounds_.width() >= border_.width() (1 vs. 4)
```

Top of the stack:

```
cc::NinePatchGenerator::CheckGeometryLimitations
cc::NinePatchLayerImpl::AppendQuads
cc::LayerTreeHostImpl::CalculateRenderPasses
cc::LayerTreeHostImpl::PrepareToDraw
cc::SingleThreadProxy::DoComposite
```

The issue appears to be that the current "Other" path calls hideWindow(), which resizes the page popup to 1x1, and on Windows that can go through the nine-patch compositor path where the border is wider than the output bounds. openCalendarPicker() already replaces the picker contents and resizes the popup to the real picker size, so i think its safe to keep hideWindow removed.


guess on other platforms a 1x1 might be silently hidden/dismissed?
please let me know if you want me to change anything

Open in Gerrit

Related details

Attention is currently required from:
  • David Baron
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
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: I89afa66f41ffff28ba85e3e75073f730a54dde61
Gerrit-Change-Number: 7856802
Gerrit-PatchSet: 1
Gerrit-Owner: Helmut Januschka <hel...@januschka.com>
Gerrit-Reviewer: David Baron <dba...@chromium.org>
Gerrit-Reviewer: Helmut Januschka <hel...@januschka.com>
Gerrit-Attention: David Baron <dba...@chromium.org>
Gerrit-Comment-Date: Mon, 18 May 2026 21:50:38 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
satisfied_requirement
unsatisfied_requirement
open
diffy

David Baron (Gerrit)

unread,
May 19, 2026, 2:37:37 PMMay 19
to Helmut Januschka, David Baron, Chromium LUCI CQ, android-bu...@system.gserviceaccount.com, chromium...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org
Attention needed from Helmut Januschka

David Baron added 2 comments

Commit Message
Line 9, Patchset 1 (Latest):Open the time picker directly instead of hiding the suggestion popup to a 1x1 intermediate window.
File third_party/blink/renderer/core/html/forms/resources/suggestion_picker.js
Line 228, Patchset 1 (Parent): hideWindow();
David Baron . unresolved

This was the only call to `hideWindow()` so you should at least remove `hideWindow()` and maybe also the `isWindowHidden()` and the `didHide` event dispatching in `picker_common.js`. I think there's also a related leftover `removeEventListener` in `list_picker.js`.

Open in Gerrit

Related details

Attention is currently required from:
  • Helmut Januschka
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
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: I89afa66f41ffff28ba85e3e75073f730a54dde61
Gerrit-Change-Number: 7856802
Gerrit-PatchSet: 1
Gerrit-Owner: Helmut Januschka <hel...@januschka.com>
Gerrit-Reviewer: David Baron <dba...@chromium.org>
Gerrit-Reviewer: Helmut Januschka <hel...@januschka.com>
Gerrit-Attention: Helmut Januschka <hel...@januschka.com>
Gerrit-Comment-Date: Tue, 19 May 2026 18:37:32 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Helmut Januschka (Gerrit)

unread,
May 20, 2026, 4:41:57 AMMay 20
to Helmut Januschka, David Baron, Chromium LUCI CQ, android-bu...@system.gserviceaccount.com, chromium...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org
Attention needed from David Baron

Helmut Januschka added 1 comment

Commit Message
Line 9, Patchset 1 (Latest):Open the time picker directly instead of hiding the suggestion popup to a 1x1 intermediate window.
Helmut Januschka

thanks david, i'v been building a few test cases around the commits you mentioned (thanks), and it seems i'v been jumping head first into a can of worms, there is edge cases and craziness on every platform, i'll put the CL into WIP, and try to lock myself in over the weekend 😆 (seems to be windows with it's 4x4 glitch is the smallest problem)

Open in Gerrit

Related details

Attention is currently required from:
  • David Baron
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
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: I89afa66f41ffff28ba85e3e75073f730a54dde61
Gerrit-Change-Number: 7856802
Gerrit-PatchSet: 1
Gerrit-Owner: Helmut Januschka <hel...@januschka.com>
Gerrit-Reviewer: David Baron <dba...@chromium.org>
Gerrit-Reviewer: Helmut Januschka <hel...@januschka.com>
Gerrit-Attention: David Baron <dba...@chromium.org>
Gerrit-Comment-Date: Wed, 20 May 2026 08:41:43 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: David Baron <dba...@chromium.org>
satisfied_requirement
unsatisfied_requirement
open
diffy

Helmut Januschka (Gerrit)

unread,
Jun 1, 2026, 11:55:29 AMJun 1
to Helmut Januschka, David Baron, Chromium LUCI CQ, android-bu...@system.gserviceaccount.com, chromium...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org
Attention needed from David Baron

Helmut Januschka added 4 comments

Patchset-level comments
Helmut Januschka . unresolved

dba...@chromium.org, thanks in advance for your review and time.

I was able to reproduce this on my Windows machine, and this CL fixes the issue for me. On an unpatched debug build, clicking "Other" can hit:

```
FATAL:cc/layers/nine_patch_generator.cc:75
DCHECK failed: output_bounds_.width() >= border_.width() (1 vs. 4)
```

Top of the stack:

```
cc::NinePatchGenerator::CheckGeometryLimitations
cc::NinePatchLayerImpl::AppendQuads
cc::LayerTreeHostImpl::CalculateRenderPasses
cc::LayerTreeHostImpl::PrepareToDraw
cc::SingleThreadProxy::DoComposite
```

The issue appears to be that the current "Other" path calls hideWindow(), which resizes the page popup to 1x1, and on Windows that can go through the nine-patch compositor path where the border is wider than the output bounds. openCalendarPicker() already replaces the picker contents and resizes the popup to the real picker size, so i think its safe to keep hideWindow removed.


guess on other platforms a 1x1 might be silently hidden/dismissed?
please let me know if you want me to change anything

Helmut Januschka

PS2 is ready for review. I reworked this to avoid the 1x1 hide-window transition entirely and to preserve the old flicker/transition behavior that the earlier fixes were trying to protect.

I also recorded current Chrome stable on macOS showing the edge cases still broken with my sampler page:
https://static.januschka.com/i-348520442/edge-cases.html

Video:
https://www.youtube.com/watch?v=K4t8jc4UUfQ

Trybots are green, and I manually tested across platforms. PTAL.

File-level comment, Patchset 2 (Latest):
Helmut Januschka . resolved

PS2 is ready for review. I reworked this to avoid the 1x1 hide-window transition entirely and fix the root cause.

While testing the sampler here:
https://static.januschka.com/i-348520442/edge-cases.html

I noticed this is currently broken even on stable on macOS. Video:
https://www.youtube.com/watch?v=K4t8jc4UUfQ

With the current PS2, trybots are green, and I manually tested across platforms. PTAL.

Let me know if you want me to address anything.

Commit Message
Line 9, Patchset 1:Open the time picker directly instead of hiding the suggestion popup to a 1x1 intermediate window.
David Baron . resolved

Did you make any attempts to test the bugs that were being fixed in https://chromium.googlesource.com/chromium/src/+/a0433141504575df36b4d1d3646fe6424077ed86%5E%21 and https://chromium.googlesource.com/chromium/src/+/79ec2e579e87f6bf28dcbf0e4cb602290288a4df%5E%21 ?

Helmut Januschka

thanks david, i'v been building a few test cases around the commits you mentioned (thanks), and it seems i'v been jumping head first into a can of worms, there is edge cases and craziness on every platform, i'll put the CL into WIP, and try to lock myself in over the weekend 😆 (seems to be windows with it's 4x4 glitch is the smallest problem)

Helmut Januschka

ok it should work now, and mentioned bugs should not regress.

File third_party/blink/renderer/core/html/forms/resources/suggestion_picker.js
David Baron . resolved

This was the only call to `hideWindow()` so you should at least remove `hideWindow()` and maybe also the `isWindowHidden()` and the `didHide` event dispatching in `picker_common.js`. I think there's also a related leftover `removeEventListener` in `list_picker.js`.

Helmut Januschka

Done in PS2. I removed the now-unused `hideWindow()` path, the related hidden-window state/event handling, the obsolete test for it, and the leftover listener cleanup in `list_picker.js`.

Open in Gerrit

Related details

Attention is currently required from:
  • David Baron
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
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: I89afa66f41ffff28ba85e3e75073f730a54dde61
Gerrit-Change-Number: 7856802
Gerrit-PatchSet: 2
Gerrit-Owner: Helmut Januschka <hel...@januschka.com>
Gerrit-Reviewer: David Baron <dba...@chromium.org>
Gerrit-Reviewer: Helmut Januschka <hel...@januschka.com>
Gerrit-Attention: David Baron <dba...@chromium.org>
Gerrit-Comment-Date: Mon, 01 Jun 2026 15:55:10 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Helmut Januschka <hel...@januschka.com>
Comment-In-Reply-To: David Baron <dba...@chromium.org>
satisfied_requirement
unsatisfied_requirement
open
diffy

Helmut Januschka (Gerrit)

unread,
Jun 1, 2026, 11:55:58 AMJun 1
to Helmut Januschka, David Baron, Chromium LUCI CQ, android-bu...@system.gserviceaccount.com, chromium...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org
Attention needed from David Baron

Helmut Januschka added 1 comment

Patchset-level comments
File-level comment, Patchset 1:
Helmut Januschka . resolved

dba...@chromium.org, thanks in advance for your review and time.

I was able to reproduce this on my Windows machine, and this CL fixes the issue for me. On an unpatched debug build, clicking "Other" can hit:

```
FATAL:cc/layers/nine_patch_generator.cc:75
DCHECK failed: output_bounds_.width() >= border_.width() (1 vs. 4)
```

Top of the stack:

```
cc::NinePatchGenerator::CheckGeometryLimitations
cc::NinePatchLayerImpl::AppendQuads
cc::LayerTreeHostImpl::CalculateRenderPasses
cc::LayerTreeHostImpl::PrepareToDraw
cc::SingleThreadProxy::DoComposite
```

The issue appears to be that the current "Other" path calls hideWindow(), which resizes the page popup to 1x1, and on Windows that can go through the nine-patch compositor path where the border is wider than the output bounds. openCalendarPicker() already replaces the picker contents and resizes the popup to the real picker size, so i think its safe to keep hideWindow removed.


guess on other platforms a 1x1 might be silently hidden/dismissed?
please let me know if you want me to change anything

Helmut Januschka

PS2 is ready for review. I reworked this to avoid the 1x1 hide-window transition entirely and to preserve the old flicker/transition behavior that the earlier fixes were trying to protect.

I also recorded current Chrome stable on macOS showing the edge cases still broken with my sampler page:
https://static.januschka.com/i-348520442/edge-cases.html

Video:
https://www.youtube.com/watch?v=K4t8jc4UUfQ

Trybots are green, and I manually tested across platforms. PTAL.

Helmut Januschka

outdated!

Open in Gerrit

Related details

Attention is currently required from:
  • David Baron
Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedReview-Enforcement
    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: I89afa66f41ffff28ba85e3e75073f730a54dde61
    Gerrit-Change-Number: 7856802
    Gerrit-PatchSet: 2
    Gerrit-Owner: Helmut Januschka <hel...@januschka.com>
    Gerrit-Reviewer: David Baron <dba...@chromium.org>
    Gerrit-Reviewer: Helmut Januschka <hel...@januschka.com>
    Gerrit-Attention: David Baron <dba...@chromium.org>
    Gerrit-Comment-Date: Mon, 01 Jun 2026 15:55:46 +0000
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    David Baron (Gerrit)

    unread,
    Jun 5, 2026, 12:52:36 PMJun 5
    to Helmut Januschka, Dan Clark, David Baron, Chromium LUCI CQ, android-bu...@system.gserviceaccount.com, chromium...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org
    Attention needed from Helmut Januschka

    David Baron added 2 comments

    Patchset-level comments
    File-level comment, Patchset 2 (Latest):
    David Baron . resolved

    I'm somewhat uncomfortable with the approach here -- but I'm also not all that familiar with the javascript implementations of these pickers. cc:ing @dan...@microsoft.com who has worked on them more and might have a stronger opinion.

    File third_party/blink/renderer/core/html/forms/resources/calendar_picker.js
    Line 4459, Patchset 2 (Latest): * Returns the popup size this picker will request from adjustHeight() and
    David Baron . unresolved

    So I've looked at this a few times, and it still makes me very uncomfortable to do something like this and duplicate the layout code into another method. This seems to require that anybody making future changes to the picker layouts also update these parallel methods. (There are not even any comments pointing that out -- but I also don't want you to think that that means that good enough comments would make the approach acceptable.)

    This seems like too much complexity for what feels like it should be a small-ish bug fix.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Helmut Januschka
    Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      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: I89afa66f41ffff28ba85e3e75073f730a54dde61
      Gerrit-Change-Number: 7856802
      Gerrit-PatchSet: 2
      Gerrit-Owner: Helmut Januschka <hel...@januschka.com>
      Gerrit-Reviewer: David Baron <dba...@chromium.org>
      Gerrit-Reviewer: Helmut Januschka <hel...@januschka.com>
      Gerrit-CC: Dan Clark <dan...@microsoft.com>
      Gerrit-Attention: Helmut Januschka <hel...@januschka.com>
      Gerrit-Comment-Date: Fri, 05 Jun 2026 16:52:29 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Dan Clark (Gerrit)

      unread,
      Jun 8, 2026, 4:45:32 PMJun 8
      to Helmut Januschka, David Baron, Chromium LUCI CQ, android-bu...@system.gserviceaccount.com, chromium...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org
      Attention needed from Helmut Januschka

      Dan Clark added 1 comment

      File third_party/blink/renderer/core/html/forms/resources/calendar_picker.js
      Line 4459, Patchset 2 (Latest): * Returns the popup size this picker will request from adjustHeight() and
      David Baron . unresolved

      So I've looked at this a few times, and it still makes me very uncomfortable to do something like this and duplicate the layout code into another method. This seems to require that anybody making future changes to the picker layouts also update these parallel methods. (There are not even any comments pointing that out -- but I also don't want you to think that that means that good enough comments would make the approach acceptable.)

      This seems like too much complexity for what feels like it should be a small-ish bug fix.

      Dan Clark

      I'm also a little concerned with the added complexity with the duplicated layout calculations.

      The big thing I still don't understand about this bug is, why does this only happen when the pickers open above the element? Is there some more scoped thing we can do to make the "above the element" case work like the "below the element" case?

      Gerrit-Comment-Date: Mon, 08 Jun 2026 20:45:22 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: David Baron <dba...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Helmut Januschka (Gerrit)

      unread,
      Jun 8, 2026, 6:33:03 PMJun 8
      to Helmut Januschka, Dan Clark, David Baron, Chromium LUCI CQ, android-bu...@system.gserviceaccount.com, chromium...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org
      Attention needed from Dan Clark and David Baron

      Helmut Januschka added 1 comment

      File third_party/blink/renderer/core/html/forms/resources/calendar_picker.js
      Line 4459, Patchset 2: * Returns the popup size this picker will request from adjustHeight() and
      David Baron . unresolved

      So I've looked at this a few times, and it still makes me very uncomfortable to do something like this and duplicate the layout code into another method. This seems to require that anybody making future changes to the picker layouts also update these parallel methods. (There are not even any comments pointing that out -- but I also don't want you to think that that means that good enough comments would make the approach acceptable.)

      This seems like too much complexity for what feels like it should be a small-ish bug fix.

      Dan Clark

      I'm also a little concerned with the added complexity with the duplicated layout calculations.

      The big thing I still don't understand about this bug is, why does this only happen when the pickers open above the element? Is there some more scoped thing we can do to make the "above the element" case work like the "below the element" case?

      Helmut Januschka

      Thanks you both are right with being concerned. managed to reduce the duplicate layout logic.

      For the underlying bug: this only shows up when the picker opens above the element because the suggestion popup starts with a smaller rect, then the calendar is swapped in and asks the browser to resize/reposition the popup.

      In the above-anchor case, growing the popup changes its top edge, so there can be a frame where the calendar is painted into the old suggestion-sized surface/position.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Dan Clark
      • David Baron
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      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: I89afa66f41ffff28ba85e3e75073f730a54dde61
      Gerrit-Change-Number: 7856802
      Gerrit-PatchSet: 3
      Gerrit-Owner: Helmut Januschka <hel...@januschka.com>
      Gerrit-Reviewer: David Baron <dba...@chromium.org>
      Gerrit-Reviewer: Helmut Januschka <hel...@januschka.com>
      Gerrit-CC: Dan Clark <dan...@microsoft.com>
      Gerrit-Attention: Dan Clark <dan...@microsoft.com>
      Gerrit-Attention: David Baron <dba...@chromium.org>
      Gerrit-Comment-Date: Mon, 08 Jun 2026 22:32:44 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Dan Clark <dan...@microsoft.com>
      Comment-In-Reply-To: David Baron <dba...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      David Baron (Gerrit)

      unread,
      Jun 17, 2026, 3:40:49 PMJun 17
      to Helmut Januschka, Dan Clark, David Baron, Chromium LUCI CQ, android-bu...@system.gserviceaccount.com, chromium...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org
      Attention needed from Dan Clark and Helmut Januschka

      David Baron added 1 comment

      File third_party/blink/renderer/core/html/forms/resources/calendar_picker.js
      Line 4459, Patchset 2: * Returns the popup size this picker will request from adjustHeight() and
      David Baron . unresolved

      So I've looked at this a few times, and it still makes me very uncomfortable to do something like this and duplicate the layout code into another method. This seems to require that anybody making future changes to the picker layouts also update these parallel methods. (There are not even any comments pointing that out -- but I also don't want you to think that that means that good enough comments would make the approach acceptable.)

      This seems like too much complexity for what feels like it should be a small-ish bug fix.

      Dan Clark

      I'm also a little concerned with the added complexity with the duplicated layout calculations.

      The big thing I still don't understand about this bug is, why does this only happen when the pickers open above the element? Is there some more scoped thing we can do to make the "above the element" case work like the "below the element" case?

      Helmut Januschka

      Thanks you both are right with being concerned. managed to reduce the duplicate layout logic.

      For the underlying bug: this only shows up when the picker opens above the element because the suggestion popup starts with a smaller rect, then the calendar is swapped in and asks the browser to resize/reposition the popup.

      In the above-anchor case, growing the popup changes its top edge, so there can be a frame where the calendar is painted into the old suggestion-sized surface/position.

      David Baron

      Sorry for the delay getting back to you -- but I guess my main concern is that I don't think this comment was addressed. There's still a bunch of duplicate layout code right here. I'm not sure what the right approach is (although it seems likely to involve a mechanism that's capable of doing relative-to-bottom positioning), but I don't think the underlying concern here about duplicate layout code has been addressed.

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Dan Clark
      • Helmut Januschka
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      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: I89afa66f41ffff28ba85e3e75073f730a54dde61
      Gerrit-Change-Number: 7856802
      Gerrit-PatchSet: 3
      Gerrit-Owner: Helmut Januschka <hel...@januschka.com>
      Gerrit-Reviewer: David Baron <dba...@chromium.org>
      Gerrit-Reviewer: Helmut Januschka <hel...@januschka.com>
      Gerrit-CC: Dan Clark <dan...@microsoft.com>
      Gerrit-Attention: Helmut Januschka <hel...@januschka.com>
      Gerrit-Attention: Dan Clark <dan...@microsoft.com>
      Gerrit-Comment-Date: Wed, 17 Jun 2026 19:40:40 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Helmut Januschka <hel...@januschka.com>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Helmut Januschka (Gerrit)

      unread,
      Jun 18, 2026, 6:18:58 PMJun 18
      to Helmut Januschka, Dan Clark, David Baron, Chromium LUCI CQ, android-bu...@system.gserviceaccount.com, chromium...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org
      Attention needed from Dan Clark and David Baron

      Helmut Januschka added 1 comment

      File third_party/blink/renderer/core/html/forms/resources/calendar_picker.js
      Line 4459, Patchset 2: * Returns the popup size this picker will request from adjustHeight() and
      David Baron . unresolved

      So I've looked at this a few times, and it still makes me very uncomfortable to do something like this and duplicate the layout code into another method. This seems to require that anybody making future changes to the picker layouts also update these parallel methods. (There are not even any comments pointing that out -- but I also don't want you to think that that means that good enough comments would make the approach acceptable.)

      This seems like too much complexity for what feels like it should be a small-ish bug fix.

      Dan Clark

      I'm also a little concerned with the added complexity with the duplicated layout calculations.

      The big thing I still don't understand about this bug is, why does this only happen when the pickers open above the element? Is there some more scoped thing we can do to make the "above the element" case work like the "below the element" case?

      Helmut Januschka

      Thanks you both are right with being concerned. managed to reduce the duplicate layout logic.

      For the underlying bug: this only shows up when the picker opens above the element because the suggestion popup starts with a smaller rect, then the calendar is swapped in and asks the browser to resize/reposition the popup.

      In the above-anchor case, growing the popup changes its top edge, so there can be a frame where the calendar is painted into the old suggestion-sized surface/position.

      David Baron

      Sorry for the delay getting back to you -- but I guess my main concern is that I don't think this comment was addressed. There's still a bunch of duplicate layout code right here. I'm not sure what the right approach is (although it seems likely to involve a mechanism that's capable of doing relative-to-bottom positioning), but I don't think the underlying concern here about duplicate layout code has been addressed.

      Helmut Januschka

      Hey David, thanks for sticking with this one. I want to make sure I take the direction you'd actually be happy with before I sink more time in, i see:

      [1] Drop the predicted-size code entirely and size the popup from the picker's real layout. The pickers already hide their content across the resize, so I can open the picker inert, let it do its normal single resizeWindow() with its actual DOM size, and reveal after the resize ack. Small, scoped, but it's still "JS papers over a two-step resize."

      [2] bottom-edge-anchored repositioning in WebPagePopupImpl so an above-anchor popup keeps its bottom edge fixed across a resize. That's the "correct" fix, but it's a cross-process surface-sync change and feels heavy for what started as a small bug.

      happy to go either route, what would you rather see land?

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Dan Clark
      • David Baron
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      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: I89afa66f41ffff28ba85e3e75073f730a54dde61
      Gerrit-Change-Number: 7856802
      Gerrit-PatchSet: 3
      Gerrit-Owner: Helmut Januschka <hel...@januschka.com>
      Gerrit-Reviewer: David Baron <dba...@chromium.org>
      Gerrit-Reviewer: Helmut Januschka <hel...@januschka.com>
      Gerrit-CC: Dan Clark <dan...@microsoft.com>
      Gerrit-Attention: Dan Clark <dan...@microsoft.com>
      Gerrit-Attention: David Baron <dba...@chromium.org>
      Gerrit-Comment-Date: Thu, 18 Jun 2026 22:18:38 +0000
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Helmut Januschka (Gerrit)

      unread,
      4:10 PM (3 hours ago) 4:10 PM
      to Dan Clark, David Baron, Chromium LUCI CQ, android-bu...@system.gserviceaccount.com, chromium...@chromium.org, blink-rev...@chromium.org, blink-...@chromium.org
      Attention needed from Dan Clark and David Baron

      Helmut Januschka added 1 comment

      File third_party/blink/renderer/core/html/forms/resources/calendar_picker.js
      Line 4459, Patchset 2: * Returns the popup size this picker will request from adjustHeight() and
      David Baron . unresolved

      So I've looked at this a few times, and it still makes me very uncomfortable to do something like this and duplicate the layout code into another method. This seems to require that anybody making future changes to the picker layouts also update these parallel methods. (There are not even any comments pointing that out -- but I also don't want you to think that that means that good enough comments would make the approach acceptable.)

      This seems like too much complexity for what feels like it should be a small-ish bug fix.

      Dan Clark

      I'm also a little concerned with the added complexity with the duplicated layout calculations.

      The big thing I still don't understand about this bug is, why does this only happen when the pickers open above the element? Is there some more scoped thing we can do to make the "above the element" case work like the "below the element" case?

      Helmut Januschka

      Thanks you both are right with being concerned. managed to reduce the duplicate layout logic.

      For the underlying bug: this only shows up when the picker opens above the element because the suggestion popup starts with a smaller rect, then the calendar is swapped in and asks the browser to resize/reposition the popup.

      In the above-anchor case, growing the popup changes its top edge, so there can be a frame where the calendar is painted into the old suggestion-sized surface/position.

      David Baron

      Sorry for the delay getting back to you -- but I guess my main concern is that I don't think this comment was addressed. There's still a bunch of duplicate layout code right here. I'm not sure what the right approach is (although it seems likely to involve a mechanism that's capable of doing relative-to-bottom positioning), but I don't think the underlying concern here about duplicate layout code has been addressed.

      Helmut Januschka

      Hey David, thanks for sticking with this one. I want to make sure I take the direction you'd actually be happy with before I sink more time in, i see:

      [1] Drop the predicted-size code entirely and size the popup from the picker's real layout. The pickers already hide their content across the resize, so I can open the picker inert, let it do its normal single resizeWindow() with its actual DOM size, and reveal after the resize ack. Small, scoped, but it's still "JS papers over a two-step resize."

      [2] bottom-edge-anchored repositioning in WebPagePopupImpl so an above-anchor popup keeps its bottom edge fixed across a resize. That's the "correct" fix, but it's a cross-process surface-sync change and feels heavy for what started as a small bug.

      happy to go either route, what would you rather see land?

      Helmut Januschka

      any ideas?

      Gerrit-Comment-Date: Wed, 08 Jul 2026 20:10:02 +0000
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy
      Reply all
      Reply to author
      Forward
      0 new messages