[IOS][AIM] Handle and maintain attached tabs in embedded state [chromium/src : main]

0 views
Skip to first unread message

Ameur Hosni (Gerrit)

unread,
May 4, 2026, 10:20:36 AM (22 hours ago) May 4
to Christian Xu, Radu Nitescu, android-bu...@system.gserviceaccount.com, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org
Attention needed from Christian Xu and Radu Nitescu

Ameur Hosni voted

Auto-Submit+1
Commit-Queue+1
Open in Gerrit

Related details

Attention is currently required from:
  • Christian Xu
  • Radu Nitescu
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: I15f986a2f98b1865b21f5582527ff66f1ebfa017
Gerrit-Change-Number: 7813896
Gerrit-PatchSet: 4
Gerrit-Owner: Ameur Hosni <ameur...@google.com>
Gerrit-Reviewer: Ameur Hosni <ameur...@google.com>
Gerrit-Reviewer: Christian Xu <chris...@chromium.org>
Gerrit-Reviewer: Radu Nitescu <radun...@google.com>
Gerrit-Attention: Christian Xu <chris...@chromium.org>
Gerrit-Attention: Radu Nitescu <radun...@google.com>
Gerrit-Comment-Date: Mon, 04 May 2026 14:20:19 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
satisfied_requirement
unsatisfied_requirement
open
diffy

Radu Nitescu (Gerrit)

unread,
May 4, 2026, 11:42:48 AM (21 hours ago) May 4
to Ameur Hosni, Chromium LUCI CQ, Christian Xu, android-bu...@system.gserviceaccount.com, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org
Attention needed from Ameur Hosni and Christian Xu

Radu Nitescu added 2 comments

File ios/chrome/browser/composebox/menu/coordinator/composebox_menu_mediator.mm
Line 153, Patchset 4 (Latest):
for (web::WebStateID webStateID : _preselection.tabIDs) {
if (!webStateID.valid()) {
continue;
}

WebStateSearchCriteria searchCriteria{
.identifier = webStateID,
.pinned_state = WebStateSearchCriteria::PinnedState::kAny,
};

if (GetWebStateIndex(_webStateList, searchCriteria) !=
WebStateList::kInvalidIndex) {
webStateIDs.insert(webStateID);
}
}
Radu Nitescu . unresolved

Can't this filtering happen at the preselection level? Like having the `tabIDs` already return the curated webState ids?

File ios/chrome/browser/composebox/shared/coordinator/composebox_picker_presenter.h
Line 43, Patchset 4 (Latest):- (std::set<web::WebStateID>)allAttachedWebStateIDsForPresenter:
(ComposeboxPickerPresenter*)presenter;

// Returns the associated IDs for currently attached tabs from the current web
// state context.
- (std::set<web::WebStateID>)attachedWebStateIDsInCurrentContextForPresenter:
(ComposeboxPickerPresenter*)presenter;

// Returns the max number of tab attachments.
- (NSUInteger)maxTabAttachmentCountForPresenter:
(ComposeboxPickerPresenter*)presenter;
Radu Nitescu . unresolved

The delegate should inform of various events, not be used as a pulling mechanism.
This should be split in a new protocol.

Open in Gerrit

Related details

Attention is currently required from:
  • Ameur Hosni
  • Christian Xu
