[Payments] Build payment app loading view UI [2/N] [chromium/src : main]

0 views
Skip to first unread message

Stephen McGruer (Gerrit)

unread,
Jul 15, 2026, 5:43:50 PM (7 days ago) Jul 15
to Xuehui Chen, Stephen McGruer, Chromium LUCI CQ, chromium...@chromium.org, blink-work...@chromium.org, kinuko...@chromium.org, sloboda...@chromium.org
Attention needed from Xuehui Chen

Stephen McGruer added 11 comments

File chrome/browser/ui/views/payments/BUILD.gn
Line 156, Patchset 5 (Latest): "payment_app_loading_view_interactive_uitest.cc",
Stephen McGruer . unresolved

I think this should be part of a interactive_ui_tests test target, not a browser_tests one, right?

File chrome/browser/ui/views/payments/payment_app_loading_view.h
Line 47, Patchset 5 (Latest): void AddedToWidget() override;
Stephen McGruer . unresolved

Could we just override OnThemeChanged instead? https://source.chromium.org/chromium/chromium/src/+/main:ui/views/view.h;l=2038;drc=54dd37fb9545f90b93fed90434ebf30cadacf65e

It is apparently called when the widget is attached (worth testing to confirm), and should also be called if the dark/light mode changes.

Line 13, Patchset 5 (Latest):#include "third_party/skia/include/core/SkColor.h"
Stephen McGruer . unresolved

Doesn't seem to be referenced, unused include?

Line 11, Patchset 5 (Latest):#include "base/timer/timer.h"
Stephen McGruer . unresolved

You don't seem to set any timers, unused include?

Line 8, Patchset 5 (Latest):#include <optional>
Stephen McGruer . unresolved

You don't seem to use optional in the header, unused include?

File chrome/browser/ui/views/payments/payment_app_loading_view.cc
Line 10, Patchset 5 (Latest):#include "base/strings/utf_string_conversions.h"
Stephen McGruer . unresolved

Is this used? I don't see an obvious usage, maybe unused include?

Line 11, Patchset 5 (Latest):#include "chrome/browser/ui/views/payments/payment_request_views_util.h"
Stephen McGruer . unresolved

Is this used? I don't see an obvious usage, maybe unused include?

Line 18, Patchset 5 (Latest):#include "ui/color/color_provider.h"
Stephen McGruer . unresolved

Is this used? Seems unused.

