Add view for sign-in promo from Search AI Mode results [chromium/src : main]

0 views
Skip to first unread message

Ryan Sultanem (Gerrit)

unread,
Feb 27, 2026, 5:42:24 AM (6 days ago) Feb 27
to Anthi Orfanou, AyeAye, Amelie Schneider, Chromium LUCI CQ, Chromium Metrics Reviews, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, marq+...@chromium.org, ios-r...@chromium.org, asvitkine...@chromium.org, srahim...@chromium.org
Attention needed from Amelie Schneider and Anthi Orfanou

Ryan Sultanem added 4 comments

Patchset-level comments
File-level comment, Patchset 6:
Anthi Orfanou . unresolved

Hi both @ame...@google.com and @rs...@google.com, I see that both of your have worked / reviewed before changes related to the sign-in promo bubbles (for example bookmark_bubble_view which which I used as my blue print).

Whoever of you has the capacity, could you take a look in this (large) CL?

Ryan Sultanem

I took a quick look and left high level comments that requires Amelie's input (as she is more familiar with the details of this code).

If possible, it could be clearer to separate the AccessPoint addition into a different CL. That would helpful!

File-level comment, Patchset 13 (Latest):
Ryan Sultanem . resolved

Thanks!

File chrome/browser/ui/signin/promos/bubble_signin_promo_delegate.cc
Line 43, Patchset 13 (Latest): case signin_metrics::AccessPoint::kSearchAIModeBubble:
// The AI search mode promo does not relate to to the syncing of any data
// types.
return std::nullopt;
Ryan Sultanem . unresolved

This makes me wonder if this is the right approach - combining the logic directly with the existing access points/data types. Probably @ame...@google.com could provide some more context.

Adding it through this logic comes with some side effects:

  • The dismiss limit will be considered as part of the global limits for the promos considered here (if not part of the SigninLimitsExperiments, which is just an experiment and will probably not launch). Is that ok?
  • The flow is tied to a DataType, which at the end, tries to enable and migrate the data. Which does not seem to be the case for the AI search mode.
  • Potentially other limitations?

I am just trying to ensure that there is an actual benefit in sharing the code (because it comes with conditional logic for the new access point). If there is value in sharing, that is great! Otherwise it seems like this adding some complexity to an existing flow.

Just making sure I have the complete picture here!

File chrome/browser/ui/signin/promos/bubble_signin_promo_view.cc
Line 277, Patchset 13 (Latest): case signin::SignInPromoType::kSearchAIMode:
// TODO(crbug.com/486858498): Implement prefs for rate limiting.
break;
Ryan Sultanem . unresolved

Note; this is part of an experiment related to SigninPromoLimits. Check the start of the function. Which basically makes the dismiss count per data type instead of global (global to all data type promos).

You may find other places where there will be conditional checks based on the feature flag activation or not.

Open in Gerrit

Related details

Attention is currently required from:
  • Amelie Schneider
  • Anthi Orfanou
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: I39e47ead59d735626eba4cda6032ffcd1c90a27b
Gerrit-Change-Number: 7613709
Gerrit-PatchSet: 13
Gerrit-Owner: Anthi Orfanou <ant...@google.com>
Gerrit-Reviewer: Amelie Schneider <ame...@google.com>
Gerrit-Reviewer: Anthi Orfanou <ant...@google.com>
Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
Gerrit-CC: Ryan Sultanem <rs...@google.com>
Gerrit-Attention: Amelie Schneider <ame...@google.com>
Gerrit-Attention: Anthi Orfanou <ant...@google.com>
Gerrit-Comment-Date: Fri, 27 Feb 2026 10:42:06 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Anthi Orfanou <ant...@google.com>
satisfied_requirement
unsatisfied_requirement
open
diffy

Amelie Schneider (Gerrit)

unread,
Feb 27, 2026, 6:14:34 AM (6 days ago) Feb 27
to Anthi Orfanou, AyeAye, Ryan Sultanem, Chromium LUCI CQ, Chromium Metrics Reviews, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, marq+...@chromium.org, ios-r...@chromium.org, asvitkine...@chromium.org, srahim...@chromium.org
Attention needed from Anthi Orfanou