Submit Requirements:
    • requirement satisfiedCode-Coverage
    • requirement 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: I15f986a2f98b1865b21f5582527ff66f1ebfa017
    Gerrit-Change-Number: 7813896
    Gerrit-PatchSet: 4
    Gerrit-Owner: Ameur Hosni <ameur...@google.com>
    Gerrit-Reviewer: Ameur Hosni <ameur...@google.com>
    Gerrit-Reviewer: Christian Xu <chris...@chromium.org>
    Gerrit-Reviewer: Radu Nitescu <radun...@google.com>
    Gerrit-Attention: Ameur Hosni <ameur...@google.com>
    Gerrit-Attention: Christian Xu <chris...@chromium.org>
    Gerrit-Comment-Date: Mon, 04 May 2026 15:42:31 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Ameur Hosni (Gerrit)

    unread,
    4:48 AM (4 hours ago) 4:48 AM
    to Chromium LUCI CQ, Christian Xu, Radu Nitescu, android-bu...@system.gserviceaccount.com, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org
    Attention needed from Christian Xu and Radu Nitescu

    Ameur Hosni voted and added 2 comments

    Votes added by Ameur Hosni

    Auto-Submit+1
    Commit-Queue+1

    2 comments

    File ios/chrome/browser/composebox/menu/coordinator/composebox_menu_mediator.mm

    for (web::WebStateID webStateID : _preselection.tabIDs) {
    if (!webStateID.valid()) {
    continue;
    }

    WebStateSearchCriteria searchCriteria{
    .identifier = webStateID,
    .pinned_state = WebStateSearchCriteria::PinnedState::kAny,
    };

    if (GetWebStateIndex(_webStateList, searchCriteria) !=
    WebStateList::kInvalidIndex) {
    webStateIDs.insert(webStateID);
    }
    }
    Radu Nitescu . resolved

    Can't this filtering happen at the preselection level? Like having the `tabIDs` already return the curated webState ids?

    Ameur Hosni

    I think the filtering should stay here (live). The webstateList could be updated while the menu is presented, filtering this in the preselection wouldn't capture this.

    File ios/chrome/browser/composebox/shared/coordinator/composebox_picker_presenter.h
    Line 43, Patchset 4:- (std::set<web::WebStateID>)allAttachedWebStateIDsForPresenter:

    (ComposeboxPickerPresenter*)presenter;

    // Returns the associated IDs for currently attached tabs from the current web
    // state context.
    - (std::set<web::WebStateID>)attachedWebStateIDsInCurrentContextForPresenter:
    (ComposeboxPickerPresenter*)presenter;

    // Returns the max number of tab attachments.
    - (NSUInteger)maxTabAttachmentCountForPresenter:
    (ComposeboxPickerPresenter*)presenter;
    Radu Nitescu . resolved

    The delegate should inform of various events, not be used as a pulling mechanism.
    This should be split in a new protocol.

    Ameur Hosni

    Done

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Christian Xu
    • Radu Nitescu
    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: I15f986a2f98b1865b21f5582527ff66f1ebfa017
      Gerrit-Change-Number: 7813896
      Gerrit-PatchSet: 5
      Gerrit-Owner: Ameur Hosni <ameur...@google.com>
      Gerrit-Reviewer: Ameur Hosni <ameur...@google.com>
      Gerrit-Reviewer: Christian Xu <chris...@chromium.org>
      Gerrit-Reviewer: Radu Nitescu <radun...@google.com>
      Gerrit-Attention: Christian Xu <chris...@chromium.org>
      Gerrit-Attention: Radu Nitescu <radun...@google.com>
      Gerrit-Comment-Date: Tue, 05 May 2026 08:48:39 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: Yes
      Comment-In-Reply-To: Radu Nitescu <radun...@google.com>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Christian Xu (Gerrit)

      unread,
      4:56 AM (4 hours ago) 4:56 AM
      to Ameur Hosni, Chromium LUCI CQ, Radu Nitescu, android-bu...@system.gserviceaccount.com, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org
      Attention needed from Ameur Hosni and Radu Nitescu

      Christian Xu voted and added 1 comment

      Votes added by Christian Xu

      Code-Review+1

      1 comment

      File ios/chrome/browser/composebox/menu/coordinator/composebox_menu_coordinator.mm
      Line 138, Patchset 5 (Latest): _mediator = [[ComposeboxMenuMediator alloc]
      initWithEntrypoint:_entrypoint
      inputState:_inputState
      webStateList:self.browser->GetWebStateList()
      preselectedAttachments:_preselection];
      } else {
      CHECK(_inputState);
      _mediator = [[ComposeboxMenuMediator alloc]
      initWithEntrypoint:_entrypoint
      inputState:_inputState
      webStateList:self.browser->GetWebStateList()
      preselectedAttachments:_preselection];
      }
      Christian Xu . unresolved
      ```suggestion
      }
      CHECK(_inputState);
      _mediator = [[ComposeboxMenuMediator alloc]
      initWithEntrypoint:_entrypoint
      inputState:_inputState
      webStateList:self.browser->GetWebStateList()
      preselectedAttachments:_preselection];
      ```
      Open in Gerrit

      Related details

      Attention is currently required from:
      • Ameur Hosni
      • Radu Nitescu
      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: I15f986a2f98b1865b21f5582527ff66f1ebfa017
        Gerrit-Change-Number: 7813896
        Gerrit-PatchSet: 5
        Gerrit-Owner: Ameur Hosni <ameur...@google.com>
        Gerrit-Reviewer: Ameur Hosni <ameur...@google.com>
        Gerrit-Reviewer: Christian Xu <chris...@chromium.org>
        Gerrit-Reviewer: Radu Nitescu <radun...@google.com>
        Gerrit-Attention: Ameur Hosni <ameur...@google.com>
        Gerrit-Attention: Radu Nitescu <radun...@google.com>
        Gerrit-Comment-Date: Tue, 05 May 2026 08:56:00 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: Yes
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Ameur Hosni (Gerrit)

        unread,
        5:49 AM (3 hours ago) 5:49 AM
        to Christian Xu, Chromium LUCI CQ, Radu Nitescu, android-bu...@system.gserviceaccount.com, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org
        Attention needed from Radu Nitescu

        Ameur Hosni voted and added 1 comment

        Votes added by Ameur Hosni

        Auto-Submit+1
        Commit-Queue+2

        1 comment

        File ios/chrome/browser/composebox/menu/coordinator/composebox_menu_coordinator.mm
        Line 138, Patchset 5: _mediator = [[ComposeboxMenuMediator alloc]

        initWithEntrypoint:_entrypoint
        inputState:_inputState
        webStateList:self.browser->GetWebStateList()
        preselectedAttachments:_preselection];
        } else {
        CHECK(_inputState);
        _mediator = [[ComposeboxMenuMediator alloc]
        initWithEntrypoint:_entrypoint
        inputState:_inputState
        webStateList:self.browser->GetWebStateList()
        preselectedAttachments:_preselection];
        }
        Christian Xu . resolved
        ```suggestion
        }
        CHECK(_inputState);
        _mediator = [[ComposeboxMenuMediator alloc]
        initWithEntrypoint:_entrypoint
        inputState:_inputState
        webStateList:self.browser->GetWebStateList()
        preselectedAttachments:_preselection];
        ```
        Ameur Hosni

        Done

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Radu Nitescu
        Submit Requirements:
          • requirement satisfiedCode-Coverage
          • requirement satisfiedCode-Owners
          • requirement 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: I15f986a2f98b1865b21f5582527ff66f1ebfa017
          Gerrit-Change-Number: 7813896
          Gerrit-PatchSet: 6
          Gerrit-Owner: Ameur Hosni <ameur...@google.com>
          Gerrit-Reviewer: Ameur Hosni <ameur...@google.com>
          Gerrit-Reviewer: Christian Xu <chris...@chromium.org>
          Gerrit-Reviewer: Radu Nitescu <radun...@google.com>
          Gerrit-Attention: Radu Nitescu <radun...@google.com>
          Gerrit-Comment-Date: Tue, 05 May 2026 09:49:15 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: Yes
          Comment-In-Reply-To: Christian Xu <chris...@chromium.org>
          satisfied_requirement
          open
          diffy

          Chromium LUCI CQ (Gerrit)

          unread,
          7:15 AM (1 hour ago) 7:15 AM
          to Ameur Hosni, Christian Xu, Radu Nitescu, android-bu...@system.gserviceaccount.com, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org

          Chromium LUCI CQ submitted the change with unreviewed changes

          Unreviewed changes

          5 is the latest approved patch-set.
          The change was submitted with unreviewed changes in the following files:

          ```
          The name of the file: ios/chrome/browser/composebox/menu/coordinator/composebox_menu_coordinator.mm
          Insertions: 7, Deletions: 13.

          @@ -134,20 +134,14 @@
          std::set<web::WebStateID> emptySet;
          _inputState = [_stateManager computeUIInputStateWithFavicon:nil
          attachedWebStateIDs:emptySet];
          -
          - _mediator = [[ComposeboxMenuMediator alloc]
          - initWithEntrypoint:_entrypoint
          - inputState:_inputState
          - webStateList:self.browser->GetWebStateList()
          - preselectedAttachments:_preselection];
          - } else {
          - CHECK(_inputState);
          - _mediator = [[ComposeboxMenuMediator alloc]
          - initWithEntrypoint:_entrypoint
          - inputState:_inputState
          - webStateList:self.browser->GetWebStateList()
          - preselectedAttachments:_preselection];
          }
          +
          + CHECK(_inputState);
          + _mediator = [[ComposeboxMenuMediator alloc]
          + initWithEntrypoint:_entrypoint
          + inputState:_inputState
          + webStateList:self.browser->GetWebStateList()
          + preselectedAttachments:_preselection];
          _mediator.delegate = self;

          _viewController.sheetPresentationController.prefersGrabberVisible = YES;
          ```

          Change information

          Commit message:
          [IOS][AIM] Handle and maintain attached tabs in embedded state
          Change-Id: I15f986a2f98b1865b21f5582527ff66f1ebfa017
          Auto-Submit: Ameur Hosni <ameur...@google.com>
          Commit-Queue: Ameur Hosni <ameur...@google.com>
          Reviewed-by: Christian Xu <chris...@chromium.org>
          Cr-Commit-Position: refs/heads/main@{#1625318}
          Files:
          Change size: M
          Delta: 10 files changed, 139 insertions(+), 24 deletions(-)
          Branch: refs/heads/main
          Submit Requirements:
          • requirement satisfiedCode-Review: +1 by Christian Xu
          Open in Gerrit
          Inspect html for hidden footers to help with email filtering. To unsubscribe visit settings. DiffyGerrit
          Gerrit-MessageType: merged
          Gerrit-Project: chromium/src
          Gerrit-Branch: main
          Gerrit-Change-Id: I15f986a2f98b1865b21f5582527ff66f1ebfa017
          Gerrit-Change-Number: 7813896
          Gerrit-PatchSet: 7
          Gerrit-Owner: Ameur Hosni <ameur...@google.com>
          Gerrit-Reviewer: Ameur Hosni <ameur...@google.com>
          Gerrit-Reviewer: Christian Xu <chris...@chromium.org>
          open
          diffy
          satisfied_requirement
          Reply all
          Reply to author
          Forward
          0 new messages