[B4B] Adapt Synthetic field trials for Bookmarks Bubble event [chromium/src : main]

1 view
Skip to first unread message

Ryan Sultanem (Gerrit)

unread,
May 21, 2025, 11:30:35 AM5/21/25
to James Lee, Chromium LUCI CQ, chromium...@chromium.org
Attention needed from James Lee

Ryan Sultanem added 1 comment

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

Hey James, I have made some adaptations to the Synthetic Field trial groups based on your suggestions, thanks for pointing out the issues in the initial setup!

Please let me know what you think!

Open in Gerrit

Related details

Attention is currently required from:
  • James Lee
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Review
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: Id3239b4003dbcc5abde8eb3457eda956fd3af3f8
Gerrit-Change-Number: 6574782
Gerrit-PatchSet: 1
Gerrit-Owner: Ryan Sultanem <rs...@google.com>
Gerrit-Reviewer: James Lee <ljj...@google.com>
Gerrit-Reviewer: Ryan Sultanem <rs...@google.com>
Gerrit-Attention: James Lee <ljj...@google.com>
Gerrit-Comment-Date: Wed, 21 May 2025 15:30:22 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

James Lee (Gerrit)

unread,
May 21, 2025, 12:47:07 PM5/21/25
to Ryan Sultanem, Chromium LUCI CQ, chromium...@chromium.org
Attention needed from Ryan Sultanem

James Lee added 3 comments

Patchset-level comments
James Lee . unresolved

