welcome_tour: Add synthetic field [chromium/src : main]

0 views
Skip to first unread message

Tao Wu (Gerrit)

unread,
Jul 19, 2024, 8:29:51 PM7/19/24
to David Black, Li Lin, chromium...@chromium.org, asvitki...@chromium.org, blundell+...@chromium.org, chromiumme...@microsoft.com, cros-system-ui-prod...@google.com
Attention needed from David Black and Li Lin

Tao Wu voted and added 1 comment

Votes added by Tao Wu

Commit-Queue+1

1 comment

Patchset-level comments
File-level comment, Patchset 1 (Latest):
Tao Wu . resolved

Hi David and Li, PTAL. Thanks.

Open in Gerrit

Related details

Attention is currently required from:
  • David Black
  • Li Lin
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: I92e769e988ce4511e35a6de790cdb57b121c1247
Gerrit-Change-Number: 5727254
Gerrit-PatchSet: 1
Gerrit-Owner: Tao Wu <wu...@chromium.org>
Gerrit-Reviewer: David Black <dmb...@google.com>
Gerrit-Reviewer: Li Lin <ll...@chromium.org>
Gerrit-Reviewer: Tao Wu <wu...@chromium.org>
Gerrit-Attention: Li Lin <ll...@chromium.org>
Gerrit-Attention: David Black <dmb...@google.com>
Gerrit-Comment-Date: Sat, 20 Jul 2024 00:29:38 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: Yes
satisfied_requirement
unsatisfied_requirement
open
diffy

gwsq (Gerrit)

unread,
Jul 19, 2024, 8:31:08 PM7/19/24
to Tao Wu, Chromium Metrics Reviews, Mark Pearson, Chromium LUCI CQ, David Black, Li Lin, chromium...@chromium.org, asvitki...@chromium.org, blundell+...@chromium.org, chromiumme...@microsoft.com, cros-system-ui-prod...@google.com
Attention needed from David Black, Li Lin and Mark Pearson

Message from gwsq

Reviewer source(s):
mpea...@chromium.org is from context(analysis/uma/chrome-metrics.gwsq)

Open in Gerrit

Related details

Attention is currently required from:
  • David Black
  • Li Lin
  • Mark Pearson
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: I92e769e988ce4511e35a6de790cdb57b121c1247
Gerrit-Change-Number: 5727254
Gerrit-PatchSet: 1
Gerrit-Owner: Tao Wu <wu...@chromium.org>
Gerrit-Reviewer: David Black <dmb...@google.com>
Gerrit-Reviewer: Li Lin <ll...@chromium.org>
Gerrit-Reviewer: Mark Pearson <mpea...@chromium.org>
Gerrit-Reviewer: Tao Wu <wu...@chromium.org>
Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
Gerrit-CC: gwsq
Gerrit-Attention: Li Lin <ll...@chromium.org>
Gerrit-Attention: Mark Pearson <mpea...@chromium.org>
Gerrit-Attention: David Black <dmb...@google.com>
Gerrit-Comment-Date: Sat, 20 Jul 2024 00:30:53 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: No
satisfied_requirement
unsatisfied_requirement
open
diffy

David Black (Gerrit)

unread,
Jul 20, 2024, 2:02:28 AM7/20/24
to Tao Wu, Chromium Metrics Reviews, Mark Pearson, Chromium LUCI CQ, David Black, Li Lin, chromium...@chromium.org, asvitki...@chromium.org, blundell+...@chromium.org, chromiumme...@microsoft.com, cros-system-ui-prod...@google.com
Attention needed from Li Lin, Mark Pearson and Tao Wu

David Black added 14 comments

File ash/user_education/mock_user_education_delegate.h
Line 81, Patchset 1 (Latest): (const std::string& trail_name, const std::string& group_name),
David Black . unresolved

nit: typo :)

File ash/user_education/user_education_controller.h
Line 74, Patchset 1 (Latest): void RegisterSyntheticFieldTrial();
David Black . unresolved

Let's add a passkey since we don't intend to make this API canonical and we'll remove it once the Welcome Tour experiment is completed :)

Line 73, Patchset 1 (Latest): // Register sythetical field trial.
David Black . unresolved

nit: typo :)

File ash/user_education/user_education_controller.cc
Line 29, Patchset 1 (Latest):constexpr char kTrialName[] = "CrOSWelcomeTour";
David Black . unresolved

Can we use a name that aligns w/ the non-synthetic study so it is more obvious that they relate to each other? :)

Line 98, Patchset 1 (Latest): // TODO: b/345829923 - Set up `delegate_` in the test base.
David Black . unresolved
Line 100, Patchset 1 (Latest): return;
David Black . unresolved

CHECK_IS_TEST() :)

Line 107, Patchset 1 (Latest): group_name = base::StrCat({kGroupNamePrefix, "V1"});
} else if (features::IsWelcomeTourHoldbackEnabled()) {
CHECK(!features::IsWelcomeTourCounterfactuallyEnabled());
CHECK(!features::IsWelcomeTourV2Enabled());
group_name = base::StrCat({kGroupNamePrefix, "Holdback"});
} else if (features::IsWelcomeTourV2Enabled()) {
CHECK(!features::IsWelcomeTourCounterfactuallyEnabled());
CHECK(!features::IsWelcomeTourHoldbackEnabled());
group_name = base::StrCat({kGroupNamePrefix, "V2"});
David Black . unresolved

Can we use the same arm names for the synthetic experiment arms as we do for the non-synthetic experiment arms for consistency? :)

