[iOS][PRDBD] Implement QuickDeleteOtherDataViewController [chromium/src : main]

0 views
Skip to first unread message

Angela Novakovic (Gerrit)

unread,
Feb 11, 2026, 9:16:29 AM (13 days ago) Feb 11
to Leo Zhao, Chromium LUCI CQ, chromium...@chromium.org, dullweb...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org, msrame...@chromium.org
Attention needed from Leo Zhao

Angela Novakovic added 13 comments

Commit Message
Line 7, Patchset 12:[iOS][PRDBD] Implements QuickDeleteOtherDataVC
Leo Zhao . resolved

It is an observation of mine that people don't use third person singular in the title (Git does not have the sense of a title, however, this first line is used as Gerrit CL's title.) I found it make the title simpler. Where is `QuickDeleteOtherDataVC` coming from?

Angela Novakovic

`QuickDeleteOtherDataVC` is the view controller of `QuickDeleteOtherDataCoordinator`. I've abbreviated ViewController as VC several times in my CL titles, but in this case as I do have space, I do agree that it gives more clarity to write the whole name. 😊

Line 9, Patchset 12:This CL implements the QuickDeleteOtherDataViewController to display
Leo Zhao . resolved

If `QuickDeleteOtherDataVC` is referring to `QuickDeleteOtherDataViewController`, then the abbreviation at the end is not suitable. You can either use the full name, or use a descriptive name, like the view controller for .... The partial abbreviation of using "VC" for "ViewController" can cause readability issues.

Angela Novakovic

Done

Line 18, Patchset 12:Fixed: 464551506, 464552107
Bug:482036587
Leo Zhao . resolved

So, this CL fixes 464551506, 464552107, as well as 482036587 (I normally don't see a CL that fixes this much issues). If it is, then they can put into one line. Also, please add a space after `Bug:`. Having a space is better for readability, and also consistency is important. In two lines, there is `Fixed:<space>` and immediately after that `Bug:<no space>`.

Angela Novakovic

This CL doesn't fix 482036587, it mentions a TODO with this bug number.

File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/public/quick_delete_constants.h
Line 53, Patchset 12:// The accessibility identifier for the passwords and passkeys cell in the quick
Leo Zhao . resolved

In the screenshot, it only shows "Passwords". The three identifiers defined below, two match the screenshot. If "kQuickDeleteOtherDataPasswordIdentifier" is to follow the same patter, it should be "...PasswordsIde...", with the "s".

It is better to put a blank line in-between them. I know that you are putting them together to indicate they are used in the same file. But from a reader's perspective, they are not related, so this reason of this grouping isn't obvious, and adding a line makes the code easier to read and also follows the established pattern above those newly added lines.

Angela Novakovic

Done

File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/public/quick_delete_constants.mm
Line 37, Patchset 12:NSString* const kQuickDeleteOtherDataPasswordIdentifier =
@"QuickDeleteOtherDataPasswordsIdentifier";
Leo Zhao . resolved

"kQuickDeleteOtherDataPasswordIdentifier" uses "Password", while its value uses "Passwords".

Angela Novakovic

Done

File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_browsing_data/test/quick_delete_browsing_data_egtest.mm
Line 823, Patchset 12: // Open quick delete browsing data page.
Leo Zhao . resolved

"Open" -> "Opens"

Angela Novakovic

Done

File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_other_data/test/quick_delete_other_data_egtest.mm
Line 51, Patchset 12: grey_accessibilityTrait(UIAccessibilityTraitButton), nil);
Leo Zhao . resolved

A quick question: since kQuickDeleteManageOtherDataCellIdentifier can already uniquely identify the element, is the `grey_accessibilityTrait` needed here? If the intention is to also verify the accessibility trait for an element, it should be done in a unit test. Unit tests are much faster and can verify in depth.

Angela Novakovic

You are correct, it is not needed.

Line 96, Patchset 12:- (AppLaunchConfiguration)appConfigurationForTestCase {
AppLaunchConfiguration config;
config.relaunch_policy = NoForceRelaunchAndResetState;
config.additional_args.push_back(std::string("--") +
syncer::kSyncShortNudgeDelayForTest);
config.features_enabled.push_back(kPasswordRemovalFromDeleteBrowsingData);

return config;
}
Leo Zhao . unresolved

Do you plan to add more EG test with the feature disabled for some tests? It is generally a good idea to test the UI with a feature flag on and off to make sure the feature flag can be enabled and disabled, and the app still functions as expected. It may not be in this file.

Angela Novakovic

I was not planning on adding tests for when the feature flag is disabled as this view is new and cannot be accessed when the feature flag is disabled (it is accessed via the "Manage other data" cell which is only available when the feature flag is enabled).

Happy to explore this if you think that there should be a test for the "Other Data" page flow for when the feature flag is disabled. 😊