Line 99, Patchset 5 (Latest):void PaymentAppLoadingView::AddedToWidget() {
Stephen McGruer . unresolved

Nit; call your parent class' AddedToWidget() first.

File chrome/browser/ui/views/payments/payment_app_loading_view_interactive_uitest.cc
Line 76, Patchset 5 (Latest): widget_ = nullptr;
Stephen McGruer . unresolved

According to jetski, you need to either Close() the widget here, or call SetOwnershipOfNewWidget on the delegate when you create it with CLIENT_OWNS_WIDGET. Otherwise (apparently) the modal dialog will be left open at the end of the test which isn't very clean.

(Note; purely AI, I don't have the knowledge to know if its right!)

File chrome/browser/ui/views/payments/payment_request_dialog_view.cc
Line 217, Patchset 5 (Latest): loading_view_overlay_ = AddChildView(std::make_unique<PaymentAppLoadingView>(
Stephen McGruer . unresolved

I missed this before, but do you need to focus on the newly added view? Otherwise isn't focus still on whatever is underneath it?

Open in Gerrit

Related details

Attention is currently required from:
  • Xuehui Chen
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: I9a8f1e2757d3fdee71aa4cca9e332964b309a72a
Gerrit-Change-Number: 8100402
Gerrit-PatchSet: 5
Gerrit-Owner: Xuehui Chen <xuehu...@google.com>
Gerrit-Reviewer: Stephen McGruer <smcg...@chromium.org>
Gerrit-Reviewer: Xuehui Chen <xuehu...@google.com>
Gerrit-Attention: Xuehui Chen <xuehu...@google.com>
Gerrit-Comment-Date: Wed, 15 Jul 2026 21:43:43 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Xuehui Chen (Gerrit)

unread,
Jul 16, 2026, 11:48:14 AM (6 days ago) Jul 16
to Stephen McGruer, Chromium LUCI CQ, chromium...@chromium.org, blink-work...@chromium.org, kinuko...@chromium.org, sloboda...@chromium.org
Attention needed from Stephen McGruer

Xuehui Chen added 11 comments

File chrome/browser/ui/views/payments/BUILD.gn
Line 156, Patchset 5: "payment_app_loading_view_interactive_uitest.cc",
Stephen McGruer . unresolved

I think this should be part of a interactive_ui_tests test target, not a browser_tests one, right?

Xuehui Chen

Added a new source set for interactive_ui_tests, let me know your thoughts.

File chrome/browser/ui/views/payments/payment_app_loading_view.h
Line 47, Patchset 5: void AddedToWidget() override;
Stephen McGruer . resolved

Could we just override OnThemeChanged instead? https://source.chromium.org/chromium/chromium/src/+/main:ui/views/view.h;l=2038;drc=54dd37fb9545f90b93fed90434ebf30cadacf65e

It is apparently called when the widget is attached (worth testing to confirm), and should also be called if the dark/light mode changes.

Xuehui Chen

Yea, that worked, However, payment handler dialog itself doesn't work with theme change for now, b/535575392 for tracking the fix.

Line 13, Patchset 5:#include "third_party/skia/include/core/SkColor.h"
Stephen McGruer . resolved

Doesn't seem to be referenced, unused include?

Xuehui Chen

Done

Line 11, Patchset 5:#include "base/timer/timer.h"
Stephen McGruer . resolved

You don't seem to set any timers, unused include?

Xuehui Chen

Done

Line 8, Patchset 5:#include <optional>
Stephen McGruer . resolved

You don't seem to use optional in the header, unused include?

Xuehui Chen

Done

File chrome/browser/ui/views/payments/payment_app_loading_view.cc
Line 10, Patchset 5:#include "base/strings/utf_string_conversions.h"
Stephen McGruer . resolved

Is this used? I don't see an obvious usage, maybe unused include?

Xuehui Chen

Done

Line 11, Patchset 5:#include "chrome/browser/ui/views/payments/payment_request_views_util.h"
Stephen McGruer . resolved

Is this used? I don't see an obvious usage, maybe unused include?

Xuehui Chen

Done

Line 18, Patchset 5:#include "ui/color/color_provider.h"
Stephen McGruer . resolved

Is this used? Seems unused.

Xuehui Chen

Done

Line 99, Patchset 5:void PaymentAppLoadingView::AddedToWidget() {
Stephen McGruer . resolved

Nit; call your parent class' AddedToWidget() first.

Xuehui Chen

Switched to OnThemeChanged.

File chrome/browser/ui/views/payments/payment_app_loading_view_interactive_uitest.cc
Line 76, Patchset 5: widget_ = nullptr;
Stephen McGruer . resolved

According to jetski, you need to either Close() the widget here, or call SetOwnershipOfNewWidget on the delegate when you create it with CLIENT_OWNS_WIDGET. Otherwise (apparently) the modal dialog will be left open at the end of the test which isn't very clean.

(Note; purely AI, I don't have the knowledge to know if its right!)

Xuehui Chen

I've updated the test to use CLIENT_OWNS_WIDGET and cleaned up TearDownOnMainThread(). Also cleaned up unused pointer.

Here is my understanding:
Previous approach is a workaround to just release widget pointer in TearDownOnMainThread, but the widget itself is still unmanaged(not deleted).

Now after set ownership to CLIENT_OWNS_WIDGET, widget pointer takes full ownership of the widget, calling pointer reset can clean and destroy the modal dialog.

File chrome/browser/ui/views/payments/payment_request_dialog_view.cc
Line 217, Patchset 5: loading_view_overlay_ = AddChildView(std::make_unique<PaymentAppLoadingView>(
Stephen McGruer . resolved

I missed this before, but do you need to focus on the newly added view? Otherwise isn't focus still on whatever is underneath it?

Xuehui Chen

Yea, that's on my radar, so focus is needed and the hidden of view_stack as well to make sure the focus and keyboard navigation work properly. This will be in the following cls. I have added the note in the description.

Open in Gerrit

Related details

Attention is currently required from:
  • Stephen McGruer
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: I9a8f1e2757d3fdee71aa4cca9e332964b309a72a
Gerrit-Change-Number: 8100402
Gerrit-PatchSet: 6
Gerrit-Owner: Xuehui Chen <xuehu...@google.com>
Gerrit-Reviewer: Stephen McGruer <smcg...@chromium.org>
Gerrit-Reviewer: Xuehui Chen <xuehu...@google.com>
Gerrit-Attention: Stephen McGruer <smcg...@chromium.org>
Gerrit-Comment-Date: Thu, 16 Jul 2026 15:47:57 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Stephen McGruer <smcg...@chromium.org>
satisfied_requirement
unsatisfied_requirement
open
diffy

Stephen McGruer (Gerrit)

unread,
Jul 16, 2026, 3:30:15 PM (6 days ago) Jul 16
to Xuehui Chen, Stephen McGruer, Chromium LUCI CQ, chromium...@chromium.org, blink-work...@chromium.org, kinuko...@chromium.org, sloboda...@chromium.org
Attention needed from Xuehui Chen

Stephen McGruer voted and added 1 comment

Votes added by Stephen McGruer

Code-Review+1

1 comment

File chrome/browser/ui/views/payments/BUILD.gn
Line 156, Patchset 5: "payment_app_loading_view_interactive_uitest.cc",
Stephen McGruer . resolved

I think this should be part of a interactive_ui_tests test target, not a browser_tests one, right?

Xuehui Chen

Added a new source set for interactive_ui_tests, let me know your thoughts.

Stephen McGruer

LGTM!

Open in Gerrit

Related details

Attention is currently required from:
  • Xuehui Chen
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement satisfiedCode-Owners
  • requirement satisfiedCode-Review
  • 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: I9a8f1e2757d3fdee71aa4cca9e332964b309a72a
Gerrit-Change-Number: 8100402
Gerrit-PatchSet: 6
Gerrit-Owner: Xuehui Chen <xuehu...@google.com>
Gerrit-Reviewer: Stephen McGruer <smcg...@chromium.org>
Gerrit-Reviewer: Xuehui Chen <xuehu...@google.com>
Gerrit-Attention: Xuehui Chen <xuehu...@google.com>
Gerrit-Comment-Date: Thu, 16 Jul 2026 19:30:00 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
Comment-In-Reply-To: Stephen McGruer <smcg...@chromium.org>
Comment-In-Reply-To: Xuehui Chen <xuehu...@google.com>
satisfied_requirement
open
diffy

Darwin Yang (Gerrit)

unread,
Jul 17, 2026, 3:18:02 PM (5 days ago) Jul 17
to Xuehui Chen, Stephen McGruer, Chromium LUCI CQ, chromium...@chromium.org, blink-work...@chromium.org, kinuko...@chromium.org, sloboda...@chromium.org
Attention needed from Xuehui Chen

Darwin Yang voted and added 1 comment

Votes added by Darwin Yang

Code-Review+1

1 comment

File chrome/browser/ui/views/payments/payment_app_loading_view.cc
Line 26, Patchset 7 (Latest):constexpr int kLoadingMessageVerticalInset = 120;
constexpr int kLoadingMessageHorizontalInset = 24;
Open in Gerrit

Related details

Attention is currently required from:
  • Xuehui Chen
Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement 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: I9a8f1e2757d3fdee71aa4cca9e332964b309a72a
    Gerrit-Change-Number: 8100402
    Gerrit-PatchSet: 7
    Gerrit-Owner: Xuehui Chen <xuehu...@google.com>
    Gerrit-Reviewer: Darwin Yang <darwi...@chromium.org>
    Gerrit-Reviewer: Stephen McGruer <smcg...@chromium.org>
    Gerrit-Reviewer: Xuehui Chen <xuehu...@google.com>
    Gerrit-Attention: Xuehui Chen <xuehu...@google.com>
    Gerrit-Comment-Date: Fri, 17 Jul 2026 19:17:52 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Xuehui Chen (Gerrit)

    unread,
    Jul 17, 2026, 4:40:57 PM (5 days ago) Jul 17
    to Darwin Yang, Stephen McGruer, Chromium LUCI CQ, chromium...@chromium.org, blink-work...@chromium.org, kinuko...@chromium.org, sloboda...@chromium.org
    Attention needed from Darwin Yang and Stephen McGruer

    Xuehui Chen added 1 comment

    File chrome/browser/ui/views/payments/payment_app_loading_view.cc
    Line 26, Patchset 7:constexpr int kLoadingMessageVerticalInset = 120;

    constexpr int kLoadingMessageHorizontalInset = 24;
    Darwin Yang . resolved
    Xuehui Chen

    Done. Also move the inset to sizes.h

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Darwin Yang
    • Stephen McGruer
    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: I9a8f1e2757d3fdee71aa4cca9e332964b309a72a
    Gerrit-Change-Number: 8100402
    Gerrit-PatchSet: 8
    Gerrit-Owner: Xuehui Chen <xuehu...@google.com>
    Gerrit-Reviewer: Darwin Yang <darwi...@chromium.org>
    Gerrit-Reviewer: Stephen McGruer <smcg...@chromium.org>
    Gerrit-Reviewer: Xuehui Chen <xuehu...@google.com>
    Gerrit-Attention: Stephen McGruer <smcg...@chromium.org>
    Gerrit-Attention: Darwin Yang <darwi...@chromium.org>
    Gerrit-Comment-Date: Fri, 17 Jul 2026 20:40:49 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Darwin Yang <darwi...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Darwin Yang (Gerrit)

    unread,
    Jul 17, 2026, 4:43:53 PM (5 days ago) Jul 17
    to Xuehui Chen, Stephen McGruer, Chromium LUCI CQ, chromium...@chromium.org, blink-work...@chromium.org, kinuko...@chromium.org, sloboda...@chromium.org
    Attention needed from Stephen McGruer and Xuehui Chen

    Darwin Yang voted Code-Review+1

    Code-Review+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Stephen McGruer
    • Xuehui Chen
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement satisfiedCode-Owners
    • requirement satisfiedCode-Review
    • 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: I9a8f1e2757d3fdee71aa4cca9e332964b309a72a
    Gerrit-Change-Number: 8100402
    Gerrit-PatchSet: 8
    Gerrit-Owner: Xuehui Chen <xuehu...@google.com>
    Gerrit-Reviewer: Darwin Yang <darwi...@chromium.org>
    Gerrit-Reviewer: Stephen McGruer <smcg...@chromium.org>
    Gerrit-Reviewer: Xuehui Chen <xuehu...@google.com>
    Gerrit-Attention: Stephen McGruer <smcg...@chromium.org>
    Gerrit-Attention: Xuehui Chen <xuehu...@google.com>
    Gerrit-Comment-Date: Fri, 17 Jul 2026 20:43:46 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    open
    diffy

    Stephen McGruer (Gerrit)

    unread,
    Jul 20, 2026, 12:25:53 PM (2 days ago) Jul 20
    to Xuehui Chen, Stephen McGruer, Chromium LUCI CQ, chromium...@chromium.org, blink-work...@chromium.org, kinuko...@chromium.org, sloboda...@chromium.org
    Attention needed from Xuehui Chen

    Stephen McGruer voted Code-Review+1

    Code-Review+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • Xuehui Chen
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement satisfiedCode-Owners
    • requirement satisfiedCode-Review
    • 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: I9a8f1e2757d3fdee71aa4cca9e332964b309a72a
    Gerrit-Change-Number: 8100402
    Gerrit-PatchSet: 9
    Gerrit-Owner: Xuehui Chen <xuehu...@google.com>
    Gerrit-Reviewer: Darwin Yang <darwi...@chromium.org>
    Gerrit-Reviewer: Stephen McGruer <smcg...@chromium.org>
    Gerrit-Reviewer: Xuehui Chen <xuehu...@google.com>
    Gerrit-Attention: Xuehui Chen <xuehu...@google.com>
    Gerrit-Comment-Date: Mon, 20 Jul 2026 16:25:40 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    open
    diffy

    Xuehui Chen (Gerrit)

    unread,
    Jul 20, 2026, 12:34:44 PM (2 days ago) Jul 20
    to Stephen McGruer, Chromium LUCI CQ, chromium...@chromium.org, blink-work...@chromium.org, kinuko...@chromium.org, sloboda...@chromium.org

    Xuehui Chen voted Commit-Queue+2

    Commit-Queue+2
    Open in Gerrit

    Related details

    Attention set is empty
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement satisfiedCode-Owners
    • requirement satisfiedCode-Review
    • 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: I9a8f1e2757d3fdee71aa4cca9e332964b309a72a
    Gerrit-Change-Number: 8100402
    Gerrit-PatchSet: 9
    Gerrit-Owner: Xuehui Chen <xuehu...@google.com>
    Gerrit-Reviewer: Darwin Yang <darwi...@chromium.org>
    Gerrit-Reviewer: Stephen McGruer <smcg...@chromium.org>
    Gerrit-Reviewer: Xuehui Chen <xuehu...@google.com>
    Gerrit-Comment-Date: Mon, 20 Jul 2026 16:34:32 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    open
    diffy

    Xuehui Chen (Gerrit)

    unread,
    Jul 21, 2026, 9:43:26 AM (yesterday) Jul 21
    to Stephen McGruer, Chromium LUCI CQ, chromium...@chromium.org, blink-work...@chromium.org, kinuko...@chromium.org, sloboda...@chromium.org
    Attention needed from Stephen McGruer

    Xuehui Chen added 1 comment

    File chrome/browser/ui/views/payments/payment_app_loading_view_interactive_uitest.cc
    Line 76, Patchset 5: widget_ = nullptr;
    Stephen McGruer . unresolved

    According to jetski, you need to either Close() the widget here, or call SetOwnershipOfNewWidget on the delegate when you create it with CLIENT_OWNS_WIDGET. Otherwise (apparently) the modal dialog will be left open at the end of the test which isn't very clean.

    (Note; purely AI, I don't have the knowledge to know if its right!)

    Xuehui Chen

    I've updated the test to use CLIENT_OWNS_WIDGET and cleaned up TearDownOnMainThread(). Also cleaned up unused pointer.

    Here is my understanding:
    Previous approach is a workaround to just release widget pointer in TearDownOnMainThread, but the widget itself is still unmanaged(not deleted).

    Now after set ownership to CLIENT_OWNS_WIDGET, widget pointer takes full ownership of the widget, calling pointer reset can clean and destroy the modal dialog.

    Xuehui Chen

    The asan test captured another leak from dialog delegate. Apparently the widget doesn't own the dialog delegate so it's not freed during test tear down, I have patched a change to own dialog delegate pointer and reset it during tear down, waiting for the try job to finish.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Stephen McGruer
    Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement 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: I9a8f1e2757d3fdee71aa4cca9e332964b309a72a
      Gerrit-Change-Number: 8100402
      Gerrit-PatchSet: 10
      Gerrit-Owner: Xuehui Chen <xuehu...@google.com>
      Gerrit-Reviewer: Darwin Yang <darwi...@chromium.org>
      Gerrit-Reviewer: Stephen McGruer <smcg...@chromium.org>
      Gerrit-Reviewer: Xuehui Chen <xuehu...@google.com>
      Gerrit-Attention: Stephen McGruer <smcg...@chromium.org>
      Gerrit-Comment-Date: Tue, 21 Jul 2026 13:43:10 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Xuehui Chen (Gerrit)

      unread,
      Jul 21, 2026, 10:18:01 AM (yesterday) Jul 21
      to Stephen McGruer, Chromium LUCI CQ, chromium...@chromium.org, blink-work...@chromium.org, kinuko...@chromium.org, sloboda...@chromium.org

      Xuehui Chen added 1 comment

      File chrome/browser/ui/views/payments/payment_app_loading_view_interactive_uitest.cc
      Line 76, Patchset 5: widget_ = nullptr;
      Stephen McGruer . resolved

      According to jetski, you need to either Close() the widget here, or call SetOwnershipOfNewWidget on the delegate when you create it with CLIENT_OWNS_WIDGET. Otherwise (apparently) the modal dialog will be left open at the end of the test which isn't very clean.

      (Note; purely AI, I don't have the knowledge to know if its right!)

      Xuehui Chen

      I've updated the test to use CLIENT_OWNS_WIDGET and cleaned up TearDownOnMainThread(). Also cleaned up unused pointer.

      Here is my understanding:
      Previous approach is a workaround to just release widget pointer in TearDownOnMainThread, but the widget itself is still unmanaged(not deleted).

      Now after set ownership to CLIENT_OWNS_WIDGET, widget pointer takes full ownership of the widget, calling pointer reset can clean and destroy the modal dialog.

      Xuehui Chen

      The asan test captured another leak from dialog delegate. Apparently the widget doesn't own the dialog delegate so it's not freed during test tear down, I have patched a change to own dialog delegate pointer and reset it during tear down, waiting for the try job to finish.

      Xuehui Chen

      test passed.

      Open in Gerrit

      Related details

      Attention set is empty
      Submit Requirements:
        • requirement satisfiedCode-Coverage
        • requirement satisfiedCode-Owners
        • requirement satisfiedCode-Review
        • 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: I9a8f1e2757d3fdee71aa4cca9e332964b309a72a
        Gerrit-Change-Number: 8100402
        Gerrit-PatchSet: 10
        Gerrit-Owner: Xuehui Chen <xuehu...@google.com>
        Gerrit-Reviewer: Darwin Yang <darwi...@chromium.org>
        Gerrit-Reviewer: Stephen McGruer <smcg...@chromium.org>
        Gerrit-Reviewer: Xuehui Chen <xuehu...@google.com>
        Gerrit-Comment-Date: Tue, 21 Jul 2026 14:17:50 +0000
        satisfied_requirement
        open
        diffy

        Xuehui Chen (Gerrit)

        unread,
        7:02 PM (2 hours ago) 7:02 PM
        to Stephen McGruer, Chromium LUCI CQ, chromium...@chromium.org, blink-work...@chromium.org, kinuko...@chromium.org, sloboda...@chromium.org

        Xuehui Chen voted Commit-Queue+2

        Commit-Queue+2
        Open in Gerrit

        Related details

        Attention set is empty
        Submit Requirements:
        • requirement satisfiedCode-Coverage
        • requirement satisfiedCode-Owners
        • requirement satisfiedCode-Review
        • 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: I9a8f1e2757d3fdee71aa4cca9e332964b309a72a
        Gerrit-Change-Number: 8100402
        Gerrit-PatchSet: 10
        Gerrit-Owner: Xuehui Chen <xuehu...@google.com>
        Gerrit-Reviewer: Darwin Yang <darwi...@chromium.org>
        Gerrit-Reviewer: Stephen McGruer <smcg...@chromium.org>
        Gerrit-Reviewer: Xuehui Chen <xuehu...@google.com>
        Gerrit-Comment-Date: Wed, 22 Jul 2026 23:02:38 +0000
        Gerrit-HasComments: No
        Gerrit-Has-Labels: Yes
        satisfied_requirement
        open
        diffy

        Chromium LUCI CQ (Gerrit)

        unread,
        7:16 PM (2 hours ago) 7:16 PM
        to Xuehui Chen, Stephen McGruer, Darwin Yang, chromium...@chromium.org, blink-work...@chromium.org, kinuko...@chromium.org, sloboda...@chromium.org

        Chromium LUCI CQ submitted the change with unreviewed changes

        Unreviewed changes

        9 is the latest approved patch-set.
        The change was submitted with unreviewed changes in the following files:

        ```
        The name of the file: chrome/browser/ui/views/payments/payment_app_loading_view_interactive_uitest.cc
        Insertions: 8, Deletions: 6.

        @@ -42,23 +42,23 @@
        views::DialogClientView::kTopViewId) {
        return Steps(
        Do([this]() {
        - auto delegate = std::make_unique<views::DialogDelegate>();
        - delegate->SetOwnershipOfNewWidget(
        + delegate_ = std::make_unique<views::DialogDelegate>();
        + delegate_->SetOwnershipOfNewWidget(
        views::Widget::InitParams::CLIENT_OWNS_WIDGET);
        - delegate->SetModalType(ui::mojom::ModalType::kChild);
        - delegate->SetButtons(
        + delegate_->SetModalType(ui::mojom::ModalType::kChild);
        + delegate_->SetButtons(
        static_cast<int>(ui::mojom::DialogButton::kNone));
        auto loading_view = std::make_unique<PaymentAppLoadingView>(
        &icon_, GURL("https://app.com"), GURL("https://merchant.com"),
        close_callback_.Get());
        - loading_view_ = delegate->SetContentsView(std::move(loading_view));
        + loading_view_ = delegate_->SetContentsView(std::move(loading_view));

        tabs::TabInterface* tab_interface =
        tabs::TabInterface::GetFromContents(web_contents());
        widget_ = tab_interface->GetTabFeatures()
        ->tab_dialog_manager()
        ->CreateAndShowDialog(
        - delegate.release(),
        + delegate_.get(),
        std::make_unique<tabs::TabDialogManager::Params>());
        }),
        InAnyContext(WaitForShow(element_specifier)));
        @@ -67,6 +67,7 @@
        void TearDownOnMainThread() override {
        loading_view_ = nullptr;
        widget_.reset();
        + delegate_.reset();
        InteractiveBrowserTest::TearDownOnMainThread();
        }

        @@ -76,6 +77,7 @@

        SkBitmap icon_;
        std::unique_ptr<views::Widget> widget_;
        + std::unique_ptr<views::DialogDelegate> delegate_;
        raw_ptr<PaymentAppLoadingView> loading_view_ = nullptr;
        base::MockRepeatingCallback<void(const ui::Event&)> close_callback_;
        };
        ```

        Change information

        Commit message:
        [payments] Build payment app loading view UI [2/N]

        Implements the visual components, localized strings, and UI styling for
        PaymentAppLoadingView, which is shown while a web payment application is
        loading in Web Payments.

        Key changes:
        - Build UI elements including the header, origin labels, progress bar,
        close button, and loading text.
        - Configure UI styling according to UX mocks.
        - Set header color after the widget is added to align color handling
        with PaymentHandlerWebFlowView default behavior.
        - Set rounded corner radius on PaymentRequestDialogView loading overlay.
        - Add interactive UI tests to cover dialog display and close button
        interaction.

        Mock: https://screenshot.googleplex.com/9eTUJbXuhqgBFRp

        Implementation: https://screenshot.googleplex.com/A7z6Mh2hhVBGWBp

        The following cls will implement the delayed loading message, resize
        window and view focus transition.
        Bug: 40686401, b:522844222
        Change-Id: I9a8f1e2757d3fdee71aa4cca9e332964b309a72a
        Test: locally with bobbucks
        Reviewed-by: Darwin Yang <darwi...@chromium.org>
        Reviewed-by: Stephen McGruer <smcg...@chromium.org>
        Commit-Queue: Xuehui Chen <xuehu...@google.com>
        Cr-Commit-Position: refs/heads/main@{#1666692}
        Files:
        • M chrome/browser/ui/views/payments/BUILD.gn
        • M chrome/browser/ui/views/payments/payment_app_loading_view.cc
        • M chrome/browser/ui/views/payments/payment_app_loading_view.h
        • A chrome/browser/ui/views/payments/payment_app_loading_view_interactive_uitest.cc
        • M chrome/browser/ui/views/payments/payment_request_dialog_view.cc
        • M chrome/test/BUILD.gn
        • M components/payments/core/sizes.h
        • M components/payments_strings.grdp
        • A components/payments_strings_grdp/IDS_PAYMENT_APP_LOADING_MESSAGE.png.sha1
        Change size: L
        Delta: 9 files changed, 255 insertions(+), 1 deletion(-)
        Branch: refs/heads/main
        Submit Requirements:
        • requirement satisfiedCode-Review: +1 by Darwin Yang, +1 by Stephen McGruer
        Open in Gerrit
        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
        Gerrit-MessageType: merged
        Gerrit-Project: chromium/src
        Gerrit-Branch: main
        Gerrit-Change-Id: I9a8f1e2757d3fdee71aa4cca9e332964b309a72a
        Gerrit-Change-Number: 8100402
        Gerrit-PatchSet: 11
        Gerrit-Owner: Xuehui Chen <xuehu...@google.com>
        Gerrit-Reviewer: Chromium LUCI CQ <chromiu...@luci-project-accounts.iam.gserviceaccount.com>
        Gerrit-Reviewer: Darwin Yang <darwi...@chromium.org>
        Gerrit-Reviewer: Stephen McGruer <smcg...@chromium.org>
        Gerrit-Reviewer: Xuehui Chen <xuehu...@google.com>
        open
        diffy
        satisfied_requirement
        Reply all
        Reply to author
        Forward
        0 new messages