Amelie Schneider added 2 comments

Patchset-level comments
Anthi Orfanou . unresolved

Hi both @ame...@google.com and @rs...@google.com, I see that both of your have worked / reviewed before changes related to the sign-in promo bubbles (for example bookmark_bubble_view which which I used as my blue print).

Whoever of you has the capacity, could you take a look in this (large) CL?

Ryan Sultanem

I took a quick look and left high level comments that requires Amelie's input (as she is more familiar with the details of this code).

If possible, it could be clearer to separate the AccessPoint addition into a different CL. That would helpful!

Amelie Schneider

+1 for adding the access point in a separate CL

Amelie Schneider . resolved

Thanks Anthi! I will take a deeper look, just wanted to leave this comment for now :)

Open in Gerrit

Related details

Attention is currently required from:
  • Anthi Orfanou
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: I39e47ead59d735626eba4cda6032ffcd1c90a27b
Gerrit-Change-Number: 7613709
Gerrit-PatchSet: 13
Gerrit-Owner: Anthi Orfanou <ant...@google.com>
Gerrit-Reviewer: Amelie Schneider <ame...@google.com>
Gerrit-Reviewer: Anthi Orfanou <ant...@google.com>
Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
Gerrit-CC: Ryan Sultanem <rs...@google.com>
Gerrit-Attention: Anthi Orfanou <ant...@google.com>
Gerrit-Comment-Date: Fri, 27 Feb 2026 11:14:13 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Ryan Sultanem <rs...@google.com>
Comment-In-Reply-To: Anthi Orfanou <ant...@google.com>
satisfied_requirement
unsatisfied_requirement
open
diffy

Anthi Orfanou (Gerrit)

unread,
Feb 27, 2026, 8:55:15 AM (6 days ago) Feb 27
to AyeAye, Amelie Schneider, Ryan Sultanem, Chromium LUCI CQ, Chromium Metrics Reviews, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, marq+...@chromium.org, ios-r...@chromium.org, asvitkine...@chromium.org, srahim...@chromium.org
Attention needed from Amelie Schneider and Ryan Sultanem

Anthi Orfanou added 4 comments

Patchset-level comments
Anthi Orfanou . unresolved

Hi both @ame...@google.com and @rs...@google.com, I see that both of your have worked / reviewed before changes related to the sign-in promo bubbles (for example bookmark_bubble_view which which I used as my blue print).

Whoever of you has the capacity, could you take a look in this (large) CL?

Ryan Sultanem

I took a quick look and left high level comments that requires Amelie's input (as she is more familiar with the details of this code).

If possible, it could be clearer to separate the AccessPoint addition into a different CL. That would helpful!

Amelie Schneider

+1 for adding the access point in a separate CL

Anthi Orfanou

Done, good point, I've moved the access point to https://chromium-review.git.corp.google.com/c/chromium/src/+/7616929

File chrome/browser/ui/signin/promos/bubble_signin_promo_delegate.cc
Line 43, Patchset 13: case signin_metrics::AccessPoint::kSearchAIModeBubble:

// The AI search mode promo does not relate to to the syncing of any data
// types.
return std::nullopt;
Ryan Sultanem . unresolved

This makes me wonder if this is the right approach - combining the logic directly with the existing access points/data types. Probably @ame...@google.com could provide some more context.

Adding it through this logic comes with some side effects:

  • The dismiss limit will be considered as part of the global limits for the promos considered here (if not part of the SigninLimitsExperiments, which is just an experiment and will probably not launch). Is that ok?
  • The flow is tied to a DataType, which at the end, tries to enable and migrate the data. Which does not seem to be the case for the AI search mode.
  • Potentially other limitations?

I am just trying to ensure that there is an actual benefit in sharing the code (because it comes with conditional logic for the new access point). If there is value in sharing, that is great! Otherwise it seems like this adding some complexity to an existing flow.

Just making sure I have the complete picture here!

Anthi Orfanou