Line 127, Patchset 12:- (void)signIn {
Leo Zhao . resolved

Please double check whether this `signin` method is used.

Angela Novakovic

I've added it too soon indeed. It will be needed in another CL. I have removed it as it is not needed here.

Line 135, Patchset 12: // Open quick delete other data page.
Leo Zhao . resolved

"Opens"? Please also review comments after this line.

Angela Novakovic

Done

Line 177, Patchset 12:// Tests that the "Search History" cell is visible.
- (void)testSearchHistoryVisibility {
// Open quick delete other data page.
[self openQuickDeleteOtherDataPage];

[[EarlGrey selectElementWithMatcher:SearchHistoryCellMatcher()]
assertWithMatcher:grey_sufficientlyVisible()];
}

// Tests that the "My activity" cell is visible.
- (void)testMyActivityCellVisibility {
// Open quick delete other data page.
[self openQuickDeleteOtherDataPage];

[[EarlGrey selectElementWithMatcher:MyActivityCellMatcher()]
assertWithMatcher:grey_sufficientlyVisible()];
}

// Tests that the footer is visible.
- (void)testFooterVisibility {
// Open quick delete other data page.
[self openQuickDeleteOtherDataPage];

[[EarlGrey selectElementWithMatcher:FooterMatcher()]
assertWithMatcher:grey_sufficientlyVisible()];
}
Leo Zhao . resolved

What is the reason to have three tests when all three elements should be visible at the same time?

Angela Novakovic

That is currently accurate, however, later the cells will not be visible at the same time if the DSE is not Google or the user is not signed in.

I will put them together as one test at this time and modify in a following CL. 😊

File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_other_data/ui/quick_delete_other_data_view_controller.mm
Line 77, Patchset 12:#pragma mark - UIViewController
Leo Zhao . unresolved

`UIViewController` is not suitable here. If you were to say, this section is about life cycle management, then use that. Just listing `UIViewController` is not clear about the intention.

Angela Novakovic

This seems to be norm in other files. I also see that in some files, we omit the pragma mark, and in other we have a different pragma mark after the `viewDidLoad` such as `#pragma mark - LegacyChromeTableViewController`. In this case, we are using the `UITableViewDiffableDataSource`, so perhaps putting that as a pragma mark before loadModel might help?

What would you suggest in this case? 😊

Line 232, Patchset 12: createCellWithTitle:@"Passwords"
subtitle:@"Change this"
Leo Zhao . resolved

We don't normally put hard coded string in code with the intention of merging it.

Angela Novakovic

I can wait to have the other CL finalized and reviewed before merging this one alternatively. 😊

Open in Gerrit

Related details

Attention is currently required from:
  • Leo Zhao
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: I418ab201ad01fbb729d18e5e285e02d1ed88cfdb
Gerrit-Change-Number: 7548237
Gerrit-PatchSet: 15
Gerrit-Owner: Angela Novakovic <novak...@google.com>
Gerrit-Reviewer: Angela Novakovic <novak...@google.com>
Gerrit-Reviewer: Leo Zhao <leo...@google.com>
Gerrit-Attention: Leo Zhao <leo...@google.com>
Gerrit-Comment-Date: Wed, 11 Feb 2026 14:16:23 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Leo Zhao <leo...@google.com>
satisfied_requirement
unsatisfied_requirement
open
diffy

Leo Zhao (Gerrit)

unread,
Feb 11, 2026, 2:50:37 PM (13 days ago) Feb 11
to Angela Novakovic, Chromium LUCI CQ, chromium...@chromium.org, dullweb...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org, msrame...@chromium.org
Attention needed from Angela Novakovic

Leo Zhao added 2 comments

File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_other_data/test/quick_delete_other_data_egtest.mm
Line 96, Patchset 12:- (AppLaunchConfiguration)appConfigurationForTestCase {
AppLaunchConfiguration config;
config.relaunch_policy = NoForceRelaunchAndResetState;
config.additional_args.push_back(std::string("--") +
syncer::kSyncShortNudgeDelayForTest);
config.features_enabled.push_back(kPasswordRemovalFromDeleteBrowsingData);

return config;
}
Leo Zhao . unresolved

Do you plan to add more EG test with the feature disabled for some tests? It is generally a good idea to test the UI with a feature flag on and off to make sure the feature flag can be enabled and disabled, and the app still functions as expected. It may not be in this file.

Angela Novakovic

I was not planning on adding tests for when the feature flag is disabled as this view is new and cannot be accessed when the feature flag is disabled (it is accessed via the "Manage other data" cell which is only available when the feature flag is enabled).

Happy to explore this if you think that there should be a test for the "Other Data" page flow for when the feature flag is disabled. 😊

Leo Zhao

What I ment was, currently, `kPasswordRemovalFromDeleteBrowsingData` is disabled by default. Here, the EG tests run with it enabled. What happens if this feature is disabled, which is the condition that the app is running? You can add a test with the feature disabled, then open the tools menu, and verify other buttons are there, however, the button to open the quick delete browsing data page isn't there.

File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_other_data/ui/quick_delete_other_data_view_controller.mm
Line 77, Patchset 12:#pragma mark - UIViewController
Leo Zhao . unresolved

`UIViewController` is not suitable here. If you were to say, this section is about life cycle management, then use that. Just listing `UIViewController` is not clear about the intention.

Angela Novakovic

This seems to be norm in other files. I also see that in some files, we omit the pragma mark, and in other we have a different pragma mark after the `viewDidLoad` such as `#pragma mark - LegacyChromeTableViewController`. In this case, we are using the `UITableViewDiffableDataSource`, so perhaps putting that as a pragma mark before loadModel might help?

What would you suggest in this case? 😊

Leo Zhao

UIViewController is the root class of all view classes. `#pragma mark - LegacyChromeTableViewController.` is saying, this section contains overrides of `LegacyChromeTableViewController`. Having `#pragma mark - UIViewController` does not add extra information. You can add life cycle section, and put viewDidLoad in there, and also init, viewWillAppear, etc. Then you can create another section and put loadModels in there since that is not a life cycle method of UIViewController.

Open in Gerrit

Related details

Attention is currently required from:
  • Angela Novakovic
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: I418ab201ad01fbb729d18e5e285e02d1ed88cfdb
Gerrit-Change-Number: 7548237
Gerrit-PatchSet: 15
Gerrit-Owner: Angela Novakovic <novak...@google.com>
Gerrit-Reviewer: Angela Novakovic <novak...@google.com>
Gerrit-Reviewer: Leo Zhao <leo...@google.com>
Gerrit-Attention: Angela Novakovic <novak...@google.com>
Gerrit-Comment-Date: Wed, 11 Feb 2026 19:50:32 +0000
Gerrit-HasComments: Yes
Gerrit-Has-Labels: No
Comment-In-Reply-To: Angela Novakovic <novak...@google.com>
Comment-In-Reply-To: Leo Zhao <leo...@google.com>
satisfied_requirement
unsatisfied_requirement
open
diffy

Angela Novakovic (Gerrit)

unread,
Feb 11, 2026, 6:37:00 PM (13 days ago) Feb 11
to Noémie St-Onge, Leo Zhao, Chromium LUCI CQ, chromium...@chromium.org, dullweb...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org, msrame...@chromium.org
Attention needed from Leo Zhao and Noémie St-Onge

Angela Novakovic added 2 comments

File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_other_data/test/quick_delete_other_data_egtest.mm
Line 96, Patchset 12:- (AppLaunchConfiguration)appConfigurationForTestCase {
AppLaunchConfiguration config;
config.relaunch_policy = NoForceRelaunchAndResetState;
config.additional_args.push_back(std::string("--") +
syncer::kSyncShortNudgeDelayForTest);
config.features_enabled.push_back(kPasswordRemovalFromDeleteBrowsingData);

return config;
}
Leo Zhao . unresolved

Do you plan to add more EG test with the feature disabled for some tests? It is generally a good idea to test the UI with a feature flag on and off to make sure the feature flag can be enabled and disabled, and the app still functions as expected. It may not be in this file.

Angela Novakovic

I was not planning on adding tests for when the feature flag is disabled as this view is new and cannot be accessed when the feature flag is disabled (it is accessed via the "Manage other data" cell which is only available when the feature flag is enabled).

Happy to explore this if you think that there should be a test for the "Other Data" page flow for when the feature flag is disabled. 😊

Leo Zhao

What I ment was, currently, `kPasswordRemovalFromDeleteBrowsingData` is disabled by default. Here, the EG tests run with it enabled. What happens if this feature is disabled, which is the condition that the app is running? You can add a test with the feature disabled, then open the tools menu, and verify other buttons are there, however, the button to open the quick delete browsing data page isn't there.

Angela Novakovic

I understand now! We could do that, but this is already done in `QuickDeleteBrowsingDataTestCase` in `- (void)testManageOtherDataCellVisibility`. We verify whether the `Manage other data` cell is visible when the feature is enabled vs disabled. If the feature is disabled, the user won't see this cell/button and won't be able to reach `QuickDeleteOtherDataViewController`. Re-testing this in `QuickDeleteOtherDataTestCase` seems repetitive, but please correct me if I am misunderstanding! 😊

File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_other_data/ui/quick_delete_other_data_view_controller.mm
Line 77, Patchset 12:#pragma mark - UIViewController
Leo Zhao . resolved

`UIViewController` is not suitable here. If you were to say, this section is about life cycle management, then use that. Just listing `UIViewController` is not clear about the intention.

Angela Novakovic

This seems to be norm in other files. I also see that in some files, we omit the pragma mark, and in other we have a different pragma mark after the `viewDidLoad` such as `#pragma mark - LegacyChromeTableViewController`. In this case, we are using the `UITableViewDiffableDataSource`, so perhaps putting that as a pragma mark before loadModel might help?

What would you suggest in this case? 😊

Leo Zhao

UIViewController is the root class of all view classes. `#pragma mark - LegacyChromeTableViewController.` is saying, this section contains overrides of `LegacyChromeTableViewController`. Having `#pragma mark - UIViewController` does not add extra information. You can add life cycle section, and put viewDidLoad in there, and also init, viewWillAppear, etc. Then you can create another section and put loadModels in there since that is not a life cycle method of UIViewController.

Angela Novakovic

Okay, so from what I understand, adding the `#pragma mark - UIViewController` in this case does not provide more information, unless we have more methods of the life cycle such as viewDidLoad, innit, viewWillAppear, viewWillDisappear... as such, in this scenario, for now, it might be better to not add the pragma mark.

Also, the `loadModel` method is not part of the life cycle, thus would require a separate pragma mark.

Open in Gerrit

Related details

Attention is currently required from:
  • Leo Zhao
  • Noémie St-Onge
Submit Requirements:
  • requirement satisfiedCode-Coverage
  • requirement is not satisfiedCode-Owners
  • requirement is not satisfiedCode-Review
  • requirement is not satisfiedNo-Unresolved-Comments
  • requirement is not satisfiedReview-Enforcement
Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
Gerrit-MessageType: comment
Gerrit-Project: chromium/src
Gerrit-Branch: main
Gerrit-Change-Id: I418ab201ad01fbb729d18e5e285e02d1ed88cfdb
Gerrit-Change-Number: 7548237
Gerrit-PatchSet: 16
Gerrit-Owner: Angela Novakovic <novak...@google.com>
Gerrit-Reviewer: Angela Novakovic <novak...@google.com>
Gerrit-Reviewer: Leo Zhao <leo...@google.com>
Gerrit-Reviewer: Noémie St-Onge <noe...@google.com>
Gerrit-Attention: Leo Zhao <leo...@google.com>
Gerrit-Attention: Noémie St-Onge <noe...@google.com>
Gerrit-Comment-Date: Wed, 11 Feb 2026 23:36:54 +0000
satisfied_requirement
unsatisfied_requirement
open
diffy

Leo Zhao (Gerrit)

unread,
Feb 12, 2026, 12:47:39 PM (12 days ago) Feb 12
to Angela Novakovic, Noémie St-Onge, Chromium LUCI CQ, chromium...@chromium.org, dullweb...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org, msrame...@chromium.org
Attention needed from Angela Novakovic and Noémie St-Onge

Leo Zhao voted Code-Review+1

Code-Review+1
Open in Gerrit

Related details

Attention is currently required from:
  • Angela Novakovic
  • Noémie St-Onge
Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I418ab201ad01fbb729d18e5e285e02d1ed88cfdb
    Gerrit-Change-Number: 7548237
    Gerrit-PatchSet: 16
    Gerrit-Owner: Angela Novakovic <novak...@google.com>
    Gerrit-Reviewer: Angela Novakovic <novak...@google.com>
    Gerrit-Reviewer: Leo Zhao <leo...@google.com>
    Gerrit-Reviewer: Noémie St-Onge <noe...@google.com>
    Gerrit-Attention: Angela Novakovic <novak...@google.com>
    Gerrit-Attention: Noémie St-Onge <noe...@google.com>
    Gerrit-Comment-Date: Thu, 12 Feb 2026 17:47:33 +0000
    Gerrit-HasComments: No
    Gerrit-Has-Labels: Yes
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Noémie St-Onge (Gerrit)

    unread,
    Feb 12, 2026, 5:50:46 PM (12 days ago) Feb 12
    to Angela Novakovic, Leo Zhao, Chromium LUCI CQ, chromium...@chromium.org, dullweb...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org, msrame...@chromium.org
    Attention needed from Angela Novakovic

    Noémie St-Onge added 23 comments

    Patchset-level comments
    File-level comment, Patchset 16 (Latest):
    Noémie St-Onge . resolved

    Made a first pass, haven't looked at everything yet

    Commit Message
    Line 14, Patchset 16 (Latest):New View: https://screenshot.googleplex.com/3kUTPVT5Dfkeha6.png
    Noémie St-Onge . unresolved

    Shouldn't the left navigation bar button be a back button? Also, shouldn't the string be "Passwords and passkeys"?

    The figma also shows `Search history` (with a lower case `h`), we should validate we UX

    File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/public/quick_delete_constants.h
    Line 55, Patchset 16 (Latest):extern NSString* const kQuickDeleteOtherDataPasswordsIdentifier;
    Noémie St-Onge . unresolved

    ```suggestion
    extern NSString* const kQuickDeleteOtherDataPasswordsAndPasskeysIdentifier;
    ```

    File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/public/quick_delete_constants.mm
    Line 38, Patchset 16 (Latest): @"QuickDeleteOtherDataPasswordsIdentifier";
    Noémie St-Onge . unresolved
    ```suggestion
    @"QuickDeleteOtherDataPasswordsAndPasskeysIdentifier";
    ```
    File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_browsing_data/test/quick_delete_browsing_data_egtest.mm
    Line 55, Patchset 16 (Latest):id<GREYMatcher> quickDeleteOtherDataPageTitleMatcher() {
    Noémie St-Onge . unresolved

    C++ functions start with a capital letter
    ```suggestion
    id<GREYMatcher> QuickDeleteOtherDataPageTitleMatcher() {
    ```

    Line 237, Patchset 16 (Latest): // Opens quick delete browsing data page.
    Noémie St-Onge . unresolved

    `Open` was fine, we use the imperative mood for implementation comments. Same for other occurrences
    go/c-readability-advice#implementation-comment-conventions

    CC @leo...@google.com

    Line 820, Patchset 16 (Latest):// Tests that when user taps on the "Manage other data" cell, a new view, the
    // Quick Delete Other Data page, opens.
    Noémie St-Onge . unresolved

    ```suggestion
    // Tests that tapping the "Manage other data" cell opens the Quick Delete Other Data page.
    ```

    Line 823, Patchset 16 (Latest): // Opens quick delete browsing data page.
    Noémie St-Onge . unresolved
    ```suggestion
    // Open the quick delete browsing data page.
    ```
    Line 826, Patchset 16 (Latest): [[EarlGrey selectElementWithMatcher:ManageOtherDataCellMatcher()]
    assertWithMatcher:grey_sufficientlyVisible()];
    Noémie St-Onge . unresolved

    I don't think we need to check the visibility prior to tapping as tapping an element that's not visible will fail anyway

    File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_other_data/test/quick_delete_other_data_egtest.mm
    Line 5, Patchset 16 (Latest):#import <XCTest/XCTest.h>

    #import "base/strings/sys_string_conversions.h"
    #import "components/browsing_data/core/browsing_data_utils.h"
    #import "components/browsing_data/core/pref_names.h"
    #import "components/signin/public/base/signin_metrics.h"
    #import "components/strings/grit/components_strings.h"
    #import "components/sync/base/command_line_switches.h"
    #import "ios/chrome/browser/authentication/test/signin_earl_grey.h"
    #import "ios/chrome/browser/authentication/test/signin_earl_grey_ui_test_util.h"
    #import "ios/chrome/browser/metrics/model/metrics_app_interface.h"
    #import "ios/chrome/browser/settings/ui_bundled/clear_browsing_data/public/features.h"
    #import "ios/chrome/browser/settings/ui_bundled/clear_browsing_data/public/quick_delete_constants.h"
    #import "ios/chrome/browser/signin/model/fake_system_identity.h"
    #import "ios/chrome/grit/ios_strings.h"
    #import "ios/chrome/test/earl_grey/chrome_actions.h"
    #import "ios/chrome/test/earl_grey/chrome_earl_grey.h"
    #import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h"
    #import "ios/chrome/test/earl_grey/chrome_matchers.h"
    #import "ios/chrome/test/earl_grey/chrome_test_case.h"
    #import "ios/chrome/test/earl_grey/chrome_xcui_actions.h"
    #import "ios/testing/earl_grey/earl_grey_test.h"
    #import "ui/base/l10n/l10n_util_mac.h"
    Noémie St-Onge . unresolved

    There seems to be unnecessary imports here

    Line 31, Patchset 16 (Latest):using chrome_test_util::BrowsingDataButtonMatcher;
    using chrome_test_util::ButtonWithAccessibilityLabel;
    using chrome_test_util::ClearBrowsingDataView;
    Noémie St-Onge . unresolved

    we usually put using declarations outside of the namespace

    Line 36, Patchset 16 (Latest):id<GREYMatcher> quickDeleteBrowsingDataPageTitleMatcher() {
    Noémie St-Onge . unresolved

    C++ functions start with a capital letter
    ```suggestion
    id<GREYMatcher> QuickDeleteBrowsingDataPageTitleMatcher() {
    ```

    Line 42, Patchset 16 (Latest):id<GREYMatcher> quickDeleteOtherDataPageTitleMatcher() {
    Noémie St-Onge . unresolved

    C++ functions start with a capital letter
    ```suggestion
    id<GREYMatcher> QuickDeleteBrowsingDataPageTitleMatcher() {
    ```

    Line 90, Patchset 16 (Latest): config.relaunch_policy = NoForceRelaunchAndResetState;
    Noémie St-Onge . unresolved

    This is the default value, we can remove

    Line 91, Patchset 16 (Latest): config.additional_args.push_back(std::string("--") +
    syncer::kSyncShortNudgeDelayForTest);
    Noémie St-Onge . unresolved

    Why do we need this?

    Line 98, Patchset 16 (Latest):// Opens Quick Delete Other Data page.
    Noémie St-Onge . unresolved

    ```suggestion
    // Opens the Quick Delete Other Data page.
    ```
    Please also apply to other occurrences

    Line 99, Patchset 16 (Latest):- (void)openQuickDeleteOtherDataPage {
    Noémie St-Onge . unresolved

    Doesn't have to be an instance method, let's move it to the anonymous namespace

    Line 119, Patchset 16 (Latest):// Tests the cancel button dismisses the other data page.
    Noémie St-Onge . unresolved

    ```suggestion
    // Tests that the cancel button dismisses the Quick Delete Other Data page.
    ```

    Line 120, Patchset 16 (Latest):- (void)testPageNavigationCancelButton {
    Noémie St-Onge . unresolved

    Doesn't have to be an instance method, let's move it to the anonymous namespace

    Line 124, Patchset 16 (Latest): // Taps cancel button.
    Noémie St-Onge . unresolved
    Given that comments should be complete sentences, we shouldn't skip words like `the`
    ```suggestion
    // Tap the cancel button.
    ```
    Line 129, Patchset 16 (Latest): // Ensures the other data page is closed while the browsing data page is still
    Noémie St-Onge . unresolved

    `Quick Delete Other Data page`

    Line 129, Patchset 16 (Latest): // Ensures the other data page is closed while the browsing data page is still
    Noémie St-Onge . unresolved

    `Quick Delete Browsing Data page`

    Line 137, Patchset 16 (Latest):// Tests the dismissal of the other data page when user swipes down.
    Noémie St-Onge . unresolved

    ```suggestion
    // Tests the dismissal of the Quick Delete Other Data page when swiped down.
    ```

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Angela Novakovic
    Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement is not satisfiedCode-Owners
    • requirement is not satisfiedCode-Review
    • requirement is not satisfiedNo-Unresolved-Comments
    • requirement satisfiedReview-Enforcement
    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
    Gerrit-MessageType: comment
    Gerrit-Project: chromium/src
    Gerrit-Branch: main
    Gerrit-Change-Id: I418ab201ad01fbb729d18e5e285e02d1ed88cfdb
    Gerrit-Change-Number: 7548237
    Gerrit-PatchSet: 16
    Gerrit-Owner: Angela Novakovic <novak...@google.com>
    Gerrit-Reviewer: Angela Novakovic <novak...@google.com>
    Gerrit-Reviewer: Leo Zhao <leo...@google.com>
    Gerrit-Reviewer: Noémie St-Onge <noe...@google.com>
    Gerrit-Attention: Angela Novakovic <novak...@google.com>
    Gerrit-Comment-Date: Thu, 12 Feb 2026 22:50:38 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Angela Novakovic (Gerrit)

    unread,
    Feb 13, 2026, 1:22:03 PM (11 days ago) Feb 13
    to Leo Zhao, Noémie St-Onge, Chromium LUCI CQ, chromium...@chromium.org, dullweb...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org, msrame...@chromium.org
    Attention needed from Leo Zhao and Noémie St-Onge

    Angela Novakovic voted and added 23 comments

    Votes added by Angela Novakovic

    Commit-Queue+1

    23 comments

    Commit Message

    Shouldn't the left navigation bar button be a back button? Also, shouldn't the string be "Passwords and passkeys"?

    The figma also shows `Search history` (with a lower case `h`), we should validate we UX

    Angela Novakovic

    No, you are absolutely right. I will update these. The current string is only a placeholder.

    File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/public/quick_delete_constants.h
    Line 55, Patchset 16:extern NSString* const kQuickDeleteOtherDataPasswordsIdentifier;
    Noémie St-Onge . resolved

    ```suggestion
    extern NSString* const kQuickDeleteOtherDataPasswordsAndPasskeysIdentifier;
    ```

    Angela Novakovic

    Done

    File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/public/quick_delete_constants.mm
    Line 38, Patchset 16: @"QuickDeleteOtherDataPasswordsIdentifier";
    Noémie St-Onge . resolved
    ```suggestion
    @"QuickDeleteOtherDataPasswordsAndPasskeysIdentifier";
    ```
    Angela Novakovic

    Done

    File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_browsing_data/test/quick_delete_browsing_data_egtest.mm
    Line 55, Patchset 16:id<GREYMatcher> quickDeleteOtherDataPageTitleMatcher() {
    Noémie St-Onge . resolved

    C++ functions start with a capital letter
    ```suggestion
    id<GREYMatcher> QuickDeleteOtherDataPageTitleMatcher() {
    ```

    Angela Novakovic

    Done

    Line 237, Patchset 16: // Opens quick delete browsing data page.
    Noémie St-Onge . resolved

    `Open` was fine, we use the imperative mood for implementation comments. Same for other occurrences
    go/c-readability-advice#implementation-comment-conventions

    CC @leo...@google.com

    Angela Novakovic

    Acknowledged

    Line 820, Patchset 16:// Tests that when user taps on the "Manage other data" cell, a new view, the

    // Quick Delete Other Data page, opens.
    Noémie St-Onge . resolved

    ```suggestion
    // Tests that tapping the "Manage other data" cell opens the Quick Delete Other Data page.
    ```

    Angela Novakovic

    Done

    Line 823, Patchset 16: // Opens quick delete browsing data page.
    Noémie St-Onge . resolved
    ```suggestion
    // Open the quick delete browsing data page.
    ```
    Angela Novakovic

    Done

    Line 826, Patchset 16: [[EarlGrey selectElementWithMatcher:ManageOtherDataCellMatcher()]
    assertWithMatcher:grey_sufficientlyVisible()];
    Noémie St-Onge . resolved

    I don't think we need to check the visibility prior to tapping as tapping an element that's not visible will fail anyway

    Angela Novakovic

    Done

    File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_other_data/test/quick_delete_other_data_egtest.mm
    Line 5, Patchset 16:#import <XCTest/XCTest.h>


    #import "base/strings/sys_string_conversions.h"
    #import "components/browsing_data/core/browsing_data_utils.h"
    #import "components/browsing_data/core/pref_names.h"
    #import "components/signin/public/base/signin_metrics.h"
    #import "components/strings/grit/components_strings.h"
    #import "components/sync/base/command_line_switches.h"
    #import "ios/chrome/browser/authentication/test/signin_earl_grey.h"
    #import "ios/chrome/browser/authentication/test/signin_earl_grey_ui_test_util.h"
    #import "ios/chrome/browser/metrics/model/metrics_app_interface.h"
    #import "ios/chrome/browser/settings/ui_bundled/clear_browsing_data/public/features.h"
    #import "ios/chrome/browser/settings/ui_bundled/clear_browsing_data/public/quick_delete_constants.h"
    #import "ios/chrome/browser/signin/model/fake_system_identity.h"
    #import "ios/chrome/grit/ios_strings.h"
    #import "ios/chrome/test/earl_grey/chrome_actions.h"
    #import "ios/chrome/test/earl_grey/chrome_earl_grey.h"
    #import "ios/chrome/test/earl_grey/chrome_earl_grey_ui.h"
    #import "ios/chrome/test/earl_grey/chrome_matchers.h"
    #import "ios/chrome/test/earl_grey/chrome_test_case.h"
    #import "ios/chrome/test/earl_grey/chrome_xcui_actions.h"
    #import "ios/testing/earl_grey/earl_grey_test.h"
    #import "ui/base/l10n/l10n_util_mac.h"
    Noémie St-Onge . resolved

    There seems to be unnecessary imports here

    Angela Novakovic

    Done

    Line 31, Patchset 16:using chrome_test_util::BrowsingDataButtonMatcher;

    using chrome_test_util::ButtonWithAccessibilityLabel;
    using chrome_test_util::ClearBrowsingDataView;
    Noémie St-Onge . resolved

    we usually put using declarations outside of the namespace

    Angela Novakovic

    Done

    Line 36, Patchset 16:id<GREYMatcher> quickDeleteBrowsingDataPageTitleMatcher() {
    Noémie St-Onge . resolved

    C++ functions start with a capital letter
    ```suggestion
    id<GREYMatcher> QuickDeleteBrowsingDataPageTitleMatcher() {
    ```

    Angela Novakovic

    Done

    Line 42, Patchset 16:id<GREYMatcher> quickDeleteOtherDataPageTitleMatcher() {
    Noémie St-Onge . resolved

    C++ functions start with a capital letter
    ```suggestion
    id<GREYMatcher> QuickDeleteBrowsingDataPageTitleMatcher() {
    ```

    Angela Novakovic

    Acknowledged

    Line 90, Patchset 16: config.relaunch_policy = NoForceRelaunchAndResetState;
    Noémie St-Onge . resolved

    This is the default value, we can remove

    Angela Novakovic

    Done

    Line 91, Patchset 16: config.additional_args.push_back(std::string("--") +
    syncer::kSyncShortNudgeDelayForTest);
    Noémie St-Onge . resolved

    Why do we need this?

    Angela Novakovic

    Done

    Line 98, Patchset 16:// Opens Quick Delete Other Data page.
    Noémie St-Onge . resolved

    ```suggestion
    // Opens the Quick Delete Other Data page.
    ```
    Please also apply to other occurrences

    Angela Novakovic

    Done

    Line 99, Patchset 16:- (void)openQuickDeleteOtherDataPage {
    Noémie St-Onge . resolved

    Doesn't have to be an instance method, let's move it to the anonymous namespace

    Angela Novakovic

    Done

    Line 96, Patchset 12:- (AppLaunchConfiguration)appConfigurationForTestCase {

    AppLaunchConfiguration config;
    config.relaunch_policy = NoForceRelaunchAndResetState;
    config.additional_args.push_back(std::string("--") +
    syncer::kSyncShortNudgeDelayForTest);
    config.features_enabled.push_back(kPasswordRemovalFromDeleteBrowsingData);

    return config;
    }
    Leo Zhao . resolved

    Do you plan to add more EG test with the feature disabled for some tests? It is generally a good idea to test the UI with a feature flag on and off to make sure the feature flag can be enabled and disabled, and the app still functions as expected. It may not be in this file.

    Angela Novakovic

    I was not planning on adding tests for when the feature flag is disabled as this view is new and cannot be accessed when the feature flag is disabled (it is accessed via the "Manage other data" cell which is only available when the feature flag is enabled).

    Happy to explore this if you think that there should be a test for the "Other Data" page flow for when the feature flag is disabled. 😊

    Leo Zhao

    What I ment was, currently, `kPasswordRemovalFromDeleteBrowsingData` is disabled by default. Here, the EG tests run with it enabled. What happens if this feature is disabled, which is the condition that the app is running? You can add a test with the feature disabled, then open the tools menu, and verify other buttons are there, however, the button to open the quick delete browsing data page isn't there.

    Angela Novakovic

    I understand now! We could do that, but this is already done in `QuickDeleteBrowsingDataTestCase` in `- (void)testManageOtherDataCellVisibility`. We verify whether the `Manage other data` cell is visible when the feature is enabled vs disabled. If the feature is disabled, the user won't see this cell/button and won't be able to reach `QuickDeleteOtherDataViewController`. Re-testing this in `QuickDeleteOtherDataTestCase` seems repetitive, but please correct me if I am misunderstanding! 😊

    Angela Novakovic

    Done

    Line 119, Patchset 16:// Tests the cancel button dismisses the other data page.
    Noémie St-Onge . resolved

    ```suggestion
    // Tests that the cancel button dismisses the Quick Delete Other Data page.
    ```

    Angela Novakovic

    Done

    Line 120, Patchset 16:- (void)testPageNavigationCancelButton {
    Noémie St-Onge . unresolved

    Doesn't have to be an instance method, let's move it to the anonymous namespace

    Angela Novakovic

    This is not a method, but a test, to see that the cancel button correctly dismisses the page. Now, it has been changed to verify that the "Back" button dismisses the page.

    Based on that, I think it should be kept here, but please correct me if I am wrong! 😊

    Line 124, Patchset 16: // Taps cancel button.
    Noémie St-Onge . resolved
    Given that comments should be complete sentences, we shouldn't skip words like `the`
    ```suggestion
    // Tap the cancel button.
    ```
    Angela Novakovic

    Done

    Line 129, Patchset 16: // Ensures the other data page is closed while the browsing data page is still
    Noémie St-Onge . resolved

    `Quick Delete Other Data page`

    Angela Novakovic

    Done

    Line 129, Patchset 16: // Ensures the other data page is closed while the browsing data page is still
    Noémie St-Onge . resolved

    `Quick Delete Browsing Data page`

    Angela Novakovic

    Done

    Line 137, Patchset 16:// Tests the dismissal of the other data page when user swipes down.
    Noémie St-Onge . resolved

    ```suggestion
    // Tests the dismissal of the Quick Delete Other Data page when swiped down.
    ```

    Angela Novakovic

    Done

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Leo Zhao
    • Noémie St-Onge
    Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: I418ab201ad01fbb729d18e5e285e02d1ed88cfdb
      Gerrit-Change-Number: 7548237
      Gerrit-PatchSet: 18
      Gerrit-Owner: Angela Novakovic <novak...@google.com>
      Gerrit-Reviewer: Angela Novakovic <novak...@google.com>
      Gerrit-Reviewer: Leo Zhao <leo...@google.com>
      Gerrit-Reviewer: Noémie St-Onge <noe...@google.com>
      Gerrit-Attention: Leo Zhao <leo...@google.com>
      Gerrit-Attention: Noémie St-Onge <noe...@google.com>
      Gerrit-Comment-Date: Fri, 13 Feb 2026 18:21:58 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: Yes
      Comment-In-Reply-To: Angela Novakovic <novak...@google.com>
      Comment-In-Reply-To: Leo Zhao <leo...@google.com>
      Comment-In-Reply-To: Noémie St-Onge <noe...@google.com>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Noémie St-Onge (Gerrit)

      unread,
      Feb 13, 2026, 5:40:40 PM (11 days ago) Feb 13
      to Angela Novakovic, Leo Zhao, Chromium LUCI CQ, chromium...@chromium.org, dullweb...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org, msrame...@chromium.org
      Attention needed from Angela Novakovic and Leo Zhao

      Noémie St-Onge added 16 comments

      File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/public/quick_delete_constants.mm
      Line 38, Patchset 18 (Latest): @"QuickDeleteOtherDataPasswordsIdentifier";
      Noémie St-Onge . unresolved
      ```suggestion
      @"QuickDeleteOtherDataPasswordsAndPasskeysIdentifier";
      ```
      File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_browsing_data/test/quick_delete_browsing_data_egtest.mm
      Line 62, Patchset 18 (Latest):id<GREYMatcher> ElementIsSelectedMatcher(bool selected) {
      Noémie St-Onge . unresolved

      The cleanup of existing code like this could have been done in a separate CL, especially given the many lines that are now changed in this file which are unrelated to this specific CL. I'm okay with leaving things as is, but something to take into consideration for future CLs.

      Note: added code should follow the style guide even if the rest of the file might not always

      Line 204, Patchset 18 (Latest):// Opens the Quick Delete from the three dot menu for the specified window.
      Noémie St-Onge . unresolved

      `Opens Quick Delete` was fine here since it is not followed by `page` or something similar

      Line 820, Patchset 18 (Latest):// Tests that tapping the "Manage other data" cell, opens the Quick Delete Other
      Noémie St-Onge . unresolved

      no need for a comma here

      File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_other_data/test/quick_delete_other_data_egtest.mm
      Line 65, Patchset 18 (Latest):void openQuickDeleteOtherDataPage() {
      Noémie St-Onge . unresolved

      `OpenQuickDeleteOtherDataPage`

      Line 93, Patchset 18 (Latest):- (void)setUp {
      [super setUp];
      }

      - (void)tearDownHelper {
      [super tearDownHelper];
      }
      Noémie St-Onge . unresolved

      These don't add anything as they're only calling the base class' implementation. Please remove them

      Line 120, Patchset 16:- (void)testPageNavigationCancelButton {
      Noémie St-Onge . resolved

      Doesn't have to be an instance method, let's move it to the anonymous namespace

      Angela Novakovic

      This is not a method, but a test, to see that the cancel button correctly dismisses the page. Now, it has been changed to verify that the "Back" button dismisses the page.

      Based on that, I think it should be kept here, but please correct me if I am wrong! 😊

      Noémie St-Onge

      Oh, sorry, I must have read that too quickly. It should indeed stay in the class

      Line 126, Patchset 18 (Latest):- (void)testPageDismissal {
      Noémie St-Onge . unresolved

      ```suggestion

      • (void)testPageDismissalViaDownSwipe {
      • ```
      File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_other_data/ui/quick_delete_other_data_view_controller.mm
      Line 36, Patchset 18 (Latest):enum class SectionIdentifier {
      kPasswordsAndPasskeys,
      kGoogleAccountData,
      kFooter,
      };

      // Item identifiers in the "Other data" page.
      enum class ItemIdentifier {
      kPasswordsAndPasskeys,
      kSearchHistory,
      kMyActivity,
      kFooter,
      };
      Noémie St-Onge . unresolved

      You can remove the `class` when for section and item identifiers to allow implicit conversion to integer
      go/bling-best-practices#ns-enum-vs-c-enums

      Line 51, Patchset 18 (Latest):UIImage* GetBrandedGoogleServicesSymbol() {
      Noémie St-Onge . unresolved

      Isn't the symbol only going to be branded when BUILDFLAG(IOS_USE_BRANDED_ASSETS) is true?

      Line 61, Patchset 18 (Latest):NSArray<NSNumber*>* GoogleDataItemIdentifiers() {
      Noémie St-Onge . unresolved

      ```suggestion
      NSArray<NSNumber*>* GoogleAccountDataItemIdentifiers() {
      ```

      Line 164, Patchset 18 (Latest):// Set the arrow icon type of the right side of the cell.
      Noémie St-Onge . unresolved

      `Sets`

      Line 165, Patchset 18 (Latest):- (void)setArrowTypeWithCell:(UITableViewCell*)cell
      Noémie St-Onge . unresolved

      ```suggestion

      • (void)setAccessoryViewForCell:(UITableViewCell*)cell
      • ```
      Line 182, Patchset 18 (Latest):// Creates a cell for the "Other data" page table view.
      Noémie St-Onge . unresolved

      we can omit naming the page when in the class that represents this page. It could make the reader think that we're talking about another page

      Line 252, Patchset 18 (Latest):- (UIImage*)iconForItemIdentifier:(ItemIdentifier)itemIdentifier {
      Noémie St-Onge . unresolved

      Can be put in the anonymous namespace

      Line 262, Patchset 18 (Latest): NOTREACHED();
      Noémie St-Onge . unresolved

      Add a comment

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Angela Novakovic
      • Leo Zhao
      Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not satisfiedCode-Owners
      • requirement is not satisfiedCode-Review
      • requirement is not satisfiedNo-Unresolved-Comments
      • requirement is not satisfiedReview-Enforcement
      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
      Gerrit-MessageType: comment
      Gerrit-Project: chromium/src
      Gerrit-Branch: main
      Gerrit-Change-Id: I418ab201ad01fbb729d18e5e285e02d1ed88cfdb
      Gerrit-Change-Number: 7548237
      Gerrit-PatchSet: 18
      Gerrit-Owner: Angela Novakovic <novak...@google.com>
      Gerrit-Reviewer: Angela Novakovic <novak...@google.com>
      Gerrit-Reviewer: Leo Zhao <leo...@google.com>
      Gerrit-Reviewer: Noémie St-Onge <noe...@google.com>
      Gerrit-Attention: Angela Novakovic <novak...@google.com>
      Gerrit-Attention: Leo Zhao <leo...@google.com>
      Gerrit-Comment-Date: Fri, 13 Feb 2026 22:40:35 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: No
      Comment-In-Reply-To: Angela Novakovic <novak...@google.com>
      Comment-In-Reply-To: Noémie St-Onge <noe...@google.com>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Angela Novakovic (Gerrit)

      unread,
      Feb 18, 2026, 4:10:14 PM (6 days ago) Feb 18
      to Leo Zhao, Noémie St-Onge, Chromium LUCI CQ, chromium...@chromium.org, dullweb...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org, msrame...@chromium.org
      Attention needed from Noémie St-Onge

      Angela Novakovic added 15 comments

      File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/public/quick_delete_constants.mm
      Line 38, Patchset 18: @"QuickDeleteOtherDataPasswordsIdentifier";
      Noémie St-Onge . resolved
      ```suggestion
      @"QuickDeleteOtherDataPasswordsAndPasskeysIdentifier";
      ```
      Angela Novakovic

      Done

      File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_browsing_data/test/quick_delete_browsing_data_egtest.mm
      Line 62, Patchset 18:id<GREYMatcher> ElementIsSelectedMatcher(bool selected) {
      Noémie St-Onge . resolved

      The cleanup of existing code like this could have been done in a separate CL, especially given the many lines that are now changed in this file which are unrelated to this specific CL. I'm okay with leaving things as is, but something to take into consideration for future CLs.

      Note: added code should follow the style guide even if the rest of the file might not always

      Angela Novakovic

      Acknowledged

      Line 204, Patchset 18:// Opens the Quick Delete from the three dot menu for the specified window.
      Noémie St-Onge . resolved

      `Opens Quick Delete` was fine here since it is not followed by `page` or something similar

      Angela Novakovic

      Done

      Line 820, Patchset 18:// Tests that tapping the "Manage other data" cell, opens the Quick Delete Other
      Noémie St-Onge . resolved

      no need for a comma here

      Angela Novakovic

      Done

      File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_other_data/test/quick_delete_other_data_egtest.mm
      Line 65, Patchset 18:void openQuickDeleteOtherDataPage() {
      Noémie St-Onge . resolved

      `OpenQuickDeleteOtherDataPage`

      Angela Novakovic

      Done

      Line 93, Patchset 18:- (void)setUp {

      [super setUp];
      }

      - (void)tearDownHelper {
      [super tearDownHelper];
      }
      Noémie St-Onge . resolved

      These don't add anything as they're only calling the base class' implementation. Please remove them

      Angela Novakovic

      Done

      Line 126, Patchset 18:- (void)testPageDismissal {
      Noémie St-Onge . resolved

      ```suggestion

      • (void)testPageDismissalViaDownSwipe {
      • ```
      Angela Novakovic

      Done

      File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_other_data/ui/quick_delete_other_data_view_controller.mm
      Line 36, Patchset 18:enum class SectionIdentifier {

      kPasswordsAndPasskeys,
      kGoogleAccountData,
      kFooter,
      };

      // Item identifiers in the "Other data" page.
      enum class ItemIdentifier {
      kPasswordsAndPasskeys,
      kSearchHistory,
      kMyActivity,
      kFooter,
      };
      Noémie St-Onge . resolved

      You can remove the `class` when for section and item identifiers to allow implicit conversion to integer
      go/bling-best-practices#ns-enum-vs-c-enums

      Angela Novakovic

      Done

      Line 51, Patchset 18:UIImage* GetBrandedGoogleServicesSymbol() {
      Noémie St-Onge . resolved

      Isn't the symbol only going to be branded when BUILDFLAG(IOS_USE_BRANDED_ASSETS) is true?

      Angela Novakovic

      Discussed offline.

      Line 61, Patchset 18:NSArray<NSNumber*>* GoogleDataItemIdentifiers() {
      Noémie St-Onge . resolved

      ```suggestion
      NSArray<NSNumber*>* GoogleAccountDataItemIdentifiers() {
      ```

      Angela Novakovic

      Done

      Line 164, Patchset 18:// Set the arrow icon type of the right side of the cell.
      Noémie St-Onge . resolved

      `Sets`

      Angela Novakovic

      Done

      Line 165, Patchset 18:- (void)setArrowTypeWithCell:(UITableViewCell*)cell
      Noémie St-Onge . resolved

      ```suggestion

      • (void)setAccessoryViewForCell:(UITableViewCell*)cell
      • ```
      Angela Novakovic

      Done

      Line 182, Patchset 18:// Creates a cell for the "Other data" page table view.
      Noémie St-Onge . resolved

      we can omit naming the page when in the class that represents this page. It could make the reader think that we're talking about another page

      Angela Novakovic

      Done

      Line 252, Patchset 18:- (UIImage*)iconForItemIdentifier:(ItemIdentifier)itemIdentifier {
      Noémie St-Onge . resolved

      Can be put in the anonymous namespace

      Angela Novakovic

      Done

      Line 262, Patchset 18: NOTREACHED();
      Noémie St-Onge . resolved

      Add a comment

      Angela Novakovic

      Done

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Noémie St-Onge
      Submit Requirements:
        • requirement satisfiedCode-Coverage
        • requirement is not satisfiedCode-Owners
        • requirement is not satisfiedCode-Review
        • requirement is not satisfiedReview-Enforcement
        Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
        Gerrit-MessageType: comment
        Gerrit-Project: chromium/src
        Gerrit-Branch: main
        Gerrit-Change-Id: I418ab201ad01fbb729d18e5e285e02d1ed88cfdb
        Gerrit-Change-Number: 7548237
        Gerrit-PatchSet: 26
        Gerrit-Owner: Angela Novakovic <novak...@google.com>
        Gerrit-Reviewer: Angela Novakovic <novak...@google.com>
        Gerrit-Reviewer: Leo Zhao <leo...@google.com>
        Gerrit-Reviewer: Noémie St-Onge <noe...@google.com>
        Gerrit-Attention: Noémie St-Onge <noe...@google.com>
        Gerrit-Comment-Date: Wed, 18 Feb 2026 21:10:10 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        Comment-In-Reply-To: Noémie St-Onge <noe...@google.com>
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Noémie St-Onge (Gerrit)

        unread,
        Feb 19, 2026, 6:38:35 PM (5 days ago) Feb 19
        to Angela Novakovic, Leo Zhao, Chromium LUCI CQ, chromium...@chromium.org, dullweb...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org, msrame...@chromium.org
        Attention needed from Angela Novakovic

        Noémie St-Onge added 11 comments

        File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_other_data/coordinator/quick_delete_other_data_coordinator.mm
        Line 61, Patchset 26 (Latest): [_baseNavigationController popViewControllerAnimated:YES];
        Noémie St-Onge . unresolved

        I don't think we want to do this here because `popViewControllerAnimated` will just pop whatever pushed view controller that is now on top of the navigation stack.

        So, if there was an intermediate view controller between the Browsing Data and Other Data view controllers, and we tapped the back button on the Other Data view controller, the system would dismiss the Other Data view controller and then this line would pop the intermediate view controller

        If you want to try it out, update the end of the `start` method with:
        ```
        - (void)start {
        ...
          _viewController = [[QuickDeleteOtherDataViewController alloc]
        initWithStyle:ChromeTableViewStyle()];
        _viewController.quickDeleteOtherDataHandler =
        self.quickDeleteOtherDataHandler;

        QuickDeleteOtherDataViewController* vc = [[QuickDeleteOtherDataViewController alloc]
        initWithStyle:ChromeTableViewStyle()];
        vc.quickDeleteOtherDataHandler = self.quickDeleteOtherDataHandler;

        [_baseNavigationController pushViewController:_viewController animated:NO];
        [_baseNavigationController pushViewController:vc animated:NO];
        }
        ```
        File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_other_data/test/quick_delete_other_data_egtest.mm
        Line 43, Patchset 26 (Latest):// Returns a matcher for the passwords and passkeys cell.
        Noémie St-Onge . unresolved

        `"Passwords and passkeys" cell` to be consistent. Please also apply to other occurrences

        Line 49, Patchset 26 (Latest):// Returns a matcher for the search history cell.
        Noémie St-Onge . unresolved

        `"Search history" cell` to be consistent. Please also apply to other occurrences

        Line 54, Patchset 26 (Latest):// Returns a matcher for the "my activity" cell.
        Noémie St-Onge . unresolved

        `"My Activity" cell` to be consistent. Please also apply to other occurrences

        File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_other_data/ui/quick_delete_other_data_view_controller.mm
        Line 62, Patchset 26 (Latest): [items addObject:@((ItemIdentifier::kSearchHistoryIdentifier))];
        Noémie St-Onge . unresolved

        I don't think we need the double parentheses around the section and item identifiers `@(ItemIdentifier::kSearchHistoryIdentifier)` should be fine

        Line 64, Patchset 26 (Latest): return items;
        Noémie St-Onge . unresolved

        Why not just return `@[@(ItemIdentifier::kSearchHistoryIdentifier), @(ItemIdentifier::kMyActivityIdentifier)]`?

        Line 68, Patchset 26 (Latest):UIImage* IconForItemIdentifier(ItemIdentifier itemIdentifier) {
        Noémie St-Onge . unresolved

        C++ function, so `item_identifier`

        Line 125, Patchset 26 (Latest): [snapshot appendItemsWithIdentifiers:GoogleAccountDataItemIdentifiers()
        Noémie St-Onge . unresolved

        nit: we can directly pass `@[@(ItemIdentifier::kSearchHistoryIdentifier), @(ItemIdentifier::kMyActivityIdentifier)]`, like you did above for `appendSectionsWithIdentifiers`. `GoogleAccountDataItemIdentifiers` was only used here anyway, we probably don't need a helper function for it

        Line 166, Patchset 26 (Latest):- (void)didMoveToParentViewController:(UIViewController*)parent {
        [super didMoveToParentViewController:parent];
        if (!parent) {
        [self.quickDeleteOtherDataHandler hideQuickDeleteOtherDataPage];
        }
        }
        Noémie St-Onge . unresolved

        This function doesn't belong in the `UITableViewDelegate` pragma mark

        Line 175, Patchset 26 (Latest):// Sets the arrow icon type of the right side of the cell.
        Noémie St-Onge . unresolved

        `accessory type`, and we can remove the `right side` mention as it is implied https://developer.apple.com/documentation/uikit/uitableviewcell/accessorytype-swift.property?language=objc

        Line 185, Patchset 26 (Latest): initWithImage:DefaultAccessorySymbolConfigurationWithRegularWeight(
        kExternalLinkSymbol)];
        Noémie St-Onge . unresolved

        This symbol is grey in the mocks, but blue in the screenshot provided in the CL description

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Angela Novakovic
        Submit Requirements:
          • requirement satisfiedCode-Coverage
          • requirement is not satisfiedCode-Owners
          • requirement is not satisfiedCode-Review
          • requirement is not satisfiedNo-Unresolved-Comments
          • requirement is not satisfiedReview-Enforcement
          Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
          Gerrit-MessageType: comment
          Gerrit-Project: chromium/src
          Gerrit-Branch: main
          Gerrit-Change-Id: I418ab201ad01fbb729d18e5e285e02d1ed88cfdb
          Gerrit-Change-Number: 7548237
          Gerrit-PatchSet: 26
          Gerrit-Owner: Angela Novakovic <novak...@google.com>
          Gerrit-Reviewer: Angela Novakovic <novak...@google.com>
          Gerrit-Reviewer: Leo Zhao <leo...@google.com>
          Gerrit-Reviewer: Noémie St-Onge <noe...@google.com>
          Gerrit-Attention: Angela Novakovic <novak...@google.com>
          Gerrit-Comment-Date: Thu, 19 Feb 2026 23:38:23 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: No
          satisfied_requirement
          unsatisfied_requirement
          open
          diffy

          Angela Novakovic (Gerrit)

          unread,
          Feb 23, 2026, 8:37:14 AM (yesterday) Feb 23
          to Alexis Hétu, Leo Zhao, Noémie St-Onge, Chromium LUCI CQ, chromium...@chromium.org, dullweb...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org, msrame...@chromium.org
          Attention needed from Alexis Hétu and Noémie St-Onge

          Angela Novakovic added 11 comments

          File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_other_data/coordinator/quick_delete_other_data_coordinator.mm
          Line 61, Patchset 26: [_baseNavigationController popViewControllerAnimated:YES];
          Noémie St-Onge . resolved

          I don't think we want to do this here because `popViewControllerAnimated` will just pop whatever pushed view controller that is now on top of the navigation stack.

          So, if there was an intermediate view controller between the Browsing Data and Other Data view controllers, and we tapped the back button on the Other Data view controller, the system would dismiss the Other Data view controller and then this line would pop the intermediate view controller

          If you want to try it out, update the end of the `start` method with:
          ```
          - (void)start {
          ...
            _viewController = [[QuickDeleteOtherDataViewController alloc]
          initWithStyle:ChromeTableViewStyle()];
          _viewController.quickDeleteOtherDataHandler =
          self.quickDeleteOtherDataHandler;

          QuickDeleteOtherDataViewController* vc = [[QuickDeleteOtherDataViewController alloc]
          initWithStyle:ChromeTableViewStyle()];
          vc.quickDeleteOtherDataHandler = self.quickDeleteOtherDataHandler;

          [_baseNavigationController pushViewController:_viewController animated:NO];
          [_baseNavigationController pushViewController:vc animated:NO];
          }
          ```
          Angela Novakovic

          Nice! I tried it and I see clearly what you meant! 😊 Thank you!

          File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_other_data/test/quick_delete_other_data_egtest.mm
          Line 43, Patchset 26:// Returns a matcher for the passwords and passkeys cell.
          Noémie St-Onge . resolved

          `"Passwords and passkeys" cell` to be consistent. Please also apply to other occurrences

          Angela Novakovic

          Done

          Line 49, Patchset 26:// Returns a matcher for the search history cell.
          Noémie St-Onge . resolved

          `"Search history" cell` to be consistent. Please also apply to other occurrences

          Angela Novakovic

          Done

          Line 54, Patchset 26:// Returns a matcher for the "my activity" cell.
          Noémie St-Onge . resolved

          `"My Activity" cell` to be consistent. Please also apply to other occurrences

          Angela Novakovic

          Done

          File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_other_data/ui/quick_delete_other_data_view_controller.mm
          Line 62, Patchset 26: [items addObject:@((ItemIdentifier::kSearchHistoryIdentifier))];
          Noémie St-Onge . resolved

          I don't think we need the double parentheses around the section and item identifiers `@(ItemIdentifier::kSearchHistoryIdentifier)` should be fine

          Angela Novakovic

          Done

          Line 64, Patchset 26: return items;
          Noémie St-Onge . resolved

          Why not just return `@[@(ItemIdentifier::kSearchHistoryIdentifier), @(ItemIdentifier::kMyActivityIdentifier)]`?

          Angela Novakovic

          Done

          Line 68, Patchset 26:UIImage* IconForItemIdentifier(ItemIdentifier itemIdentifier) {
          Noémie St-Onge . resolved

          C++ function, so `item_identifier`

          Angela Novakovic

          Done

          Line 125, Patchset 26: [snapshot appendItemsWithIdentifiers:GoogleAccountDataItemIdentifiers()
          Noémie St-Onge . resolved

          nit: we can directly pass `@[@(ItemIdentifier::kSearchHistoryIdentifier), @(ItemIdentifier::kMyActivityIdentifier)]`, like you did above for `appendSectionsWithIdentifiers`. `GoogleAccountDataItemIdentifiers` was only used here anyway, we probably don't need a helper function for it

          Angela Novakovic

          Done

          Line 166, Patchset 26:- (void)didMoveToParentViewController:(UIViewController*)parent {

          [super didMoveToParentViewController:parent];
          if (!parent) {
          [self.quickDeleteOtherDataHandler hideQuickDeleteOtherDataPage];
          }
          }
          Noémie St-Onge . resolved

          This function doesn't belong in the `UITableViewDelegate` pragma mark

          Angela Novakovic

          Done

          Line 175, Patchset 26:// Sets the arrow icon type of the right side of the cell.
          Noémie St-Onge . resolved

          `accessory type`, and we can remove the `right side` mention as it is implied https://developer.apple.com/documentation/uikit/uitableviewcell/accessorytype-swift.property?language=objc

          Angela Novakovic

          Done

          Line 185, Patchset 26: initWithImage:DefaultAccessorySymbolConfigurationWithRegularWeight(
          kExternalLinkSymbol)];
          Noémie St-Onge . resolved

          This symbol is grey in the mocks, but blue in the screenshot provided in the CL description

          Angela Novakovic

          Done

          Open in Gerrit

          Related details

          Attention is currently required from:
          • Alexis Hétu
          • Noémie St-Onge
          Submit Requirements:
            • requirement satisfiedCode-Coverage
            • requirement is not satisfiedCode-Owners
            • requirement is not satisfiedCode-Review
            • requirement is not satisfiedReview-Enforcement
            Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
            Gerrit-MessageType: comment
            Gerrit-Project: chromium/src
            Gerrit-Branch: main
            Gerrit-Change-Id: I418ab201ad01fbb729d18e5e285e02d1ed88cfdb
            Gerrit-Change-Number: 7548237
            Gerrit-PatchSet: 28
            Gerrit-Owner: Angela Novakovic <novak...@google.com>
            Gerrit-Reviewer: Alexis Hétu <su...@chromium.org>
            Gerrit-Reviewer: Angela Novakovic <novak...@google.com>
            Gerrit-Reviewer: Leo Zhao <leo...@google.com>
            Gerrit-Reviewer: Noémie St-Onge <noe...@google.com>
            Gerrit-Attention: Alexis Hétu <su...@chromium.org>
            Gerrit-Attention: Noémie St-Onge <noe...@google.com>
            Gerrit-Comment-Date: Mon, 23 Feb 2026 13:37:08 +0000
            Gerrit-HasComments: Yes
            Gerrit-Has-Labels: No
            Comment-In-Reply-To: Noémie St-Onge <noe...@google.com>
            satisfied_requirement
            unsatisfied_requirement
            open
            diffy

            Alexis Hétu (Gerrit)

            unread,
            Feb 23, 2026, 9:05:56 AM (yesterday) Feb 23
            to Angela Novakovic, Leo Zhao, Noémie St-Onge, Chromium LUCI CQ, chromium...@chromium.org, dullweb...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org, msrame...@chromium.org
            Attention needed from Angela Novakovic and Noémie St-Onge

            Alexis Hétu added 2 comments

            File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_other_data/coordinator/quick_delete_other_data_coordinator.mm
            Line 61, Patchset 28 (Latest):
            Alexis Hétu . unresolved

            We don't usually merge white space only changes

            File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_other_data/ui/quick_delete_other_data_view_controller.mm
            Line 210, Patchset 28 (Latest): switch (itemIdentifier) {
            case ItemIdentifier::kPasswordsAndPasskeysIdentifier: {
            cell = [self
            createCellWithTitle:l10n_util::GetNSString(
            IDS_SETTINGS_PASSWORDS_AND_PASSKEYS)
            subtitle:
            l10n_util::GetNSString(
            IDS_SETTINGS_MANAGE_IN_GOOGLE_PASSWORD_MANAGER)
            icon:IconForItemIdentifier(itemIdentifier)
            accessibilityIdentifier:
            kQuickDeleteOtherDataPasswordsAndPasskeysIdentifier];
            [self setAccessoryTypeForCell:cell
            itemIdentifier:ItemIdentifier::
            kPasswordsAndPasskeysIdentifier];
            return cell;
            }
            case ItemIdentifier::kSearchHistoryIdentifier: {
            cell = [self
            createCellWithTitle:l10n_util::GetNSString(
            IDS_SETTINGS_SEARCH_HISTORY)
            // TODO(crbug.com/482036587) Replace the below
            // placeholder string with the subtitle variable coming
            // from the QuickDeleteOtherDataConsumer.
            subtitle:@"Change this"
            icon:IconForItemIdentifier(itemIdentifier)
            accessibilityIdentifier:kQuickDeleteOtherDataSearchHistoryIdentifier];
            [self setAccessoryTypeForCell:cell
            itemIdentifier:ItemIdentifier::kSearchHistoryIdentifier];
            return cell;
            }
            case ItemIdentifier::kMyActivityIdentifier: {
            cell = [self
            createCellWithTitle:l10n_util::GetNSString(
            IDS_SETTINGS_MY_ACTIVITY)
            subtitle:
            l10n_util::GetNSString(
            IDS_SETTINGS_MANAGE_IN_YOUR_GOOGLE_ACCOUNT)
            icon:IconForItemIdentifier(itemIdentifier)
            accessibilityIdentifier:kQuickDeleteOtherDataMyActivityIdentifier];
            [self setAccessoryTypeForCell:cell
            itemIdentifier:ItemIdentifier::kMyActivityIdentifier];
            return cell;
            }
            }
            Alexis Hétu . unresolved

            These look very similar. You already added the `IconForItemIdentifier` helper to get the icon from the `itemIdentifier`. If you had a utility for each argument (title, subtitle and accessibilityIdentifier), you wouldn't need the large switch statement with mostly duplicated code in each case here.

            Open in Gerrit

            Related details

            Attention is currently required from:
            • Angela Novakovic
            • Noémie St-Onge
            Submit Requirements:
              • requirement satisfiedCode-Coverage
              • requirement is not satisfiedCode-Owners
              • requirement is not satisfiedCode-Review
              • requirement is not satisfiedNo-Unresolved-Comments
              • requirement is not satisfiedReview-Enforcement
              Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
              Gerrit-MessageType: comment
              Gerrit-Project: chromium/src
              Gerrit-Branch: main
              Gerrit-Change-Id: I418ab201ad01fbb729d18e5e285e02d1ed88cfdb
              Gerrit-Change-Number: 7548237
              Gerrit-PatchSet: 28
              Gerrit-Owner: Angela Novakovic <novak...@google.com>
              Gerrit-Reviewer: Alexis Hétu <su...@chromium.org>
              Gerrit-Reviewer: Angela Novakovic <novak...@google.com>
              Gerrit-Reviewer: Leo Zhao <leo...@google.com>
              Gerrit-Reviewer: Noémie St-Onge <noe...@google.com>
              Gerrit-Attention: Angela Novakovic <novak...@google.com>
              Gerrit-Attention: Noémie St-Onge <noe...@google.com>
              Gerrit-Comment-Date: Mon, 23 Feb 2026 14:05:52 +0000
              Gerrit-HasComments: Yes
              Gerrit-Has-Labels: No
              satisfied_requirement
              unsatisfied_requirement
              open
              diffy

              Alexis Hétu (Gerrit)

              unread,
              Feb 23, 2026, 9:15:58 AM (yesterday) Feb 23
              to Angela Novakovic, Leo Zhao, Noémie St-Onge, Chromium LUCI CQ, chromium...@chromium.org, dullweb...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org, msrame...@chromium.org
              Attention needed from Angela Novakovic and Noémie St-Onge

              Alexis Hétu added 2 comments

              File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_other_data/ui/quick_delete_other_data_view_controller.mm
              Line 28, Patchset 28 (Latest):enum SectionIdentifier {
              kPasswordsAndPasskeysSection,
              Alexis Hétu . unresolved
              nit:
              ```
              typedef NS_ENUM(NSInteger, SectionIdentifier) {
              kPasswordsAndPasskeysSection = 0,
              ```
              Line 35, Patchset 28 (Latest):enum ItemIdentifier {
              kPasswordsAndPasskeysIdentifier,
              Alexis Hétu . unresolved
              nit:
              ```
              typedef NS_ENUM(NSInteger, ItemIdentifier) {
              kPasswordsAndPasskeysIdentifier = 0,
              ```
              Gerrit-Comment-Date: Mon, 23 Feb 2026 14:15:54 +0000
              Gerrit-HasComments: Yes
              Gerrit-Has-Labels: No
              satisfied_requirement
              unsatisfied_requirement
              open
              diffy

              Angela Novakovic (Gerrit)

              unread,
              Feb 23, 2026, 5:54:59 PM (yesterday) Feb 23
              to Filipa Senra, Alexis Hétu, Leo Zhao, Noémie St-Onge, Chromium LUCI CQ, chromium...@chromium.org, dullweb...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org, msrame...@chromium.org
              Attention needed from Alexis Hétu and Filipa Senra

              Angela Novakovic added 4 comments

              File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_other_data/coordinator/quick_delete_other_data_coordinator.mm
              Line 61, Patchset 28:
              Alexis Hétu . resolved

              We don't usually merge white space only changes

              Angela Novakovic

              Acknowledged

              File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_other_data/ui/quick_delete_other_data_view_controller.mm
              Line 28, Patchset 28:enum SectionIdentifier {
              kPasswordsAndPasskeysSection,
              Alexis Hétu . resolved
              nit:
              ```
              typedef NS_ENUM(NSInteger, SectionIdentifier) {
              kPasswordsAndPasskeysSection = 0,
              ```
              Angela Novakovic

              I will keep the current format to follow go/bling-best-practices#ns-enum-vs-c-enums .

              Line 35, Patchset 28:enum ItemIdentifier {
              kPasswordsAndPasskeysIdentifier,
              Alexis Hétu . resolved
              nit:
              ```
              typedef NS_ENUM(NSInteger, ItemIdentifier) {
              kPasswordsAndPasskeysIdentifier = 0,
              ```
              Angela Novakovic

              Same as the section identifiers. I will follow go/bling-best-practices#ns-enum-vs-c-enums for this new file.

              Line 210, Patchset 28: switch (itemIdentifier) {
              Alexis Hétu . resolved

              These look very similar. You already added the `IconForItemIdentifier` helper to get the icon from the `itemIdentifier`. If you had a utility for each argument (title, subtitle and accessibilityIdentifier), you wouldn't need the large switch statement with mostly duplicated code in each case here.

              Angela Novakovic

              Done

              Open in Gerrit

              Related details

              Attention is currently required from:
              • Alexis Hétu
              • Filipa Senra
              Submit Requirements:
                • requirement satisfiedCode-Coverage
                • requirement is not satisfiedCode-Owners
                • requirement is not satisfiedCode-Review
                • requirement is not satisfiedReview-Enforcement
                Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                Gerrit-MessageType: comment
                Gerrit-Project: chromium/src
                Gerrit-Branch: main
                Gerrit-Change-Id: I418ab201ad01fbb729d18e5e285e02d1ed88cfdb
                Gerrit-Change-Number: 7548237
                Gerrit-PatchSet: 30
                Gerrit-Owner: Angela Novakovic <novak...@google.com>
                Gerrit-Reviewer: Alexis Hétu <su...@chromium.org>
                Gerrit-Reviewer: Angela Novakovic <novak...@google.com>
                Gerrit-Reviewer: Filipa Senra <fse...@google.com>
                Gerrit-Reviewer: Leo Zhao <leo...@google.com>
                Gerrit-Reviewer: Noémie St-Onge <noe...@google.com>
                Gerrit-Attention: Alexis Hétu <su...@chromium.org>
                Gerrit-Attention: Filipa Senra <fse...@google.com>
                Gerrit-Comment-Date: Mon, 23 Feb 2026 22:54:44 +0000
                Gerrit-HasComments: Yes
                Gerrit-Has-Labels: No
                Comment-In-Reply-To: Alexis Hétu <su...@chromium.org>
                satisfied_requirement
                unsatisfied_requirement
                open
                diffy

                Filipa Senra (Gerrit)

                unread,
                7:59 AM (10 hours ago) 7:59 AM
                to Angela Novakovic, Alexis Hétu, Leo Zhao, Noémie St-Onge, Chromium LUCI CQ, chromium...@chromium.org, dullweb...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org, msrame...@chromium.org
                Attention needed from Alexis Hétu and Angela Novakovic

                Filipa Senra voted and added 5 comments

                Votes added by Filipa Senra

                Code-Review+1

                5 comments

                Patchset-level comments
                File-level comment, Patchset 30 (Latest):
                Filipa Senra . resolved

                Took a look, but not super in depth as I think the other reviewers are doing that.

                File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_browsing_data/test/quick_delete_browsing_data_egtest.mm
                Line 228, Patchset 30 (Latest):// Tests the cancel button dismisses the Quick Delete Browsing Data page.
                Filipa Senra . unresolved

                nit: that

                Line 245, Patchset 30 (Latest): // Ensure the Quick Delete Browsing Data page is closed while quick delete
                Filipa Senra . unresolved

                nit: the

                File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_other_data/coordinator/quick_delete_other_data_coordinator.mm
                Line 61, Patchset 30 (Latest):
                [_mediator disconnect];
                Filipa Senra . unresolved

                nit: is this new line needed?

                File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_other_data/ui/quick_delete_other_data_view_controller.mm
                Line 89, Patchset 30 (Latest): }
                Filipa Senra . unresolved

                nit: should you have NOTREACHED after the switch statments?

                Open in Gerrit

                Related details

                Attention is currently required from:
                • Alexis Hétu
                • Angela Novakovic
                Submit Requirements:
                • requirement satisfiedCode-Coverage
                • requirement satisfiedCode-Owners
                • requirement is not satisfiedCode-Review
                • requirement is not satisfiedNo-Unresolved-Comments
                • requirement satisfiedReview-Enforcement
                Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                Gerrit-MessageType: comment
                Gerrit-Project: chromium/src
                Gerrit-Branch: main
                Gerrit-Change-Id: I418ab201ad01fbb729d18e5e285e02d1ed88cfdb
                Gerrit-Change-Number: 7548237
                Gerrit-PatchSet: 30
                Gerrit-Owner: Angela Novakovic <novak...@google.com>
                Gerrit-Reviewer: Alexis Hétu <su...@chromium.org>
                Gerrit-Reviewer: Angela Novakovic <novak...@google.com>
                Gerrit-Reviewer: Filipa Senra <fse...@google.com>
                Gerrit-Reviewer: Leo Zhao <leo...@google.com>
                Gerrit-Reviewer: Noémie St-Onge <noe...@google.com>
                Gerrit-Attention: Angela Novakovic <novak...@google.com>
                Gerrit-Attention: Alexis Hétu <su...@chromium.org>
                Gerrit-Comment-Date: Tue, 24 Feb 2026 12:59:01 +0000
                Gerrit-HasComments: Yes
                Gerrit-Has-Labels: Yes
                satisfied_requirement
                unsatisfied_requirement
                open
                diffy

                Alexis Hétu (Gerrit)

                unread,
                8:43 AM (9 hours ago) 8:43 AM
                to Angela Novakovic, Filipa Senra, Leo Zhao, Noémie St-Onge, Chromium LUCI CQ, chromium...@chromium.org, dullweb...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org, msrame...@chromium.org
                Attention needed from Angela Novakovic

                Alexis Hétu voted and added 1 comment

                Votes added by Alexis Hétu

                Code-Review+1

                1 comment

                Patchset-level comments
                Alexis Hétu . resolved

                LGTM % Filipa's comments.

                Open in Gerrit

                Related details

                Attention is currently required from:
                • Angela Novakovic
                Submit Requirements:
                  • requirement satisfiedCode-Coverage
                  • requirement satisfiedCode-Owners
                  • requirement satisfiedCode-Review
                  • requirement is not satisfiedNo-Unresolved-Comments
                  • requirement satisfiedReview-Enforcement
                  Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                  Gerrit-MessageType: comment
                  Gerrit-Project: chromium/src
                  Gerrit-Branch: main
                  Gerrit-Change-Id: I418ab201ad01fbb729d18e5e285e02d1ed88cfdb
                  Gerrit-Change-Number: 7548237
                  Gerrit-PatchSet: 30
                  Gerrit-Owner: Angela Novakovic <novak...@google.com>
                  Gerrit-Reviewer: Alexis Hétu <su...@chromium.org>
                  Gerrit-Reviewer: Angela Novakovic <novak...@google.com>
                  Gerrit-Reviewer: Filipa Senra <fse...@google.com>
                  Gerrit-Reviewer: Leo Zhao <leo...@google.com>
                  Gerrit-Reviewer: Noémie St-Onge <noe...@google.com>
                  Gerrit-Attention: Angela Novakovic <novak...@google.com>
                  Gerrit-Comment-Date: Tue, 24 Feb 2026 13:42:58 +0000
                  Gerrit-HasComments: Yes
                  Gerrit-Has-Labels: Yes
                  satisfied_requirement
                  unsatisfied_requirement
                  open
                  diffy

                  Angela Novakovic (Gerrit)

                  unread,
                  12:54 PM (5 hours ago) 12:54 PM
                  to Alexis Hétu, Filipa Senra, Leo Zhao, Noémie St-Onge, Chromium LUCI CQ, chromium...@chromium.org, dullweb...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org, msrame...@chromium.org
                  Attention needed from Alexis Hétu and Filipa Senra

                  Angela Novakovic added 5 comments

                  Patchset-level comments
                  Filipa Senra . resolved

                  Took a look, but not super in depth as I think the other reviewers are doing that.

                  Angela Novakovic

                  Thank you Filipa! Indeed they are! 😊

                  File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_browsing_data/test/quick_delete_browsing_data_egtest.mm
                  Line 228, Patchset 30:// Tests the cancel button dismisses the Quick Delete Browsing Data page.
                  Filipa Senra . resolved

                  nit: that

                  Angela Novakovic

                  Done

                  Line 245, Patchset 30: // Ensure the Quick Delete Browsing Data page is closed while quick delete
                  Filipa Senra . resolved

                  nit: the

                  Angela Novakovic

                  Done

                  File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_other_data/coordinator/quick_delete_other_data_coordinator.mm
                  Line 61, Patchset 30:
                  [_mediator disconnect];
                  Filipa Senra . resolved

                  nit: is this new line needed?

                  Angela Novakovic

                  Done

                  File ios/chrome/browser/settings/ui_bundled/clear_browsing_data/quick_delete_other_data/ui/quick_delete_other_data_view_controller.mm
                  Line 89, Patchset 30: }
                  Filipa Senra . resolved

                  nit: should you have NOTREACHED after the switch statments?

                  Angela Novakovic

                  Correct. I've updated it!

                  Open in Gerrit

                  Related details

                  Attention is currently required from:
                  • Alexis Hétu
                  • Filipa Senra
                  Submit Requirements:
                    • requirement satisfiedCode-Coverage
                    • requirement satisfiedCode-Owners
                    • requirement is not satisfiedCode-Review
                    • requirement is not satisfiedReview-Enforcement
                    Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                    Gerrit-MessageType: comment
                    Gerrit-Project: chromium/src
                    Gerrit-Branch: main
                    Gerrit-Change-Id: I418ab201ad01fbb729d18e5e285e02d1ed88cfdb
                    Gerrit-Change-Number: 7548237
                    Gerrit-PatchSet: 32
                    Gerrit-Owner: Angela Novakovic <novak...@google.com>
                    Gerrit-Reviewer: Alexis Hétu <su...@chromium.org>
                    Gerrit-Reviewer: Angela Novakovic <novak...@google.com>
                    Gerrit-Reviewer: Filipa Senra <fse...@google.com>
                    Gerrit-Reviewer: Leo Zhao <leo...@google.com>
                    Gerrit-Reviewer: Noémie St-Onge <noe...@google.com>
                    Gerrit-Attention: Alexis Hétu <su...@chromium.org>
                    Gerrit-Attention: Filipa Senra <fse...@google.com>
                    Gerrit-Comment-Date: Tue, 24 Feb 2026 17:54:53 +0000
                    Gerrit-HasComments: Yes
                    Gerrit-Has-Labels: No
                    Comment-In-Reply-To: Filipa Senra <fse...@google.com>
                    satisfied_requirement
                    unsatisfied_requirement
                    open
                    diffy

                    Alexis Hétu (Gerrit)

                    unread,
                    1:52 PM (4 hours ago) 1:52 PM
                    to Angela Novakovic, Filipa Senra, Leo Zhao, Noémie St-Onge, Chromium LUCI CQ, chromium...@chromium.org, dullweb...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org, msrame...@chromium.org
                    Attention needed from Angela Novakovic and Filipa Senra

                    Alexis Hétu voted Code-Review+1

                    Code-Review+1
                    Open in Gerrit

                    Related details

                    Attention is currently required from:
                    • Angela Novakovic
                    • Filipa Senra
                    Submit Requirements:
                      • requirement satisfiedCode-Coverage
                      • requirement satisfiedCode-Owners
                      • requirement is not satisfiedCode-Review
                      • requirement satisfiedReview-Enforcement
                      Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
                      Gerrit-MessageType: comment
                      Gerrit-Project: chromium/src
                      Gerrit-Branch: main
                      Gerrit-Change-Id: I418ab201ad01fbb729d18e5e285e02d1ed88cfdb
                      Gerrit-Change-Number: 7548237
                      Gerrit-PatchSet: 32
                      Gerrit-Owner: Angela Novakovic <novak...@google.com>
                      Gerrit-Reviewer: Alexis Hétu <su...@chromium.org>
                      Gerrit-Reviewer: Angela Novakovic <novak...@google.com>
                      Gerrit-Reviewer: Filipa Senra <fse...@google.com>
                      Gerrit-Reviewer: Leo Zhao <leo...@google.com>
                      Gerrit-Reviewer: Noémie St-Onge <noe...@google.com>
                      Gerrit-Attention: Angela Novakovic <novak...@google.com>
                      Gerrit-Attention: Filipa Senra <fse...@google.com>
                      Gerrit-Comment-Date: Tue, 24 Feb 2026 18:52:33 +0000
                      Gerrit-HasComments: No
                      Gerrit-Has-Labels: Yes
                      satisfied_requirement
                      unsatisfied_requirement
                      open
                      diffy

                      Alexis Hétu (Gerrit)

                      unread,
                      1:53 PM (4 hours ago) 1:53 PM
                      to Angela Novakovic, Filipa Senra, Leo Zhao, Noémie St-Onge, Chromium LUCI CQ, chromium...@chromium.org, dullweb...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org, msrame...@chromium.org
                      Attention needed from Angela Novakovic and Filipa Senra

                      Alexis Hétu added 1 comment

                      Patchset-level comments
                      File-level comment, Patchset 32 (Latest):
                      Alexis Hétu . resolved

                      You're going to need to rebase.

                      Gerrit-Comment-Date: Tue, 24 Feb 2026 18:53:01 +0000
                      Gerrit-HasComments: Yes
                      Gerrit-Has-Labels: No
                      satisfied_requirement
                      unsatisfied_requirement
                      open
                      diffy
                      Reply all
                      Reply to author
                      Forward
                      0 new messages