Line 102, Patchset 1 (Latest):
std::string group_name;
if (features::IsWelcomeTourCounterfactuallyEnabled()) {
CHECK(!features::IsWelcomeTourHoldbackEnabled());
CHECK(!features::IsWelcomeTourV2Enabled());
group_name = base::StrCat({kGroupNamePrefix, "V1"});
} else if (features::IsWelcomeTourHoldbackEnabled()) {
CHECK(!features::IsWelcomeTourCounterfactuallyEnabled());
CHECK(!features::IsWelcomeTourV2Enabled());
group_name = base::StrCat({kGroupNamePrefix, "Holdback"});
} else if (features::IsWelcomeTourV2Enabled()) {
CHECK(!features::IsWelcomeTourCounterfactuallyEnabled());
CHECK(!features::IsWelcomeTourHoldbackEnabled());
group_name = base::StrCat({kGroupNamePrefix, "V2"});
}

if (!group_name.empty()) {
delegate_->RegisterSyntheticFieldTrial(kTrialName, group_name);
}
David Black . unresolved

The UserEducationController is framework level code and shouldn't contain feature level logic :) The trial and group names pertaining to the Welcome Tour should be passed in from the WelcomeTourController :)

File ash/user_education/user_education_delegate.h
Line 107, Patchset 1 (Latest): virtual void RegisterSyntheticFieldTrial(const std::string& trial_name,
const std::string& group_name) = 0;
David Black . unresolved

Let's use string_view to avoid creating unnecessary strings :)

Line 106, Patchset 1 (Latest): // Register sythetical field trial.
David Black . unresolved

nit: typo :)

File ash/user_education/welcome_tour/welcome_tour_controller_unittest.cc
Line 689, Patchset 1 (Latest): // Set expectations for whether the synthetic field trail will be registered.
David Black . unresolved

nit: typo :)

Line 689, Patchset 1 (Latest): // Set expectations for whether the synthetic field trail will be registered.
const bool should_register = features::IsWelcomeTourV2Enabled() ||
features::IsWelcomeTourCounterfactuallyEnabled();
std::string arm = features::IsWelcomeTourCounterfactuallyEnabled()
? "ExperimentalArm_V1"
: features::IsWelcomeTourV2Enabled() ? "ExperimentalArm_V2"
: "";
EXPECT_CALL(*user_education_delegate(),
RegisterSyntheticFieldTrial(Eq("CrOSWelcomeTour"), Eq(arm)))
.Times(should_register ? 1u : 0u);
David Black . unresolved

This doesn't verify that some unexpected synthetic field trial isn't registered :) Maybe something like:

```
std::string experimental_name;
if (features::IsWelcomeTourCounterfactuallyEnabled()) {
experimental_name = "V1";
} else if (features::IsWelcomeTourV2Enabled()) {
experimental_name = "V2";
}
EXPECT_CALL(*user_education_delegate(),
RegisterSyntheticFieldTrial(
Conditional(experimental_name.size(), "CrOSWelcomeTour", Any()),
Conditional(experimental_name.size(), experimental_name, Any())))
.Times(experimental_name.size() ? 1u : 0u);
```
Line 895, Patchset 1 (Latest): // Set expectations for whether the synthetic field trail will be
// registered.
EXPECT_CALL(*user_education_delegate(),
RegisterSyntheticFieldTrial(Eq("CrOSWelcomeTour"),
Eq("ExperimentalArm_Holdback")))
.Times(IsHoldback().value_or(false) ? 1u : 0u);
David Black . unresolved

Similar to above, maybe something like:

```
std::string experimental_name;
if (features::IsWelcomeTourHoldback()) {
experimental_name = "Holdback";
}
EXPECT_CALL(*user_education_delegate(),
RegisterSyntheticFieldTrial(
Conditional(experimental_name.size(), "CrOSWelcomeTour", Any()),
Conditional(experimental_name.size(), experimental_name, Any())))
.Times(experimental_name.size() ? 1u : 0u);
```
File chrome/browser/ui/ash/user_education/chrome_user_education_delegate.h
Line 58, Patchset 1 (Latest):
David Black . unresolved

nit: remove newline :)

Open in Gerrit

Related details