Hi Ryan, thanks for this rework - I still have high-level comments/questions (I haven't done a full review).

These are around how we deal with multi-profile, and also which users should be included in the "Sync" (aka control) group.

My intuition here is that we want:

  • Control (aka "Sync"): clients who have at some point completed sign in from the bookmarks promo while in the control group of the main experiment
  • Treatment (aka "Butter"): clients who have at some point completed sign in from the bookmarks promo, while in the enabled group of the main experiment

I think this state should be per-client, not per profile, and I don't think it should be reset on sign out (because the client has still experienced the feature).

This is a subtle setup, and not one I have experiment with, so I think it would be good to discuss this with Lina as well as another round of review with a metrics reviewer.

File components/signin/public/base/signin_prefs.cc
Line 91, Patchset 1 (Latest):constexpr char kEnableSyncFromBookmarksBubble[] =
James Lee . unresolved

Per my high-level comment, I think that this state should be client-scope, rather than per-profile-per-account. I.e. this should be in local-state rather than profile-prefs, and should not keyed by gaia_id.

I'd also be inclined to make this a string pref with group name as value ("", "Butter", "Sync") to make it clear this is specific to the synthetic trial.

Line 310, Patchset 1 (Latest): CHECK(!enabled || !base::FeatureList::IsEnabled(
James Lee . unresolved

I think you should only be setting this pref if the user is in the experiment at all (either control or treatment groups). If the user is in the default group then you should not be setting a value (so that we don't register the field trial).

I.e. if the main experiment is at 1% control, 1% treatment, 98% not-in-experiment then we shouldn't set the pref for the 98%.

You can use [IsFeatureOverridden](https://source.chromium.org/chromium/chromium/src/+/main:base/feature_list.h;l=370;drc=c76e4f83a8c5786b463c3e55c070a21ac751b96b) to check this.

I'm also not sure whether the group names should be dynamic and include a date suffix that is in sync with the main experiment setup - maybe a metrics reviewer can advise.

Open in Gerrit

Related details

Attention is currently required from:
  • Ryan Sultanem
Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    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: Id3239b4003dbcc5abde8eb3457eda956fd3af3f8
    Gerrit-Change-Number: 6574782
    Gerrit-PatchSet: 1
    Gerrit-Owner: Ryan Sultanem <rs...@google.com>
    Gerrit-Reviewer: James Lee <ljj...@google.com>
    Gerrit-Reviewer: Ryan Sultanem <rs...@google.com>
    Gerrit-Attention: Ryan Sultanem <rs...@google.com>
    Gerrit-Comment-Date: Wed, 21 May 2025 16:46:53 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Ryan Sultanem (Gerrit)

    unread,
    May 22, 2025, 2:19:59 PM5/22/25
    to Alexei Svitkine, James Lee, Chromium LUCI CQ, chromium...@chromium.org
    Attention needed from Alexei Svitkine and James Lee

    Ryan Sultanem added 2 comments

    Patchset-level comments
    James Lee . unresolved

    Hi Ryan, thanks for this rework - I still have high-level comments/questions (I haven't done a full review).

    These are around how we deal with multi-profile, and also which users should be included in the "Sync" (aka control) group.

    My intuition here is that we want:

    • Control (aka "Sync"): clients who have at some point completed sign in from the bookmarks promo while in the control group of the main experiment
    • Treatment (aka "Butter"): clients who have at some point completed sign in from the bookmarks promo, while in the enabled group of the main experiment

    I think this state should be per-client, not per profile, and I don't think it should be reset on sign out (because the client has still experienced the feature).

    This is a subtle setup, and not one I have experiment with, so I think it would be good to discuss this with Lina as well as another round of review with a metrics reviewer.

    Ryan Sultanem

    Thank you James.

    The point you are raising are interesting indeed, however my approach to limiting the groups to the currently "active" (active being the reason they are in a group, whether Control or Enabled), in this case being signed in/syncing coming in from the Bookmarks Bubble in a certain profile, comes from the nature of how they were first added to the group; which is at run time. So it felt natural to me to exclude them once they don't satisfy the inclusion to the group rule.
    In a regular `start_active` Server side finch experiment those users would be in the group since start up.

    My reasoning is also backed up by the fact that the groups do not actually stick, I had to add further logic to make sure that this group is set back at every session startup to make sure they are aligned.

    I am also not very familiar with those Client side configurations and best practices, I just made some assumptions here based on the default configuration. Despite that, I do believe the points that you mentioned are valid!

    I think it would be good to have a metrics reviewer weight in on that to better understand the Client side experiments needs!

    Adding @asvi...@chromium.org who reviewed the initial CL. Your input would be really helpful here!

    Ryan Sultanem . resolved

    Hey Alexei! Please check the high level comment; we would like your input on the best way to setup these client side groups!

    Thanks!

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Alexei Svitkine
    • James Lee
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    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: Id3239b4003dbcc5abde8eb3457eda956fd3af3f8
    Gerrit-Change-Number: 6574782
    Gerrit-PatchSet: 1
    Gerrit-Owner: Ryan Sultanem <rs...@google.com>
    Gerrit-Reviewer: Alexei Svitkine <asvi...@chromium.org>
    Gerrit-Reviewer: James Lee <ljj...@google.com>
    Gerrit-Reviewer: Ryan Sultanem <rs...@google.com>
    Gerrit-Attention: James Lee <ljj...@google.com>
    Gerrit-Attention: Alexei Svitkine <asvi...@chromium.org>
    Gerrit-Comment-Date: Thu, 22 May 2025 18:19:41 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: James Lee <ljj...@google.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Alexei Svitkine (Gerrit)

    unread,
    May 23, 2025, 2:03:08 PM5/23/25
    to Ryan Sultanem, James Lee, Chromium LUCI CQ, chromium...@chromium.org
    Attention needed from James Lee and Ryan Sultanem

    Alexei Svitkine added 5 comments

    Commit Message
    Line 11, Patchset 1 (Latest):- Trial purpose: Tracks users that have signed in or turned on sync
    Alexei Svitkine . unresolved

    Nit: I think "track" isn't the right term here. I think "Tag clients" is the more accurate terminology.

    Line 16, Patchset 1 (Latest):have sync on - Butter off.
    Alexei Svitkine . unresolved

    Can you clarify if your goal is to just restrict your analysis to users who triggered the bookmarks bubble UI option to sign in and to do A/B analysis on them based on the trial?

    If your trial is not starts active, then it's already the behavior except I guess here you're also triggering this on subsequent sessions. So I guess what you're after is "sticky activation", which you're doing here manually (we don't have built-in support for that, so if you need it, this is indeed the way to do it). If so, can you expand CL description (or put in a context doc) with that spelled out?

    File chrome/browser/signin/chrome_signin_client.cc
    Line 256, Patchset 1 (Latest): variations::SyntheticTrialAnnotationMode::kCurrentLog);
    Alexei Svitkine . unresolved

    Nit: Move call outside the function and just assign to the group name string_view.

    File components/signin/public/base/signin_prefs.cc
    Line 91, Patchset 1 (Latest):constexpr char kEnableSyncFromBookmarksBubble[] =
    James Lee . unresolved

    Per my high-level comment, I think that this state should be client-scope, rather than per-profile-per-account. I.e. this should be in local-state rather than profile-prefs, and should not keyed by gaia_id.

    I'd also be inclined to make this a string pref with group name as value ("", "Butter", "Sync") to make it clear this is specific to the synthetic trial.

    Alexei Svitkine

    +1 to more explicitly thinking how this interacts with multiprofile and what you want the behavior to be in that case.

    Line 310, Patchset 1 (Latest): CHECK(!enabled || !base::FeatureList::IsEnabled(
    James Lee . unresolved

    I think you should only be setting this pref if the user is in the experiment at all (either control or treatment groups). If the user is in the default group then you should not be setting a value (so that we don't register the field trial).

    I.e. if the main experiment is at 1% control, 1% treatment, 98% not-in-experiment then we shouldn't set the pref for the 98%.

    You can use [IsFeatureOverridden](https://source.chromium.org/chromium/chromium/src/+/main:base/feature_list.h;l=370;drc=c76e4f83a8c5786b463c3e55c070a21ac751b96b) to check this.

    I'm also not sure whether the group names should be dynamic and include a date suffix that is in sync with the main experiment setup - maybe a metrics reviewer can advise.

    Alexei Svitkine

    +1

    Open in Gerrit

    Related details

    Attention is currently required from:
    • James Lee
    • Ryan Sultanem
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    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: Id3239b4003dbcc5abde8eb3457eda956fd3af3f8
    Gerrit-Change-Number: 6574782
    Gerrit-PatchSet: 1
    Gerrit-Owner: Ryan Sultanem <rs...@google.com>
    Gerrit-Reviewer: Alexei Svitkine <asvi...@chromium.org>
    Gerrit-Reviewer: James Lee <ljj...@google.com>
    Gerrit-Reviewer: Ryan Sultanem <rs...@google.com>
    Gerrit-Attention: Ryan Sultanem <rs...@google.com>
    Gerrit-Attention: James Lee <ljj...@google.com>
    Gerrit-Comment-Date: Fri, 23 May 2025 18:03:03 +0000
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    James Lee (Gerrit)

    unread,
    May 26, 2025, 5:33:17 AM5/26/25
    to Ryan Sultanem, Alexei Svitkine, Chromium LUCI CQ, chromium...@chromium.org
    Attention needed from Ryan Sultanem

    James Lee added 1 comment

    File components/signin/public/base/signin_prefs.cc
    Line 310, Patchset 1 (Latest): CHECK(!enabled || !base::FeatureList::IsEnabled(
    James Lee . unresolved

    I think you should only be setting this pref if the user is in the experiment at all (either control or treatment groups). If the user is in the default group then you should not be setting a value (so that we don't register the field trial).

    I.e. if the main experiment is at 1% control, 1% treatment, 98% not-in-experiment then we shouldn't set the pref for the 98%.

    You can use [IsFeatureOverridden](https://source.chromium.org/chromium/chromium/src/+/main:base/feature_list.h;l=370;drc=c76e4f83a8c5786b463c3e55c070a21ac751b96b) to check this.

    I'm also not sure whether the group names should be dynamic and include a date suffix that is in sync with the main experiment setup - maybe a metrics reviewer can advise.

    Alexei Svitkine

    +1

    James Lee

    Is that +1 just to not including the default group in the synthetic trial, or also to reflecting the suffix of the main experiment group names in the synthetic group names (eg. "MainExperiment_Enabled_20250526 -> SyntheticExperiment_Enabled_20250526)?

    For the latter would this be via [GetFieldTrial(feature)](https://source.chromium.org/chromium/chromium/src/+/main:base/feature_list.h;l=501;drc=c76e4f83a8c5786b463c3e55c070a21ac751b96b)->GetGroupNameWithoutActivation() or some other way?

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Ryan Sultanem
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    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: Id3239b4003dbcc5abde8eb3457eda956fd3af3f8
    Gerrit-Change-Number: 6574782
    Gerrit-PatchSet: 1
    Gerrit-Owner: Ryan Sultanem <rs...@google.com>
    Gerrit-Reviewer: Alexei Svitkine <asvi...@chromium.org>
    Gerrit-Reviewer: James Lee <ljj...@google.com>
    Gerrit-Reviewer: Ryan Sultanem <rs...@google.com>
    Gerrit-Attention: Ryan Sultanem <rs...@google.com>
    Gerrit-Comment-Date: Mon, 26 May 2025 09:33:02 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: James Lee <ljj...@google.com>
    Comment-In-Reply-To: Alexei Svitkine <asvi...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Alexei Svitkine (Gerrit)

    unread,
    May 26, 2025, 1:43:47 PM5/26/25
    to Ryan Sultanem, James Lee, Chromium LUCI CQ, chromium...@chromium.org
    Attention needed from Ryan Sultanem

    Alexei Svitkine added 1 comment

    File components/signin/public/base/signin_prefs.cc
    Line 310, Patchset 1 (Latest): CHECK(!enabled || !base::FeatureList::IsEnabled(
    James Lee . unresolved

    I think you should only be setting this pref if the user is in the experiment at all (either control or treatment groups). If the user is in the default group then you should not be setting a value (so that we don't register the field trial).

    I.e. if the main experiment is at 1% control, 1% treatment, 98% not-in-experiment then we shouldn't set the pref for the 98%.

    You can use [IsFeatureOverridden](https://source.chromium.org/chromium/chromium/src/+/main:base/feature_list.h;l=370;drc=c76e4f83a8c5786b463c3e55c070a21ac751b96b) to check this.

    I'm also not sure whether the group names should be dynamic and include a date suffix that is in sync with the main experiment setup - maybe a metrics reviewer can advise.

    Alexei Svitkine

    +1

    James Lee

    Is that +1 just to not including the default group in the synthetic trial, or also to reflecting the suffix of the main experiment group names in the synthetic group names (eg. "MainExperiment_Enabled_20250526 -> SyntheticExperiment_Enabled_20250526)?

    For the latter would this be via [GetFieldTrial(feature)](https://source.chromium.org/chromium/chromium/src/+/main:base/feature_list.h;l=501;drc=c76e4f83a8c5786b463c3e55c070a21ac751b96b)->GetGroupNameWithoutActivation() or some other way?

    Alexei Svitkine

    Reflecting the suffix sounds good to me. Your code snippet looks right (check that the returned field trial is not null though.)

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Ryan Sultanem
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    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: Id3239b4003dbcc5abde8eb3457eda956fd3af3f8
    Gerrit-Change-Number: 6574782
    Gerrit-PatchSet: 1
    Gerrit-Owner: Ryan Sultanem <rs...@google.com>
    Gerrit-Reviewer: Alexei Svitkine <asvi...@chromium.org>
    Gerrit-Reviewer: James Lee <ljj...@google.com>
    Gerrit-Reviewer: Ryan Sultanem <rs...@google.com>
    Gerrit-Attention: Ryan Sultanem <rs...@google.com>
    Gerrit-Comment-Date: Mon, 26 May 2025 17:43:43 +0000
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Ryan Sultanem (Gerrit)

    unread,
    Jun 5, 2025, 12:12:26 PM6/5/25
    to Alexei Svitkine, James Lee, Chromium LUCI CQ, chromium...@chromium.org
    Attention needed from Alexei Svitkine and James Lee

    Ryan Sultanem added 6 comments

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

    Thanks both for your inputs. I have updated the change to reflect your changes but I do not believe it is quite fully complete yet.

    I still have some questions that I left in 2 comments where I would like your point of view / confirmation.

    James: I am planning to finalize this change first before tackling the addition of the other trial (when the users see the bubble), for simplicity.

    Commit Message
    Line 11, Patchset 1:- Trial purpose: Tracks users that have signed in or turned on sync
    Alexei Svitkine . resolved

    Nit: I think "track" isn't the right term here. I think "Tag clients" is the more accurate terminology.

    Ryan Sultanem

    Done

    File chrome/browser/signin/chrome_signin_client.cc
    Line 256, Patchset 1: variations::SyntheticTrialAnnotationMode::kCurrentLog);
    Alexei Svitkine . resolved

    Nit: Move call outside the function and just assign to the group name string_view.

    Ryan Sultanem

    Done

    Line 266, Patchset 4: // Remove any registered group in case the value of the feature was changed
    // and is not overridden anymore.
    if (!base::FeatureList::GetInstance()->IsFeatureOverridden(
    switches::kSyncEnableBookmarksInTransportMode.name)) {
    g_browser_process->local_state()->SetString(
    kSigninFromBookmarksBubbleGroupPref, "");
    return;
    }
    Ryan Sultanem . unresolved

    This does not look very correct yet - but I was just starting something here.

    I am wondering how should we actually approach this, in case the groups gets reshuffled. A way to do it would be to only register at start up if the registered group (in the pref) and the active group (from trial) match; otherwise we reset the pref.

    Does that sound right?

    That does seem like a complex approach though, and again I do not see any other synthetic field trial group doing that. Maybe I am missing something.

    File components/signin/public/base/signin_prefs.cc
    Line 91, Patchset 1:constexpr char kEnableSyncFromBookmarksBubble[] =
    James Lee . resolved

    Per my high-level comment, I think that this state should be client-scope, rather than per-profile-per-account. I.e. this should be in local-state rather than profile-prefs, and should not keyed by gaia_id.

    I'd also be inclined to make this a string pref with group name as value ("", "Butter", "Sync") to make it clear this is specific to the synthetic trial.

    Alexei Svitkine

    +1 to more explicitly thinking how this interacts with multiprofile and what you want the behavior to be in that case.

    Ryan Sultanem

    Moved to a local state pref.

    Line 310, Patchset 1: CHECK(!enabled || !base::FeatureList::IsEnabled(
    James Lee . unresolved

    I think you should only be setting this pref if the user is in the experiment at all (either control or treatment groups). If the user is in the default group then you should not be setting a value (so that we don't register the field trial).

    I.e. if the main experiment is at 1% control, 1% treatment, 98% not-in-experiment then we shouldn't set the pref for the 98%.

    You can use [IsFeatureOverridden](https://source.chromium.org/chromium/chromium/src/+/main:base/feature_list.h;l=370;drc=c76e4f83a8c5786b463c3e55c070a21ac751b96b) to check this.

    I'm also not sure whether the group names should be dynamic and include a date suffix that is in sync with the main experiment setup - maybe a metrics reviewer can advise.

    Alexei Svitkine

    +1

    James Lee

    Is that +1 just to not including the default group in the synthetic trial, or also to reflecting the suffix of the main experiment group names in the synthetic group names (eg. "MainExperiment_Enabled_20250526 -> SyntheticExperiment_Enabled_20250526)?

    For the latter would this be via [GetFieldTrial(feature)](https://source.chromium.org/chromium/chromium/src/+/main:base/feature_list.h;l=501;drc=c76e4f83a8c5786b463c3e55c070a21ac751b96b)->GetGroupNameWithoutActivation() or some other way?

    Alexei Svitkine

    Reflecting the suffix sounds good to me. Your code snippet looks right (check that the returned field trial is not null though.)

    Ryan Sultanem

    I am currently using `IsFeatureOverridden()` to differentiate whether the user is part of the experiment or part of the default group.

    I have not yet used the `GetFieldTrial(feature)->GetGroupNameWithoutActivation()` because I am wondering how that will actually align with the definition of the groups to expose for the UMA dashboard. Will that also need to updated accordingly every time? I also see none of those groups that actually uses the active suffix method - some do update the name their groups with increment numbers though.

    I would just like to confirm that before proceeding with the change.

    FYI: exposing groups to UMA requires changes on the server side: (googlers-only): [synthetic_trials.py](https://source.corp.google.com/piper///depot/google3/analysis/uma/dashboards/variations/synthetic_trials.py?q=analysis%2Fuma%2Fdashboards%2Fvariations%2Fsynthetic_trials.py&sq=package:piper%20file:%2F%2Fdepot%2Fgoogle3%20-file:google3%2Fexperimental)

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Alexei Svitkine
    • James Lee
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    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: Id3239b4003dbcc5abde8eb3457eda956fd3af3f8
    Gerrit-Change-Number: 6574782
    Gerrit-PatchSet: 5
    Gerrit-Owner: Ryan Sultanem <rs...@google.com>
    Gerrit-Reviewer: Alexei Svitkine <asvi...@chromium.org>
    Gerrit-Reviewer: James Lee <ljj...@google.com>
    Gerrit-Reviewer: Ryan Sultanem <rs...@google.com>
    Gerrit-Attention: James Lee <ljj...@google.com>
    Gerrit-Attention: Alexei Svitkine <asvi...@chromium.org>
    Gerrit-Comment-Date: Thu, 05 Jun 2025 16:12:08 +0000
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    James Lee (Gerrit)

    unread,
    Jun 6, 2025, 5:43:31 AM6/6/25
    to Ryan Sultanem, Alexei Svitkine, Chromium LUCI CQ, chromium...@chromium.org
    Attention needed from Alexei Svitkine and Ryan Sultanem

    James Lee added 8 comments

    Patchset-level comments
    James Lee . resolved

    Thanks Ryan, I've left a few comment but let's discuss and please also wait for Alexei to review.

    File chrome/browser/signin/chrome_signin_client.cc
    Line 116, Patchset 5 (Latest):constexpr char kSigninFromBookmarksBubble[] =
    James Lee . unresolved

    nit: can you add eg. a `SyntheticTrialName` or similar suffix to the constant, to clearly distinguish the pref names from the field trial names?

    Line 117, Patchset 5 (Latest): "UnoDesktopSigninFromBookmarksBubble";
    James Lee . unresolved

    The main experiment is called `UnoDesktopBookmarksAndReadingList`. Maybe call the two synthetic trials eg.

    UnoDesktopBookmarksBubbleShown
    UnoDesktopBookmarksEnabledInAccountFromBubble

    Line 120, Patchset 5 (Latest):static constexpr char kSigninFromBookmarksBubbleButterGroup[] = "Butter";
    James Lee . unresolved

    Rather than defining the group names here, I would directly read the group names of the server-side experiment and use them as the group names for the synthetic trials.

    This means that you'll get a 1:1 mapping that is kept in sync as the server config changes.

    If per the discussion in the comment thread you decide to stick with hard-coded names, I have a slight preference for Control/Enabled?

    Line 244, Patchset 5 (Latest):void ChromeSigninClient::RegisterUnoBookmarksSyntheticFieldTrial() {
    James Lee . unresolved

    How about `MaybeAddUserToUnoDesktopBookmarksSyntheticFieldTrial`, to make clear that this may be a no-op, but also does more than just call the metrics API.

    In a subsequent CL, you'll presumably either pass a parameter to say which trial it should be, or rename and have a similar method for the other trial?

    Line 246, Patchset 5 (Latest): if (!base::FeatureList::GetInstance()->IsFeatureOverridden(
    James Lee . unresolved

    Small nit: I think probably `GetFieldTrial() == null` is a better check here - IIUC the difference is that `GetFieldTrial()` will only look at server-side overrides whereas `IsFeatureOverridden()` will also include client-side ones (chrome://flags and commandline args).

    It doesn't make a big difference in practice, but I think it's maybe more correct to not include users who manually opt in/out of the experiment.

    Line 266, Patchset 4: // Remove any registered group in case the value of the feature was changed
    // and is not overridden anymore.
    if (!base::FeatureList::GetInstance()->IsFeatureOverridden(
    switches::kSyncEnableBookmarksInTransportMode.name)) {
    g_browser_process->local_state()->SetString(
    kSigninFromBookmarksBubbleGroupPref, "");
    return;
    }
    Ryan Sultanem . unresolved

    This does not look very correct yet - but I was just starting something here.

    I am wondering how should we actually approach this, in case the groups gets reshuffled. A way to do it would be to only register at start up if the registered group (in the pref) and the active group (from trial) match; otherwise we reset the pref.

    Does that sound right?

    That does seem like a complex approach though, and again I do not see any other synthetic field trial group doing that. Maybe I am missing something.

    James Lee

    I think this depends on:

    • What approach is taken for group names (constant or server-derived) per the other comment thread
    • What the product behavior is for users who leave the experiment (do they continue to receive the feature or is it turned off for them)
    File components/signin/public/base/signin_prefs.cc
    Line 310, Patchset 1: CHECK(!enabled || !base::FeatureList::IsEnabled(
    James Lee . unresolved

    I think you should only be setting this pref if the user is in the experiment at all (either control or treatment groups). If the user is in the default group then you should not be setting a value (so that we don't register the field trial).

    I.e. if the main experiment is at 1% control, 1% treatment, 98% not-in-experiment then we shouldn't set the pref for the 98%.

    You can use [IsFeatureOverridden](https://source.chromium.org/chromium/chromium/src/+/main:base/feature_list.h;l=370;drc=c76e4f83a8c5786b463c3e55c070a21ac751b96b) to check this.

    I'm also not sure whether the group names should be dynamic and include a date suffix that is in sync with the main experiment setup - maybe a metrics reviewer can advise.

    Alexei Svitkine

    +1

    James Lee

    Is that +1 just to not including the default group in the synthetic trial, or also to reflecting the suffix of the main experiment group names in the synthetic group names (eg. "MainExperiment_Enabled_20250526 -> SyntheticExperiment_Enabled_20250526)?

    For the latter would this be via [GetFieldTrial(feature)](https://source.chromium.org/chromium/chromium/src/+/main:base/feature_list.h;l=501;drc=c76e4f83a8c5786b463c3e55c070a21ac751b96b)->GetGroupNameWithoutActivation() or some other way?

    Alexei Svitkine

    Reflecting the suffix sounds good to me. Your code snippet looks right (check that the returned field trial is not null though.)

    Ryan Sultanem

    I am currently using `IsFeatureOverridden()` to differentiate whether the user is part of the experiment or part of the default group.

    I have not yet used the `GetFieldTrial(feature)->GetGroupNameWithoutActivation()` because I am wondering how that will actually align with the definition of the groups to expose for the UMA dashboard. Will that also need to updated accordingly every time? I also see none of those groups that actually uses the active suffix method - some do update the name their groups with increment numbers though.

    I would just like to confirm that before proceeding with the change.

    FYI: exposing groups to UMA requires changes on the server side: (googlers-only): [synthetic_trials.py](https://source.corp.google.com/piper///depot/google3/analysis/uma/dashboards/variations/synthetic_trials.py?q=analysis%2Fuma%2Fdashboards%2Fvariations%2Fsynthetic_trials.py&sq=package:piper%20file:%2F%2Fdepot%2Fgoogle3%20-file:google3%2Fexperimental)

    James Lee

    Ah interesting point - I guess there are two options:

    1. Use hard-coded names in the client, which won't update with server config changes (eg. ramp 1%->10%, or bump min_version etc).
    2. Use the actual names from the server, with an IfThisThenThat check to update synthetic_trials.py when the Finch config suffix is updated.

    I guess the slight downside of 2 is that it takes a week or so for the dashboard to pick up the changes. I think that's probably OK since we need to wait for a week of data before stable analysis anyway, so that would be my preference.

    @asvi...@chromium.org does that still sound good?

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Alexei Svitkine
    • Ryan Sultanem
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    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: Id3239b4003dbcc5abde8eb3457eda956fd3af3f8
    Gerrit-Change-Number: 6574782
    Gerrit-PatchSet: 5
    Gerrit-Owner: Ryan Sultanem <rs...@google.com>
    Gerrit-Reviewer: Alexei Svitkine <asvi...@chromium.org>
    Gerrit-Reviewer: James Lee <ljj...@google.com>
    Gerrit-Reviewer: Ryan Sultanem <rs...@google.com>
    Gerrit-Attention: Ryan Sultanem <rs...@google.com>
    Gerrit-Attention: Alexei Svitkine <asvi...@chromium.org>
    Gerrit-Comment-Date: Fri, 06 Jun 2025 09:43:14 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Ryan Sultanem <rs...@google.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Alexei Svitkine (Gerrit)

    unread,
    Jun 6, 2025, 4:10:19 PM6/6/25
    to Ryan Sultanem, James Lee, Chromium LUCI CQ, chromium...@chromium.org
    Attention needed from James Lee and Ryan Sultanem

    Alexei Svitkine added 1 comment

    File components/signin/public/base/signin_prefs.cc
    Line 310, Patchset 1: CHECK(!enabled || !base::FeatureList::IsEnabled(
    James Lee . resolved

    I think you should only be setting this pref if the user is in the experiment at all (either control or treatment groups). If the user is in the default group then you should not be setting a value (so that we don't register the field trial).

    I.e. if the main experiment is at 1% control, 1% treatment, 98% not-in-experiment then we shouldn't set the pref for the 98%.

    You can use [IsFeatureOverridden](https://source.chromium.org/chromium/chromium/src/+/main:base/feature_list.h;l=370;drc=c76e4f83a8c5786b463c3e55c070a21ac751b96b) to check this.

    I'm also not sure whether the group names should be dynamic and include a date suffix that is in sync with the main experiment setup - maybe a metrics reviewer can advise.

    Alexei Svitkine

    +1

    James Lee

    Is that +1 just to not including the default group in the synthetic trial, or also to reflecting the suffix of the main experiment group names in the synthetic group names (eg. "MainExperiment_Enabled_20250526 -> SyntheticExperiment_Enabled_20250526)?

    For the latter would this be via [GetFieldTrial(feature)](https://source.chromium.org/chromium/chromium/src/+/main:base/feature_list.h;l=501;drc=c76e4f83a8c5786b463c3e55c070a21ac751b96b)->GetGroupNameWithoutActivation() or some other way?

    Alexei Svitkine

    Reflecting the suffix sounds good to me. Your code snippet looks right (check that the returned field trial is not null though.)

    Ryan Sultanem

    I am currently using `IsFeatureOverridden()` to differentiate whether the user is part of the experiment or part of the default group.

    I have not yet used the `GetFieldTrial(feature)->GetGroupNameWithoutActivation()` because I am wondering how that will actually align with the definition of the groups to expose for the UMA dashboard. Will that also need to updated accordingly every time? I also see none of those groups that actually uses the active suffix method - some do update the name their groups with increment numbers though.

    I would just like to confirm that before proceeding with the change.

    FYI: exposing groups to UMA requires changes on the server side: (googlers-only): [synthetic_trials.py](https://source.corp.google.com/piper///depot/google3/analysis/uma/dashboards/variations/synthetic_trials.py?q=analysis%2Fuma%2Fdashboards%2Fvariations%2Fsynthetic_trials.py&sq=package:piper%20file:%2F%2Fdepot%2Fgoogle3%20-file:google3%2Fexperimental)

    James Lee

    Ah interesting point - I guess there are two options:

    1. Use hard-coded names in the client, which won't update with server config changes (eg. ramp 1%->10%, or bump min_version etc).
    2. Use the actual names from the server, with an IfThisThenThat check to update synthetic_trials.py when the Finch config suffix is updated.

    I guess the slight downside of 2 is that it takes a week or so for the dashboard to pick up the changes. I think that's probably OK since we need to wait for a week of data before stable analysis anyway, so that would be my preference.

    @asvi...@chromium.org does that still sound good?

    Alexei Svitkine

    I prefer option 2.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • James Lee
    • Ryan Sultanem
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    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: Id3239b4003dbcc5abde8eb3457eda956fd3af3f8
    Gerrit-Change-Number: 6574782
    Gerrit-PatchSet: 5
    Gerrit-Owner: Ryan Sultanem <rs...@google.com>
    Gerrit-Reviewer: Alexei Svitkine <asvi...@chromium.org>
    Gerrit-Reviewer: James Lee <ljj...@google.com>
    Gerrit-Reviewer: Ryan Sultanem <rs...@google.com>
    Gerrit-Attention: Ryan Sultanem <rs...@google.com>
    Gerrit-Attention: James Lee <ljj...@google.com>
    Gerrit-Comment-Date: Fri, 06 Jun 2025 20:10:14 +0000
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Ryan Sultanem (Gerrit)

    unread,
    Jun 10, 2025, 8:50:26 AM6/10/25
    to Alexei Svitkine, James Lee, Chromium LUCI CQ, chromium...@chromium.org
    Attention needed from James Lee

    Ryan Sultanem added 8 comments

    Patchset-level comments

    Hi Ryan, thanks for this rework - I still have high-level comments/questions (I haven't done a full review).

    These are around how we deal with multi-profile, and also which users should be included in the "Sync" (aka control) group.

    My intuition here is that we want:

    • Control (aka "Sync"): clients who have at some point completed sign in from the bookmarks promo while in the control group of the main experiment
    • Treatment (aka "Butter"): clients who have at some point completed sign in from the bookmarks promo, while in the enabled group of the main experiment

    I think this state should be per-client, not per profile, and I don't think it should be reset on sign out (because the client has still experienced the feature).

    This is a subtle setup, and not one I have experiment with, so I think it would be good to discuss this with Lina as well as another round of review with a metrics reviewer.

    Ryan Sultanem

    Thank you James.

    The point you are raising are interesting indeed, however my approach to limiting the groups to the currently "active" (active being the reason they are in a group, whether Control or Enabled), in this case being signed in/syncing coming in from the Bookmarks Bubble in a certain profile, comes from the nature of how they were first added to the group; which is at run time. So it felt natural to me to exclude them once they don't satisfy the inclusion to the group rule.
    In a regular `start_active` Server side finch experiment those users would be in the group since start up.

    My reasoning is also backed up by the fact that the groups do not actually stick, I had to add further logic to make sure that this group is set back at every session startup to make sure they are aligned.

    I am also not very familiar with those Client side configurations and best practices, I just made some assumptions here based on the default configuration. Despite that, I do believe the points that you mentioned are valid!

    I think it would be good to have a metrics reviewer weight in on that to better understand the Client side experiments needs!

    Adding @asvi...@chromium.org who reviewed the initial CL. Your input would be really helpful here!

    Ryan Sultanem

    Acknowledged

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

    Thanks, I still have some concerns about the group name derived from the experiment name. Please check the associated comment when registering the groups after sign in/sync.

    File chrome/browser/signin/chrome_signin_client.cc
    Line 116, Patchset 5:constexpr char kSigninFromBookmarksBubble[] =
    James Lee . resolved

    nit: can you add eg. a `SyntheticTrialName` or similar suffix to the constant, to clearly distinguish the pref names from the field trial names?

    Ryan Sultanem

    Done

    Line 117, Patchset 5: "UnoDesktopSigninFromBookmarksBubble";
    James Lee . resolved

    The main experiment is called `UnoDesktopBookmarksAndReadingList`. Maybe call the two synthetic trials eg.

    UnoDesktopBookmarksBubbleShown
    UnoDesktopBookmarksEnabledInAccountFromBubble

    Ryan Sultanem

    Done

    Line 120, Patchset 5:static constexpr char kSigninFromBookmarksBubbleButterGroup[] = "Butter";
    James Lee . resolved

    Rather than defining the group names here, I would directly read the group names of the server-side experiment and use them as the group names for the synthetic trials.

    This means that you'll get a 1:1 mapping that is kept in sync as the server config changes.

    If per the discussion in the comment thread you decide to stick with hard-coded names, I have a slight preference for Control/Enabled?

    Ryan Sultanem

    This was done temporarily until figuring out how to assign existing users to shuffling groups and exiting groups.

    Changing it to use the server-side experiment group names for now until confirmed.

    Line 244, Patchset 5:void ChromeSigninClient::RegisterUnoBookmarksSyntheticFieldTrial() {
    James Lee . resolved

    How about `MaybeAddUserToUnoDesktopBookmarksSyntheticFieldTrial`, to make clear that this may be a no-op, but also does more than just call the metrics API.

    In a subsequent CL, you'll presumably either pass a parameter to say which trial it should be, or rename and have a similar method for the other trial?

    Ryan Sultanem

    Done

    Line 246, Patchset 5: if (!base::FeatureList::GetInstance()->IsFeatureOverridden(
    James Lee . resolved

    Small nit: I think probably `GetFieldTrial() == null` is a better check here - IIUC the difference is that `GetFieldTrial()` will only look at server-side overrides whereas `IsFeatureOverridden()` will also include client-side ones (chrome://flags and commandline args).

    It doesn't make a big difference in practice, but I think it's maybe more correct to not include users who manually opt in/out of the experiment.

    Ryan Sultanem

    Done

    Line 248, Patchset 6 (Latest): std::string_view group_name = field_trial->GetGroupNameWithoutActivation();
    Ryan Sultanem . unresolved

    With manual testing, this `group_name` does not seem to contain the version suffix. I was only able to read `Enabled` - I presume my session was added as the Enabled group (part of the 50% chance)

    Is the missing version suffix expected for regular users or is it something specific to Development builds?

    Open in Gerrit

    Related details

    Attention is currently required from:
    • James Lee
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    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: Id3239b4003dbcc5abde8eb3457eda956fd3af3f8
    Gerrit-Change-Number: 6574782
    Gerrit-PatchSet: 6
    Gerrit-Owner: Ryan Sultanem <rs...@google.com>
    Gerrit-Reviewer: Alexei Svitkine <asvi...@chromium.org>
    Gerrit-Reviewer: James Lee <ljj...@google.com>
    Gerrit-Reviewer: Ryan Sultanem <rs...@google.com>
    Gerrit-Attention: James Lee <ljj...@google.com>
    Gerrit-Comment-Date: Tue, 10 Jun 2025 12:50:14 +0000
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Ryan Sultanem (Gerrit)

    unread,
    Jun 10, 2025, 10:36:53 AM6/10/25
    to Alexei Svitkine, James Lee, Chromium LUCI CQ, chromium...@chromium.org
    Attention needed from James Lee

    Ryan Sultanem added 1 comment

    File chrome/browser/signin/chrome_signin_client.cc
    Line 248, Patchset 6 (Latest): std::string_view group_name = field_trial->GetGroupNameWithoutActivation();
    Ryan Sultanem . resolved

    With manual testing, this `group_name` does not seem to contain the version suffix. I was only able to read `Enabled` - I presume my session was added as the Enabled group (part of the 50% chance)

    Is the missing version suffix expected for regular users or is it something specific to Development builds?

    Ryan Sultanem

    I actually forgot about the fieldtrial_testing_config that overrides the feature values - this is what I was logging in my manual test.

    With a fake finch server and making it fetch data from the real canary/beta branches, I was able to read the proper values.

    Thanks James for your inputs (offline) on this.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • James Lee
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    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: Id3239b4003dbcc5abde8eb3457eda956fd3af3f8
    Gerrit-Change-Number: 6574782
    Gerrit-PatchSet: 6
    Gerrit-Owner: Ryan Sultanem <rs...@google.com>
    Gerrit-Reviewer: Alexei Svitkine <asvi...@chromium.org>
    Gerrit-Reviewer: James Lee <ljj...@google.com>
    Gerrit-Reviewer: Ryan Sultanem <rs...@google.com>
    Gerrit-Attention: James Lee <ljj...@google.com>
    Gerrit-Comment-Date: Tue, 10 Jun 2025 14:36:42 +0000
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Ryan Sultanem (Gerrit)

    unread,
    Jun 10, 2025, 10:42:20 AM6/10/25
    to Alexei Svitkine, James Lee, Chromium LUCI CQ, chromium...@chromium.org
    Attention needed from James Lee

    Ryan Sultanem added 2 comments

    Patchset-level comments
    Ryan Sultanem . resolved

    Left a last comment, and then I think I can proceed with implementing the other synthetic group. I believe I will keep it within this CL to have a single merge back change.

    File chrome/browser/signin/chrome_signin_client.cc
    Line 268, Patchset 6 (Latest): std::string_view group_name = g_browser_process->local_state()->GetString(
    Ryan Sultanem . unresolved

    With this setup, imagine the following sequence happens:

    • User is signed out.
    • Signs in through the bubble.
    • The synthetic trial group assigned is: `Enabled_Date1` - assuming they are part of the enabled group.
    • Closes Chrome.
    • Some server side changes happens to the main experiment reshuffling the groups.
    • User opens Chrome again.

    At this point they could in theory be in either:

    • Enabled_Date2
    • Control_Date2
    • Default

    The current code will keep logging them for `Enabled_Date1`. And will only reset their synthetic trial group if the experiment was stopped.
    Is this acceptable? Or should we migrate them to the proper group.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • James Lee
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    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: Id3239b4003dbcc5abde8eb3457eda956fd3af3f8
    Gerrit-Change-Number: 6574782
    Gerrit-PatchSet: 6
    Gerrit-Owner: Ryan Sultanem <rs...@google.com>
    Gerrit-Reviewer: Alexei Svitkine <asvi...@chromium.org>
    Gerrit-Reviewer: James Lee <ljj...@google.com>
    Gerrit-Reviewer: Ryan Sultanem <rs...@google.com>
    Gerrit-Attention: James Lee <ljj...@google.com>
    Gerrit-Comment-Date: Tue, 10 Jun 2025 14:42:07 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    James Lee (Gerrit)

    unread,
    Jun 10, 2025, 11:13:15 AM6/10/25
    to Ryan Sultanem, Alexei Svitkine, Chromium LUCI CQ, chromium...@chromium.org
    Attention needed from Ryan Sultanem

    James Lee added 3 comments

    File chrome/browser/signin/chrome_signin_client.cc
    Line 116, Patchset 6 (Latest):// Synthetic field trial for users that have signed in through the Bookmarks
    James Lee . unresolved

    nit: replace "signed in" with "enabled account bookmarks" or similar in the comment?

    Line 251, Patchset 6 (Latest): ChromeMetricsServiceAccessor::RegisterSyntheticFieldTrial(
    James Lee . unresolved

    Optional nit: although it's only one line, I have a slight preference for extracting this to a separate `RegisterSyntheticTrialsFromPrefs()` or similar that is called from both here and `DoFinalInit()`.

    It makes it more obvious from reading that the state is entirely mastered in the pref (and avoids copy-paste bugs once you have two trials).

    Line 268, Patchset 6 (Latest): std::string_view group_name = g_browser_process->local_state()->GetString(
    Ryan Sultanem . unresolved

    With this setup, imagine the following sequence happens:

    • User is signed out.
    • Signs in through the bubble.
    • The synthetic trial group assigned is: `Enabled_Date1` - assuming they are part of the enabled group.
    • Closes Chrome.
    • Some server side changes happens to the main experiment reshuffling the groups.
    • User opens Chrome again.

    At this point they could in theory be in either:

    • Enabled_Date2
    • Control_Date2
    • Default

    The current code will keep logging them for `Enabled_Date1`. And will only reset their synthetic trial group if the experiment was stopped.
    Is this acceptable? Or should we migrate them to the proper group.

    James Lee

    As discussed offline, I think that the most reasonable behavior here is to treat the synthetic trial assignment is permanently sticky once set - it therefore mirrors the state at the point the user first interacted with the feature.

    Therefore you don't need to check `base::FeatureList::GetInstance()->IsFeatureOverridden()` above.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Ryan Sultanem
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    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: Id3239b4003dbcc5abde8eb3457eda956fd3af3f8
    Gerrit-Change-Number: 6574782
    Gerrit-PatchSet: 6
    Gerrit-Owner: Ryan Sultanem <rs...@google.com>
    Gerrit-Reviewer: Alexei Svitkine <asvi...@chromium.org>
    Gerrit-Reviewer: James Lee <ljj...@google.com>
    Gerrit-Reviewer: Ryan Sultanem <rs...@google.com>
    Gerrit-Attention: Ryan Sultanem <rs...@google.com>
    Gerrit-Comment-Date: Tue, 10 Jun 2025 15:13:02 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Ryan Sultanem <rs...@google.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Ryan Sultanem (Gerrit)

    unread,
    Jun 10, 2025, 11:34:55 AM6/10/25
    to Alexei Svitkine, James Lee, Chromium LUCI CQ, chromium...@chromium.org
    Attention needed from James Lee

    Ryan Sultanem added 4 comments

    File chrome/browser/signin/chrome_signin_client.cc
    Line 116, Patchset 6:// Synthetic field trial for users that have signed in through the Bookmarks
    James Lee . resolved

    nit: replace "signed in" with "enabled account bookmarks" or similar in the comment?

    Ryan Sultanem

    Done

    Line 251, Patchset 6: ChromeMetricsServiceAccessor::RegisterSyntheticFieldTrial(
    James Lee . resolved

    Optional nit: although it's only one line, I have a slight preference for extracting this to a separate `RegisterSyntheticTrialsFromPrefs()` or similar that is called from both here and `DoFinalInit()`.

    It makes it more obvious from reading that the state is entirely mastered in the pref (and avoids copy-paste bugs once you have two trials).

    Ryan Sultanem

    Done

    Line 268, Patchset 6: std::string_view group_name = g_browser_process->local_state()->GetString(
    Ryan Sultanem . resolved

    With this setup, imagine the following sequence happens:

    • User is signed out.
    • Signs in through the bubble.
    • The synthetic trial group assigned is: `Enabled_Date1` - assuming they are part of the enabled group.
    • Closes Chrome.
    • Some server side changes happens to the main experiment reshuffling the groups.
    • User opens Chrome again.

    At this point they could in theory be in either:

    • Enabled_Date2
    • Control_Date2
    • Default

    The current code will keep logging them for `Enabled_Date1`. And will only reset their synthetic trial group if the experiment was stopped.
    Is this acceptable? Or should we migrate them to the proper group.

    James Lee

    As discussed offline, I think that the most reasonable behavior here is to treat the synthetic trial assignment is permanently sticky once set - it therefore mirrors the state at the point the user first interacted with the feature.

    Therefore you don't need to check `base::FeatureList::GetInstance()->IsFeatureOverridden()` above.

    Ryan Sultanem

    Acknowledged

    Line 266, Patchset 4: // Remove any registered group in case the value of the feature was changed

    // and is not overridden anymore.
    if (!base::FeatureList::GetInstance()->IsFeatureOverridden(
    switches::kSyncEnableBookmarksInTransportMode.name)) {
    g_browser_process->local_state()->SetString(
    kSigninFromBookmarksBubbleGroupPref, "");
    return;
    }
    Ryan Sultanem . resolved

    This does not look very correct yet - but I was just starting something here.

    I am wondering how should we actually approach this, in case the groups gets reshuffled. A way to do it would be to only register at start up if the registered group (in the pref) and the active group (from trial) match; otherwise we reset the pref.

    Does that sound right?

    That does seem like a complex approach though, and again I do not see any other synthetic field trial group doing that. Maybe I am missing something.

    James Lee

    I think this depends on:

    • What approach is taken for group names (constant or server-derived) per the other comment thread
    • What the product behavior is for users who leave the experiment (do they continue to receive the feature or is it turned off for them)
    Ryan Sultanem

    This was discussed offline - we also decided that users groups will stick regardless of any change after being set.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • James Lee
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    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: Id3239b4003dbcc5abde8eb3457eda956fd3af3f8
    Gerrit-Change-Number: 6574782
    Gerrit-PatchSet: 7
    Gerrit-Owner: Ryan Sultanem <rs...@google.com>
    Gerrit-Reviewer: Alexei Svitkine <asvi...@chromium.org>
    Gerrit-Reviewer: James Lee <ljj...@google.com>
    Gerrit-Reviewer: Ryan Sultanem <rs...@google.com>
    Gerrit-Attention: James Lee <ljj...@google.com>
    Gerrit-Comment-Date: Tue, 10 Jun 2025 15:34:42 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Ryan Sultanem <rs...@google.com>
    Comment-In-Reply-To: James Lee <ljj...@google.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Ryan Sultanem (Gerrit)

    unread,
    Jun 10, 2025, 11:39:49 AM6/10/25
    to David Roger, Alexei Svitkine, James Lee, Chromium LUCI CQ, chromium...@chromium.org
    Attention needed from David Roger and James Lee

    Ryan Sultanem added 2 comments

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

    Thanks Alexei for your inputs! I will move you to CC.

    Adding David, for `chrome/browser/prefs/browser_prefs.cc` owner.

    Thanks!

    Commit Message
    Line 16, Patchset 1:have sync on - Butter off.
    Alexei Svitkine . resolved

    Can you clarify if your goal is to just restrict your analysis to users who triggered the bookmarks bubble UI option to sign in and to do A/B analysis on them based on the trial?

    If your trial is not starts active, then it's already the behavior except I guess here you're also triggering this on subsequent sessions. So I guess what you're after is "sticky activation", which you're doing here manually (we don't have built-in support for that, so if you need it, this is indeed the way to do it). If so, can you expand CL description (or put in a context doc) with that spelled out?

    Ryan Sultanem

    Enriched the cl description with more details to reflect that. Thanks!

    Open in Gerrit

    Related details

    Attention is currently required from:
    • David Roger
    • James Lee
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Review
    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: Id3239b4003dbcc5abde8eb3457eda956fd3af3f8
    Gerrit-Change-Number: 6574782
    Gerrit-PatchSet: 9
    Gerrit-Owner: Ryan Sultanem <rs...@google.com>
    Gerrit-Reviewer: David Roger <dro...@chromium.org>
    Gerrit-Reviewer: James Lee <ljj...@google.com>
    Gerrit-Reviewer: Ryan Sultanem <rs...@google.com>
    Gerrit-CC: Alexei Svitkine <asvi...@chromium.org>
    Gerrit-Attention: James Lee <ljj...@google.com>
    Gerrit-Attention: David Roger <dro...@chromium.org>
    Gerrit-Comment-Date: Tue, 10 Jun 2025 15:39:35 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Alexei Svitkine <asvi...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    James Lee (Gerrit)

    unread,
    Jun 10, 2025, 11:40:18 AM6/10/25
    to Ryan Sultanem, David Roger, Alexei Svitkine, Chromium LUCI CQ, chromium...@chromium.org
    Attention needed from David Roger and Ryan Sultanem

    James Lee voted and added 1 comment

    Votes added by James Lee

    Code-Review+1

    1 comment

    Patchset-level comments
    James Lee . resolved

    Thanks!

    Open in Gerrit

    Related details

    Attention is currently required from:
    • David Roger
    • Ryan Sultanem
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement satisfiedCode-Review
    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: Id3239b4003dbcc5abde8eb3457eda956fd3af3f8
    Gerrit-Change-Number: 6574782
    Gerrit-PatchSet: 9
    Gerrit-Owner: Ryan Sultanem <rs...@google.com>
    Gerrit-Reviewer: David Roger <dro...@chromium.org>
    Gerrit-Reviewer: James Lee <ljj...@google.com>
    Gerrit-Reviewer: Ryan Sultanem <rs...@google.com>
    Gerrit-CC: Alexei Svitkine <asvi...@chromium.org>
    Gerrit-Attention: Ryan Sultanem <rs...@google.com>
    Gerrit-Attention: David Roger <dro...@chromium.org>
    Gerrit-Comment-Date: Tue, 10 Jun 2025 15:40:01 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    open
    diffy

    David Roger (Gerrit)

    unread,
    Jun 11, 2025, 4:31:22 AM6/11/25
    to Ryan Sultanem, James Lee, Alexei Svitkine, Chromium LUCI CQ, chromium...@chromium.org
    Attention needed from Ryan Sultanem

    David Roger voted and added 1 comment

    Votes added by David Roger

    Code-Review+1

    1 comment

    Patchset-level comments
    File-level comment, Patchset 10 (Latest):
    David Roger . resolved

    browser prefs lgtm

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Ryan Sultanem
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement satisfiedCode-Review
    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: Id3239b4003dbcc5abde8eb3457eda956fd3af3f8
    Gerrit-Change-Number: 6574782
    Gerrit-PatchSet: 10
    Gerrit-Owner: Ryan Sultanem <rs...@google.com>
    Gerrit-Reviewer: David Roger <dro...@chromium.org>
    Gerrit-Reviewer: James Lee <ljj...@google.com>
    Gerrit-Reviewer: Ryan Sultanem <rs...@google.com>
    Gerrit-CC: Alexei Svitkine <asvi...@chromium.org>
    Gerrit-Attention: Ryan Sultanem <rs...@google.com>
    Gerrit-Comment-Date: Wed, 11 Jun 2025 08:31:05 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    open
    diffy

    Ryan Sultanem (Gerrit)

    unread,
    Jun 11, 2025, 6:48:43 AM6/11/25
    to David Roger, James Lee, Alexei Svitkine, Chromium LUCI CQ, chromium...@chromium.org
    Attention needed from David Roger and James Lee

    Ryan Sultanem voted and added 2 comments

    Votes added by Ryan Sultanem

    Commit-Queue+1

    2 comments

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

    Hey David and James, could you please check the added changes?

    I preferred to add the second synthetic field trial in the same change to simplify the merge request. PTAL - sorry about having to recheck!

    Thanks!

    File chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc
    Line 476, Patchset 11: ChromeSigninClient::
    MaybeAddUserToBookmarksBubblePromoShownSyntheticFieldTrial();
    Ryan Sultanem . unresolved

    This currently does not filter out the users that are signed in (not syncing) for the control group of the main experiment, for which the Sync promo will be shown.

    I am not sure what was the latest decision on that detail was, if needed we can filter them out easily here.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • David Roger
    • James Lee
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    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: Id3239b4003dbcc5abde8eb3457eda956fd3af3f8
    Gerrit-Change-Number: 6574782
    Gerrit-PatchSet: 12
    Gerrit-Owner: Ryan Sultanem <rs...@google.com>
    Gerrit-Reviewer: David Roger <dro...@chromium.org>
    Gerrit-Reviewer: James Lee <ljj...@google.com>
    Gerrit-Reviewer: Ryan Sultanem <rs...@google.com>
    Gerrit-CC: Alexei Svitkine <asvi...@chromium.org>
    Gerrit-Attention: James Lee <ljj...@google.com>
    Gerrit-Attention: David Roger <dro...@chromium.org>
    Gerrit-Comment-Date: Wed, 11 Jun 2025 10:48:29 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    David Roger (Gerrit)

    unread,
    Jun 12, 2025, 4:33:07 AM6/12/25
    to Ryan Sultanem, James Lee, Alexei Svitkine, Chromium LUCI CQ, chromium...@chromium.org
    Attention needed from James Lee and Ryan Sultanem

    David Roger voted and added 2 comments

    Votes added by David Roger

    Code-Review+1

    2 comments

    Patchset-level comments
    File-level comment, Patchset 13 (Latest):
    David Roger . resolved

    this looks good superficially, but I am not an expert with synthetic field trials at all.

    File chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc
    Line 476, Patchset 11: ChromeSigninClient::
    MaybeAddUserToBookmarksBubblePromoShownSyntheticFieldTrial();
    Ryan Sultanem . unresolved

    This currently does not filter out the users that are signed in (not syncing) for the control group of the main experiment, for which the Sync promo will be shown.

    I am not sure what was the latest decision on that detail was, if needed we can filter them out easily here.

    David Roger

    It probably does not matter much? Are we going to use the control group?

    Open in Gerrit

    Related details

    Attention is currently required from:
    • James Lee
    • Ryan Sultanem
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    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: Id3239b4003dbcc5abde8eb3457eda956fd3af3f8
    Gerrit-Change-Number: 6574782
    Gerrit-PatchSet: 13
    Gerrit-Owner: Ryan Sultanem <rs...@google.com>
    Gerrit-Reviewer: David Roger <dro...@chromium.org>
    Gerrit-Reviewer: James Lee <ljj...@google.com>
    Gerrit-Reviewer: Ryan Sultanem <rs...@google.com>
    Gerrit-CC: Alexei Svitkine <asvi...@chromium.org>
    Gerrit-Attention: Ryan Sultanem <rs...@google.com>
    Gerrit-Attention: James Lee <ljj...@google.com>
    Gerrit-Comment-Date: Thu, 12 Jun 2025 08:32:51 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    Comment-In-Reply-To: Ryan Sultanem <rs...@google.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    James Lee (Gerrit)

    unread,
    Jun 12, 2025, 5:22:13 AM6/12/25
    to Ryan Sultanem, David Roger, Alexei Svitkine, Chromium LUCI CQ, chromium...@chromium.org
    Attention needed from Ryan Sultanem

    James Lee voted and added 1 comment

    Votes added by James Lee

    Code-Review+1

    1 comment

    File chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc
    Line 476, Patchset 11: ChromeSigninClient::
    MaybeAddUserToBookmarksBubblePromoShownSyntheticFieldTrial();
    Ryan Sultanem . unresolved

    This currently does not filter out the users that are signed in (not syncing) for the control group of the main experiment, for which the Sync promo will be shown.

    I am not sure what was the latest decision on that detail was, if needed we can filter them out easily here.

    David Roger

    It probably does not matter much? Are we going to use the control group?

    James Lee

    There is some more context on this linked in the bug (with still some open discussion).

    I think we should land this CL as-is, and if we decide to slightly tweak the groups for this synthetic trial then that could be done in a subsequent CL.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Ryan Sultanem
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    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: Id3239b4003dbcc5abde8eb3457eda956fd3af3f8
    Gerrit-Change-Number: 6574782
    Gerrit-PatchSet: 13
    Gerrit-Owner: Ryan Sultanem <rs...@google.com>
    Gerrit-Reviewer: David Roger <dro...@chromium.org>
    Gerrit-Reviewer: James Lee <ljj...@google.com>
    Gerrit-Reviewer: Ryan Sultanem <rs...@google.com>
    Gerrit-CC: Alexei Svitkine <asvi...@chromium.org>
    Gerrit-Attention: Ryan Sultanem <rs...@google.com>
    Gerrit-Comment-Date: Thu, 12 Jun 2025 09:21:59 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    Comment-In-Reply-To: Ryan Sultanem <rs...@google.com>
    Comment-In-Reply-To: David Roger <dro...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    James Lee (Gerrit)

    unread,
    Jun 12, 2025, 5:26:48 AM6/12/25
    to Ryan Sultanem, David Roger, Alexei Svitkine, Chromium LUCI CQ, chromium...@chromium.org
    Attention needed from Ryan Sultanem

    James Lee added 1 comment

    File chrome/browser/signin/chrome_signin_client.cc
    Line 253, Patchset 13 (Latest): MaybeAddUserToUnoBookmarksSyntheticFieldTrial(
    James Lee . unresolved

    The code coverage tool is reporting no coverage for this method at all - is that really true, or is that a consequence of some other failures in the run?

    I think that there should at least be code coverage to ensure no crashes (even if we don't fully test that the group assignments are as expected).

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Ryan Sultanem
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    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: Id3239b4003dbcc5abde8eb3457eda956fd3af3f8
    Gerrit-Change-Number: 6574782
    Gerrit-PatchSet: 13
    Gerrit-Owner: Ryan Sultanem <rs...@google.com>
    Gerrit-Reviewer: David Roger <dro...@chromium.org>
    Gerrit-Reviewer: James Lee <ljj...@google.com>
    Gerrit-Reviewer: Ryan Sultanem <rs...@google.com>
    Gerrit-CC: Alexei Svitkine <asvi...@chromium.org>
    Gerrit-Attention: Ryan Sultanem <rs...@google.com>
    Gerrit-Comment-Date: Thu, 12 Jun 2025 09:26:35 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Ryan Sultanem (Gerrit)

    unread,
    Jun 12, 2025, 9:05:49 AM6/12/25
    to James Lee, David Roger, Alexei Svitkine, Chromium LUCI CQ, chromium...@chromium.org
    Attention needed from David Roger and James Lee

    Ryan Sultanem added 3 comments

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

    Thanks! Since I modified a new file (added a new test), your +1s were removed.

    Could you please check again? Sorry about that!
    (Maybe one of you would be enough for approval)

    File chrome/browser/signin/chrome_signin_client.cc
    Line 253, Patchset 13: MaybeAddUserToUnoBookmarksSyntheticFieldTrial(
    James Lee . resolved

    The code coverage tool is reporting no coverage for this method at all - is that really true, or is that a consequence of some other failures in the run?

    I think that there should at least be code coverage to ensure no crashes (even if we don't fully test that the group assignments are as expected).

    Ryan Sultanem

    Added a browser test to simulate the addition of the group in the prefs.

    Enabling the field trial for the disabled/control groups does not seem to be part of the infra. Only testing for the enabled group - which should be enough.

    File chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc
    Line 476, Patchset 11: ChromeSigninClient::
    MaybeAddUserToBookmarksBubblePromoShownSyntheticFieldTrial();
    Ryan Sultanem . resolved

    This currently does not filter out the users that are signed in (not syncing) for the control group of the main experiment, for which the Sync promo will be shown.

    I am not sure what was the latest decision on that detail was, if needed we can filter them out easily here.

    David Roger

    It probably does not matter much? Are we going to use the control group?

    James Lee

    There is some more context on this linked in the bug (with still some open discussion).

    I think we should land this CL as-is, and if we decide to slightly tweak the groups for this synthetic trial then that could be done in a subsequent CL.

    Ryan Sultanem

    Sounds good.

    Open in Gerrit

    Related details

    Attention is currently required from:
    • David Roger
    • James Lee
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Review
    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: Id3239b4003dbcc5abde8eb3457eda956fd3af3f8
    Gerrit-Change-Number: 6574782
    Gerrit-PatchSet: 15
    Gerrit-Owner: Ryan Sultanem <rs...@google.com>
    Gerrit-Reviewer: David Roger <dro...@chromium.org>
    Gerrit-Reviewer: James Lee <ljj...@google.com>
    Gerrit-Reviewer: Ryan Sultanem <rs...@google.com>
    Gerrit-CC: Alexei Svitkine <asvi...@chromium.org>
    Gerrit-Attention: James Lee <ljj...@google.com>
    Gerrit-Attention: David Roger <dro...@chromium.org>
    Gerrit-Comment-Date: Thu, 12 Jun 2025 13:05:25 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Ryan Sultanem <rs...@google.com>
    Comment-In-Reply-To: James Lee <ljj...@google.com>
    Comment-In-Reply-To: David Roger <dro...@chromium.org>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    James Lee (Gerrit)

    unread,
    Jun 12, 2025, 9:06:54 AM6/12/25
    to Ryan Sultanem, David Roger, Alexei Svitkine, Chromium LUCI CQ, chromium...@chromium.org
    Attention needed from David Roger and Ryan Sultanem

    James Lee voted Code-Review+1

    Code-Review+1
    Open in Gerrit

    Related details

    Attention is currently required from:
    • David Roger
    • Ryan Sultanem
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement satisfiedCode-Review
    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: Id3239b4003dbcc5abde8eb3457eda956fd3af3f8
    Gerrit-Change-Number: 6574782
    Gerrit-PatchSet: 15
    Gerrit-Owner: Ryan Sultanem <rs...@google.com>
    Gerrit-Reviewer: David Roger <dro...@chromium.org>
    Gerrit-Reviewer: James Lee <ljj...@google.com>
    Gerrit-Reviewer: Ryan Sultanem <rs...@google.com>
    Gerrit-CC: Alexei Svitkine <asvi...@chromium.org>
    Gerrit-Attention: Ryan Sultanem <rs...@google.com>
    Gerrit-Attention: David Roger <dro...@chromium.org>
    Gerrit-Comment-Date: Thu, 12 Jun 2025 13:06:39 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    open
    diffy

    Ryan Sultanem (Gerrit)

    unread,
    Jun 12, 2025, 9:08:46 AM6/12/25
    to James Lee, David Roger, Alexei Svitkine, Chromium LUCI CQ, chromium...@chromium.org

    Ryan Sultanem voted Commit-Queue+2

    Commit-Queue+2
    Open in Gerrit

    Related details

    Attention set is empty
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement satisfiedCode-Review
    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: Id3239b4003dbcc5abde8eb3457eda956fd3af3f8
    Gerrit-Change-Number: 6574782
    Gerrit-PatchSet: 15
    Gerrit-Owner: Ryan Sultanem <rs...@google.com>
    Gerrit-Reviewer: David Roger <dro...@chromium.org>
    Gerrit-Reviewer: James Lee <ljj...@google.com>
    Gerrit-Reviewer: Ryan Sultanem <rs...@google.com>
    Gerrit-CC: Alexei Svitkine <asvi...@chromium.org>
    Gerrit-Comment-Date: Thu, 12 Jun 2025 13:08:33 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    open
    diffy

    Chromium LUCI CQ (Gerrit)

    unread,
    Jun 12, 2025, 10:02:06 AM6/12/25
    to Ryan Sultanem, James Lee, David Roger, Alexei Svitkine, chromium...@chromium.org

    Chromium LUCI CQ submitted the change

    Change information

    Commit message:
    [B4B] Adapt Synthetic field trials for Bookmarks Bubble event

    This CL is a followup of http://crrev.com/c/6542647 that repurposes
    the created Synthetic field trial:
    `kBookmarksBubblePromoShownSyntheticTrialName`
    - Trial purpose: Tag clients that have signed in or turned on sync
    from the Bookmarks Bubble.
    - Butter Group (Enabled): With the feature enabled, those users will
    have butter on.
    - Sync Group (Disabled): With the feature disabled, those users will

    have sync on - Butter off.

    Also adds a second Synthetic field trial for users that have been
    shown the sign in or sync promo: `UnoDesktopBookmarksBubblePromoShown`.

    The group names associated with Synthetic field trial are extracted
    from the main experiment group names, and will adapt based on any
    change done to the main experiment without client changes.

    The groups are sticky and will not be modified; they are reset on
    startup based on the value that was set after sign-in/sync. Even if
    the group names of the main experiment are modified, it will not be
    reflected in users that have groups already assigned.
    Bug: 417655710
    Change-Id: Id3239b4003dbcc5abde8eb3457eda956fd3af3f8
    Commit-Queue: Ryan Sultanem <rs...@google.com>
    Reviewed-by: James Lee <ljj...@google.com>
    Cr-Commit-Position: refs/heads/main@{#1473024}
    Files:
    • M chrome/browser/prefs/browser_prefs.cc
    • M chrome/browser/signin/chrome_signin_client.cc
    • M chrome/browser/signin/chrome_signin_client.h
    • M chrome/browser/signin/chrome_signin_client_browsertest.cc
    • M chrome/browser/ui/views/bookmarks/bookmark_bubble_view.cc
    Change size: M
    Delta: 5 files changed, 201 insertions(+), 12 deletions(-)
    Branch: refs/heads/main
    Submit Requirements:
    • requirement satisfiedCode-Review: +1 by James Lee
    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: Id3239b4003dbcc5abde8eb3457eda956fd3af3f8
    Gerrit-Change-Number: 6574782
    Gerrit-PatchSet: 16
    Gerrit-Owner: Ryan Sultanem <rs...@google.com>
    Gerrit-Reviewer: Chromium LUCI CQ <chromiu...@luci-project-accounts.iam.gserviceaccount.com>
    Gerrit-Reviewer: David Roger <dro...@chromium.org>
    Gerrit-Reviewer: James Lee <ljj...@google.com>
    Gerrit-Reviewer: Ryan Sultanem <rs...@google.com>
    Gerrit-CC: Alexei Svitkine <asvi...@chromium.org>
    open
    diffy
    satisfied_requirement
    Reply all
    Reply to author
    Forward
    0 new messages