[WebUI LLBC] Introduce PermissionChip Interfaces. [chromium/src : main]

0 views
Skip to first unread message

Qingxin Wu (Gerrit)

unread,
Mar 30, 2026, 9:13:50 AM (3 days ago) Mar 30
to Elias Klim, Paul Jensen, Maks Orlovich, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, jdonnel...@chromium.org, omnibox-...@chromium.org
Attention needed from Elias Klim and Paul Jensen

Qingxin Wu voted Commit-Queue+1

Commit-Queue+1
Open in Gerrit

Related details

Attention is currently required from:
  • Elias Klim
  • Paul Jensen
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: I8451110f6c28d267528fa8ed2ead22dbb485e0a9
Gerrit-Change-Number: 7705932
Gerrit-PatchSet: 9
Gerrit-Owner: Qingxin Wu <qing...@google.com>
Gerrit-Reviewer: Elias Klim <el...@chromium.org>
Gerrit-Reviewer: Paul Jensen <paulj...@chromium.org>
Gerrit-Reviewer: Qingxin Wu <qing...@google.com>
Gerrit-CC: Maks Orlovich <morl...@chromium.org>
Gerrit-Attention: Elias Klim <el...@chromium.org>
Gerrit-Attention: Paul Jensen <paulj...@chromium.org>
Gerrit-Comment-Date: Mon, 30 Mar 2026 13:13:44 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
satisfied_requirement
unsatisfied_requirement
open
diffy

Maks Orlovich (Gerrit)

unread,
Mar 30, 2026, 9:58:04 AM (3 days ago) Mar 30
to Qingxin Wu, Elias Klim, Paul Jensen, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, jdonnel...@chromium.org, omnibox-...@chromium.org
Attention needed from Elias Klim, Paul Jensen and Qingxin Wu

Maks Orlovich added 7 comments

