Intercept navigation when trying to use an unconfirmed protocol handler [chromium/src : main]

0 views
Skip to first unread message

Javier Fernandez (Gerrit)

unread,
Nov 18, 2025, 12:28:00 PM11/18/25
to Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org
Attention needed from Javier Fernandez

Message from Javier Fernandez

Set Ready For Review

Open in Gerrit

Related details

Attention is currently required from:
  • Javier Fernandez
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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
Gerrit-Change-Number: 7156864
Gerrit-PatchSet: 11
Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
Gerrit-Attention: Javier Fernandez <jfern...@igalia.com>
Gerrit-Comment-Date: Tue, 18 Nov 2025 17:27:47 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Javier Fernandez (Gerrit)

unread,
Nov 18, 2025, 12:35:15 PM11/18/25
to Colin Blundell, Emilia Paz, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org
Attention needed from Colin Blundell and Emilia Paz

Javier Fernandez added 1 comment

Patchset-level comments
File-level comment, Patchset 11 (Latest):
Javier Fernandez . resolved

This CL is the result of splitting up the CL 7031939, which has been mostly reviewed for the //extension part. This patch covers the //custom_handlers related logic.

Hi @blundell, could you please review the //custom_handlers related changes ?

Hi @emiliapaz, could you please review the //extension related changes ? It's just a change in the browser tests to add a dummy NavigationThrottle callaback so that the previously defined tests pass.

Open in Gerrit

Related details

Attention is currently required from:
  • Colin Blundell
  • Emilia Paz
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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
Gerrit-Change-Number: 7156864
Gerrit-PatchSet: 11
Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
Gerrit-Attention: Colin Blundell <blun...@chromium.org>
Gerrit-Attention: Emilia Paz <emil...@chromium.org>
Gerrit-Comment-Date: Tue, 18 Nov 2025 17:34:55 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Colin Blundell (Gerrit)

unread,
Nov 19, 2025, 3:21:02 AM11/19/25
to Javier Fernandez, Colin Blundell, Emilia Paz, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org
Attention needed from Emilia Paz and Javier Fernandez

Colin Blundell added 1 comment

Patchset-level comments
Colin Blundell . resolved

Thanks, Javier! This is a quite substantial CL and I don't have the context to do a proper technical review. Is there someone who does?

Open in Gerrit

Related details

Attention is currently required from:
  • Emilia Paz
  • Javier Fernandez
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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
Gerrit-Change-Number: 7156864
Gerrit-PatchSet: 11
Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
Gerrit-Attention: Emilia Paz <emil...@chromium.org>
Gerrit-Attention: Javier Fernandez <jfern...@igalia.com>
Gerrit-Comment-Date: Wed, 19 Nov 2025 08:20:49 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Javier Fernandez (Gerrit)

unread,
Nov 19, 2025, 3:27:35 AM11/19/25
to Colin Blundell, Emilia Paz, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org
Attention needed from Colin Blundell and Emilia Paz

Javier Fernandez added 1 comment

Patchset-level comments
Colin Blundell . resolved

Thanks, Javier! This is a quite substantial CL and I don't have the context to do a proper technical review. Is there someone who does?

Javier Fernandez

Yeah, this change is mostly related to a new Extension API that I'm implementing, so probably an extension owner would have the proper context.

The navigation throttle could be useful for other use cases in the future, but for now it's restricted to intercept only handlers registered via this new Extension API.

Thanks anyway, I'll ask to an extensions owner, but probably you'd have to rubber-stamp the CL eventually.

Open in Gerrit

Related details

Attention is currently required from:
  • Colin Blundell
  • Emilia Paz
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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
Gerrit-Change-Number: 7156864
Gerrit-PatchSet: 11
Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
Gerrit-Reviewer: Emilia Paz <emil...@chromium.org>
Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
Gerrit-Attention: Colin Blundell <blun...@chromium.org>
Gerrit-Attention: Emilia Paz <emil...@chromium.org>
Gerrit-Comment-Date: Wed, 19 Nov 2025 08:27:18 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Colin Blundell <blun...@chromium.org>
satisfied_requirement
unsatisfied_requirement
open
diffy

Javier Fernandez (Gerrit)

unread,
Nov 19, 2025, 3:30:55 AM11/19/25
to Solomon Kinard, Colin Blundell, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org
Attention needed from Colin Blundell and Solomon Kinard

Javier Fernandez added 1 comment

Patchset-level comments
Javier Fernandez . resolved

Hi @solomonkinard could you please review this CL, in the context of the previous series of patches to implement the "protocol_handlers" Manifest Key in Extensions ?

Open in Gerrit

Related details

Attention is currently required from:
  • Colin Blundell
  • Solomon Kinard
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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
Gerrit-Change-Number: 7156864
Gerrit-PatchSet: 11
Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
Gerrit-Reviewer: Solomon Kinard <solomo...@chromium.org>
Gerrit-Attention: Solomon Kinard <solomo...@chromium.org>
Gerrit-Attention: Colin Blundell <blun...@chromium.org>
Gerrit-Comment-Date: Wed, 19 Nov 2025 08:30:36 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Solomon Kinard (Gerrit)

unread,
Nov 19, 2025, 4:43:36 PM11/19/25
to Javier Fernandez, Colin Blundell, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org
Attention needed from Colin Blundell and Javier Fernandez

Solomon Kinard added 3 comments

Patchset-level comments
File-level comment, Patchset 12 (Latest):
Solomon Kinard . unresolved

Thanks. Are you requesting a review from me for protocol_handlers_manager_browsertest.cc, or other files too (can you specify)?

File chrome/browser/extensions/api/protocol_handlers/protocol_handlers_manager_browsertest.cc
Line 8, Patchset 12 (Latest):#include "base/test/test_future.h"
Solomon Kinard . unresolved

Needed?

Line 68, Patchset 12 (Latest): std::move(callback).Run(true /*permission_granted*/,
true /*remember*/);
Solomon Kinard . unresolved
?
```suggestion
std::move(callback).Run(/*permission_granted=*/true,
/*remember=*/true);
```
Open in Gerrit

Related details

