[iOS] Compile page tools non eligibility reasons [chromium/src : main]

0 views
Skip to first unread message

Francis Beauchamp (Gerrit)

unread,
Mar 18, 2026, 1:47:03 PM (5 days ago) Mar 18
to Chromium LUCI CQ, Adam Arcaro, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org

Francis Beauchamp added 2 comments

File ios/chrome/browser/intelligence/page_action_menu/coordinator/page_action_menu_mediator.mm
Line 139, Patchset 4 (Parent):- (BOOL)isLensAvailableForTraitCollection:(UITraitCollection*)traitCollection {
Francis Beauchamp . unresolved

Note to the reviewer: these functions have been replaced with their "entry point" counterparts, which adds a new abstraction layer for supporting the footer items linked to ineligibility reasons.

File ios/chrome/browser/intelligence/page_action_menu/ui/page_action_menu_view_controller.mm
Line 627, Patchset 4:// Handles toggle switch changes for permission-based features.
Francis Beauchamp . unresolved

Note to the reviewer: I have moved these functions to regroup all of the handlers together.

Open in Gerrit

Related details

Attention set is empty
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: I86220841ee5faa24d3807ecd8b4edd25ccf7231c
Gerrit-Change-Number: 7674377
Gerrit-PatchSet: 5
Gerrit-Owner: Francis Beauchamp <fbeau...@google.com>
Gerrit-Reviewer: Adam Arcaro <ada...@google.com>
Gerrit-Reviewer: Francis Beauchamp <fbeau...@google.com>
Gerrit-Comment-Date: Wed, 18 Mar 2026 17:46:57 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Francis Beauchamp (Gerrit)

unread,
Mar 18, 2026, 2:44:38 PM (5 days ago) Mar 18
to Ibrahim Kanouche, Chromium LUCI CQ, Adam Arcaro, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org
Attention needed from Ibrahim Kanouche

Francis Beauchamp added 1 comment

Patchset-level comments
File-level comment, Patchset 5 (Latest):
Francis Beauchamp . resolved

Sending this your way so you can have a look.

Open in Gerrit

Related details

Attention is currently required from:
  • Ibrahim Kanouche
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: I86220841ee5faa24d3807ecd8b4edd25ccf7231c
Gerrit-Change-Number: 7674377
Gerrit-PatchSet: 5
Gerrit-Owner: Francis Beauchamp <fbeau...@google.com>
Gerrit-Reviewer: Adam Arcaro <ada...@google.com>
Gerrit-Reviewer: Francis Beauchamp <fbeau...@google.com>
Gerrit-Reviewer: Ibrahim Kanouche <kano...@google.com>
Gerrit-Attention: Ibrahim Kanouche <kano...@google.com>
Gerrit-Comment-Date: Wed, 18 Mar 2026 18:44:33 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Francis Beauchamp (Gerrit)

unread,
Mar 19, 2026, 1:50:51 PM (4 days ago) Mar 19
to Ibrahim Kanouche, Chromium LUCI CQ, Adam Arcaro, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org
Attention needed from Ibrahim Kanouche

Francis Beauchamp added 1 comment

Patchset-level comments
File-level comment, Patchset 6 (Latest):
Francis Beauchamp . resolved

Updated with an action identifier instead of an url to follow what was done in the gemini consent screen.

Open in Gerrit

Related details

Attention is currently required from:
  • Ibrahim Kanouche
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: I86220841ee5faa24d3807ecd8b4edd25ccf7231c
Gerrit-Change-Number: 7674377
Gerrit-PatchSet: 6
Gerrit-Owner: Francis Beauchamp <fbeau...@google.com>
Gerrit-Reviewer: Adam Arcaro <ada...@google.com>
Gerrit-Reviewer: Francis Beauchamp <fbeau...@google.com>
Gerrit-Reviewer: Ibrahim Kanouche <kano...@google.com>
Gerrit-Attention: Ibrahim Kanouche <kano...@google.com>
Gerrit-Comment-Date: Thu, 19 Mar 2026 17:50:44 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Nicolas MacBeth (Gerrit)

unread,
Mar 20, 2026, 4:08:36 PM (3 days ago) Mar 20
to Francis Beauchamp, Ibrahim Kanouche, Chromium LUCI CQ, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org
Attention needed from Francis Beauchamp and Ibrahim Kanouche

Nicolas MacBeth added 12 comments

Patchset-level comments
Nicolas MacBeth . resolved

thanks Francis! see a few comments

Commit Message
Line 9, Patchset 6 (Latest):This change introduces the various reasons for features being made non
available within the page tools menu. The UI that supports the feedback
Nicolas MacBeth . unresolved

can you elaborate a little more on the changes in the commit message please?

File ios/chrome/browser/intelligence/page_action_menu/coordinator/page_action_menu_mediator.mm
Line 151, Patchset 6 (Parent): return _geminiTabHelper->IsGeminiAvailableForWebState() &&
Nicolas MacBeth . unresolved

is it intended that we no longer check the WebState eligibility?

Line 161, Patchset 6 (Latest): if (result.ineligibilityReasons().chrome_enterprise) {
// TODO(crbug.com/485297147): Add string when the footer UI gets
// implemented.
return [[PageActionMenuContentEntryPoint alloc]
initWithEnabled:NO
footerItem:
[[ContentEntryPointUnavailabilityItem alloc]
initWithText:@""
andIcon:
[CustomSymbolWithPointSize(
kEnterpriseSymbol, kFeatureRowIconSize)
imageWithRenderingMode:
UIImageRenderingModeAlwaysTemplate]
andActionIdentifier:nil]];
}
Nicolas MacBeth . unresolved

instead, can we add a TODO? I prefer to have landed code in a state that is not broken on its own (no string). thanks!

Line 190, Patchset 6 (Latest): if (!featureAvailable) {
// TODO(crbug.com/485297147): Add string when the footer UI gets
// implemented.
return [[PageActionMenuContentEntryPoint alloc]
initWithEnabled:NO
footerItem:
[[ContentEntryPointUnavailabilityItem alloc]
initWithText:@""
andIcon:
[CustomSymbolWithPointSize(
kEnterpriseSymbol, kFeatureRowIconSize)
imageWithRenderingMode:
UIImageRenderingModeAlwaysTemplate]
andActionIdentifier:nil]];
}

if (!hasDefaultSearchEngine) {
// TODO(crbug.com/485297147): Add string when the footer UI gets
// implemented.
return [[PageActionMenuContentEntryPoint alloc]
initWithEnabled:NO
footerItem:[[ContentEntryPointUnavailabilityItem alloc]
initWithText:@""]];
}
Nicolas MacBeth . unresolved

same TODO comment for these

Line 215, Patchset 6 (Latest): //  Disabled without disclaimer
Nicolas MacBeth . unresolved

nit: period at the end of comment.

File ios/chrome/browser/intelligence/page_action_menu/ui/page_action_menu_content_entry_point.h
Line 31, Patchset 6 (Latest):- (instancetype)initWithEnabled:(BOOL)enabled;
Nicolas MacBeth . unresolved

here and for above interface: set as designated initializer and `NS_UNAVAILABLE` the normal `init` (assuming we only want the user to use these)

Line 14, Patchset 6 (Latest):@property(nonatomic, copy) NSString* text;
@property(nonatomic, strong) UIImage* icon;
@property(nonatomic, copy) NSString* actionIdentifier;
Nicolas MacBeth . unresolved

here and below, will you need them to be public? if not, they can be ivars instead

also, comments for these please

Line 12, Patchset 6 (Latest):@interface ContentEntryPointUnavailabilityItem : NSObject
Nicolas MacBeth . unresolved

nit: for this and interface below, comments

Line 10, Patchset 6 (Latest):@class CrURL;
Nicolas MacBeth . unresolved

still needed?

File ios/chrome/browser/intelligence/page_action_menu/ui/page_action_menu_content_entry_point.mm
Line 31, Patchset 6 (Latest): DCHECK(text);
Nicolas MacBeth . unresolved

prefer `CHECK`

File ios/chrome/browser/intelligence/page_action_menu/ui/page_action_menu_view_controller.mm
Line 205, Patchset 6 (Latest):- (void)pageLoadStatusChanged {
Nicolas MacBeth . unresolved

in the current state of the patch, this no longer checks webstate and only profile level checks, so does this need to stay?

Open in Gerrit

Related details

Attention is currently required from:
  • Francis Beauchamp
  • Ibrahim Kanouche
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: I86220841ee5faa24d3807ecd8b4edd25ccf7231c
Gerrit-Change-Number: 7674377
Gerrit-PatchSet: 6
Gerrit-Owner: Francis Beauchamp <fbeau...@google.com>
Gerrit-Reviewer: Francis Beauchamp <fbeau...@google.com>
Gerrit-Reviewer: Ibrahim Kanouche <kano...@google.com>
Gerrit-Reviewer: Nicolas MacBeth <nicolas...@google.com>
Gerrit-Attention: Ibrahim Kanouche <kano...@google.com>
Gerrit-Attention: Francis Beauchamp <fbeau...@google.com>
Gerrit-Comment-Date: Fri, 20 Mar 2026 20:08:31 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Francis Beauchamp (Gerrit)

unread,
Mar 20, 2026, 4:50:09 PM (3 days ago) Mar 20
to Nicolas MacBeth, Ibrahim Kanouche, Chromium LUCI CQ, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org
Attention needed from Ibrahim Kanouche and Nicolas MacBeth

Francis Beauchamp added 4 comments

Patchset-level comments
Francis Beauchamp . resolved

Answering a few comments before I leave for the weekend. I will be addressing most of them on Monday. Let me know what you prefer for the string thing; I've proposed a way forward that mitigate your concerns, although I thing it won't make an impact in the end.

File ios/chrome/browser/intelligence/page_action_menu/coordinator/page_action_menu_mediator.mm
Line 151, Patchset 6 (Parent): return _geminiTabHelper->IsGeminiAvailableForWebState() &&
Nicolas MacBeth . unresolved

is it intended that we no longer check the WebState eligibility?

Francis Beauchamp

I need to reassess; I've made this CL a while ago and this is possible that it was an oversight on my end.

Line 161, Patchset 6 (Latest): if (result.ineligibilityReasons().chrome_enterprise) {
// TODO(crbug.com/485297147): Add string when the footer UI gets
// implemented.
return [[PageActionMenuContentEntryPoint alloc]
initWithEnabled:NO
footerItem:
[[ContentEntryPointUnavailabilityItem alloc]
initWithText:@""
andIcon:
[CustomSymbolWithPointSize(
kEnterpriseSymbol, kFeatureRowIconSize)
imageWithRenderingMode:
UIImageRenderingModeAlwaysTemplate]
andActionIdentifier:nil]];
}
Nicolas MacBeth . unresolved

instead, can we add a TODO? I prefer to have landed code in a state that is not broken on its own (no string). thanks!

Francis Beauchamp

I would be tempted to agree in spirit, but the UI doesn't exist yet here; none of the parameters in the `footerIem` are going to be reflected anywhere in the page tools. The next cl in the chain will use the footer item to showcase the unavailability, while this CL only relies on the `enabled`. A possible solution to this would be to temporarily make the `footerItem` parameter `nil`, although the end result is exactly the same for all code paths and behaviour.

File ios/chrome/browser/intelligence/page_action_menu/ui/page_action_menu_content_entry_point.h
Nicolas MacBeth . unresolved

still needed?

Francis Beauchamp

Should go in the garbage, I moved from a URL to a simple string identifier since the URLs opened link to internal pages.

Open in Gerrit

Related details

Attention is currently required from:
  • Ibrahim Kanouche
  • Nicolas MacBeth
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: I86220841ee5faa24d3807ecd8b4edd25ccf7231c
Gerrit-Change-Number: 7674377
Gerrit-PatchSet: 6
Gerrit-Owner: Francis Beauchamp <fbeau...@google.com>
Gerrit-Reviewer: Francis Beauchamp <fbeau...@google.com>
Gerrit-Reviewer: Ibrahim Kanouche <kano...@google.com>
Gerrit-Reviewer: Nicolas MacBeth <nicolas...@google.com>
Gerrit-Attention: Nicolas MacBeth <nicolas...@google.com>
Gerrit-Attention: Ibrahim Kanouche <kano...@google.com>
Gerrit-Comment-Date: Fri, 20 Mar 2026 20:50:04 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Nicolas MacBeth <nicolas...@google.com>
satisfied_requirement
unsatisfied_requirement
open
diffy

Nicolas MacBeth (Gerrit)

unread,
Mar 20, 2026, 4:51:41 PM (3 days ago) Mar 20
to Francis Beauchamp, Ibrahim Kanouche, Chromium LUCI CQ, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org
Attention needed from Francis Beauchamp and Ibrahim Kanouche

Nicolas MacBeth added 4 comments

Patchset-level comments
Nicolas MacBeth . resolved

ack! thanks

File ios/chrome/browser/intelligence/page_action_menu/coordinator/page_action_menu_mediator.mm
Line 151, Patchset 6 (Parent): return _geminiTabHelper->IsGeminiAvailableForWebState() &&
Nicolas MacBeth . unresolved

is it intended that we no longer check the WebState eligibility?

Francis Beauchamp

I need to reassess; I've made this CL a while ago and this is possible that it was an oversight on my end.

Nicolas MacBeth

Ack

Line 161, Patchset 6 (Latest): if (result.ineligibilityReasons().chrome_enterprise) {
// TODO(crbug.com/485297147): Add string when the footer UI gets
// implemented.
return [[PageActionMenuContentEntryPoint alloc]
initWithEnabled:NO
footerItem:
[[ContentEntryPointUnavailabilityItem alloc]
initWithText:@""
andIcon:
[CustomSymbolWithPointSize(
kEnterpriseSymbol, kFeatureRowIconSize)
imageWithRenderingMode:
UIImageRenderingModeAlwaysTemplate]
andActionIdentifier:nil]];
}
Nicolas MacBeth . unresolved

instead, can we add a TODO? I prefer to have landed code in a state that is not broken on its own (no string). thanks!

Francis Beauchamp

I would be tempted to agree in spirit, but the UI doesn't exist yet here; none of the parameters in the `footerIem` are going to be reflected anywhere in the page tools. The next cl in the chain will use the footer item to showcase the unavailability, while this CL only relies on the `enabled`. A possible solution to this would be to temporarily make the `footerItem` parameter `nil`, although the end result is exactly the same for all code paths and behaviour.

Nicolas MacBeth

Acknowledged, ok either way then for me

File ios/chrome/browser/intelligence/page_action_menu/ui/page_action_menu_content_entry_point.h
Nicolas MacBeth . unresolved

still needed?

Francis Beauchamp

Should go in the garbage, I moved from a URL to a simple string identifier since the URLs opened link to internal pages.

Nicolas MacBeth

Ack

Open in Gerrit

Related details

Attention is currently required from:
  • Francis Beauchamp
  • Ibrahim Kanouche
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: I86220841ee5faa24d3807ecd8b4edd25ccf7231c
Gerrit-Change-Number: 7674377
Gerrit-PatchSet: 6
Gerrit-Owner: Francis Beauchamp <fbeau...@google.com>
Gerrit-Reviewer: Francis Beauchamp <fbeau...@google.com>
Gerrit-Reviewer: Ibrahim Kanouche <kano...@google.com>
Gerrit-Reviewer: Nicolas MacBeth <nicolas...@google.com>
Gerrit-Attention: Ibrahim Kanouche <kano...@google.com>
Gerrit-Attention: Francis Beauchamp <fbeau...@google.com>
Gerrit-Comment-Date: Fri, 20 Mar 2026 20:51:36 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Nicolas MacBeth <nicolas...@google.com>
Comment-In-Reply-To: Francis Beauchamp <fbeau...@google.com>
satisfied_requirement
unsatisfied_requirement
open
diffy

Nicolas MacBeth (Gerrit)

unread,
Mar 20, 2026, 4:59:46 PM (3 days ago) Mar 20
to Francis Beauchamp, Ibrahim Kanouche, Chromium LUCI CQ, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org
Attention needed from Francis Beauchamp and Ibrahim Kanouche

Nicolas MacBeth added 5 comments

File ios/chrome/browser/intelligence/bwg/model/gemini_profile_eligibility_result.h
Line 37, Patchset 6 (Latest): IneligibilityReasons ineligibilityReasons_;
Nicolas MacBeth . unresolved

nit: `ineligibility_reasons_`

Line 29, Patchset 6 (Latest): const IneligibilityReasons& ineligibilityReasons() const {
Nicolas MacBeth . unresolved

nit: ineligibility_reasons()

Line 26, Patchset 6 (Latest): bool isEligible() const { return is_eligible_; }
Nicolas MacBeth . unresolved

if you do keep this class, `IsEligibile()`

Nicolas MacBeth . unresolved

instead of this whole file/class, what about wrapping ineligibility reasons in a `std::optional`? would be quite idiomatic and also no need for this whole and its maintenance. no a strong opinion, food for though

File ios/chrome/browser/intelligence/page_action_menu/ui/page_action_menu_content_entry_point.mm
Line 44, Patchset 6 (Latest): _actionIdentifier = actionIdentifier;
Nicolas MacBeth . unresolved

`copy` as well?

Gerrit-Comment-Date: Fri, 20 Mar 2026 20:59:42 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Francis Beauchamp (Gerrit)

unread,
10:05 AM (8 hours ago) 10:05 AM
to Nicolas MacBeth, Ibrahim Kanouche, Chromium LUCI CQ, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org
Attention needed from Ibrahim Kanouche and Nicolas MacBeth

Francis Beauchamp added 4 comments

File ios/chrome/browser/intelligence/bwg/model/gemini_profile_eligibility_result.h
Line 26, Patchset 6 (Latest): bool isEligible() const { return is_eligible_; }
Nicolas MacBeth . unresolved

if you do keep this class, `IsEligibile()`

Francis Beauchamp

I think I want all of this object to be immutable. I'll probably make the properties constants. The idea is that the static "builder" functions should be the only way to create this.

Nicolas MacBeth . unresolved

instead of this whole file/class, what about wrapping ineligibility reasons in a `std::optional`? would be quite idiomatic and also no need for this whole and its maintenance. no a strong opinion, food for though

Francis Beauchamp

So my naive long term goal would be to delegate more of the computation of eligibility in here if possible since it has grown a lot over the last few weeks (i.e. remove the cognitive burden of needing ~8 booleans to evaluate eligibility in the service). I'm not certain an `std::optional` gracefully allows for that, but maybe I'me foreseeing something for which we have no need? Would be curious to know your thoughts on this.

File ios/chrome/browser/intelligence/page_action_menu/coordinator/page_action_menu_mediator.mm
Line 161, Patchset 6 (Latest): if (result.ineligibilityReasons().chrome_enterprise) {
// TODO(crbug.com/485297147): Add string when the footer UI gets
// implemented.
return [[PageActionMenuContentEntryPoint alloc]
initWithEnabled:NO
footerItem:
[[ContentEntryPointUnavailabilityItem alloc]
initWithText:@""
andIcon:
[CustomSymbolWithPointSize(
kEnterpriseSymbol, kFeatureRowIconSize)
imageWithRenderingMode:
UIImageRenderingModeAlwaysTemplate]
andActionIdentifier:nil]];
}
Nicolas MacBeth . unresolved

instead, can we add a TODO? I prefer to have landed code in a state that is not broken on its own (no string). thanks!

Francis Beauchamp

I would be tempted to agree in spirit, but the UI doesn't exist yet here; none of the parameters in the `footerIem` are going to be reflected anywhere in the page tools. The next cl in the chain will use the footer item to showcase the unavailability, while this CL only relies on the `enabled`. A possible solution to this would be to temporarily make the `footerItem` parameter `nil`, although the end result is exactly the same for all code paths and behaviour.

Nicolas MacBeth

Acknowledged, ok either way then for me

Francis Beauchamp

I'll do the change, I'll just need to rebase a few CLs down the line and I'm more than happy if it mitigates your concerns.

File ios/chrome/browser/intelligence/page_action_menu/ui/page_action_menu_content_entry_point.h
Line 12, Patchset 6 (Latest):@interface ContentEntryPointUnavailabilityItem : NSObject
Nicolas MacBeth . unresolved

nit: for this and interface below, comments

Francis Beauchamp

Kind of a parallel question; do we generate documentation with our comments? I don't see us using the `///` format which allows for that in iOS code. It comes with the additional drawback of `alt + click` never giving descriptions for any of the commented declarations.

Open in Gerrit

Related details

Attention is currently required from:
  • Ibrahim Kanouche
  • Nicolas MacBeth
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: I86220841ee5faa24d3807ecd8b4edd25ccf7231c
Gerrit-Change-Number: 7674377
Gerrit-PatchSet: 6
Gerrit-Owner: Francis Beauchamp <fbeau...@google.com>
Gerrit-Reviewer: Francis Beauchamp <fbeau...@google.com>
Gerrit-Reviewer: Ibrahim Kanouche <kano...@google.com>
Gerrit-Reviewer: Nicolas MacBeth <nicolas...@google.com>
Gerrit-Attention: Nicolas MacBeth <nicolas...@google.com>
Gerrit-Attention: Ibrahim Kanouche <kano...@google.com>
Gerrit-Comment-Date: Mon, 23 Mar 2026 14:04:57 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Ibrahim Kanouche (Gerrit)

unread,
10:43 AM (7 hours ago) 10:43 AM
to Francis Beauchamp, Nicolas MacBeth, Chromium LUCI CQ, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org
Attention needed from Francis Beauchamp and Nicolas MacBeth

Ibrahim Kanouche added 5 comments

File ios/chrome/browser/intelligence/bwg/model/bwg_service.h
Line 41, Patchset 6 (Latest): // need to know the reason for non eligibility of the profile.
Ibrahim Kanouche . unresolved

Nit: "non eligibility" -> "ineligibility".

File ios/chrome/browser/intelligence/page_action_menu/coordinator/page_action_menu_mediator.mm
Line 150, Patchset 6 (Latest): if (!_geminiService) {
Ibrahim Kanouche . unresolved

This method is missing the check for `_geminiTabHelper`. The previous implementation `isGeminiAvailable` checked for both `_geminiService` and `_geminiTabHelper`. Is this intentional?

Line 157, Patchset 6 (Latest): if (result.isEligible()) {
Ibrahim Kanouche . unresolved

This no longer checks `_geminiTabHelper->IsGeminiAvailableForWebState()`. This means Gemini could be enabled on pages where it is meant to be disabled (like internal chrome:// pages).

You should probably return `initWithEnabled:YES` only if `result.isEligible()` AND `_geminiTabHelper->IsGeminiAvailableForWebState()` are both true.

File ios/chrome/browser/intelligence/page_action_menu/ui/page_action_menu_content_entry_point.h
Line 19, Patchset 6 (Latest):- (instancetype)initWithText:(NSString*)text
Ibrahim Kanouche . unresolved

The `and` prefix for subsequent parameters is usually omitted: `initWithText:(NSString*)text icon:(UIImage*)icon actionIdentifier:(NSString*)actionIdentifier;`

File ios/chrome/browser/intelligence/page_action_menu/ui/page_action_menu_content_entry_point.mm
Line 12, Patchset 6 (Latest): self = [self initWithEnabled:enabled footerItem:nil];
Ibrahim Kanouche . unresolved

This can be simplified to:
`return [self initWithEnabled:enabled footerItem:nil];`

Open in Gerrit

Related details

Attention is currently required from:
  • Francis Beauchamp
  • Nicolas MacBeth
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: I86220841ee5faa24d3807ecd8b4edd25ccf7231c
Gerrit-Change-Number: 7674377
Gerrit-PatchSet: 6
Gerrit-Owner: Francis Beauchamp <fbeau...@google.com>
Gerrit-Reviewer: Francis Beauchamp <fbeau...@google.com>
Gerrit-Reviewer: Ibrahim Kanouche <kano...@google.com>
Gerrit-Reviewer: Nicolas MacBeth <nicolas...@google.com>
Gerrit-Attention: Nicolas MacBeth <nicolas...@google.com>
Gerrit-Attention: Francis Beauchamp <fbeau...@google.com>
Gerrit-Comment-Date: Mon, 23 Mar 2026 14:42:59 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Nicolas MacBeth (Gerrit)

unread,
11:21 AM (7 hours ago) 11:21 AM
to Francis Beauchamp, Ibrahim Kanouche, Chromium LUCI CQ, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org
Attention needed from Francis Beauchamp

Nicolas MacBeth added 2 comments

File ios/chrome/browser/intelligence/bwg/model/gemini_profile_eligibility_result.h
Nicolas MacBeth . unresolved

instead of this whole file/class, what about wrapping ineligibility reasons in a `std::optional`? would be quite idiomatic and also no need for this whole and its maintenance. no a strong opinion, food for though

Francis Beauchamp

So my naive long term goal would be to delegate more of the computation of eligibility in here if possible since it has grown a lot over the last few weeks (i.e. remove the cognitive burden of needing ~8 booleans to evaluate eligibility in the service). I'm not certain an `std::optional` gracefully allows for that, but maybe I'me foreseeing something for which we have no need? Would be curious to know your thoughts on this.

Nicolas MacBeth

std::optional could wrap the presence or not of ineligibility reasons, instead of the class in its current state, but if you prefer to move the actual computation of it down to this class, then that makes more sense to me!

File ios/chrome/browser/intelligence/page_action_menu/ui/page_action_menu_content_entry_point.h
Line 12, Patchset 6 (Latest):@interface ContentEntryPointUnavailabilityItem : NSObject
Nicolas MacBeth . unresolved

nit: for this and interface below, comments

Francis Beauchamp

Kind of a parallel question; do we generate documentation with our comments? I don't see us using the `///` format which allows for that in iOS code. It comes with the additional drawback of `alt + click` never giving descriptions for any of the commented declarations.

Nicolas MacBeth

some people use it, but you'll see it quite rarely indeed!

Open in Gerrit

Related details

Attention is currently required from:
  • Francis Beauchamp
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: I86220841ee5faa24d3807ecd8b4edd25ccf7231c
Gerrit-Change-Number: 7674377
Gerrit-PatchSet: 6
Gerrit-Owner: Francis Beauchamp <fbeau...@google.com>
Gerrit-Reviewer: Francis Beauchamp <fbeau...@google.com>
Gerrit-Reviewer: Ibrahim Kanouche <kano...@google.com>
Gerrit-Reviewer: Nicolas MacBeth <nicolas...@google.com>
Gerrit-Attention: Francis Beauchamp <fbeau...@google.com>
Gerrit-Comment-Date: Mon, 23 Mar 2026 15:21:23 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy
Reply all
Reply to author
Forward
0 new messages