The reason I looked into the BubbleSignInPromoView as a building block because it provides us already with the the UI to use (everything within the yellow block https://screenshot.googleplex.com/5w27t29G7P97iQG from directly from re-using this view) including handful helpers for the account state and the triggering of the sign-in logic from the button.

I think the benefits we get from this re use are already enough.

I noticed the delegate focuses on the sync data types handing (although the name and the description are more generic).
One approach I can think of, is to produce another delegate for my use case (and extend the existing one).

File chrome/browser/ui/signin/promos/bubble_signin_promo_view.cc
Line 277, Patchset 13: case signin::SignInPromoType::kSearchAIMode:

// TODO(crbug.com/486858498): Implement prefs for rate limiting.
break;
Ryan Sultanem . unresolved

Note; this is part of an experiment related to SigninPromoLimits. Check the start of the function. Which basically makes the dismiss count per data type instead of global (global to all data type promos).

You may find other places where there will be conditional checks based on the feature flag activation or not.

Anthi Orfanou

For now I have added this comment in all the places that we could potentially need to adapt for the rate limits. It might be the case than we don't need them all, as this new promo comes with it's own rate limits requirements from the PRD.

I marked all those places because I want to revisit them in the upcoming change where I will focus on the rate limits.

File chrome/browser/ui/views/search_ai_mode_signin_promo_manager.h
Line 1, Patchset 7:// Copyright 2026 The Chromium Authors
Anthi Orfanou . unresolved

I think I should move them to a more suitable location.
chrome/browser/ui/signin/promos/? Other recomendations?

Anthi Orfanou

I've made a new search_ai_mode/ dir in ui/views but let me knwow about other potential locations.

Open in Gerrit

Related details

Attention is currently required from:
  • Amelie Schneider
  • Ryan Sultanem
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: I39e47ead59d735626eba4cda6032ffcd1c90a27b
Gerrit-Change-Number: 7613709
Gerrit-PatchSet: 16
Gerrit-Owner: Anthi Orfanou <ant...@google.com>
Gerrit-Reviewer: Amelie Schneider <ame...@google.com>
Gerrit-Reviewer: Anthi Orfanou <ant...@google.com>
Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
Gerrit-CC: Ryan Sultanem <rs...@google.com>
Gerrit-Attention: Amelie Schneider <ame...@google.com>
Gerrit-Attention: Ryan Sultanem <rs...@google.com>
Gerrit-Comment-Date: Fri, 27 Feb 2026 13:55:00 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Amelie Schneider <ame...@google.com>
satisfied_requirement
unsatisfied_requirement
open
diffy

Amelie Schneider (Gerrit)

unread,
Feb 27, 2026, 11:26:12 AM (6 days ago) Feb 27
to Anthi Orfanou, AyeAye, Ryan Sultanem, Chromium LUCI CQ, Chromium Metrics Reviews, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, marq+...@chromium.org, ios-r...@chromium.org, asvitkine...@chromium.org, srahim...@chromium.org
Attention needed from Anthi Orfanou

Amelie Schneider added 3 comments

Patchset-level comments
File-level comment, Patchset 16 (Latest):
Amelie Schneider . resolved

Thanks!

File chrome/browser/ui/signin/promos/bubble_signin_promo_delegate.cc
Line 43, Patchset 13: case signin_metrics::AccessPoint::kSearchAIModeBubble:
// The AI search mode promo does not relate to to the syncing of any data
// types.
return std::nullopt;
Ryan Sultanem . unresolved

This makes me wonder if this is the right approach - combining the logic directly with the existing access points/data types. Probably @ame...@google.com could provide some more context.

Adding it through this logic comes with some side effects:

  • The dismiss limit will be considered as part of the global limits for the promos considered here (if not part of the SigninLimitsExperiments, which is just an experiment and will probably not launch). Is that ok?
  • The flow is tied to a DataType, which at the end, tries to enable and migrate the data. Which does not seem to be the case for the AI search mode.
  • Potentially other limitations?

I am just trying to ensure that there is an actual benefit in sharing the code (because it comes with conditional logic for the new access point). If there is value in sharing, that is great! Otherwise it seems like this adding some complexity to an existing flow.

Just making sure I have the complete picture here!

Anthi Orfanou

The reason I looked into the BubbleSignInPromoView as a building block because it provides us already with the the UI to use (everything within the yellow block https://screenshot.googleplex.com/5w27t29G7P97iQG from directly from re-using this view) including handful helpers for the account state and the triggering of the sign-in logic from the button.

I think the benefits we get from this re use are already enough.

I noticed the delegate focuses on the sync data types handing (although the name and the description are more generic).
One approach I can think of, is to produce another delegate for my use case (and extend the existing one).

Amelie Schneider

I agree with reusing the existing `BubbleSignInPromoView`, as visually they are very similar. However, it seems like `BubbleSignInPromoDelegate::OnSignIn` will have to be quite different - assuming that we will need to pass another callback instead of `SelectTypeAndMigrateLocalDataItemsWhenActive`.

I think I like the idea of branching out `OnSignIn()` based on the `access_point_`, e.g. after the call to `SignInFromSingleAccountPromo()`. Another delegate is also an option but I think that for now it is not too big, and the duplicated code also quite minimal when you exclude everything that has to do with data types.

So something like `MaybeMoveDataTypeAfterSignIn()` and `MaybeOpenAIModeAfterSignIn()` ?

File chrome/browser/ui/views/search_ai_mode_signin_promo_manager.h
Line 1, Patchset 7:// Copyright 2026 The Chromium Authors
Anthi Orfanou . resolved

I think I should move them to a more suitable location.
chrome/browser/ui/signin/promos/? Other recomendations?

Anthi Orfanou

I've made a new search_ai_mode/ dir in ui/views but let me knwow about other potential locations.

Amelie Schneider

I think this is a good place, `chrome/browser/ui/signin/promos` has only type/access point agnostic classes.

Open in Gerrit

Related details

Attention is currently required from:
  • Anthi Orfanou
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: I39e47ead59d735626eba4cda6032ffcd1c90a27b
Gerrit-Change-Number: 7613709
Gerrit-PatchSet: 16
Gerrit-Owner: Anthi Orfanou <ant...@google.com>
Gerrit-Reviewer: Amelie Schneider <ame...@google.com>
Gerrit-Reviewer: Anthi Orfanou <ant...@google.com>
Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
Gerrit-CC: Ryan Sultanem <rs...@google.com>
Gerrit-Attention: Anthi Orfanou <ant...@google.com>
Gerrit-Comment-Date: Fri, 27 Feb 2026 16:25:58 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

Ryan Sultanem (Gerrit)

unread,
Feb 27, 2026, 1:03:10 PM (6 days ago) Feb 27
to Anthi Orfanou, AyeAye, Amelie Schneider, Chromium LUCI CQ, Chromium Metrics Reviews, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, marq+...@chromium.org, ios-r...@chromium.org, asvitkine...@chromium.org, srahim...@chromium.org
Attention needed from Anthi Orfanou

Ryan Sultanem added 1 comment

File chrome/browser/ui/signin/promos/bubble_signin_promo_delegate.cc
Line 43, Patchset 13: case signin_metrics::AccessPoint::kSearchAIModeBubble:
// The AI search mode promo does not relate to to the syncing of any data
// types.
return std::nullopt;
Ryan Sultanem . unresolved

This makes me wonder if this is the right approach - combining the logic directly with the existing access points/data types. Probably @ame...@google.com could provide some more context.

Adding it through this logic comes with some side effects:

  • The dismiss limit will be considered as part of the global limits for the promos considered here (if not part of the SigninLimitsExperiments, which is just an experiment and will probably not launch). Is that ok?
  • The flow is tied to a DataType, which at the end, tries to enable and migrate the data. Which does not seem to be the case for the AI search mode.
  • Potentially other limitations?

I am just trying to ensure that there is an actual benefit in sharing the code (because it comes with conditional logic for the new access point). If there is value in sharing, that is great! Otherwise it seems like this adding some complexity to an existing flow.

Just making sure I have the complete picture here!

Anthi Orfanou

The reason I looked into the BubbleSignInPromoView as a building block because it provides us already with the the UI to use (everything within the yellow block https://screenshot.googleplex.com/5w27t29G7P97iQG from directly from re-using this view) including handful helpers for the account state and the triggering of the sign-in logic from the button.

I think the benefits we get from this re use are already enough.

I noticed the delegate focuses on the sync data types handing (although the name and the description are more generic).
One approach I can think of, is to produce another delegate for my use case (and extend the existing one).

Amelie Schneider

I agree with reusing the existing `BubbleSignInPromoView`, as visually they are very similar. However, it seems like `BubbleSignInPromoDelegate::OnSignIn` will have to be quite different - assuming that we will need to pass another callback instead of `SelectTypeAndMigrateLocalDataItemsWhenActive`.

I think I like the idea of branching out `OnSignIn()` based on the `access_point_`, e.g. after the call to `SignInFromSingleAccountPromo()`. Another delegate is also an option but I think that for now it is not too big, and the duplicated code also quite minimal when you exclude everything that has to do with data types.

So something like `MaybeMoveDataTypeAfterSignIn()` and `MaybeOpenAIModeAfterSignIn()` ?

Ryan Sultanem

Noted for re-using the view - that is definitley a good idea.

I also like the idea of creating a different delegate, which is what I had in mind if we would want to reuse this view. Maybe renaming the existing delegate to be specific to what it is doing? Taking care of the data/dataype basically.

So I would be more inclined to that; as creating a new delegate would be much clearer in my opinion and you would not need to do modifications or add conditional checks in the existing delegate.

Gerrit-Comment-Date: Fri, 27 Feb 2026 18:02:50 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Amelie Schneider <ame...@google.com>
satisfied_requirement
unsatisfied_requirement
open
diffy

Anthi Orfanou (Gerrit)

unread,
Feb 27, 2026, 1:17:28 PM (6 days ago) Feb 27
to AyeAye, Amelie Schneider, Ryan Sultanem, Chromium LUCI CQ, Chromium Metrics Reviews, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, marq+...@chromium.org, ios-r...@chromium.org, asvitkine...@chromium.org, srahim...@chromium.org

Anthi Orfanou added 1 comment

File chrome/browser/ui/signin/promos/bubble_signin_promo_delegate.cc
Anthi Orfanou

It turns out that the conditional logic is also clear, and can be simplified a lot compare to my previous patchset. Basically everything after SignInFromSingleAccountPromo should be invokes only if we have a valid data id (PS17). But it should be easy to convert into a delegate, I will produce this approach too (upcoming PS) so we can make the final decision.

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: I39e47ead59d735626eba4cda6032ffcd1c90a27b
Gerrit-Change-Number: 7613709
Gerrit-PatchSet: 17
Gerrit-Owner: Anthi Orfanou <ant...@google.com>
Gerrit-Reviewer: Amelie Schneider <ame...@google.com>
Gerrit-Reviewer: Anthi Orfanou <ant...@google.com>
Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
Gerrit-CC: Ryan Sultanem <rs...@google.com>
Gerrit-Comment-Date: Fri, 27 Feb 2026 18:17:14 +0000
satisfied_requirement
unsatisfied_requirement
open
diffy

Anthi Orfanou (Gerrit)

unread,
Mar 4, 2026, 1:34:45 PM (yesterday) Mar 4
to AyeAye, Amelie Schneider, Ryan Sultanem, Chromium LUCI CQ, Chromium Metrics Reviews, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, gcasto+w...@chromium.org, vasilii+watchlis...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, marq+...@chromium.org, ios-r...@chromium.org, asvitkine...@chromium.org, srahim...@chromium.org
Attention needed from Amelie Schneider and Ryan Sultanem

Anthi Orfanou added 2 comments

Patchset-level comments
File-level comment, Patchset 6:
Anthi Orfanou . resolved

Hi both @ame...@google.com and @rs...@google.com, I see that both of your have worked / reviewed before changes related to the sign-in promo bubbles (for example bookmark_bubble_view which which I used as my blue print).

Whoever of you has the capacity, could you take a look in this (large) CL?

Ryan Sultanem

I took a quick look and left high level comments that requires Amelie's input (as she is more familiar with the details of this code).

If possible, it could be clearer to separate the AccessPoint addition into a different CL. That would helpful!

Amelie Schneider

+1 for adding the access point in a separate CL

Anthi Orfanou

Done, good point, I've moved the access point to https://chromium-review.git.corp.google.com/c/chromium/src/+/7616929

Anthi Orfanou

Done

File chrome/browser/ui/signin/promos/bubble_signin_promo_view.cc
Line 277, Patchset 13: case signin::SignInPromoType::kSearchAIMode:
// TODO(crbug.com/486858498): Implement prefs for rate limiting.
break;
Ryan Sultanem . resolved

Note; this is part of an experiment related to SigninPromoLimits. Check the start of the function. Which basically makes the dismiss count per data type instead of global (global to all data type promos).

You may find other places where there will be conditional checks based on the feature flag activation or not.

Anthi Orfanou

For now I have added this comment in all the places that we could potentially need to adapt for the rate limits. It might be the case than we don't need them all, as this new promo comes with it's own rate limits requirements from the PRD.

I marked all those places because I want to revisit them in the upcoming change where I will focus on the rate limits.

Anthi Orfanou

Acknowledged

Open in Gerrit

Related details

Attention is currently required from:
  • Amelie Schneider
  • Ryan Sultanem
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: I39e47ead59d735626eba4cda6032ffcd1c90a27b
Gerrit-Change-Number: 7613709
Gerrit-PatchSet: 19
Gerrit-Owner: Anthi Orfanou <ant...@google.com>
Gerrit-Reviewer: Amelie Schneider <ame...@google.com>
Gerrit-Reviewer: Anthi Orfanou <ant...@google.com>
Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
Gerrit-CC: Ryan Sultanem <rs...@google.com>
Gerrit-Attention: Amelie Schneider <ame...@google.com>
Gerrit-Attention: Ryan Sultanem <rs...@google.com>
Gerrit-Comment-Date: Wed, 04 Mar 2026 18:34:27 +0000
satisfied_requirement
unsatisfied_requirement
open
diffy

Anthi Orfanou (Gerrit)

unread,
8:58 AM (5 hours ago) 8:58 AM
to AyeAye, Amelie Schneider, Ryan Sultanem, Chromium LUCI CQ, Chromium Metrics Reviews, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, gcasto+w...@chromium.org, vasilii+watchlis...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, marq+...@chromium.org, ios-r...@chromium.org, asvitkine...@chromium.org, srahim...@chromium.org
Attention needed from Amelie Schneider and Ryan Sultanem

Anthi Orfanou added 1 comment

File chrome/browser/ui/signin/promos/bubble_signin_promo_delegate.cc
Line 43, Patchset 13: case signin_metrics::AccessPoint::kSearchAIModeBubble:
// The AI search mode promo does not relate to to the syncing of any data
// types.
return std::nullopt;
Ryan Sultanem . resolved

This makes me wonder if this is the right approach - combining the logic directly with the existing access points/data types. Probably @ame...@google.com could provide some more context.

Adding it through this logic comes with some side effects:

  • The dismiss limit will be considered as part of the global limits for the promos considered here (if not part of the SigninLimitsExperiments, which is just an experiment and will probably not launch). Is that ok?
  • The flow is tied to a DataType, which at the end, tries to enable and migrate the data. Which does not seem to be the case for the AI search mode.
  • Potentially other limitations?

I am just trying to ensure that there is an actual benefit in sharing the code (because it comes with conditional logic for the new access point). If there is value in sharing, that is great! Otherwise it seems like this adding some complexity to an existing flow.

Just making sure I have the complete picture here!

Anthi Orfanou

The reason I looked into the BubbleSignInPromoView as a building block because it provides us already with the the UI to use (everything within the yellow block https://screenshot.googleplex.com/5w27t29G7P97iQG from directly from re-using this view) including handful helpers for the account state and the triggering of the sign-in logic from the button.

I think the benefits we get from this re use are already enough.

I noticed the delegate focuses on the sync data types handing (although the name and the description are more generic).
One approach I can think of, is to produce another delegate for my use case (and extend the existing one).

Amelie Schneider

I agree with reusing the existing `BubbleSignInPromoView`, as visually they are very similar. However, it seems like `BubbleSignInPromoDelegate::OnSignIn` will have to be quite different - assuming that we will need to pass another callback instead of `SelectTypeAndMigrateLocalDataItemsWhenActive`.

I think I like the idea of branching out `OnSignIn()` based on the `access_point_`, e.g. after the call to `SignInFromSingleAccountPromo()`. Another delegate is also an option but I think that for now it is not too big, and the duplicated code also quite minimal when you exclude everything that has to do with data types.

So something like `MaybeMoveDataTypeAfterSignIn()` and `MaybeOpenAIModeAfterSignIn()` ?

Ryan Sultanem

Noted for re-using the view - that is definitley a good idea.

I also like the idea of creating a different delegate, which is what I had in mind if we would want to reuse this view. Maybe renaming the existing delegate to be specific to what it is doing? Taking care of the data/dataype basically.

So I would be more inclined to that; as creating a new delegate would be much clearer in my opinion and you would not need to do modifications or add conditional checks in the existing delegate.

Anthi Orfanou

It turns out that the conditional logic is also clear, and can be simplified a lot compare to my previous patchset. Basically everything after SignInFromSingleAccountPromo should be invokes only if we have a valid data id (PS17). But it should be easy to convert into a delegate, I will produce this approach too (upcoming PS) so we can make the final decision.

Anthi Orfanou

Lates PS contains the delegate approach.

Open in Gerrit

Related details

Attention is currently required from:
  • Amelie Schneider
  • Ryan Sultanem
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: I39e47ead59d735626eba4cda6032ffcd1c90a27b
    Gerrit-Change-Number: 7613709
    Gerrit-PatchSet: 21
    Gerrit-Owner: Anthi Orfanou <ant...@google.com>
    Gerrit-Reviewer: Amelie Schneider <ame...@google.com>
    Gerrit-Reviewer: Anthi Orfanou <ant...@google.com>
    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
    Gerrit-CC: Ryan Sultanem <rs...@google.com>
    Gerrit-Attention: Amelie Schneider <ame...@google.com>
    Gerrit-Attention: Ryan Sultanem <rs...@google.com>
    Gerrit-Comment-Date: Thu, 05 Mar 2026 13:57:49 +0000
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Anthi Orfanou (Gerrit)

    unread,
    10:56 AM (3 hours ago) 10:56 AM
    to David Roger, AyeAye, Amelie Schneider, Chromium LUCI CQ, Chromium Metrics Reviews, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, gcasto+w...@chromium.org, vasilii+watchlis...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, marq+...@chromium.org, ios-r...@chromium.org, asvitkine...@chromium.org, srahim...@chromium.org
    Attention needed from Amelie Schneider and David Roger

    Anthi Orfanou added 1 comment

    Patchset-level comments
    File-level comment, Patchset 21 (Latest):
    Anthi Orfanou . resolved

    +David for owner's approval for:

    chrome/browser/ui/views/autofill/ address_sign_in_promo_view.cc
    chrome/browser/ui/views/autofill/ address_sign_in_promo_view.cc
    chrome/browser/ui/views/bookmarks/ bookmark_bubble_view.cc
    chrome/browser/ui/views/bookmarks/ bookmark_sign_in_promo_bubble_view.cc
    chrome/browser/ui/views/search_ai_mode/ signin_promo_manager.h
    chrome/browser/ui/views/search_ai_mode/ signin_promo_manager.cc
    chrome/browser/ui/views/search_ai_mode/ signin_promo_view.h
    chrome/browser/ui/views/search_ai_mode/ signin_promo_view.cc
    chrome/browser/ui/views/extensions/ extension_post_install_dialog_view_utils.cc
    chrome/browser/ui/views/extensions/ extension_post_install_dialog_view_utils_signin_browsertest.cc
    chrome/browser/ui/views/passwords/ password_save_update_view.cc
    chrome/app/ chromium_strings.grd
    chrome/app/ google_chrome_strings.grd
    chrome/browser/ui/ BUILD.gn

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Amelie Schneider
    • David Roger
    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: I39e47ead59d735626eba4cda6032ffcd1c90a27b
    Gerrit-Change-Number: 7613709
    Gerrit-PatchSet: 21
    Gerrit-Owner: Anthi Orfanou <ant...@google.com>
    Gerrit-Reviewer: Amelie Schneider <ame...@google.com>
    Gerrit-Reviewer: Anthi Orfanou <ant...@google.com>
    Gerrit-Reviewer: David Roger <dro...@chromium.org>
    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
    Gerrit-Attention: David Roger <dro...@chromium.org>
    Gerrit-Attention: Amelie Schneider <ame...@google.com>
    Gerrit-Comment-Date: Thu, 05 Mar 2026 15:55:50 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Amelie Schneider (Gerrit)

    unread,
    12:51 PM (1 hour ago) 12:51 PM
    to Anthi Orfanou, David Roger, AyeAye, Chromium LUCI CQ, Chromium Metrics Reviews, chromium...@chromium.org, chromium-a...@chromium.org, extension...@chromium.org, gcasto+w...@chromium.org, vasilii+watchlis...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, marq+...@chromium.org, ios-r...@chromium.org, asvitkine...@chromium.org, srahim...@chromium.org
    Attention needed from Anthi Orfanou and David Roger

    Amelie Schneider added 9 comments

    Patchset-level comments
    Amelie Schneider . unresolved

    Did a first pass, this generally looks good, thanks! :)

    One thing I was wondering if it could make sense to make the callsites oblivious to which delegate to use, and to have an optional `DataType` parameter for the `BubbleSigninPromoView` instead. Not sure if this is better though. What do you think?

    File chrome/browser/ui/signin/promos/bubble_signin_promo_delegate.cc
    Line 68, Patchset 21 (Latest): if (!signin::IsSignInPromo(access_point_)) {
    Line 173, Patchset 21 (Latest): // No-op.
    Amelie Schneider . unresolved

    Will something else happen here at one point?

    File chrome/browser/ui/signin/promos/bubble_signin_promo_view.cc
    Line 94, Patchset 21 (Latest): case SignedInState::kSignInPending:
    Amelie Schneider . unresolved

    We might want a "Verify it's you" string for the pending state?

    File chrome/browser/ui/views/search_ai_mode/signin_promo_manager.cc
    Line 26, Patchset 21 (Latest): if (!base::FeatureList::IsEnabled(switches::kEnableSearchAIModeSigninPromo)) {
    Amelie Schneider . unresolved

    Could be a CHECK instead, since we should have `ShouldShowSearchAIModeSignInPromo(Profile& profile)` in signin_promo_util.cc which returns false without the flag

    And then only call `ShowPromo` if that returns true

    Line 46, Patchset 21 (Latest): // TODO(crbug.com/486858498): Invoke method to check conditions for showing
    Amelie Schneider . unresolved

    I think this should also be in `ShouldShowSearchAIModeSignInPromo()`

    Line 62, Patchset 21 (Latest): promo_view_->ShowForReason(LocationBarBubbleDelegateView::AUTOMATIC);
    Amelie Schneider . unresolved

    With this, the button is probably not focused which makes the screen reader not pick it up. I would recommend using `USER_GESTURE`, but might be worth discussing with UX

    File chrome/browser/ui/views/search_ai_mode/signin_promo_view.cc
    Line 42, Patchset 21 (Latest): set_fixed_width(kViewWidth);
    Amelie Schneider . unresolved

    We should use the layout provider:

    ```
    set_fixed_width(views::LayoutProvider::Get()->GetDistanceMetric(
    views::DISTANCE_BUBBLE_PREFERRED_WIDTH));
    ```
    Line 47, Patchset 21 (Latest): // There no synced data type linked to this sign-in promo.
    Amelie Schneider . unresolved

    optional nit: `There is no synced...`, or just remove the comment (since this and the other delegate are of equal hierarchy)

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Anthi Orfanou
    • David Roger
    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: I39e47ead59d735626eba4cda6032ffcd1c90a27b
      Gerrit-Change-Number: 7613709
      Gerrit-PatchSet: 21
      Gerrit-Owner: Anthi Orfanou <ant...@google.com>
      Gerrit-Reviewer: Amelie Schneider <ame...@google.com>
      Gerrit-Reviewer: Anthi Orfanou <ant...@google.com>
      Gerrit-Reviewer: David Roger <dro...@chromium.org>
      Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
      Gerrit-Attention: David Roger <dro...@chromium.org>
      Gerrit-Attention: Anthi Orfanou <ant...@google.com>
      Gerrit-Comment-Date: Thu, 05 Mar 2026 17:51:20 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy
      Reply all
      Reply to author
      Forward
      0 new messages