Attention is currently required from:
  • Li Lin
  • Mark Pearson
  • Tao Wu
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: I92e769e988ce4511e35a6de790cdb57b121c1247
    Gerrit-Change-Number: 5727254
    Gerrit-PatchSet: 1
    Gerrit-Owner: Tao Wu <wu...@chromium.org>
    Gerrit-Reviewer: David Black <dmb...@google.com>
    Gerrit-Reviewer: Li Lin <ll...@chromium.org>
    Gerrit-Reviewer: Mark Pearson <mpea...@chromium.org>
    Gerrit-Reviewer: Tao Wu <wu...@chromium.org>
    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
    Gerrit-CC: gwsq
    Gerrit-Attention: Li Lin <ll...@chromium.org>
    Gerrit-Attention: Tao Wu <wu...@chromium.org>
    Gerrit-Attention: Mark Pearson <mpea...@chromium.org>
    Gerrit-Comment-Date: Sat, 20 Jul 2024 06:02:10 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Tao Wu (Gerrit)

    unread,
    Jul 20, 2024, 4:17:50 AM7/20/24
    to Chromium Metrics Reviews, Mark Pearson, Chromium LUCI CQ, David Black, Li Lin, chromium...@chromium.org, asvitki...@chromium.org, blundell+...@chromium.org, chromiumme...@microsoft.com, cros-system-ui-prod...@google.com
    Attention needed from David Black, Li Lin and Mark Pearson

    Tao Wu voted and added 15 comments

    Votes added by Tao Wu

    Commit-Queue+1

    15 comments

    Patchset-level comments
    File-level comment, Patchset 2 (Latest):
    Tao Wu . resolved

    Thank you for reviewing. PTAL.

    File ash/user_education/mock_user_education_delegate.h
    Line 81, Patchset 1: (const std::string& trail_name, const std::string& group_name),
    David Black . resolved

    nit: typo :)

    Tao Wu

    Done

    File ash/user_education/user_education_controller.h
    Line 74, Patchset 1: void RegisterSyntheticFieldTrial();
    David Black . resolved

    Let's add a passkey since we don't intend to make this API canonical and we'll remove it once the Welcome Tour experiment is completed :)

    Tao Wu

    Do you ask to add params?
    RegisterSyntheticFieldTrial(string_view, string_view)?

    Line 73, Patchset 1: // Register sythetical field trial.
    David Black . resolved

    nit: typo :)

    Tao Wu

    Done

    File ash/user_education/user_education_controller.cc
    Line 29, Patchset 1:constexpr char kTrialName[] = "CrOSWelcomeTour";
    David Black . resolved

    Can we use a name that aligns w/ the non-synthetic study so it is more obvious that they relate to each other? :)

    Tao Wu

    How about ChromeOSWelcomeTourSyntheticStudy?

    Line 98, Patchset 1: // TODO: b/345829923 - Set up `delegate_` in the test base.
    David Black . resolved

    crbug.com/ :)

    Tao Wu

    Done

    Line 100, Patchset 1: return;
    David Black . resolved

    CHECK_IS_TEST() :)

    Tao Wu

    Done

    Line 107, Patchset 1: group_name = base::StrCat({kGroupNamePrefix, "V1"});

    } else if (features::IsWelcomeTourHoldbackEnabled()) {
    CHECK(!features::IsWelcomeTourCounterfactuallyEnabled());
    CHECK(!features::IsWelcomeTourV2Enabled());
    group_name = base::StrCat({kGroupNamePrefix, "Holdback"});
    } else if (features::IsWelcomeTourV2Enabled()) {
    CHECK(!features::IsWelcomeTourCounterfactuallyEnabled());
    CHECK(!features::IsWelcomeTourHoldbackEnabled());
    group_name = base::StrCat({kGroupNamePrefix, "V2"});
    David Black . resolved

    Can we use the same arm names for the synthetic experiment arms as we do for the non-synthetic experiment arms for consistency? :)

    Tao Wu

    We can use `Counterfactual`, `Holdback`, and `Enabled`


    std::string group_name;
    if (features::IsWelcomeTourCounterfactuallyEnabled()) {
    CHECK(!features::IsWelcomeTourHoldbackEnabled());
    CHECK(!features::IsWelcomeTourV2Enabled());
    group_name = base::StrCat({kGroupNamePrefix, "V1"});
    } else if (features::IsWelcomeTourHoldbackEnabled()) {
    CHECK(!features::IsWelcomeTourCounterfactuallyEnabled());
    CHECK(!features::IsWelcomeTourV2Enabled());
    group_name = base::StrCat({kGroupNamePrefix, "Holdback"});
    } else if (features::IsWelcomeTourV2Enabled()) {
    CHECK(!features::IsWelcomeTourCounterfactuallyEnabled());
    CHECK(!features::IsWelcomeTourHoldbackEnabled());
    group_name = base::StrCat({kGroupNamePrefix, "V2"});
    }

    if (!group_name.empty()) {
    delegate_->RegisterSyntheticFieldTrial(kTrialName, group_name);
    }
    David Black . resolved

    The UserEducationController is framework level code and shouldn't contain feature level logic :) The trial and group names pertaining to the Welcome Tour should be passed in from the WelcomeTourController :)

    Tao Wu

    Done

    File ash/user_education/user_education_delegate.h
    Line 107, Patchset 1: virtual void RegisterSyntheticFieldTrial(const std::string& trial_name,

    const std::string& group_name) = 0;
    David Black . resolved

    Let's use string_view to avoid creating unnecessary strings :)

    Tao Wu

    Done

    Line 106, Patchset 1: // Register sythetical field trial.
    David Black . resolved

    nit: typo :)

    Tao Wu

    Done

    File ash/user_education/welcome_tour/welcome_tour_controller_unittest.cc
    Line 689, Patchset 1: // Set expectations for whether the synthetic field trail will be registered.
    David Black . resolved

    nit: typo :)

    Tao Wu

    Done

    Line 689, Patchset 1: // Set expectations for whether the synthetic field trail will be registered.

    const bool should_register = features::IsWelcomeTourV2Enabled() ||
    features::IsWelcomeTourCounterfactuallyEnabled();
    std::string arm = features::IsWelcomeTourCounterfactuallyEnabled()
    ? "ExperimentalArm_V1"
    : features::IsWelcomeTourV2Enabled() ? "ExperimentalArm_V2"
    : "";
    EXPECT_CALL(*user_education_delegate(),
    RegisterSyntheticFieldTrial(Eq("CrOSWelcomeTour"), Eq(arm)))
    .Times(should_register ? 1u : 0u);
    David Black . resolved

    This doesn't verify that some unexpected synthetic field trial isn't registered :) Maybe something like:

    ```
    std::string experimental_name;
    if (features::IsWelcomeTourCounterfactuallyEnabled()) {
    experimental_name = "V1";
    } else if (features::IsWelcomeTourV2Enabled()) {
    experimental_name = "V2";
    }
    EXPECT_CALL(*user_education_delegate(),
    RegisterSyntheticFieldTrial(
    Conditional(experimental_name.size(), "CrOSWelcomeTour", Any()),
    Conditional(experimental_name.size(), experimental_name, Any())))
    .Times(experimental_name.size() ? 1u : 0u);
    ```
    Tao Wu

    Done. I cannot tell what the difference is 😞 What's the unexpected synthetic field trial?

    Line 895, Patchset 1: // Set expectations for whether the synthetic field trail will be

    // registered.
    EXPECT_CALL(*user_education_delegate(),
    RegisterSyntheticFieldTrial(Eq("CrOSWelcomeTour"),
    Eq("ExperimentalArm_Holdback")))
    .Times(IsHoldback().value_or(false) ? 1u : 0u);
    David Black . resolved

    Similar to above, maybe something like:

    ```
    std::string experimental_name;
    if (features::IsWelcomeTourHoldback()) {
    experimental_name = "Holdback";
    }
    EXPECT_CALL(*user_education_delegate(),
    RegisterSyntheticFieldTrial(
    Conditional(experimental_name.size(), "CrOSWelcomeTour", Any()),
    Conditional(experimental_name.size(), experimental_name, Any())))
    .Times(experimental_name.size() ? 1u : 0u);
    ```
    Tao Wu

    Done

    File chrome/browser/ui/ash/user_education/chrome_user_education_delegate.h
    Line 58, Patchset 1:
    David Black . resolved

    nit: remove newline :)

    Tao Wu

    Done

    Open in Gerrit

    Related details

    Attention is currently required from:
    • David Black
    • Li Lin
    • Mark Pearson
    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: I92e769e988ce4511e35a6de790cdb57b121c1247
    Gerrit-Change-Number: 5727254
    Gerrit-PatchSet: 2
    Gerrit-Owner: Tao Wu <wu...@chromium.org>
    Gerrit-Reviewer: David Black <dmb...@google.com>
    Gerrit-Reviewer: Li Lin <ll...@chromium.org>
    Gerrit-Reviewer: Mark Pearson <mpea...@chromium.org>
    Gerrit-Reviewer: Tao Wu <wu...@chromium.org>
    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
    Gerrit-CC: gwsq
    Gerrit-Attention: Li Lin <ll...@chromium.org>
    Gerrit-Attention: David Black <dmb...@google.com>
    Gerrit-Attention: Mark Pearson <mpea...@chromium.org>
    Gerrit-Comment-Date: Sat, 20 Jul 2024 08:17:37 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: Yes
    Comment-In-Reply-To: David Black <dmb...@google.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Tao Wu (Gerrit)

    unread,
    Jul 20, 2024, 10:47:15 AM7/20/24
    to Chromium Metrics Reviews, Mark Pearson, Chromium LUCI CQ, David Black, Li Lin, chromium...@chromium.org, asvitki...@chromium.org, blundell+...@chromium.org, chromiumme...@microsoft.com, cros-system-ui-prod...@google.com
    Attention needed from David Black, Li Lin and Mark Pearson

    Tao Wu added 1 comment

    File ash/user_education/welcome_tour/welcome_tour_controller_unittest.cc
    Line 689, Patchset 1: // Set expectations for whether the synthetic field trail will be registered.

    const bool should_register = features::IsWelcomeTourV2Enabled() ||
    features::IsWelcomeTourCounterfactuallyEnabled();
    std::string arm = features::IsWelcomeTourCounterfactuallyEnabled()
    ? "ExperimentalArm_V1"
    : features::IsWelcomeTourV2Enabled() ? "ExperimentalArm_V2"
    : "";
    EXPECT_CALL(*user_education_delegate(),
    RegisterSyntheticFieldTrial(Eq("CrOSWelcomeTour"), Eq(arm)))
    .Times(should_register ? 1u : 0u);
    David Black . resolved

    This doesn't verify that some unexpected synthetic field trial isn't registered :) Maybe something like:

    ```
    std::string experimental_name;
    if (features::IsWelcomeTourCounterfactuallyEnabled()) {
    experimental_name = "V1";
    } else if (features::IsWelcomeTourV2Enabled()) {
    experimental_name = "V2";
    }
    EXPECT_CALL(*user_education_delegate(),
    RegisterSyntheticFieldTrial(
    Conditional(experimental_name.size(), "CrOSWelcomeTour", Any()),
    Conditional(experimental_name.size(), experimental_name, Any())))
    .Times(experimental_name.size() ? 1u : 0u);
    ```
    Tao Wu

    Done. I cannot tell what the difference is 😞 What's the unexpected synthetic field trial?

    Tao Wu

    I got it! Good way!

    Open in Gerrit

    Related details

    Attention is currently required from:
    • David Black
    • Li Lin
    • Mark Pearson
    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: I92e769e988ce4511e35a6de790cdb57b121c1247
    Gerrit-Change-Number: 5727254
    Gerrit-PatchSet: 3
    Gerrit-Owner: Tao Wu <wu...@chromium.org>
    Gerrit-Reviewer: David Black <dmb...@google.com>
    Gerrit-Reviewer: Li Lin <ll...@chromium.org>
    Gerrit-Reviewer: Mark Pearson <mpea...@chromium.org>
    Gerrit-Reviewer: Tao Wu <wu...@chromium.org>
    Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
    Gerrit-CC: gwsq
    Gerrit-Attention: Li Lin <ll...@chromium.org>
    Gerrit-Attention: David Black <dmb...@google.com>
    Gerrit-Attention: Mark Pearson <mpea...@chromium.org>
    Gerrit-Comment-Date: Sat, 20 Jul 2024 14:47:00 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    Comment-In-Reply-To: Tao Wu <wu...@chromium.org>
    Comment-In-Reply-To: David Black <dmb...@google.com>
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    David Black (Gerrit)

    unread,
    Jul 20, 2024, 9:44:04 PM7/20/24
    to Tao Wu, Chromium Metrics Reviews, Mark Pearson, Chromium LUCI CQ, David Black, Li Lin, chromium...@chromium.org, asvitki...@chromium.org, blundell+...@chromium.org, chromiumme...@microsoft.com, cros-system-ui-prod...@google.com
    Attention needed from Li Lin, Mark Pearson and Tao Wu

    David Black added 12 comments

    File ash/user_education/user_education_controller.h
    Line 73, Patchset 3 (Latest): // Register synthetical field trial.
    David Black . unresolved

    nit: synthetic :)

    Line 74, Patchset 1: void RegisterSyntheticFieldTrial();
    David Black . resolved

    Let's add a passkey since we don't intend to make this API canonical and we'll remove it once the Welcome Tour experiment is completed :)

    Tao Wu

    Do you ask to add params?
    RegisterSyntheticFieldTrial(string_view, string_view)?

    David Black

    Yes, looks good :)

    File ash/user_education/user_education_controller.cc
    Line 29, Patchset 1:constexpr char kTrialName[] = "CrOSWelcomeTour";
    David Black . unresolved

    Can we use a name that aligns w/ the non-synthetic study so it is more obvious that they relate to each other? :)

    Tao Wu

    How about ChromeOSWelcomeTourSyntheticStudy?

    David Black

    The finch study is "ChromeOSWelcomeTourV2", so I would do something like "ChromeOSWelcomeTourV2_Synthetic" for the associated synthetic field trial so it is more obvious that the two are related and so that a search for "ChromeOSWelcomeTourV2" will match both :)

    Line 107, Patchset 1: group_name = base::StrCat({kGroupNamePrefix, "V1"});
    } else if (features::IsWelcomeTourHoldbackEnabled()) {
    CHECK(!features::IsWelcomeTourCounterfactuallyEnabled());
    CHECK(!features::IsWelcomeTourV2Enabled());
    group_name = base::StrCat({kGroupNamePrefix, "Holdback"});
    } else if (features::IsWelcomeTourV2Enabled()) {
    CHECK(!features::IsWelcomeTourCounterfactuallyEnabled());
    CHECK(!features::IsWelcomeTourHoldbackEnabled());
    group_name = base::StrCat({kGroupNamePrefix, "V2"});
    David Black . resolved

    Can we use the same arm names for the synthetic experiment arms as we do for the non-synthetic experiment arms for consistency? :)

    Tao Wu

    We can use `Counterfactual`, `Holdback`, and `Enabled`

    David Black

    Sgtm :)

    File ash/user_education/user_education_delegate.h
    Line 106, Patchset 3 (Latest): // Register synthetical field trial.
    David Black . unresolved

    nit: synthetic :)

    File ash/user_education/welcome_tour/welcome_tour_controller.cc
    Line 73, Patchset 3 (Latest):constexpr char kGroupNamePrefix[] = "ExperimentalArm_";
    David Black . unresolved

    Is this prefix necessary or can the arms just be "Enabled", "Counterfactual" and "Holdback" like they are in the finch study? :)

    Line 148, Patchset 3 (Latest):std::string GetSyntheticStudyGroupName() {
    David Black . unresolved

    nit: Use `std::optional` to express that this API may return an empty value, otherwise it is non-obvious from the method signature :)

    Line 148, Patchset 3 (Latest):std::string GetSyntheticStudyGroupName() {

    std::string group_name;
    if (features::IsWelcomeTourCounterfactuallyEnabled()) {
    CHECK(!features::IsWelcomeTourHoldbackEnabled());
    CHECK(!features::IsWelcomeTourV2Enabled());
    group_name = base::StrCat({kGroupNamePrefix, "Counterfactual"});

    } else if (features::IsWelcomeTourHoldbackEnabled()) {
    CHECK(!features::IsWelcomeTourCounterfactuallyEnabled());
    CHECK(!features::IsWelcomeTourV2Enabled());
    group_name = base::StrCat({kGroupNamePrefix, "Holdback"});
    } else if (features::IsWelcomeTourV2Enabled()) {
    CHECK(!features::IsWelcomeTourCounterfactuallyEnabled());
    CHECK(!features::IsWelcomeTourHoldbackEnabled());
    group_name = base::StrCat({kGroupNamePrefix, "Enabled"});
    }

    return group_name;
    }
    David Black . unresolved

    nit: sort w/ other helper methods :)

    Line 568, Patchset 3 (Latest): const auto group_name = GetSyntheticStudyGroupName();
    if (!group_name.empty()) {
    David Black . unresolved
    nit: inline :)
    ```suggestion
    if (const auto group_name = GetSyntheticStudyGroupName(); !group_name.empty()) {
    ```
    Line 573, Patchset 3 (Latest): welcome_tour_metrics::RecordExperimentalArm();
    David Black . unresolved

    nit: newline above :)

    File ash/user_education/welcome_tour/welcome_tour_controller_unittest.cc
    David Black

    👍 This way we ensure that "Holdback", for example, isn't mistakenly registered :)

    Line 703, Patchset 3 (Latest): "ChromeOSWelcomeTourSyntheticStudy", testing::_),
    David Black . unresolved

    nit: just `_`, same for the three instances below :)

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Li Lin
    • Mark Pearson
    • Tao Wu
    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: I92e769e988ce4511e35a6de790cdb57b121c1247
      Gerrit-Change-Number: 5727254
      Gerrit-PatchSet: 3
      Gerrit-Owner: Tao Wu <wu...@chromium.org>
      Gerrit-Reviewer: David Black <dmb...@google.com>
      Gerrit-Reviewer: Li Lin <ll...@chromium.org>
      Gerrit-Reviewer: Mark Pearson <mpea...@chromium.org>
      Gerrit-Reviewer: Tao Wu <wu...@chromium.org>
      Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
      Gerrit-CC: gwsq
      Gerrit-Attention: Li Lin <ll...@chromium.org>
      Gerrit-Attention: Tao Wu <wu...@chromium.org>
      Gerrit-Attention: Mark Pearson <mpea...@chromium.org>
      Gerrit-Comment-Date: Sun, 21 Jul 2024 01:43:50 +0000
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      David Black (Gerrit)

      unread,
      Jul 21, 2024, 1:38:30 AM7/21/24
      to Tao Wu, Chromium Metrics Reviews, Mark Pearson, Chromium LUCI CQ, David Black, Li Lin, chromium...@chromium.org, asvitki...@chromium.org, blundell+...@chromium.org, chromiumme...@microsoft.com, cros-system-ui-prod...@google.com
      Attention needed from Li Lin, Mark Pearson and Tao Wu

      David Black added 1 comment

      File ash/user_education/user_education_controller.h
      Line 74, Patchset 1: void RegisterSyntheticFieldTrial();
      David Black . unresolved

      Let's add a passkey since we don't intend to make this API canonical and we'll remove it once the Welcome Tour experiment is completed :)

      Tao Wu

      Do you ask to add params?
      RegisterSyntheticFieldTrial(string_view, string_view)?

      David Black

      Yes, looks good :)

      David Black

      Sorry, forgot the passkey :) Should be something like:

      ```
      RegisterSyntheticFieldTrial(
      UserEducationPrivateApiKey,
      std::string_view trial_name,
      std::string_view group_name);
      ```
      Gerrit-Comment-Date: Sun, 21 Jul 2024 05:38:18 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: David Black <dmb...@google.com>
      Comment-In-Reply-To: Tao Wu <wu...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Tao Wu (Gerrit)

      unread,
      Jul 21, 2024, 1:10:49 PM7/21/24
      to Chromium Metrics Reviews, Mark Pearson, Chromium LUCI CQ, David Black, Li Lin, chromium...@chromium.org, asvitki...@chromium.org, blundell+...@chromium.org, chromiumme...@microsoft.com, cros-system-ui-prod...@google.com
      Attention needed from David Black, Li Lin and Mark Pearson

      Tao Wu voted and added 11 comments

      Votes added by Tao Wu

      Commit-Queue+1

      11 comments

      Patchset-level comments
      File-level comment, Patchset 5 (Latest):
      Tao Wu . resolved

      Thank you! PTAL.

      File ash/user_education/user_education_controller.h
      Line 73, Patchset 3: // Register synthetical field trial.
      David Black . resolved

      nit: synthetic :)

      Tao Wu

      Done

      Line 74, Patchset 1: void RegisterSyntheticFieldTrial();
      David Black . resolved

      Let's add a passkey since we don't intend to make this API canonical and we'll remove it once the Welcome Tour experiment is completed :)

      Tao Wu

      Do you ask to add params?
      RegisterSyntheticFieldTrial(string_view, string_view)?

      David Black

      Yes, looks good :)

      David Black

      Sorry, forgot the passkey :) Should be something like:

      ```
      RegisterSyntheticFieldTrial(
      UserEducationPrivateApiKey,
      std::string_view trial_name,
      std::string_view group_name);
      ```
      Tao Wu

      Done
      Did not notice this before.

      File ash/user_education/user_education_controller.cc
      Line 29, Patchset 1:constexpr char kTrialName[] = "CrOSWelcomeTour";
      David Black . resolved

      Can we use a name that aligns w/ the non-synthetic study so it is more obvious that they relate to each other? :)

      Tao Wu

      How about ChromeOSWelcomeTourSyntheticStudy?

      David Black

      The finch study is "ChromeOSWelcomeTourV2", so I would do something like "ChromeOSWelcomeTourV2_Synthetic" for the associated synthetic field trial so it is more obvious that the two are related and so that a search for "ChromeOSWelcomeTourV2" will match both :)

      Tao Wu

      Done

      File ash/user_education/user_education_delegate.h
      Line 106, Patchset 3: // Register synthetical field trial.
      David Black . resolved

      nit: synthetic :)

      Tao Wu

      Done

      File ash/user_education/welcome_tour/welcome_tour_controller.cc
      Line 73, Patchset 3:constexpr char kGroupNamePrefix[] = "ExperimentalArm_";
      David Black . resolved

      Is this prefix necessary or can the arms just be "Enabled", "Counterfactual" and "Holdback" like they are in the finch study? :)

      Tao Wu

      Done

      Line 148, Patchset 3:std::string GetSyntheticStudyGroupName() {
      David Black . resolved

      nit: Use `std::optional` to express that this API may return an empty value, otherwise it is non-obvious from the method signature :)

      Tao Wu

      Done

      Line 148, Patchset 3:std::string GetSyntheticStudyGroupName() {

      std::string group_name;
      if (features::IsWelcomeTourCounterfactuallyEnabled()) {
      CHECK(!features::IsWelcomeTourHoldbackEnabled());
      CHECK(!features::IsWelcomeTourV2Enabled());
      group_name = base::StrCat({kGroupNamePrefix, "Counterfactual"});
      } else if (features::IsWelcomeTourHoldbackEnabled()) {
      CHECK(!features::IsWelcomeTourCounterfactuallyEnabled());
      CHECK(!features::IsWelcomeTourV2Enabled());
      group_name = base::StrCat({kGroupNamePrefix, "Holdback"});
      } else if (features::IsWelcomeTourV2Enabled()) {
      CHECK(!features::IsWelcomeTourCounterfactuallyEnabled());
      CHECK(!features::IsWelcomeTourHoldbackEnabled());
      group_name = base::StrCat({kGroupNamePrefix, "Enabled"});
      }

      return group_name;
      }
      David Black . resolved

      nit: sort w/ other helper methods :)

      Tao Wu

      Done

      Line 568, Patchset 3: const auto group_name = GetSyntheticStudyGroupName();
      if (!group_name.empty()) {
      David Black . resolved
      nit: inline :)
      ```suggestion
      if (const auto group_name = GetSyntheticStudyGroupName(); !group_name.empty()) {
      ```
      Tao Wu

      Done

      Line 573, Patchset 3: welcome_tour_metrics::RecordExperimentalArm();
      David Black . resolved

      nit: newline above :)

      Tao Wu

      Done

      File ash/user_education/welcome_tour/welcome_tour_controller_unittest.cc
      Line 703, Patchset 3: "ChromeOSWelcomeTourSyntheticStudy", testing::_),
      David Black . resolved

      nit: just `_`, same for the three instances below :)

      Tao Wu

      Done

      Open in Gerrit

      Related details

      Attention is currently required from:
      • David Black
      • Li Lin
      • Mark Pearson
      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: I92e769e988ce4511e35a6de790cdb57b121c1247
      Gerrit-Change-Number: 5727254
      Gerrit-PatchSet: 5
      Gerrit-Owner: Tao Wu <wu...@chromium.org>
      Gerrit-Reviewer: David Black <dmb...@google.com>
      Gerrit-Reviewer: Li Lin <ll...@chromium.org>
      Gerrit-Reviewer: Mark Pearson <mpea...@chromium.org>
      Gerrit-Reviewer: Tao Wu <wu...@chromium.org>
      Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
      Gerrit-CC: gwsq
      Gerrit-Attention: Li Lin <ll...@chromium.org>
      Gerrit-Attention: David Black <dmb...@google.com>
      Gerrit-Attention: Mark Pearson <mpea...@chromium.org>
      Gerrit-Comment-Date: Sun, 21 Jul 2024 17:10:36 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: Yes
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      David Black (Gerrit)

      unread,
      Jul 21, 2024, 7:57:37 PM7/21/24
      to Tao Wu, David Black, Chromium Metrics Reviews, Mark Pearson, Chromium LUCI CQ, Li Lin, chromium...@chromium.org, asvitki...@chromium.org, blundell+...@chromium.org, chromiumme...@microsoft.com, cros-system-ui-prod...@google.com
      Attention needed from Li Lin, Mark Pearson and Tao Wu

      David Black voted and added 1 comment

      Votes added by David Black

      Code-Review+1

      1 comment

      Patchset-level comments
      David Black . resolved

      lgtm

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Li Lin
      • Mark Pearson
      • Tao Wu
      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: I92e769e988ce4511e35a6de790cdb57b121c1247
      Gerrit-Change-Number: 5727254
      Gerrit-PatchSet: 5
      Gerrit-Owner: Tao Wu <wu...@chromium.org>
      Gerrit-Reviewer: David Black <dmb...@google.com>
      Gerrit-Reviewer: Li Lin <ll...@chromium.org>
      Gerrit-Reviewer: Mark Pearson <mpea...@chromium.org>
      Gerrit-Reviewer: Tao Wu <wu...@chromium.org>
      Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
      Gerrit-CC: gwsq
      Gerrit-Attention: Li Lin <ll...@chromium.org>
      Gerrit-Attention: Tao Wu <wu...@chromium.org>
      Gerrit-Attention: Mark Pearson <mpea...@chromium.org>
      Gerrit-Comment-Date: Sun, 21 Jul 2024 23:57:22 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: Yes
      satisfied_requirement
      open
      diffy

      Mark Pearson (Gerrit)

      unread,
      Jul 21, 2024, 8:30:38 PM7/21/24
      to Tao Wu, David Black, Chromium Metrics Reviews, Chromium LUCI CQ, Li Lin, chromium...@chromium.org, asvitki...@chromium.org, blundell+...@chromium.org, chromiumme...@microsoft.com, cros-system-ui-prod...@google.com
      Attention needed from Li Lin and Tao Wu

      Mark Pearson added 1 comment

      Patchset-level comments
      Mark Pearson . unresolved

      Add the synthetic field to record the experimental arm, because this
      feature is enabled by default, we need a way to tell if the tour was
      attempted after applying the Finch config.

      Is there a doc describing this experiment design? I've previously reviewed first-run experiments, both on platforms that support Finch first-run and on platforms that did not. None of the experiments I've reviewed sound like they'd be described in the manner described here. As such, I'd like to better understand what you're doing before I approve.

      thanks,
      mark

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Li Lin
      • Tao Wu
      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: I92e769e988ce4511e35a6de790cdb57b121c1247
        Gerrit-Change-Number: 5727254
        Gerrit-PatchSet: 5
        Gerrit-Owner: Tao Wu <wu...@chromium.org>
        Gerrit-Reviewer: David Black <dmb...@google.com>
        Gerrit-Reviewer: Li Lin <ll...@chromium.org>
        Gerrit-Reviewer: Mark Pearson <mpea...@chromium.org>
        Gerrit-Reviewer: Tao Wu <wu...@chromium.org>
        Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
        Gerrit-CC: gwsq
        Gerrit-Attention: Li Lin <ll...@chromium.org>
        Gerrit-Attention: Tao Wu <wu...@chromium.org>
        Gerrit-Comment-Date: Mon, 22 Jul 2024 00:30:25 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Tao Wu (Gerrit)

        unread,
        Jul 22, 2024, 11:21:25 AM7/22/24
        to David Black, Chromium Metrics Reviews, Mark Pearson, Chromium LUCI CQ, Li Lin, chromium...@chromium.org, asvitki...@chromium.org, blundell+...@chromium.org, chromiumme...@microsoft.com, cros-system-ui-prod...@google.com
        Attention needed from Li Lin and Mark Pearson

        Tao Wu voted and added 1 comment

        Votes added by Tao Wu

        Commit-Queue+1

        1 comment

        Patchset-level comments
        Mark Pearson . unresolved

        Add the synthetic field to record the experimental arm, because this
        feature is enabled by default, we need a way to tell if the tour was
        attempted after applying the Finch config.

        Is there a doc describing this experiment design? I've previously reviewed first-run experiments, both on platforms that support Finch first-run and on platforms that did not. None of the experiments I've reviewed sound like they'd be described in the manner described here. As such, I'd like to better understand what you're doing before I approve.

        thanks,
        mark

        Tao Wu

        Hi Mark, I have added you to the doc: go/cros-welcometourv2-dd
        Thank you!

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Li Lin
        • Mark Pearson
        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: I92e769e988ce4511e35a6de790cdb57b121c1247
        Gerrit-Change-Number: 5727254
        Gerrit-PatchSet: 5
        Gerrit-Owner: Tao Wu <wu...@chromium.org>
        Gerrit-Reviewer: David Black <dmb...@google.com>
        Gerrit-Reviewer: Li Lin <ll...@chromium.org>
        Gerrit-Reviewer: Mark Pearson <mpea...@chromium.org>
        Gerrit-Reviewer: Tao Wu <wu...@chromium.org>
        Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
        Gerrit-CC: gwsq
        Gerrit-Attention: Li Lin <ll...@chromium.org>
        Gerrit-Attention: Mark Pearson <mpea...@chromium.org>
        Gerrit-Comment-Date: Mon, 22 Jul 2024 15:20:54 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: Yes
        Comment-In-Reply-To: Mark Pearson <mpea...@chromium.org>
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Tao Wu (Gerrit)

        unread,
        Jul 22, 2024, 1:52:40 PM7/22/24
        to David Black, Chromium Metrics Reviews, Mark Pearson, Chromium LUCI CQ, Li Lin, chromium...@chromium.org, asvitki...@chromium.org, blundell+...@chromium.org, chromiumme...@microsoft.com, cros-system-ui-prod...@google.com
        Attention needed from Li Lin and Mark Pearson

        Tao Wu added 1 comment

        Patchset-level comments
        Mark Pearson . unresolved

        Add the synthetic field to record the experimental arm, because this
        feature is enabled by default, we need a way to tell if the tour was
        attempted after applying the Finch config.

        Is there a doc describing this experiment design? I've previously reviewed first-run experiments, both on platforms that support Finch first-run and on platforms that did not. None of the experiments I've reviewed sound like they'd be described in the manner described here. As such, I'd like to better understand what you're doing before I approve.

        thanks,
        mark

        Tao Wu

        Hi Mark, I have added you to the doc: go/cros-welcometourv2-dd
        Thank you!

        Tao Wu

        To summarize here:

        Because the Welcome Tour V1 feature is enabled by default, the WelcomeTour will show only once as the first run after OOBE. There is a problem that many new users may not reboot and do not apply the Finch config in the first run. Therefore, this could cause problems like this:
        When the user receives the V2 (or other) treatment it will be too late: N% of those users should really be considered as control (V1) since they will have already received the V1 treatment by default. But the Finch dashboard will consider the user is in V2 treatment group.

        For solutions, we can either:
        1. Log additional metrics when we know the users received the Finch treatment. But with this, we could not use the Finch dashboard.
        2. Register Synthetic field trial when we know the users received the Finch treatment. Then we could use the Finch baseboard to slice the metrics interested in.

        We think that option 2 (this cl) will be helpful and convenient for us to inspect the experiment results.

        Gerrit-Comment-Date: Mon, 22 Jul 2024 17:52:25 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        Comment-In-Reply-To: Tao Wu <wu...@chromium.org>
        Comment-In-Reply-To: Mark Pearson <mpea...@chromium.org>
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Li Lin (Gerrit)

        unread,
        Jul 22, 2024, 3:44:58 PM7/22/24
        to Tao Wu, David Black, Chromium Metrics Reviews, Mark Pearson, Chromium LUCI CQ, chromium...@chromium.org, asvitki...@chromium.org, blundell+...@chromium.org, chromiumme...@microsoft.com, cros-system-ui-prod...@google.com
        Attention needed from Mark Pearson and Tao Wu

        Li Lin voted Code-Review+1

        Code-Review+1
        Open in Gerrit

        Related details

        Attention is currently required from:
        • Mark Pearson
        • Tao Wu
        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: I92e769e988ce4511e35a6de790cdb57b121c1247
        Gerrit-Change-Number: 5727254
        Gerrit-PatchSet: 5
        Gerrit-Owner: Tao Wu <wu...@chromium.org>
        Gerrit-Reviewer: David Black <dmb...@google.com>
        Gerrit-Reviewer: Li Lin <ll...@chromium.org>
        Gerrit-Reviewer: Mark Pearson <mpea...@chromium.org>
        Gerrit-Reviewer: Tao Wu <wu...@chromium.org>
        Gerrit-CC: Chromium Metrics Reviews <chromium-met...@google.com>
        Gerrit-CC: gwsq
        Gerrit-Attention: Tao Wu <wu...@chromium.org>
        Gerrit-Attention: Mark Pearson <mpea...@chromium.org>
        Gerrit-Comment-Date: Mon, 22 Jul 2024 19:44:43 +0000
        Gerrit-HasComments: No
        Gerrit-Has-Labels: Yes
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Tao Wu (Gerrit)

        unread,
        Jul 30, 2024, 3:35:41 PM7/30/24
        to Li Lin, David Black, Chromium Metrics Reviews, Mark Pearson, Chromium LUCI CQ, chromium...@chromium.org, asvitki...@chromium.org, blundell+...@chromium.org, chromiumme...@microsoft.com, cros-system-ui-prod...@google.com

        Tao Wu abandoned this change

        Related details

        Attention set is empty
        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: abandon
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy
        Reply all
        Reply to author
        Forward
        0 new messages