File chrome/browser/ui/views/location_bar/location_bar_view.cc
Line 917, Patchset 9 (Latest): if (views::View* chip_view = chip_controller_->chip()->GetAsView()) {
Maks Orlovich . unresolved

Can probably CHECK this, you won't expect the WebUI chips impl with LocationBarView?

File chrome/browser/ui/views/permissions/chip/permission_chip_interface.h
Line 81, Patchset 9 (Latest): virtual bool IsMouseHovered() const = 0;
Maks Orlovich . unresolved

This is going to be approximate with WebUI.

Line 67, Patchset 9 (Latest): virtual bool is_fully_collapsed() const = 0;
Maks Orlovich . unresolved

Probably shouldn't use names like this for virtuals.

Line 66, Patchset 9 (Latest): virtual void StopAnimationForTesting() = 0;
Maks Orlovich . unresolved

Can one do that w/CSS?

Line 65, Patchset 9 (Latest): virtual void ResetAnimation(double value) = 0;
Maks Orlovich . unresolved

Is this implementable with CSS? I think it's only ever used with 0 or 1, though, which probably simplifies things (and suggests this should take an enum or a bool or such instead)

Line 62, Patchset 9 (Latest): virtual void AnimateCollapse(base::TimeDelta duration) = 0;
Maks Orlovich . unresolved

Are you sure you need to be passing durations? These go into CSS, so it would be easier if they're just constants in CSS files. Looking around, there seems to be some sort of guard on whether the animations are on or not. I wonder if we should be pushing that bool as yet another CSS var?

Line 26, Patchset 9 (Latest):class BubbleOwnerDelegate {
Maks Orlovich . unresolved

This is way too generic a name to not be namespaced (perhaps as a member type?)

Open in Gerrit

Related details

Attention is currently required from:
  • Elias Klim
  • Paul Jensen
  • Qingxin Wu
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: I8451110f6c28d267528fa8ed2ead22dbb485e0a9
    Gerrit-Change-Number: 7705932
    Gerrit-PatchSet: 9
    Gerrit-Owner: Qingxin Wu <qing...@google.com>
    Gerrit-Reviewer: Elias Klim <el...@chromium.org>
    Gerrit-Reviewer: Paul Jensen <paulj...@chromium.org>
    Gerrit-Reviewer: Qingxin Wu <qing...@google.com>
    Gerrit-CC: Maks Orlovich <morl...@chromium.org>
    Gerrit-Attention: Elias Klim <el...@chromium.org>
    Gerrit-Attention: Paul Jensen <paulj...@chromium.org>
    Gerrit-Attention: Qingxin Wu <qing...@google.com>
    Gerrit-Comment-Date: Mon, 30 Mar 2026 13:58:00 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Elias Klim (Gerrit)

    unread,
    Mar 30, 2026, 10:28:18 AM (3 days ago) Mar 30
    to Qingxin Wu, Andy Paicu, Paul Jensen, Maks Orlovich, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, jdonnel...@chromium.org, omnibox-...@chromium.org
    Attention needed from Paul Jensen and Qingxin Wu

    Elias Klim voted and added 3 comments

    Votes added by Elias Klim

    Code-Review+1

    3 comments

    Patchset-level comments
    File-level comment, Patchset 9 (Latest):
    Elias Klim . resolved

    LGTM % comments.

    (I will be OOO for the whole week, CC'ed andypaicu@ for further questions if needed)

    File chrome/browser/ui/views/permissions/chip/LHS_indicators_interactive_uitest.cc
    Line 61, Patchset 9 (Latest): if (quiet_on_event == QuitOnEvent::kExpand) {
    Elias Klim . unresolved

    Please rename to `quit_on_event`

    File chrome/browser/ui/views/permissions/chip/permission_dashboard_controller.cc
    Line 280, Patchset 9 (Latest): permission_dashboard_view_->GetViewAccessibility().AnnounceAlert(
    Elias Klim . unresolved

    In `ChipController`, you delegated the announcement to the chip via `chip_->AnnounceText(text)`.

    Here, the name is set on the chip, but the alert is still announced on the parent `permission_dashboard_view_`. To be consistent and ensure correct screen reader behavior as we decouple, should this also be delegated to the chip?

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Paul Jensen
    • Qingxin Wu
    Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement 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: I8451110f6c28d267528fa8ed2ead22dbb485e0a9
      Gerrit-Change-Number: 7705932
      Gerrit-PatchSet: 9
      Gerrit-Owner: Qingxin Wu <qing...@google.com>
      Gerrit-Reviewer: Elias Klim <el...@chromium.org>
      Gerrit-Reviewer: Paul Jensen <paulj...@chromium.org>
      Gerrit-Reviewer: Qingxin Wu <qing...@google.com>
      Gerrit-CC: Andy Paicu <andy...@chromium.org>
      Gerrit-CC: Maks Orlovich <morl...@chromium.org>
      Gerrit-Attention: Paul Jensen <paulj...@chromium.org>
      Gerrit-Attention: Qingxin Wu <qing...@google.com>
      Gerrit-Comment-Date: Mon, 30 Mar 2026 14:28:04 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: Yes
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Qingxin Wu (Gerrit)

      unread,
      Mar 30, 2026, 9:35:06 PM (3 days ago) Mar 30
      to Maks Orlovich, Elias Klim, Andy Paicu, Paul Jensen, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, jdonnel...@chromium.org, omnibox-...@chromium.org
      Attention needed from Maks Orlovich and Paul Jensen

      Qingxin Wu added 9 comments

      File chrome/browser/ui/views/location_bar/location_bar_view.cc
      Line 917, Patchset 9: if (views::View* chip_view = chip_controller_->chip()->GetAsView()) {
      Maks Orlovich . resolved

      Can probably CHECK this, you won't expect the WebUI chips impl with LocationBarView?

      Qingxin Wu

      Done

      File chrome/browser/ui/views/permissions/chip/LHS_indicators_interactive_uitest.cc
      Line 61, Patchset 9: if (quiet_on_event == QuitOnEvent::kExpand) {
      Elias Klim . resolved

      Please rename to `quit_on_event`

      Qingxin Wu

      Done

      File chrome/browser/ui/views/permissions/chip/permission_chip_interface.h
      Line 81, Patchset 9: virtual bool IsMouseHovered() const = 0;
      Maks Orlovich . resolved

      This is going to be approximate with WebUI.

      Qingxin Wu

      thanks for pointing that out. Added a comment for it.

      Line 67, Patchset 9: virtual bool is_fully_collapsed() const = 0;
      Maks Orlovich . resolved

      Probably shouldn't use names like this for virtuals.

      Qingxin Wu

      changed to IsFullyCollapsed and IsAnimating.

      Line 66, Patchset 9: virtual void StopAnimationForTesting() = 0;
      Maks Orlovich . resolved

      Can one do that w/CSS?

      Qingxin Wu

      removed it, and changed tests to rely on PermissionChipView::StopAnimationForTesting() instead.

      Line 65, Patchset 9: virtual void ResetAnimation(double value) = 0;
      Maks Orlovich . resolved

      Is this implementable with CSS? I think it's only ever used with 0 or 1, though, which probably simplifies things (and suggests this should take an enum or a bool or such instead)

      Qingxin Wu

      changed to an enum AnimationState

      Line 62, Patchset 9: virtual void AnimateCollapse(base::TimeDelta duration) = 0;
      Maks Orlovich . resolved

      Are you sure you need to be passing durations? These go into CSS, so it would be easier if they're just constants in CSS files. Looking around, there seems to be some sort of guard on whether the animations are on or not. I wonder if we should be pushing that bool as yet another CSS var?

      Qingxin Wu

      Great point! I removed the duration parameter from the interface entirely and move the constants (e.g. 350ms) down into the native PermissionChipView implementation.

      Line 26, Patchset 9:class BubbleOwnerDelegate {
      Maks Orlovich . resolved

      This is way too generic a name to not be namespaced (perhaps as a member type?)

      Qingxin Wu

      moved the definition inside PermissionChipInterface

      File chrome/browser/ui/views/permissions/chip/permission_dashboard_controller.cc
      Line 280, Patchset 9: permission_dashboard_view_->GetViewAccessibility().AnnounceAlert(
      Elias Klim . resolved

      In `ChipController`, you delegated the announcement to the chip via `chip_->AnnounceText(text)`.

      Here, the name is set on the chip, but the alert is still announced on the parent `permission_dashboard_view_`. To be consistent and ensure correct screen reader behavior as we decouple, should this also be delegated to the chip?

      Qingxin Wu

      Done

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Maks Orlovich
      • Paul Jensen
      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: I8451110f6c28d267528fa8ed2ead22dbb485e0a9
        Gerrit-Change-Number: 7705932
        Gerrit-PatchSet: 12
        Gerrit-Owner: Qingxin Wu <qing...@google.com>
        Gerrit-Reviewer: Elias Klim <el...@chromium.org>
        Gerrit-Reviewer: Maks Orlovich <morl...@chromium.org>
        Gerrit-Reviewer: Paul Jensen <paulj...@chromium.org>
        Gerrit-Reviewer: Qingxin Wu <qing...@google.com>
        Gerrit-CC: Andy Paicu <andy...@chromium.org>
        Gerrit-Attention: Paul Jensen <paulj...@chromium.org>
        Gerrit-Attention: Maks Orlovich <morl...@chromium.org>
        Gerrit-Comment-Date: Tue, 31 Mar 2026 01:34:59 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        Comment-In-Reply-To: Elias Klim <el...@chromium.org>
        Comment-In-Reply-To: Maks Orlovich <morl...@chromium.org>
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Paul Jensen (Gerrit)

        unread,
        Mar 31, 2026, 8:20:32 AM (2 days ago) Mar 31
        to Qingxin Wu, Maks Orlovich, Elias Klim, Andy Paicu, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, jdonnel...@chromium.org, omnibox-...@chromium.org
        Attention needed from Maks Orlovich and Qingxin Wu

        Paul Jensen added 2 comments

        File chrome/browser/ui/views/permissions/chip/permission_chip_interface.h
        Line 62, Patchset 9: virtual void AnimateCollapse(base::TimeDelta duration) = 0;
        Maks Orlovich . unresolved

        Are you sure you need to be passing durations? These go into CSS, so it would be easier if they're just constants in CSS files. Looking around, there seems to be some sort of guard on whether the animations are on or not. I wonder if we should be pushing that bool as yet another CSS var?

        Qingxin Wu

        Great point! I removed the duration parameter from the interface entirely and move the constants (e.g. 350ms) down into the native PermissionChipView implementation.

        Paul Jensen

        So the collapse time is sometimes 250ms and sometimes 75ms, so this change is making it always 250ms. Doesn't seem like a huge change to me but I'm not an owner.

        File chrome/browser/ui/views/permissions/chip/permission_dashboard_controller.cc
        Line 388, Patchset 12 (Latest): permission_dashboard_view_->UpdateDividerViewVisibility();
        Paul Jensen . resolved

        This looks roughly correct, but have you looked through it carefully to make sure this isn't a functional change?

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Maks Orlovich
        • Qingxin Wu
        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: I8451110f6c28d267528fa8ed2ead22dbb485e0a9
          Gerrit-Change-Number: 7705932
          Gerrit-PatchSet: 12
          Gerrit-Owner: Qingxin Wu <qing...@google.com>
          Gerrit-Reviewer: Elias Klim <el...@chromium.org>
          Gerrit-Reviewer: Maks Orlovich <morl...@chromium.org>
          Gerrit-Reviewer: Paul Jensen <paulj...@chromium.org>
          Gerrit-Reviewer: Qingxin Wu <qing...@google.com>
          Gerrit-CC: Andy Paicu <andy...@chromium.org>
          Gerrit-Attention: Maks Orlovich <morl...@chromium.org>
          Gerrit-Attention: Qingxin Wu <qing...@google.com>
          Gerrit-Comment-Date: Tue, 31 Mar 2026 12:20:27 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          Comment-In-Reply-To: Maks Orlovich <morl...@chromium.org>
          Comment-In-Reply-To: Qingxin Wu <qing...@google.com>
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Qingxin Wu (Gerrit)

          unread,
          Mar 31, 2026, 12:00:36 PM (2 days ago) Mar 31
          to Maks Orlovich, Elias Klim, Andy Paicu, Paul Jensen, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, jdonnel...@chromium.org, omnibox-...@chromium.org
          Attention needed from Andy Paicu, Maks Orlovich and Paul Jensen

          Qingxin Wu added 1 comment

          File chrome/browser/ui/views/permissions/chip/permission_chip_interface.h
          Line 62, Patchset 9: virtual void AnimateCollapse(base::TimeDelta duration) = 0;
          Maks Orlovich . unresolved

          Are you sure you need to be passing durations? These go into CSS, so it would be easier if they're just constants in CSS files. Looking around, there seems to be some sort of guard on whether the animations are on or not. I wonder if we should be pushing that bool as yet another CSS var?

          Qingxin Wu

          Great point! I removed the duration parameter from the interface entirely and move the constants (e.g. 350ms) down into the native PermissionChipView implementation.

          Paul Jensen

          So the collapse time is sometimes 250ms and sometimes 75ms, so this change is making it always 250ms. Doesn't seem like a huge change to me but I'm not an owner.

          Qingxin Wu

          @andy...@chromium.org For PermissionChipView's AnimateCollapse() method, it was passed in a 75ms duration from CollapseConfirmation(), and 250ms in other places. Are we fine to change the 75ms duration case to the same 250ms, or we have to keep the values as they are?

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Andy Paicu
          • Maks Orlovich
          • Paul Jensen
          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: I8451110f6c28d267528fa8ed2ead22dbb485e0a9
          Gerrit-Change-Number: 7705932
          Gerrit-PatchSet: 12
          Gerrit-Owner: Qingxin Wu <qing...@google.com>
          Gerrit-Reviewer: Elias Klim <el...@chromium.org>
          Gerrit-Reviewer: Maks Orlovich <morl...@chromium.org>
          Gerrit-Reviewer: Paul Jensen <paulj...@chromium.org>
          Gerrit-Reviewer: Qingxin Wu <qing...@google.com>
          Gerrit-CC: Andy Paicu <andy...@chromium.org>
          Gerrit-Attention: Andy Paicu <andy...@chromium.org>
          Gerrit-Attention: Paul Jensen <paulj...@chromium.org>
          Gerrit-Attention: Maks Orlovich <morl...@chromium.org>
          Gerrit-Comment-Date: Tue, 31 Mar 2026 16:00:32 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          Comment-In-Reply-To: Paul Jensen <paulj...@chromium.org>
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Maks Orlovich (Gerrit)

          unread,
          Mar 31, 2026, 2:26:10 PM (2 days ago) Mar 31
          to Qingxin Wu, Elias Klim, Andy Paicu, Paul Jensen, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, jdonnel...@chromium.org, omnibox-...@chromium.org
          Attention needed from Andy Paicu, Paul Jensen and Qingxin Wu

          Maks Orlovich added 2 comments

          File chrome/browser/ui/views/location_bar/location_bar_view.cc
          Line 1246, Patchset 12 (Latest):LocationBarView::GetChipAnchor() {
          Maks Orlovich . unresolved

          Might be a good time to put the same impl in WebUILocationBar?

          File chrome/browser/ui/views/permissions/chip/permission_chip_interface.h
          Line 29, Patchset 12 (Latest): // after being closed via losing focus.
          Maks Orlovich . unresolved

          ...Is this comment actually accurate?

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Andy Paicu
          • Paul Jensen
          • Qingxin Wu
          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: I8451110f6c28d267528fa8ed2ead22dbb485e0a9
          Gerrit-Change-Number: 7705932
          Gerrit-PatchSet: 12
          Gerrit-Owner: Qingxin Wu <qing...@google.com>
          Gerrit-Reviewer: Elias Klim <el...@chromium.org>
          Gerrit-Reviewer: Maks Orlovich <morl...@chromium.org>
          Gerrit-Reviewer: Paul Jensen <paulj...@chromium.org>
          Gerrit-Reviewer: Qingxin Wu <qing...@google.com>
          Gerrit-CC: Andy Paicu <andy...@chromium.org>
          Gerrit-Attention: Andy Paicu <andy...@chromium.org>
          Gerrit-Attention: Paul Jensen <paulj...@chromium.org>
          Gerrit-Attention: Qingxin Wu <qing...@google.com>
          Gerrit-Comment-Date: Tue, 31 Mar 2026 18:26:02 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Qingxin Wu (Gerrit)

          unread,
          Mar 31, 2026, 3:31:14 PM (2 days ago) Mar 31
          to Maks Orlovich, Elias Klim, Andy Paicu, Paul Jensen, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, jdonnel...@chromium.org, omnibox-...@chromium.org
          Attention needed from Andy Paicu, Paul Jensen and Qingxin Wu

          Qingxin Wu added 1 comment

          File chrome/browser/ui/views/permissions/chip/permission_dashboard_controller.cc
          Line 388, Patchset 12 (Latest): permission_dashboard_view_->UpdateDividerViewVisibility();
          Paul Jensen . unresolved

          This looks roughly correct, but have you looked through it carefully to make sure this isn't a functional change?

          Qingxin Wu

          Patch 12 changed to not let the controller directly micromanage the divider's visibility (which also needed a UpdateForDividerVisibility in chip interface that we don't want), but instead let permission_dashboard_view handle it (which will be a dashboard interface in the next CL).

          We set indicatorchip visible to false two lines above. So, the dashboard update method becomes:
          ```
          const int arc_width = ...;
          secondary_chip_->UpdateForDividerVisibility(is_visible, arc_width);
          chip_divider_view_->SetVisible(is_visible);
          ```
          (1) In the original code `...GetRequestChip()->UpdateForDividerVisibility(false)`, the controller didn't pass the arc_width parameter, to use the default value 0. Although the arc_width will be ignored in UpdateForDividerVisibility in our case so it's effectively 0, but it does look better to directly pass 0. Updated this.
          (2) The original code called `permission_dashboard_view_->GetDividerView()->SetVisible(false)`, now we call `chip_divider_view_->SetVisible(is_visible)` in UpdateDividerViewVisibility.
          Gerrit-Comment-Date: Tue, 31 Mar 2026 19:31:08 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          Comment-In-Reply-To: Paul Jensen <paulj...@chromium.org>
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Qingxin Wu (Gerrit)

          unread,
          Mar 31, 2026, 3:34:53 PM (2 days ago) Mar 31
          to Maks Orlovich, Elias Klim, Andy Paicu, Paul Jensen, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, jdonnel...@chromium.org, omnibox-...@chromium.org
          Attention needed from Andy Paicu and Paul Jensen

          Qingxin Wu added 1 comment

          File chrome/browser/ui/views/permissions/chip/permission_dashboard_controller.cc
          Line 388, Patchset 12 (Latest): permission_dashboard_view_->UpdateDividerViewVisibility();
          Paul Jensen . unresolved

          This looks roughly correct, but have you looked through it carefully to make sure this isn't a functional change?

          Qingxin Wu

          Patch 12 changed to not let the controller directly micromanage the divider's visibility (which also needed a UpdateForDividerVisibility in chip interface that we don't want), but instead let permission_dashboard_view handle it (which will be a dashboard interface in the next CL).

          We set indicatorchip visible to false two lines above. So, the dashboard update method becomes:
          ```
          const int arc_width = ...;
          secondary_chip_->UpdateForDividerVisibility(is_visible, arc_width);
          chip_divider_view_->SetVisible(is_visible);
          ```
          (1) In the original code `...GetRequestChip()->UpdateForDividerVisibility(false)`, the controller didn't pass the arc_width parameter, to use the default value 0. Although the arc_width will be ignored in UpdateForDividerVisibility in our case so it's effectively 0, but it does look better to directly pass 0. Updated this.
          (2) The original code called `permission_dashboard_view_->GetDividerView()->SetVisible(false)`, now we call `chip_divider_view_->SetVisible(is_visible)` in UpdateDividerViewVisibility.
          Qingxin Wu

          (3) One difference is the original code only calls `GetRequestChip()->UpdateForDividerVisibility` when request chip is visible, but now we're calling it unconditionally same as what ChipController::HideChip does (another calller of UpdateDividerViewVisibility()). It causes we call secondary_chip_->UpdateForDividerVisibility when chip is not visible. My understanding is it does not change anything visible. @andy...@chromium.org Do you know if there was any reason of the original code, and do you see problem in the change here?

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Andy Paicu
          • Paul Jensen
          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: I8451110f6c28d267528fa8ed2ead22dbb485e0a9
          Gerrit-Change-Number: 7705932
          Gerrit-PatchSet: 12
          Gerrit-Owner: Qingxin Wu <qing...@google.com>
          Gerrit-Reviewer: Elias Klim <el...@chromium.org>
          Gerrit-Reviewer: Maks Orlovich <morl...@chromium.org>
          Gerrit-Reviewer: Paul Jensen <paulj...@chromium.org>
          Gerrit-Reviewer: Qingxin Wu <qing...@google.com>
          Gerrit-CC: Andy Paicu <andy...@chromium.org>
          Gerrit-Attention: Andy Paicu <andy...@chromium.org>
          Gerrit-Attention: Paul Jensen <paulj...@chromium.org>
          Gerrit-Comment-Date: Tue, 31 Mar 2026 19:34:47 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          Comment-In-Reply-To: Paul Jensen <paulj...@chromium.org>
          Comment-In-Reply-To: Qingxin Wu <qing...@google.com>
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Qingxin Wu (Gerrit)

          unread,
          Mar 31, 2026, 5:35:14 PM (2 days ago) Mar 31
          to Maks Orlovich, Elias Klim, Andy Paicu, Paul Jensen, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, jdonnel...@chromium.org, omnibox-...@chromium.org
          Attention needed from Andy Paicu, Maks Orlovich and Paul Jensen

          Qingxin Wu added 2 comments

          File chrome/browser/ui/views/location_bar/location_bar_view.cc
          Line 1246, Patchset 12:LocationBarView::GetChipAnchor() {
          Maks Orlovich . resolved

          Might be a good time to put the same impl in WebUILocationBar?

          Qingxin Wu

          thanks for the reminder. Done.

          File chrome/browser/ui/views/permissions/chip/permission_chip_interface.h
          Line 29, Patchset 12: // after being closed via losing focus.
          Maks Orlovich . unresolved

          ...Is this comment actually accurate?

          Attention is currently required from:
          • Andy Paicu
          • Maks Orlovich
          • Paul Jensen
          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: I8451110f6c28d267528fa8ed2ead22dbb485e0a9
          Gerrit-Change-Number: 7705932
          Gerrit-PatchSet: 14
          Gerrit-Owner: Qingxin Wu <qing...@google.com>
          Gerrit-Reviewer: Elias Klim <el...@chromium.org>
          Gerrit-Reviewer: Maks Orlovich <morl...@chromium.org>
          Gerrit-Reviewer: Paul Jensen <paulj...@chromium.org>
          Gerrit-Reviewer: Qingxin Wu <qing...@google.com>
          Gerrit-CC: Andy Paicu <andy...@chromium.org>
          Gerrit-Attention: Andy Paicu <andy...@chromium.org>
          Gerrit-Attention: Paul Jensen <paulj...@chromium.org>
          Gerrit-Attention: Maks Orlovich <morl...@chromium.org>
          Gerrit-Comment-Date: Tue, 31 Mar 2026 21:35:04 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          Comment-In-Reply-To: Maks Orlovich <morl...@chromium.org>
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Qingxin Wu (Gerrit)

          unread,
          Mar 31, 2026, 5:41:24 PM (2 days ago) Mar 31
          to Maks Orlovich, Elias Klim, Andy Paicu, Paul Jensen, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, jdonnel...@chromium.org, omnibox-...@chromium.org
          Attention needed from Andy Paicu, Maks Orlovich and Paul Jensen

          Qingxin Wu added 1 comment

          File chrome/browser/ui/views/frame/browser_view.cc
          Line 5223, Patchset 14 (Latest): chip_visibility_subscription_ = chip->AddChipVisibilityCallback(
          Qingxin Wu . resolved

          @paulj...@chromium.org I added AddChipVisibilityCallback to the chip interface, instead of GetAsView() previously which would fail for webui. PTAL.

          Gerrit-Comment-Date: Tue, 31 Mar 2026 21:41:18 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Qingxin Wu (Gerrit)

          unread,
          Mar 31, 2026, 5:45:21 PM (2 days ago) Mar 31
          to Tom Lukaszewicz, Maks Orlovich, Elias Klim, Andy Paicu, Paul Jensen, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, jdonnel...@chromium.org, omnibox-...@chromium.org
          Attention needed from Andy Paicu, Maks Orlovich, Paul Jensen and Tom Lukaszewicz

          Qingxin Wu added 1 comment

          Patchset-level comments
          File-level comment, Patchset 14 (Latest):
          Qingxin Wu . resolved

          @tl...@chromium.org Mind reviewing chrome/browser/ui/views/frame/browser_view.cc and chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view_interactive_uitest.cc? Thanks

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Andy Paicu
          • Maks Orlovich
          • Paul Jensen
          • Tom Lukaszewicz
          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: I8451110f6c28d267528fa8ed2ead22dbb485e0a9
          Gerrit-Change-Number: 7705932
          Gerrit-PatchSet: 14
          Gerrit-Owner: Qingxin Wu <qing...@google.com>
          Gerrit-Reviewer: Elias Klim <el...@chromium.org>
          Gerrit-Reviewer: Maks Orlovich <morl...@chromium.org>
          Gerrit-Reviewer: Paul Jensen <paulj...@chromium.org>
          Gerrit-Reviewer: Qingxin Wu <qing...@google.com>
          Gerrit-Reviewer: Tom Lukaszewicz <tl...@chromium.org>
          Gerrit-CC: Andy Paicu <andy...@chromium.org>
          Gerrit-Attention: Andy Paicu <andy...@chromium.org>
          Gerrit-Attention: Paul Jensen <paulj...@chromium.org>
          Gerrit-Attention: Maks Orlovich <morl...@chromium.org>
          Gerrit-Attention: Tom Lukaszewicz <tl...@chromium.org>
          Gerrit-Comment-Date: Tue, 31 Mar 2026 21:45:16 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Qingxin Wu (Gerrit)

          unread,
          Mar 31, 2026, 5:47:25 PM (2 days ago) Mar 31
          to Tom Lukaszewicz, Maks Orlovich, Elias Klim, Andy Paicu, Paul Jensen, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, jdonnel...@chromium.org, omnibox-...@chromium.org
          Attention needed from Andy Paicu, Maks Orlovich, Paul Jensen and Tom Lukaszewicz

          Qingxin Wu added 1 comment

          Patchset-level comments
          Qingxin Wu . resolved

          @tl...@chromium.org Mind reviewing chrome/browser/ui/views/frame/browser_view.cc and chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view_interactive_uitest.cc? Thanks

          Qingxin Wu

          oh you're the owner of more files. Mind reviewing the first 5 files (the ones that's not in ui/views/permissions)? Feel free to review other files if you'd like to. Thanks

          Gerrit-Comment-Date: Tue, 31 Mar 2026 21:47:19 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          Comment-In-Reply-To: Qingxin Wu <qing...@google.com>
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Tom Lukaszewicz (Gerrit)

          unread,
          Apr 1, 2026, 3:04:41 AM (yesterday) Apr 1
          to Qingxin Wu, Maks Orlovich, Elias Klim, Andy Paicu, Paul Jensen, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, jdonnel...@chromium.org, omnibox-...@chromium.org
          Attention needed from Andy Paicu, Maks Orlovich, Paul Jensen and Qingxin Wu

          Tom Lukaszewicz added 2 comments

          Patchset-level comments
          Qingxin Wu . resolved

          @tl...@chromium.org Mind reviewing chrome/browser/ui/views/frame/browser_view.cc and chrome/browser/ui/views/frame/picture_in_picture_browser_frame_view_interactive_uitest.cc? Thanks

          Qingxin Wu

          oh you're the owner of more files. Mind reviewing the first 5 files (the ones that's not in ui/views/permissions)? Feel free to review other files if you'd like to. Thanks

          Tom Lukaszewicz

          First 5 files look reasonable to me! I'll circle back once permissions owners have left their +1s.

          File chrome/browser/ui/views/location_bar/webui_location_bar.cc
          Line 126, Patchset 15 (Latest): if (auto* chip = chip_controller->chip()) {
          if (chip->GetVisible()) {
          Tom Lukaszewicz . unresolved
          nit: Avoid a layer of nesting
          ```
          if (auto* chip = chip_controller->chip(); chip->GetVisible()) {
          ```
          Open in Gerrit

          Related details

          Attention is currently required from:
          • Andy Paicu
          • Maks Orlovich
          • Paul Jensen
          • Qingxin Wu
          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: I8451110f6c28d267528fa8ed2ead22dbb485e0a9
          Gerrit-Change-Number: 7705932
          Gerrit-PatchSet: 15
          Gerrit-Owner: Qingxin Wu <qing...@google.com>
          Gerrit-Reviewer: Elias Klim <el...@chromium.org>
          Gerrit-Reviewer: Maks Orlovich <morl...@chromium.org>
          Gerrit-Reviewer: Paul Jensen <paulj...@chromium.org>
          Gerrit-Reviewer: Qingxin Wu <qing...@google.com>
          Gerrit-Reviewer: Tom Lukaszewicz <tl...@chromium.org>
          Gerrit-CC: Andy Paicu <andy...@chromium.org>
          Gerrit-Attention: Andy Paicu <andy...@chromium.org>
          Gerrit-Attention: Paul Jensen <paulj...@chromium.org>
          Gerrit-Attention: Maks Orlovich <morl...@chromium.org>
          Gerrit-Attention: Qingxin Wu <qing...@google.com>
          Gerrit-Comment-Date: Wed, 01 Apr 2026 07:04:16 +0000
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Andy Paicu (Gerrit)

          unread,
          4:32 AM (11 hours ago) 4:32 AM
          to Qingxin Wu, Tom Lukaszewicz, Maks Orlovich, Elias Klim, Paul Jensen, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, jdonnel...@chromium.org, omnibox-...@chromium.org
          Attention needed from Maks Orlovich, Paul Jensen and Qingxin Wu

          Andy Paicu added 1 comment

          File chrome/browser/ui/views/permissions/chip/permission_chip_interface.h
          Line 62, Patchset 9: virtual void AnimateCollapse(base::TimeDelta duration) = 0;
          Maks Orlovich . unresolved

          Are you sure you need to be passing durations? These go into CSS, so it would be easier if they're just constants in CSS files. Looking around, there seems to be some sort of guard on whether the animations are on or not. I wonder if we should be pushing that bool as yet another CSS var?

          Qingxin Wu

          Great point! I removed the duration parameter from the interface entirely and move the constants (e.g. 350ms) down into the native PermissionChipView implementation.

          Paul Jensen

          So the collapse time is sometimes 250ms and sometimes 75ms, so this change is making it always 250ms. Doesn't seem like a huge change to me but I'm not an owner.

          Qingxin Wu

          @andy...@chromium.org For PermissionChipView's AnimateCollapse() method, it was passed in a 75ms duration from CollapseConfirmation(), and 250ms in other places. Are we fine to change the 75ms duration case to the same 250ms, or we have to keep the values as they are?

          Andy Paicu

          Unfortunately the people that would best know are either OOO or have left the team, but it seems to me that the different animation speeds are for different chips:
          1) The 75ms is for the confirmation chip which is a usage indicator
          2) The 250ms is for the permission prompt chip which shows together with permission prompts (or sometimes alone).

          Since the use cases are different I would like to keep the animation speeds the same as before. Is there any particular reason why you would want to change it? I haven't really gone through the CL yet.

          Open in Gerrit

          Related details

          Attention is currently required from:
          Gerrit-Attention: Paul Jensen <paulj...@chromium.org>
          Gerrit-Attention: Maks Orlovich <morl...@chromium.org>
          Gerrit-Attention: Qingxin Wu <qing...@google.com>
          Gerrit-Comment-Date: Thu, 02 Apr 2026 08:32:18 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Maks Orlovich (Gerrit)

          unread,
          7:08 AM (8 hours ago) 7:08 AM
          to Qingxin Wu, Tom Lukaszewicz, Elias Klim, Andy Paicu, Paul Jensen, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, jdonnel...@chromium.org, omnibox-...@chromium.org
          Attention needed from Paul Jensen and Qingxin Wu

          Maks Orlovich added 1 comment

          File chrome/browser/ui/views/permissions/chip/permission_chip_interface.h
          Line 62, Patchset 9: virtual void AnimateCollapse(base::TimeDelta duration) = 0;
          Maks Orlovich . unresolved

          Are you sure you need to be passing durations? These go into CSS, so it would be easier if they're just constants in CSS files. Looking around, there seems to be some sort of guard on whether the animations are on or not. I wonder if we should be pushing that bool as yet another CSS var?

          Qingxin Wu

          Great point! I removed the duration parameter from the interface entirely and move the constants (e.g. 350ms) down into the native PermissionChipView implementation.

          Paul Jensen

          So the collapse time is sometimes 250ms and sometimes 75ms, so this change is making it always 250ms. Doesn't seem like a huge change to me but I'm not an owner.

          Qingxin Wu

          @andy...@chromium.org For PermissionChipView's AnimateCollapse() method, it was passed in a 75ms duration from CollapseConfirmation(), and 250ms in other places. Are we fine to change the 75ms duration case to the same 250ms, or we have to keep the values as they are?

          Andy Paicu

          Unfortunately the people that would best know are either OOO or have left the team, but it seems to me that the different animation speeds are for different chips:
          1) The 75ms is for the confirmation chip which is a usage indicator
          2) The 250ms is for the permission prompt chip which shows together with permission prompts (or sometimes alone).

          Since the use cases are different I would like to keep the animation speeds the same as before. Is there any particular reason why you would want to change it? I haven't really gone through the CL yet.

          Maks Orlovich

          Oh, that means that PermissionChip view can just save Role in constructor, and AnimateCollapse can check it to get the right behavior?

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Paul Jensen
          • Qingxin Wu
          Gerrit-Attention: Qingxin Wu <qing...@google.com>
          Gerrit-Comment-Date: Thu, 02 Apr 2026 11:08:35 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          Comment-In-Reply-To: Andy Paicu <andy...@chromium.org>
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy
          Reply all
          Reply to author
          Forward
          0 new messages