Attention is currently required from:
  • Colin Blundell
  • Javier Fernandez
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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
    Gerrit-Change-Number: 7156864
    Gerrit-PatchSet: 12
    Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
    Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Solomon Kinard <solomo...@chromium.org>
    Gerrit-Attention: Colin Blundell <blun...@chromium.org>
    Gerrit-Attention: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Comment-Date: Wed, 19 Nov 2025 21:43:27 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Javier Fernandez (Gerrit)

    unread,
    Nov 19, 2025, 6:07:04 PM11/19/25
    to Solomon Kinard, Colin Blundell, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org
    Attention needed from Colin Blundell and Solomon Kinard

    Javier Fernandez added 1 comment

    Patchset-level comments
    Solomon Kinard . unresolved

    Thanks. Are you requesting a review from me for protocol_handlers_manager_browsertest.cc, or other files too (can you specify)?

    Javier Fernandez

    I think that since you were reviewing the patches of this new Extension API since the beginning you'd have enough context to review the protocol handlers related changes as well.

    Devlin could also do it, but it seem is OOO until December. Do you know if someone else would be more appropriated to review the protocol handler files ?

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Colin Blundell
    • Solomon Kinard
    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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
    Gerrit-Change-Number: 7156864
    Gerrit-PatchSet: 12
    Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
    Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Solomon Kinard <solomo...@chromium.org>
    Gerrit-Attention: Solomon Kinard <solomo...@chromium.org>
    Gerrit-Attention: Colin Blundell <blun...@chromium.org>
    Gerrit-Comment-Date: Wed, 19 Nov 2025 23:06:45 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Solomon Kinard <solomo...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Solomon Kinard (Gerrit)

    unread,
    Nov 19, 2025, 7:08:23 PM11/19/25
    to Javier Fernandez, Colin Blundell, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org
    Attention needed from Colin Blundell and Javier Fernandez

    Solomon Kinard added 1 comment

    Patchset-level comments
    Solomon Kinard . unresolved

    Thanks. Are you requesting a review from me for protocol_handlers_manager_browsertest.cc, or other files too (can you specify)?

    Javier Fernandez

    I think that since you were reviewing the patches of this new Extension API since the beginning you'd have enough context to review the protocol handlers related changes as well.

    Devlin could also do it, but it seem is OOO until December. Do you know if someone else would be more appropriated to review the protocol handler files ?

    Solomon Kinard

    Would you like to let me know which files exactly? You are welcome to request any reviewer that you'd like. I only called out the one file shown in Gerrit with my name associated after clicking "Add owners". I have been asked before, when creating CLs, to specify which reviewer should look at which files, to speed up review and reduce questions. Unfortunately, Gerrit doesn't allow for only specific files, so it's all or nothing. Hence the clarification request. Can you clarify exactly which files you'd like for me to review? It looks like you're the owner of the related files in components/* and I'm only an owner of one file, in this CL.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Colin Blundell
    • Javier Fernandez
    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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
    Gerrit-Change-Number: 7156864
    Gerrit-PatchSet: 12
    Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
    Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Solomon Kinard <solomo...@chromium.org>
    Gerrit-Attention: Colin Blundell <blun...@chromium.org>
    Gerrit-Attention: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Comment-Date: Thu, 20 Nov 2025 00:08:13 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Solomon Kinard <solomo...@chromium.org>
    Comment-In-Reply-To: Javier Fernandez <jfern...@igalia.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Javier Fernandez (Gerrit)

    unread,
    Nov 19, 2025, 10:59:07 PM11/19/25
    to Solomon Kinard, Colin Blundell, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org
    Attention needed from Colin Blundell and Solomon Kinard

    Javier Fernandez added 1 comment

    Patchset-level comments
    Solomon Kinard . unresolved

    Thanks. Are you requesting a review from me for protocol_handlers_manager_browsertest.cc, or other files too (can you specify)?

    Javier Fernandez

    I think that since you were reviewing the patches of this new Extension API since the beginning you'd have enough context to review the protocol handlers related changes as well.

    Devlin could also do it, but it seem is OOO until December. Do you know if someone else would be more appropriated to review the protocol handler files ?

    Solomon Kinard

    Would you like to let me know which files exactly? You are welcome to request any reviewer that you'd like. I only called out the one file shown in Gerrit with my name associated after clicking "Add owners". I have been asked before, when creating CLs, to specify which reviewer should look at which files, to speed up review and reduce questions. Unfortunately, Gerrit doesn't allow for only specific files, so it's all or nothing. Hence the clarification request. Can you clarify exactly which files you'd like for me to review? It looks like you're the owner of the related files in components/* and I'm only an owner of one file, in this CL.

    Javier Fernandez

    Hi, sorry If I wasn't clear before. I know you are not owner of the //custom_handlers component, but there aren't many. I'd you you to review the whole CL, if possible. The idea is that Colin would rubber-stamp the review later.

    The change affects to the Chrome navigation when there is a protocol handler registered for a specific URL scheme. It shouldn't affect in any other case.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Colin Blundell
    • Solomon Kinard
    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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
    Gerrit-Change-Number: 7156864
    Gerrit-PatchSet: 12
    Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
    Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Solomon Kinard <solomo...@chromium.org>
    Gerrit-Attention: Solomon Kinard <solomo...@chromium.org>
    Gerrit-Attention: Colin Blundell <blun...@chromium.org>
    Gerrit-Comment-Date: Thu, 20 Nov 2025 03:58:45 +0000
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Javier Fernandez (Gerrit)

    unread,
    Nov 20, 2025, 8:19:48 AM11/20/25
    to Solomon Kinard, Colin Blundell, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org
    Attention needed from Colin Blundell and Solomon Kinard

    Javier Fernandez added 2 comments

    File chrome/browser/extensions/api/protocol_handlers/protocol_handlers_manager_browsertest.cc
    Line 8, Patchset 12:#include "base/test/test_future.h"
    Solomon Kinard . resolved

    Needed?

    Javier Fernandez

    Not anymore; probably a leftover of a previous version of the patch.

    Line 68, Patchset 12: std::move(callback).Run(true /*permission_granted*/,
    true /*remember*/);
    Solomon Kinard . resolved
    ?
    ```suggestion
    std::move(callback).Run(/*permission_granted=*/true,
    /*remember=*/true);
    ```
    Javier Fernandez

    Done

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Colin Blundell
    • Solomon Kinard
    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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
    Gerrit-Change-Number: 7156864
    Gerrit-PatchSet: 13
    Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
    Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Solomon Kinard <solomo...@chromium.org>
    Gerrit-Attention: Solomon Kinard <solomo...@chromium.org>
    Gerrit-Attention: Colin Blundell <blun...@chromium.org>
    Gerrit-Comment-Date: Thu, 20 Nov 2025 13:19:30 +0000
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Javier Fernandez (Gerrit)

    unread,
    Nov 26, 2025, 6:44:57 PM11/26/25
    to Solomon Kinard, Colin Blundell, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org
    Attention needed from Colin Blundell and Solomon Kinard

    Javier Fernandez added 1 comment

    Patchset-level comments
    File-level comment, Patchset 14 (Latest):
    Javier Fernandez . resolved

    hi @solomonkinard
    Could you please take a look at the //custom_handlers logic, in the context of the new Extension API described in the design document.
    Thanks.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Colin Blundell
    • Solomon Kinard
    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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
    Gerrit-Change-Number: 7156864
    Gerrit-PatchSet: 14
    Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
    Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Solomon Kinard <solomo...@chromium.org>
    Gerrit-Attention: Solomon Kinard <solomo...@chromium.org>
    Gerrit-Attention: Colin Blundell <blun...@chromium.org>
    Gerrit-Comment-Date: Wed, 26 Nov 2025 23:44:39 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Colin Blundell (Gerrit)

    unread,
    Nov 27, 2025, 2:50:23 AM11/27/25
    to Javier Fernandez, Solomon Kinard, Colin Blundell, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org
    Attention needed from Javier Fernandez and Solomon Kinard

    Colin Blundell added 1 comment

    Patchset-level comments
    Colin Blundell . resolved

    (Javier: FYI Solomon is OOO until Monday)

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Javier Fernandez
    • Solomon Kinard
    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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
    Gerrit-Change-Number: 7156864
    Gerrit-PatchSet: 14
    Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
    Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Solomon Kinard <solomo...@chromium.org>
    Gerrit-Attention: Solomon Kinard <solomo...@chromium.org>
    Gerrit-Attention: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Comment-Date: Thu, 27 Nov 2025 07:50:00 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Solomon Kinard (Gerrit)

    unread,
    Dec 3, 2025, 2:04:30 AM12/3/25
    to Javier Fernandez, Colin Blundell, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org
    Attention needed from Javier Fernandez

    Solomon Kinard added 9 comments

    File chrome/browser/chrome_content_browser_client_navigation_throttles.cc
    Line 354, Patchset 14 (Latest):#if !BUILDFLAG(IS_ANDROID)
    Solomon Kinard . unresolved

    Rationale behind !android?

    File chrome/browser/custom_handlers/chrome_protocol_handler_navigation_throttle_browsertests.cc
    Line 101, Patchset 14 (Latest): SetConfirmTestingCallback(/*permission_granted=*/true, /*remember=*/false);
    Solomon Kinard . unresolved

    Please fix this WARNING reported by ClangTidy: check: bugprone-argument-comment

    argument name 'permission_granted' in comment ...

    check: bugprone-argument-comment

    argument name 'permission_granted' in comment does not match parameter name 'grant' (https://clang.llvm.org/extra/clang-tidy/checks/bugprone/argument-comment.html)

    (Note: You can add `Skip-Clang-Tidy-Checks: bugprone-argument-comment` footer to the CL description to skip the check)

    (Lint observed on `linux-clang-tidy-rel`, but not on `android-clang-tidy-rel`)

    File components/custom_handlers/protocol_handler_navigation_throttle.cc
    Line 88, Patchset 14 (Latest): // TODO(crbug.com/40482153: Implement the prompt dialog.
    Solomon Kinard . unresolved
    ?
    ```suggestion
    // TODO(crbug.com/40482153): Implement the prompt dialog.
    ```
    Line 89, Patchset 14 (Latest): std::move(callback).Run(true /*permission_granted*/,
    true /*remember*/);
    Solomon Kinard . unresolved
    ?
    ```suggestion
    std::move(callback).Run(/*permission_granted=*/true,
    /*remember=*/true);
    ```
    File components/custom_handlers/protocol_handler_navigation_throttle_browsertest.cc
    Line 88, Patchset 14 (Latest): SetConfirmTestingCallback(/*permission_granted=*/true, /*remember=*/false);
    Solomon Kinard . unresolved

    Please fix this WARNING reported by ClangTidy: check: bugprone-argument-comment

    argument name 'permission_granted' in comment ...

    check: bugprone-argument-comment

    argument name 'permission_granted' in comment does not match parameter name 'grant' (https://clang.llvm.org/extra/clang-tidy/checks/bugprone/argument-comment.html)

    (Note: You can add `Skip-Clang-Tidy-Checks: bugprone-argument-comment` footer to the CL description to skip the check)

    (Lint observed on `linux-clang-tidy-rel`, but not on `android-clang-tidy-rel`)

    Line 120, Patchset 14 (Latest): SetConfirmTestingCallback(/*permission_granted=*/false, /*remember=*/false);
    Solomon Kinard . unresolved

    Please fix this WARNING reported by ClangTidy: check: bugprone-argument-comment

    argument name 'permission_granted' in comment ...

    check: bugprone-argument-comment

    argument name 'permission_granted' in comment does not match parameter name 'grant' (https://clang.llvm.org/extra/clang-tidy/checks/bugprone/argument-comment.html)

    (Note: You can add `Skip-Clang-Tidy-Checks: bugprone-argument-comment` footer to the CL description to skip the check)

    (Lint observed on `linux-clang-tidy-rel`, but not on `android-clang-tidy-rel`)

    Line 144, Patchset 14 (Latest): SetConfirmTestingCallback(/*permission_granted=*/true, /*remember=*/false);
    Solomon Kinard . unresolved

    Please fix this WARNING reported by ClangTidy: check: bugprone-argument-comment

    argument name 'permission_granted' in comment ...

    check: bugprone-argument-comment

    argument name 'permission_granted' in comment does not match parameter name 'grant' (https://clang.llvm.org/extra/clang-tidy/checks/bugprone/argument-comment.html)

    (Note: You can add `Skip-Clang-Tidy-Checks: bugprone-argument-comment` footer to the CL description to skip the check)

    (Lint observed on `linux-clang-tidy-rel`, but not on `android-clang-tidy-rel`)

    Line 155, Patchset 14 (Latest): SetConfirmTestingCallback(/*permission_granted=*/false, /*remember=*/false);
    Solomon Kinard . unresolved

    Please fix this WARNING reported by ClangTidy: check: bugprone-argument-comment

    argument name 'permission_granted' in comment ...

    check: bugprone-argument-comment

    argument name 'permission_granted' in comment does not match parameter name 'grant' (https://clang.llvm.org/extra/clang-tidy/checks/bugprone/argument-comment.html)

    (Note: You can add `Skip-Clang-Tidy-Checks: bugprone-argument-comment` footer to the CL description to skip the check)

    (Lint observed on `linux-clang-tidy-rel`, but not on `android-clang-tidy-rel`)

    Line 190, Patchset 14 (Latest): SetConfirmTestingCallback(/*permission_granted=*/false, /*remember=*/false);
    Solomon Kinard . unresolved

    Please fix this WARNING reported by ClangTidy: check: bugprone-argument-comment

    argument name 'permission_granted' in comment ...

    check: bugprone-argument-comment

    argument name 'permission_granted' in comment does not match parameter name 'grant' (https://clang.llvm.org/extra/clang-tidy/checks/bugprone/argument-comment.html)

    (Note: You can add `Skip-Clang-Tidy-Checks: bugprone-argument-comment` footer to the CL description to skip the check)

    (Lint observed on `linux-clang-tidy-rel`, but not on `android-clang-tidy-rel`)

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Javier Fernandez
    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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
    Gerrit-Change-Number: 7156864
    Gerrit-PatchSet: 14
    Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
    Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Solomon Kinard <solomo...@chromium.org>
    Gerrit-Attention: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Comment-Date: Wed, 03 Dec 2025 07:04:20 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Javier Fernandez (Gerrit)

    unread,
    Dec 3, 2025, 4:53:22 PM12/3/25
    to Solomon Kinard, Colin Blundell, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org
    Attention needed from Solomon Kinard

    Javier Fernandez added 10 comments

    Patchset-level comments
    File-level comment, Patchset 15 (Latest):
    Javier Fernandez . resolved

    Thanks for the review @solomonkinard,
    I've submitted a new patch addressing the comments. Please, take a look.

    File chrome/browser/chrome_content_browser_client_navigation_throttles.cc
    Line 354, Patchset 14:#if !BUILDFLAG(IS_ANDROID)
    Solomon Kinard . unresolved

    Rationale behind !android?

    Javier Fernandez

    The support of the Protocol Handlers features in Android is very limited [1], that's why the RegisterProtocolHandlerPermissionRequest class is not available [2] in android either.

    I think that one of the challenges is to create an android version of the ChromeProtocolHandlerRegistryDelegate, which is the responsible of implementing the OS interaction logic associated to the protocol handler.

    Hence, given that the purpose of the new NavigationThrottle is to confirm the protocol handler registration, I decided to exclude it from the android build target.

    [1] https://issues.chromium.org/issues/40964464
    [2] https://source.chromium.org/chromium/chromium/src/+/main:components/custom_handlers/BUILD.gn;l=33;drc=ffa56f9ae683a0d03075f976685e28f0cb53bff1

    File chrome/browser/custom_handlers/chrome_protocol_handler_navigation_throttle_browsertests.cc
    Line 101, Patchset 14: SetConfirmTestingCallback(/*permission_granted=*/true, /*remember=*/false);
    Solomon Kinard . resolved

    Please fix this WARNING reported by ClangTidy: check: bugprone-argument-comment

    argument name 'permission_granted' in comment ...

    check: bugprone-argument-comment

    argument name 'permission_granted' in comment does not match parameter name 'grant' (https://clang.llvm.org/extra/clang-tidy/checks/bugprone/argument-comment.html)

    (Note: You can add `Skip-Clang-Tidy-Checks: bugprone-argument-comment` footer to the CL description to skip the check)

    (Lint observed on `linux-clang-tidy-rel`, but not on `android-clang-tidy-rel`)

    Javier Fernandez

    Done

    File components/custom_handlers/protocol_handler_navigation_throttle.cc
    Line 88, Patchset 14: // TODO(crbug.com/40482153: Implement the prompt dialog.
    Solomon Kinard . resolved
    ?
    ```suggestion
    // TODO(crbug.com/40482153): Implement the prompt dialog.
    ```
    Javier Fernandez

    Done

    Line 89, Patchset 14: std::move(callback).Run(true /*permission_granted*/,
    true /*remember*/);
    Solomon Kinard . resolved
    ?
    ```suggestion
    std::move(callback).Run(/*permission_granted=*/true,
    /*remember=*/true);
    ```
    Javier Fernandez

    Done

    File components/custom_handlers/protocol_handler_navigation_throttle_browsertest.cc
    Line 88, Patchset 14: SetConfirmTestingCallback(/*permission_granted=*/true, /*remember=*/false);
    Solomon Kinard . resolved

    Please fix this WARNING reported by ClangTidy: check: bugprone-argument-comment

    argument name 'permission_granted' in comment ...

    check: bugprone-argument-comment

    argument name 'permission_granted' in comment does not match parameter name 'grant' (https://clang.llvm.org/extra/clang-tidy/checks/bugprone/argument-comment.html)

    (Note: You can add `Skip-Clang-Tidy-Checks: bugprone-argument-comment` footer to the CL description to skip the check)

    (Lint observed on `linux-clang-tidy-rel`, but not on `android-clang-tidy-rel`)

    Javier Fernandez

    Done

    Line 120, Patchset 14: SetConfirmTestingCallback(/*permission_granted=*/false, /*remember=*/false);
    Solomon Kinard . resolved

    Please fix this WARNING reported by ClangTidy: check: bugprone-argument-comment

    argument name 'permission_granted' in comment ...

    check: bugprone-argument-comment

    argument name 'permission_granted' in comment does not match parameter name 'grant' (https://clang.llvm.org/extra/clang-tidy/checks/bugprone/argument-comment.html)

    (Note: You can add `Skip-Clang-Tidy-Checks: bugprone-argument-comment` footer to the CL description to skip the check)

    (Lint observed on `linux-clang-tidy-rel`, but not on `android-clang-tidy-rel`)

    Javier Fernandez

    Done

    Line 144, Patchset 14: SetConfirmTestingCallback(/*permission_granted=*/true, /*remember=*/false);
    Solomon Kinard . resolved

    Please fix this WARNING reported by ClangTidy: check: bugprone-argument-comment

    argument name 'permission_granted' in comment ...

    check: bugprone-argument-comment

    argument name 'permission_granted' in comment does not match parameter name 'grant' (https://clang.llvm.org/extra/clang-tidy/checks/bugprone/argument-comment.html)

    (Note: You can add `Skip-Clang-Tidy-Checks: bugprone-argument-comment` footer to the CL description to skip the check)

    (Lint observed on `linux-clang-tidy-rel`, but not on `android-clang-tidy-rel`)

    Javier Fernandez

    Done

    Line 155, Patchset 14: SetConfirmTestingCallback(/*permission_granted=*/false, /*remember=*/false);
    Solomon Kinard . resolved

    Please fix this WARNING reported by ClangTidy: check: bugprone-argument-comment

    argument name 'permission_granted' in comment ...

    check: bugprone-argument-comment

    argument name 'permission_granted' in comment does not match parameter name 'grant' (https://clang.llvm.org/extra/clang-tidy/checks/bugprone/argument-comment.html)

    (Note: You can add `Skip-Clang-Tidy-Checks: bugprone-argument-comment` footer to the CL description to skip the check)

    (Lint observed on `linux-clang-tidy-rel`, but not on `android-clang-tidy-rel`)

    Javier Fernandez

    Done

    Line 190, Patchset 14: SetConfirmTestingCallback(/*permission_granted=*/false, /*remember=*/false);
    Solomon Kinard . resolved

    Please fix this WARNING reported by ClangTidy: check: bugprone-argument-comment

    argument name 'permission_granted' in comment ...

    check: bugprone-argument-comment

    argument name 'permission_granted' in comment does not match parameter name 'grant' (https://clang.llvm.org/extra/clang-tidy/checks/bugprone/argument-comment.html)

    (Note: You can add `Skip-Clang-Tidy-Checks: bugprone-argument-comment` footer to the CL description to skip the check)

    (Lint observed on `linux-clang-tidy-rel`, but not on `android-clang-tidy-rel`)

    Javier Fernandez

    Done

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Solomon Kinard
    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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
    Gerrit-Change-Number: 7156864
    Gerrit-PatchSet: 15
    Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
    Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Solomon Kinard <solomo...@chromium.org>
    Gerrit-Attention: Solomon Kinard <solomo...@chromium.org>
    Gerrit-Comment-Date: Wed, 03 Dec 2025 21:53:05 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Solomon Kinard <solomo...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Solomon Kinard (Gerrit)

    unread,
    Dec 8, 2025, 12:31:59 PM12/8/25
    to Javier Fernandez, Colin Blundell, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org
    Attention needed from Javier Fernandez

    Solomon Kinard added 9 comments

    Patchset-level comments
    Solomon Kinard . resolved

    Thanks. A few quick questions.

    File chrome/browser/chrome_content_browser_client_navigation_throttles.cc
    Line 354, Patchset 14:#if !BUILDFLAG(IS_ANDROID)
    Solomon Kinard . resolved

    Rationale behind !android?

    Javier Fernandez

    The support of the Protocol Handlers features in Android is very limited [1], that's why the RegisterProtocolHandlerPermissionRequest class is not available [2] in android either.

    I think that one of the challenges is to create an android version of the ChromeProtocolHandlerRegistryDelegate, which is the responsible of implementing the OS interaction logic associated to the protocol handler.

    Hence, given that the purpose of the new NavigationThrottle is to confirm the protocol handler registration, I decided to exclude it from the android build target.

    [1] https://issues.chromium.org/issues/40964464
    [2] https://source.chromium.org/chromium/chromium/src/+/main:components/custom_handlers/BUILD.gn;l=33;drc=ffa56f9ae683a0d03075f976685e28f0cb53bff1

    Solomon Kinard

    Acknowledged

    Line 355, Patchset 15 (Latest): // could be null in some unit tests.
    Solomon Kinard . unresolved

    Complete sentence with leading capital?

    Line 321, Patchset 15 (Latest):#if !BUILDFLAG(IS_ANDROID)
    std::unique_ptr<apps::LinkCapturingNavigationThrottle::Delegate>
    link_capturing_delegate;

    #if BUILDFLAG(IS_CHROMEOS)
    link_capturing_delegate =
    std::make_unique<apps::ChromeOsLinkCapturingDelegate>();
    bool url_to_apps_throttle_created =
    #else // BUILDFLAG(IS_CHROMEOS)
    link_capturing_delegate =
    std::make_unique<web_app::WebAppLinkCapturingDelegate>();
    #endif // BUILDFLAG(IS_CHROMEOS)
    apps::LinkCapturingNavigationThrottle::MaybeCreateAndAdd(
    registry, std::move(link_capturing_delegate));
    #if BUILDFLAG(IS_CHROMEOS)
    // TODO(crbug.com/366547977): This currently does nothing and allows all
    // navigations to proceed if v2 is enabled on ChromeOS. Implement.
    bool chromeos_reimpl_navigation_throttle_created =
    apps::ChromeOsReimplNavigationCapturingThrottle::MaybeCreateAndAdd(
    registry);
    // Verify the v1 and reimpl throttles have not been created at the same time.
    CHECK(!chromeos_reimpl_navigation_throttle_created ||
    !url_to_apps_throttle_created);
    #endif // BUILDFLAG(IS_CHROMEOS)

    web_app::NavigationCapturingRedirectionThrottle::MaybeCreateAndAdd(registry);
    #endif // !BUILDFLAG(IS_ANDROID)

    Profile* profile =
    Profile::FromBrowserContext(handle.GetWebContents()->GetBrowserContext());

    #if !BUILDFLAG(IS_ANDROID)
    if (base::FeatureList::IsEnabled(
    extensions_features::kExtensionProtocolHandlers)) {
    // could be null in some unit tests.
    if (auto* protocol_handler_registry =
    ProtocolHandlerRegistryFactory::GetForBrowserContext(profile)) {
    custom_handlers::ProtocolHandlerNavigationThrottle::MaybeCreateAndAdd(
    protocol_handler_registry, registry);
    }
    }
    #endif // !BUILDFLAG(IS_ANDROID)
    Solomon Kinard . unresolved
    Is it better or worse to reuse the existing `!ANDROID` block vs making a new one?
    ```suggestion
    Profile* profile =
    Profile::FromBrowserContext(handle.GetWebContents()->GetBrowserContext());
    #if !BUILDFLAG(IS_ANDROID)
    std::unique_ptr<apps::LinkCapturingNavigationThrottle::Delegate>
    link_capturing_delegate;
    #if BUILDFLAG(IS_CHROMEOS)
    link_capturing_delegate =
    std::make_unique<apps::ChromeOsLinkCapturingDelegate>();
    bool url_to_apps_throttle_created =
    #else // BUILDFLAG(IS_CHROMEOS)
    link_capturing_delegate =
    std::make_unique<web_app::WebAppLinkCapturingDelegate>();
    #endif // BUILDFLAG(IS_CHROMEOS)
    apps::LinkCapturingNavigationThrottle::MaybeCreateAndAdd(
    registry, std::move(link_capturing_delegate));
    #if BUILDFLAG(IS_CHROMEOS)
    // TODO(crbug.com/366547977): This currently does nothing and allows all
    // navigations to proceed if v2 is enabled on ChromeOS. Implement.
    bool chromeos_reimpl_navigation_throttle_created =
    apps::ChromeOsReimplNavigationCapturingThrottle::MaybeCreateAndAdd(
    registry);
    // Verify the v1 and reimpl throttles have not been created at the same time.
    CHECK(!chromeos_reimpl_navigation_throttle_created ||
    !url_to_apps_throttle_created);
    #endif // BUILDFLAG(IS_CHROMEOS)
      web_app::NavigationCapturingRedirectionThrottle::MaybeCreateAndAdd(registry);
      if (base::FeatureList::IsEnabled(
    extensions_features::kExtensionProtocolHandlers)) {
    // could be null in some unit tests.
    if (auto* protocol_handler_registry =
    ProtocolHandlerRegistryFactory::GetForBrowserContext(profile)) {
    custom_handlers::ProtocolHandlerNavigationThrottle::MaybeCreateAndAdd(
    protocol_handler_registry, registry);
    }
    }
    #endif // !BUILDFLAG(IS_ANDROID)
    ```
    File components/custom_handlers/protocol_handler_navigation_throttle.h
    Line 38, Patchset 15 (Latest): // navitation process to prompt the user about the registered custom handler.
    Solomon Kinard . unresolved
    ```suggestion
    // navigation process to prompt the user about the registered custom handler.
    ```
    Line 36, Patchset 15 (Latest): // If there is an "unconfirmed" handler for the Navigation Requests's url, a
    Solomon Kinard . unresolved
    ?
    ```suggestion
    // If there is an "unconfirmed" handler for the Navigation Request's url, a
    ```
    Line 16, Patchset 15 (Latest):// registered for the navigation request's url scheme. The onging navigation
    Solomon Kinard . unresolved

    ?

    File components/custom_handlers/protocol_handler_navigation_throttle_browsertest.cc
    Line 22, Patchset 15 (Latest):class ProtocolHandlerNavigationThrottleBrowserTest
    Solomon Kinard . unresolved

    Are any more tests planned? Asking because several of these tests are identical except for maybe a boolean value, variable name, and comment.

    File components/custom_handlers/protocol_handler_registry.h
    Line 197, Patchset 15 (Latest): void ConfirmProtocolHandler(std::string_view scheme, bool save);
    Solomon Kinard . unresolved

    OOC (out of curiosity), is it possible that this method can exit without confirmation, e.g. in the `!RegisterProtocolHandler(handler, USER)` case? If so maybe `MaybeConfirmProtocolHandler`? Maybe it's a moot point because it can be confirmed afterward with `IsProtocolHandlerConfirmed`?

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Javier Fernandez
    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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
    Gerrit-Change-Number: 7156864
    Gerrit-PatchSet: 15
    Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
    Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Solomon Kinard <solomo...@chromium.org>
    Gerrit-Attention: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Comment-Date: Mon, 08 Dec 2025 17:31:49 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Solomon Kinard <solomo...@chromium.org>
    Comment-In-Reply-To: Javier Fernandez <jfern...@igalia.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Javier Fernandez (Gerrit)

    unread,
    Dec 9, 2025, 4:51:35 PM12/9/25
    to Solomon Kinard, Colin Blundell, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org
    Attention needed from Solomon Kinard

    Javier Fernandez voted and added 8 comments

    Votes added by Javier Fernandez

    Commit-Queue+1

    8 comments

    Patchset-level comments
    File-level comment, Patchset 17 (Latest):
    Javier Fernandez . resolved

    Thanks for the review.
    I commented inline.

    File chrome/browser/chrome_content_browser_client_navigation_throttles.cc
    Line 355, Patchset 15: // could be null in some unit tests.
    Solomon Kinard . resolved

    Complete sentence with leading capital?

    Javier Fernandez

    Done

    Line 321, Patchset 15:#if !BUILDFLAG(IS_ANDROID)
    Solomon Kinard . resolved
    Javier Fernandez

    Moving the Profile declaration above would allow to define the new code inside the already existent !IS_ANDROID buildflag block. Thanks for the suggestion, I think it's better, indeed.

    File components/custom_handlers/protocol_handler_navigation_throttle.h
    Line 38, Patchset 15: // navitation process to prompt the user about the registered custom handler.
    Solomon Kinard . resolved
    ```suggestion
    // navigation process to prompt the user about the registered custom handler.
    ```
    Javier Fernandez

    Done

    Line 36, Patchset 15: // If there is an "unconfirmed" handler for the Navigation Requests's url, a
    Solomon Kinard . resolved
    ?
    ```suggestion
    // If there is an "unconfirmed" handler for the Navigation Request's url, a
    ```
    Javier Fernandez

    Done

    Line 16, Patchset 15:// registered for the navigation request's url scheme. The onging navigation
    Solomon Kinard . resolved

    ?

    Javier Fernandez

    s/onging/ongoing

    File components/custom_handlers/protocol_handler_navigation_throttle_browsertest.cc
    Line 22, Patchset 15:class ProtocolHandlerNavigationThrottleBrowserTest
    Solomon Kinard . unresolved

    Are any more tests planned? Asking because several of these tests are identical except for maybe a boolean value, variable name, and comment.

    Javier Fernandez

    I didn´t have more tests in mind. I think they cover the 4 basic cases this new logic implements:

    1- Confirm (without remember decision)
    2- Deny (without remember decision)
    3- Deny after having confirmed first
    4- Confirm (remember the decision)

    It's true that some of this tests could be parameterized, giving us the opportunity to do a more exhaustive testing, but I'm not sure it's worth.

    File components/custom_handlers/protocol_handler_registry.h
    Line 197, Patchset 15: void ConfirmProtocolHandler(std::string_view scheme, bool save);
    Solomon Kinard . unresolved

    OOC (out of curiosity), is it possible that this method can exit without confirmation, e.g. in the `!RegisterProtocolHandler(handler, USER)` case? If so maybe `MaybeConfirmProtocolHandler`? Maybe it's a moot point because it can be confirmed afterward with `IsProtocolHandlerConfirmed`?

    Javier Fernandez

    The code you mention is defined to ignore invalid handlers, which is not possible to happen at this point, because the extension's Manifest parsing shouldn't permit to register invalid handlers. Maybe we could change the implementation of this method to avoid the confusion.

    The implementation also ignores handlers already confirmed; do you think this alone justifies adding the Maybe prefix ?

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Solomon Kinard
    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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
    Gerrit-Change-Number: 7156864
    Gerrit-PatchSet: 17
    Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
    Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Solomon Kinard <solomo...@chromium.org>
    Gerrit-Attention: Solomon Kinard <solomo...@chromium.org>
    Gerrit-Comment-Date: Tue, 09 Dec 2025 21:51:20 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    Comment-In-Reply-To: Solomon Kinard <solomo...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Solomon Kinard (Gerrit)

    unread,
    Dec 11, 2025, 8:03:13 PM12/11/25
    to Javier Fernandez, Colin Blundell, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org
    Attention needed from Javier Fernandez

    Solomon Kinard added 6 comments

    Patchset-level comments
    Solomon Kinard . resolved

    A few questions.

    File components/custom_handlers/protocol_handler_navigation_throttle.h
    Line 45, Patchset 17 (Latest): // only for testing
    Solomon Kinard . unresolved

    Complete sentence: capital latter at the start and a period at the end?

    File components/custom_handlers/protocol_handler_navigation_throttle.cc
    Line 84, Patchset 17 (Latest): auto& test_callback = GetDialogLaunchCallbackForTesting(); // IN-TEST
    Solomon Kinard . unresolved

    1. Could this be called something like `callback_for_test` instead.
    1. [`// IN-TEST`](crsrc.org/s/?q=%22%2F%2F%20IN-TEST%22%20f:cc$%20f:extension) is optional?
    1. Could CHECK_IS_TEST() work within this `{}`?

    File components/custom_handlers/protocol_handler_navigation_throttle_browsertest.cc
    Line 22, Patchset 15:class ProtocolHandlerNavigationThrottleBrowserTest
    Solomon Kinard . unresolved

    Are any more tests planned? Asking because several of these tests are identical except for maybe a boolean value, variable name, and comment.

    Javier Fernandez

    I didn´t have more tests in mind. I think they cover the 4 basic cases this new logic implements:

    1- Confirm (without remember decision)
    2- Deny (without remember decision)
    3- Deny after having confirmed first
    4- Confirm (remember the decision)

    It's true that some of this tests could be parameterized, giving us the opportunity to do a more exhaustive testing, but I'm not sure it's worth.

    Solomon Kinard

    With respect to `tests are identical`, what do you think about getting started with something like?

    ```
    RegisterProtocolHandler() {
    GURL handler_url =
    embedded_test_server()->GetURL("/custom_handlers/custom_handler.html");
    ProtocolHandler ph1 = CreateUnconfirmedProtocolHandler("news", handler_url);
    registry->OnAcceptRegisterProtocolHandler(ph1);
    ASSERT_TRUE(registry->IsHandledProtocol("news"));
    ASSERT_FALSE(registry->IsProtocolHandlerConfirmed("news"));
    }
    ```
    Line 51, Patchset 17 (Latest): // Only handlers with extension id can be unconfirmed for now.
    Solomon Kinard . unresolved

    For my own understanding, what do you mean by "handlers with extension id"? Is it expected in general that handlers would be useful without an extension id?

    Line 52, Patchset 17 (Latest): const std::string extension_id("fooabbbbccccddddeeeeffffgggghhhh");
    Solomon Kinard . unresolved

    1. Is there any significance to this [extension id](crsrc.org/s/?q=fooabbbbccccddddeeeeffffgggghhhh)? Asking only because it's not the usual ascending or full repeated e.g. `a*` or `abcdefghijklmnopabcdefghijklmnop`.
    1. Same with `barabbbbccccddddeeeeffffgggghhhh` below.
    1. Would it be helpful to put any of these in the class or the file as a const?

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Javier Fernandez
    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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
    Gerrit-Change-Number: 7156864
    Gerrit-PatchSet: 17
    Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
    Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Solomon Kinard <solomo...@chromium.org>
    Gerrit-Attention: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Comment-Date: Fri, 12 Dec 2025 01:03:02 +0000
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Javier Fernandez (Gerrit)

    unread,
    Dec 16, 2025, 11:17:15 AM12/16/25
    to Solomon Kinard, Colin Blundell, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org
    Attention needed from Solomon Kinard

    Javier Fernandez voted and added 6 comments

    Votes added by Javier Fernandez

    Commit-Queue+1

    6 comments

    Patchset-level comments
    File-level comment, Patchset 19 (Latest):
    Javier Fernandez . resolved

    Thanks for the reviews @solomonkinard

    I have applied the refactoring you suggested in the //component browser tests. As a matter of fact, I've had to move 2 tests to the //chrome browser tests instead, because the depended on the profile settings and they weren't working as expected before.

    I also added a few more tests in the //component browser tests.

    File components/custom_handlers/protocol_handler_navigation_throttle.h
    Line 45, Patchset 17: // only for testing
    Solomon Kinard . resolved

    Complete sentence: capital latter at the start and a period at the end?

    Javier Fernandez

    Done

    File components/custom_handlers/protocol_handler_navigation_throttle.cc
    Line 84, Patchset 17: auto& test_callback = GetDialogLaunchCallbackForTesting(); // IN-TEST
    Solomon Kinard . resolved

    1. Could this be called something like `callback_for_test` instead.
    1. [`// IN-TEST`](crsrc.org/s/?q=%22%2F%2F%20IN-TEST%22%20f:cc$%20f:extension) is optional?
    1. Could CHECK_IS_TEST() work within this `{}`?

    Javier Fernandez

    The presubmit checks showed warnings suggesting to add shot comments in codepaths inside a ForTesting method.

    File components/custom_handlers/protocol_handler_navigation_throttle_browsertest.cc
    Line 22, Patchset 15:class ProtocolHandlerNavigationThrottleBrowserTest
    Solomon Kinard . resolved

    Are any more tests planned? Asking because several of these tests are identical except for maybe a boolean value, variable name, and comment.

    Javier Fernandez

    I didn´t have more tests in mind. I think they cover the 4 basic cases this new logic implements:

    1- Confirm (without remember decision)
    2- Deny (without remember decision)
    3- Deny after having confirmed first
    4- Confirm (remember the decision)

    It's true that some of this tests could be parameterized, giving us the opportunity to do a more exhaustive testing, but I'm not sure it's worth.

    Solomon Kinard

    With respect to `tests are identical`, what do you think about getting started with something like?

    ```
    RegisterProtocolHandler() {
    GURL handler_url =
    embedded_test_server()->GetURL("/custom_handlers/custom_handler.html");
    ProtocolHandler ph1 = CreateUnconfirmedProtocolHandler("news", handler_url);
    registry->OnAcceptRegisterProtocolHandler(ph1);
    ASSERT_TRUE(registry->IsHandledProtocol("news"));
    ASSERT_FALSE(registry->IsProtocolHandlerConfirmed("news"));
    }
    ```
    Javier Fernandez

    We can apply this refactoring, indeed.
    Thanks !

    Line 51, Patchset 17: // Only handlers with extension id can be unconfirmed for now.
    Solomon Kinard . unresolved

    For my own understanding, what do you mean by "handlers with extension id"? Is it expected in general that handlers would be useful without an extension id?

    Javier Fernandez

    Yes, absolutely. The ProtocolHandler class is used by the Web API (registerProtocolHandler JS method), or PWAs which would assign an appId instead, or like in this case, an extension via the protocol_handlers Manifest Key.

    Line 52, Patchset 17: const std::string extension_id("fooabbbbccccddddeeeeffffgggghhhh");
    Solomon Kinard . resolved

    1. Is there any significance to this [extension id](crsrc.org/s/?q=fooabbbbccccddddeeeeffffgggghhhh)? Asking only because it's not the usual ascending or full repeated e.g. `a*` or `abcdefghijklmnopabcdefghijklmnop`.
    1. Same with `barabbbbccccddddeeeeffffgggghhhh` below.
    1. Would it be helpful to put any of these in the class or the file as a const?

    Javier Fernandez

    There is no special significance. I've seen that pattern in other extension related tests. Any of the ones you suggested is fine as well; I'm going to change them and define them as const exp as well.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Solomon Kinard
    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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
    Gerrit-Change-Number: 7156864
    Gerrit-PatchSet: 19
    Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
    Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Solomon Kinard <solomo...@chromium.org>
    Gerrit-Attention: Solomon Kinard <solomo...@chromium.org>
    Gerrit-Comment-Date: Tue, 16 Dec 2025 16:16:57 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Solomon Kinard (Gerrit)

    unread,
    Dec 18, 2025, 1:40:07 PM12/18/25
    to Javier Fernandez, Colin Blundell, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org
    Attention needed from Javier Fernandez

    Solomon Kinard added 4 comments

    Patchset-level comments
    Solomon Kinard . resolved

    A quick question.

    File chrome/browser/custom_handlers/chrome_protocol_handler_navigation_throttle_browsertests.cc
    Line 92, Patchset 19 (Latest): GURL url("news:test");
    Solomon Kinard . unresolved

    1. For my own understanding, should this be "news://test" for clarity, or is "news:test" intentional here and elsewhere?
    1. Are these schemes already [safelisted](https://html.spec.whatwg.org/multipage/system-state.html#normalize-protocol-handler-parameters)?

    File components/custom_handlers/protocol_handler_navigation_throttle_browsertest.cc
    Line 51, Patchset 17: // Only handlers with extension id can be unconfirmed for now.
    Solomon Kinard . resolved

    For my own understanding, what do you mean by "handlers with extension id"? Is it expected in general that handlers would be useful without an extension id?

    Javier Fernandez

    Yes, absolutely. The ProtocolHandler class is used by the Web API (registerProtocolHandler JS method), or PWAs which would assign an appId instead, or like in this case, an extension via the protocol_handlers Manifest Key.

    Solomon Kinard

    Acknowledged

    File components/custom_handlers/protocol_handler_registry.h
    Line 197, Patchset 15: void ConfirmProtocolHandler(std::string_view scheme, bool save);
    Solomon Kinard . resolved

    OOC (out of curiosity), is it possible that this method can exit without confirmation, e.g. in the `!RegisterProtocolHandler(handler, USER)` case? If so maybe `MaybeConfirmProtocolHandler`? Maybe it's a moot point because it can be confirmed afterward with `IsProtocolHandlerConfirmed`?

    Javier Fernandez

    The code you mention is defined to ignore invalid handlers, which is not possible to happen at this point, because the extension's Manifest parsing shouldn't permit to register invalid handlers. Maybe we could change the implementation of this method to avoid the confusion.

    The implementation also ignores handlers already confirmed; do you think this alone justifies adding the Maybe prefix ?

    Solomon Kinard

    Acknowledged

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Javier Fernandez
    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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
    Gerrit-Change-Number: 7156864
    Gerrit-PatchSet: 19
    Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
    Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Solomon Kinard <solomo...@chromium.org>
    Gerrit-Attention: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Comment-Date: Thu, 18 Dec 2025 18:39:54 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Javier Fernandez (Gerrit)

    unread,
    Dec 18, 2025, 6:18:32 PM12/18/25
    to Solomon Kinard, Colin Blundell, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org
    Attention needed from Solomon Kinard

    Javier Fernandez added 1 comment

    File chrome/browser/custom_handlers/chrome_protocol_handler_navigation_throttle_browsertests.cc
    Line 92, Patchset 19 (Latest): GURL url("news:test");
    Solomon Kinard . unresolved

    1. For my own understanding, should this be "news://test" for clarity, or is "news:test" intentional here and elsewhere?
    1. Are these schemes already [safelisted](https://html.spec.whatwg.org/multipage/system-state.html#normalize-protocol-handler-parameters)?

    Javier Fernandez

    The hier-part ("//") is only mandatory for for hierarchical URLs (eg HTTP), but it's valid for the "news" scheme. Other than that, there is no special reason to avoid it in these tests; it's a pattern used in other ProtocolHandler tests. Also, it may helps to ensure the GURL parsing is still accepting such kind of URLs.

    Regarding 2) Yes, the "news" scheme is inclided in the safe-list defined in the HTML spec [1] and implemented accordingly in the protocol_handler_utils.cc [2]

    [1] https://html.spec.whatwg.org/#safelisted-scheme
    [2] https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/common/custom_handlers/protocol_handler_utils.cc;l=108;drc=086db2cecef8efb5794e7cb958d474cdf73dd6a8

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Solomon Kinard
    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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
    Gerrit-Change-Number: 7156864
    Gerrit-PatchSet: 19
    Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
    Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
    Gerrit-Reviewer: Solomon Kinard <solomo...@chromium.org>
    Gerrit-Attention: Solomon Kinard <solomo...@chromium.org>
    Gerrit-Comment-Date: Thu, 18 Dec 2025 23:18:15 +0000
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Solomon Kinard (Gerrit)

    unread,
    Dec 19, 2025, 7:32:58 PM12/19/25
    to Javier Fernandez, Colin Blundell, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org
    Attention needed from Javier Fernandez

    Solomon Kinard voted and added 2 comments

    Votes added by Solomon Kinard

    Code-Review+1

    2 comments

    File chrome/browser/custom_handlers/chrome_protocol_handler_navigation_throttle_browsertests.cc
    Line 92, Patchset 19 (Latest): GURL url("news:test");
    Solomon Kinard . resolved

    1. For my own understanding, should this be "news://test" for clarity, or is "news:test" intentional here and elsewhere?
    1. Are these schemes already [safelisted](https://html.spec.whatwg.org/multipage/system-state.html#normalize-protocol-handler-parameters)?

    Javier Fernandez

    The hier-part ("//") is only mandatory for for hierarchical URLs (eg HTTP), but it's valid for the "news" scheme. Other than that, there is no special reason to avoid it in these tests; it's a pattern used in other ProtocolHandler tests. Also, it may helps to ensure the GURL parsing is still accepting such kind of URLs.

    Regarding 2) Yes, the "news" scheme is inclided in the safe-list defined in the HTML spec [1] and implemented accordingly in the protocol_handler_utils.cc [2]

    [1] https://html.spec.whatwg.org/#safelisted-scheme
    [2] https://source.chromium.org/chromium/chromium/src/+/main:third_party/blink/common/custom_handlers/protocol_handler_utils.cc;l=108;drc=086db2cecef8efb5794e7cb958d474cdf73dd6a8

    Solomon Kinard

    Acknowledged

    Line 184, Patchset 19 (Latest):// translate the URL so that the navigation request could be completed
    Solomon Kinard . unresolved

    ```suggestion
    // translate the URL so that the navigation request could be completed.
    ```

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Javier Fernandez
    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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
      Gerrit-Change-Number: 7156864
      Gerrit-PatchSet: 19
      Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
      Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
      Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
      Gerrit-Reviewer: Solomon Kinard <solomo...@chromium.org>
      Gerrit-Attention: Javier Fernandez <jfern...@igalia.com>
      Gerrit-Comment-Date: Sat, 20 Dec 2025 00:32:48 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: Yes
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Javier Fernandez (Gerrit)

      unread,
      Dec 22, 2025, 4:08:45 AM12/22/25
      to Solomon Kinard, Colin Blundell, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org

      Javier Fernandez added 3 comments

      Patchset-level comments
      File-level comment, Patchset 12:
      Solomon Kinard . resolved

      Thanks. Are you requesting a review from me for protocol_handlers_manager_browsertest.cc, or other files too (can you specify)?

      Javier Fernandez

      I think that since you were reviewing the patches of this new Extension API since the beginning you'd have enough context to review the protocol handlers related changes as well.

      Devlin could also do it, but it seem is OOO until December. Do you know if someone else would be more appropriated to review the protocol handler files ?

      Solomon Kinard

      Would you like to let me know which files exactly? You are welcome to request any reviewer that you'd like. I only called out the one file shown in Gerrit with my name associated after clicking "Add owners". I have been asked before, when creating CLs, to specify which reviewer should look at which files, to speed up review and reduce questions. Unfortunately, Gerrit doesn't allow for only specific files, so it's all or nothing. Hence the clarification request. Can you clarify exactly which files you'd like for me to review? It looks like you're the owner of the related files in components/* and I'm only an owner of one file, in this CL.

      Javier Fernandez

      Hi, sorry If I wasn't clear before. I know you are not owner of the //custom_handlers component, but there aren't many. I'd you you to review the whole CL, if possible. The idea is that Colin would rubber-stamp the review later.

      The change affects to the Chrome navigation when there is a protocol handler registered for a specific URL scheme. It shouldn't affect in any other case.

      Javier Fernandez

      Done

      File-level comment, Patchset 20 (Latest):
      Javier Fernandez . resolved

      Thanks for the reviews.

      File chrome/browser/custom_handlers/chrome_protocol_handler_navigation_throttle_browsertests.cc
      Line 184, Patchset 19:// translate the URL so that the navigation request could be completed
      Solomon Kinard . resolved

      ```suggestion
      // translate the URL so that the navigation request could be completed.
      ```

      Javier Fernandez

      Fix applied.

      Open in Gerrit

      Related details

      Attention set is empty
      Submit Requirements:
        • requirement satisfiedCode-Coverage
        • requirement is not 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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
        Gerrit-Change-Number: 7156864
        Gerrit-PatchSet: 20
        Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
        Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
        Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
        Gerrit-Reviewer: Solomon Kinard <solomo...@chromium.org>
        Gerrit-Comment-Date: Mon, 22 Dec 2025 09:08:28 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Javier Fernandez (Gerrit)

        unread,
        Dec 22, 2025, 4:12:23 AM12/22/25
        to Devlin Cronin, Solomon Kinard, Colin Blundell, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org
        Attention needed from Devlin Cronin

        Javier Fernandez added 1 comment

        Patchset-level comments
        Javier Fernandez . resolved

        Hi @rdevlin.cronin

        Colin was the owner I asked initially, but said he lacked enough context, so that's why I have added Solomon to the loop. Solomon gave the lgtm, but it seems I need someone to rubber-stamp the review.

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Devlin Cronin
        Submit Requirements:
        • requirement satisfiedCode-Coverage
        • requirement is not 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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
        Gerrit-Change-Number: 7156864
        Gerrit-PatchSet: 20
        Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
        Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
        Gerrit-Reviewer: Devlin Cronin <rdevlin...@chromium.org>
        Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
        Gerrit-Reviewer: Solomon Kinard <solomo...@chromium.org>
        Gerrit-Attention: Devlin Cronin <rdevlin...@chromium.org>
        Gerrit-Comment-Date: Mon, 22 Dec 2025 09:12:10 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Devlin Cronin (Gerrit)

        unread,
        Dec 22, 2025, 6:45:15 PM12/22/25
        to Javier Fernandez, Balazs Engedy, Devlin Cronin, Solomon Kinard, Colin Blundell, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org
        Attention needed from Balazs Engedy and Javier Fernandez

        Devlin Cronin added 1 comment

        Patchset-level comments
        Javier Fernandez . resolved

        Hi @rdevlin.cronin

        Colin was the owner I asked initially, but said he lacked enough context, so that's why I have added Solomon to the loop. Solomon gave the lgtm, but it seems I need someone to rubber-stamp the review.

        Devlin Cronin

        I'm also not an owner of //chrome/browser/custom_handlers/chrome_protocol_handler_navigation_throttle_browsertests.cc, so I won't be able to stamp. Maybe engedy@? (Added)

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Balazs Engedy
        • Javier Fernandez
        Submit Requirements:
        • requirement satisfiedCode-Coverage
        • requirement is not 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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
        Gerrit-Change-Number: 7156864
        Gerrit-PatchSet: 20
        Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
        Gerrit-Reviewer: Balazs Engedy <eng...@chromium.org>
        Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
        Gerrit-Reviewer: Devlin Cronin <rdevlin...@chromium.org>
        Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
        Gerrit-Reviewer: Solomon Kinard <solomo...@chromium.org>
        Gerrit-Attention: Balazs Engedy <eng...@chromium.org>
        Gerrit-Attention: Javier Fernandez <jfern...@igalia.com>
        Gerrit-Comment-Date: Mon, 22 Dec 2025 23:45:04 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        Comment-In-Reply-To: Javier Fernandez <jfern...@igalia.com>
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Balazs Engedy (Gerrit)

        unread,
        Jan 2, 2026, 5:39:26 AM (7 days ago) Jan 2
        to Javier Fernandez, Devlin Cronin, Solomon Kinard, Colin Blundell, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org
        Attention needed from Javier Fernandez

        Balazs Engedy voted and added 1 comment

        Votes added by Balazs Engedy

        Code-Review+1

        1 comment

        Patchset-level comments
        Balazs Engedy . resolved

        Apologies for the delay, I was already out of office for the holidays. LGTM, thank you for adding an end-to-end test.

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Javier Fernandez
        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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
        Gerrit-Change-Number: 7156864
        Gerrit-PatchSet: 20
        Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
        Gerrit-Reviewer: Balazs Engedy <eng...@chromium.org>
        Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
        Gerrit-Reviewer: Devlin Cronin <rdevlin...@chromium.org>
        Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
        Gerrit-Reviewer: Solomon Kinard <solomo...@chromium.org>
        Gerrit-Attention: Javier Fernandez <jfern...@igalia.com>
        Gerrit-Comment-Date: Fri, 02 Jan 2026 10:39:13 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: Yes
        satisfied_requirement
        open
        diffy

        Javier Fernandez (Gerrit)

        unread,
        Jan 8, 2026, 2:43:02 AM (yesterday) Jan 8
        to Balazs Engedy, Devlin Cronin, Solomon Kinard, Colin Blundell, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org

        Javier Fernandez 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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
        Gerrit-Change-Number: 7156864
        Gerrit-PatchSet: 20
        Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
        Gerrit-Reviewer: Balazs Engedy <eng...@chromium.org>
        Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
        Gerrit-Reviewer: Devlin Cronin <rdevlin...@chromium.org>
        Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
        Gerrit-Reviewer: Solomon Kinard <solomo...@chromium.org>
        Gerrit-Comment-Date: Thu, 08 Jan 2026 07:42:40 +0000
        Gerrit-HasComments: No
        Gerrit-Has-Labels: Yes
        satisfied_requirement
        open
        diffy

        Javier Fernandez (Gerrit)

        unread,
        Jan 8, 2026, 3:55:28 AM (yesterday) Jan 8
        to Balazs Engedy, Devlin Cronin, Solomon Kinard, Colin Blundell, Chromium LUCI CQ, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org

        Javier Fernandez 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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
        Gerrit-Change-Number: 7156864
        Gerrit-PatchSet: 21
        Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
        Gerrit-Reviewer: Balazs Engedy <eng...@chromium.org>
        Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
        Gerrit-Reviewer: Devlin Cronin <rdevlin...@chromium.org>
        Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
        Gerrit-Reviewer: Solomon Kinard <solomo...@chromium.org>
        Gerrit-Comment-Date: Thu, 08 Jan 2026 08:55:10 +0000
        Gerrit-HasComments: No
        Gerrit-Has-Labels: Yes
        satisfied_requirement
        open
        diffy

        Chromium LUCI CQ (Gerrit)

        unread,
        Jan 8, 2026, 4:48:57 AM (yesterday) Jan 8
        to Javier Fernandez, Balazs Engedy, Devlin Cronin, Solomon Kinard, Colin Blundell, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org

        Chromium LUCI CQ submitted the change with unreviewed changes

        Unreviewed changes

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

        ```
        The name of the file: components/custom_handlers/protocol_handler_navigation_throttle.cc
        Insertions: 1, Deletions: 1.

        The diff is too large to show. Please review the diff.
        ```
        ```
        The name of the file: chrome/browser/custom_handlers/chrome_protocol_handler_navigation_throttle_browsertests.cc
        Insertions: 1, Deletions: 1.

        The diff is too large to show. Please review the diff.
        ```
        ```
        The name of the file: components/custom_handlers/protocol_handler_navigation_throttle.h
        Insertions: 1, Deletions: 1.

        The diff is too large to show. Please review the diff.
        ```
        ```
        The name of the file: components/custom_handlers/protocol_handler_navigation_throttle_browsertest.cc
        Insertions: 1, Deletions: 1.

        The diff is too large to show. Please review the diff.
        ```

        Change information

        Commit message:
        Intercept navigation when trying to use an unconfirmed protocol handler

        The new 'protocol_handlers' Manifest Key allows an extension to register
        a few protocol handlers for some specific URL's schemes, similarly to
        what the registerProtocolHandler Web API provides. However, unlike the
        handlers registered via the Web API, these ones are registered under an
        'unconfirmed" state, as explained in the corresponding design doc [1].

        The design document specifies that the user must grant permission to use
        any protocol handlers registered by an extension, at runtime, just
        before it's used. This CL implements the change in the navigation logic
        to add a NavigationThrottle if there is a custom handler for the URL's
        scheme of the ongoing navigation request and such handler is in the
        mentioned 'unconfirmed' state.

        This change affects only to the Custom Handlers logic, implementing a
        dummy logic for the Prompt Dialog functionality. This will be
        implemented in a follow up patch.

        [1]https://docs.google.com/document/d/1e6mSsbjLqBd1_4EAS_AX543vy53oq8SlycNwQ0mZ46g/edit?usp=sharing
        Bug: 40482153
        Change-Id: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
        Reviewed-by: Solomon Kinard <solomo...@chromium.org>
        Reviewed-by: Balazs Engedy <eng...@chromium.org>
        Commit-Queue: Javier Fernandez <jfern...@igalia.com>
        Cr-Commit-Position: refs/heads/main@{#1566155}
        Files:
        • M chrome/browser/chrome_content_browser_client_navigation_throttles.cc
        • A chrome/browser/custom_handlers/chrome_protocol_handler_navigation_throttle_browsertests.cc
        • M chrome/browser/extensions/api/protocol_handlers/protocol_handlers_manager_browsertest.cc
        • M chrome/test/BUILD.gn
        • M components/custom_handlers/BUILD.gn
        • M components/custom_handlers/protocol_handler.cc
        • M components/custom_handlers/protocol_handler.h
        • A components/custom_handlers/protocol_handler_navigation_throttle.cc
        • A components/custom_handlers/protocol_handler_navigation_throttle.h
        • A components/custom_handlers/protocol_handler_navigation_throttle_browsertest.cc
        • M components/custom_handlers/protocol_handler_registry.cc
        • M components/custom_handlers/protocol_handler_registry.h
        • M components/custom_handlers/protocol_handler_registry_unittest.cc
        • M components/custom_handlers/protocol_handler_throttle.cc
        Change size: L
        Delta: 14 files changed, 753 insertions(+), 22 deletions(-)
        Branch: refs/heads/main
        Submit Requirements:
        • requirement satisfiedCode-Review: +1 by Balazs Engedy, +1 by Solomon Kinard
        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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
        Gerrit-Change-Number: 7156864
        Gerrit-PatchSet: 22
        Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
        Gerrit-Reviewer: Balazs Engedy <eng...@chromium.org>
        Gerrit-Reviewer: Chromium LUCI CQ <chromiu...@luci-project-accounts.iam.gserviceaccount.com>
        Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
        Gerrit-Reviewer: Devlin Cronin <rdevlin...@chromium.org>
        Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
        Gerrit-Reviewer: Solomon Kinard <solomo...@chromium.org>
        open
        diffy
        satisfied_requirement

        Ari Chivukula (Gerrit)

        unread,
        Jan 8, 2026, 2:47:27 PM (20 hours ago) Jan 8
        to Chromium LUCI CQ, Javier Fernandez, Balazs Engedy, Devlin Cronin, Solomon Kinard, Colin Blundell, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org

        Ari Chivukula added 1 comment

        Patchset-level comments
        File-level comment, Patchset 22 (Latest):
        Ari Chivukula . resolved

        Looks like this is broken on some mac builders: https://crbug.com/474313288

        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: I3cd66ca1f2e3598406418cae9ebd0dd409bd911e
        Gerrit-Change-Number: 7156864
        Gerrit-PatchSet: 22
        Gerrit-Owner: Javier Fernandez <jfern...@igalia.com>
        Gerrit-Reviewer: Balazs Engedy <eng...@chromium.org>
        Gerrit-Reviewer: Chromium LUCI CQ <chromiu...@luci-project-accounts.iam.gserviceaccount.com>
        Gerrit-Reviewer: Colin Blundell <blun...@chromium.org>
        Gerrit-Reviewer: Devlin Cronin <rdevlin...@chromium.org>
        Gerrit-Reviewer: Javier Fernandez <jfern...@igalia.com>
        Gerrit-Reviewer: Solomon Kinard <solomo...@chromium.org>
        Gerrit-CC: Ari Chivukula <ari...@chromium.org>
        Gerrit-Comment-Date: Thu, 08 Jan 2026 19:47:20 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        satisfied_requirement
        open
        diffy

        Dominic Battre (Gerrit)

        unread,
        2:40 AM (8 hours ago) 2:40 AM
        to Chromium LUCI CQ, Javier Fernandez, Ari Chivukula, Balazs Engedy, Devlin Cronin, Solomon Kinard, Colin Blundell, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org

        Dominic Battre has created a revert of this change

        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: revert
        satisfied_requirement
        open
        diffy
        Reply all
        Reply to author
        Forward
        0 new messages