[ios] Implement AppBar Assistant button states [chromium/src : main]

0 views
Skip to first unread message

Chris Lu (Gerrit)

unread,
Mar 11, 2026, 4:10:45 PMMar 11
to Gauthier Ambard, Chromium LUCI CQ, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org
Attention needed from Gauthier Ambard

Chris Lu voted Commit-Queue+1

Commit-Queue+1
Open in Gerrit

Related details

Attention is currently required from:
  • Gauthier Ambard
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: I8d822a21b5b026fcc75f780be22580d9c431025f
Gerrit-Change-Number: 7657645
Gerrit-PatchSet: 8
Gerrit-Owner: Chris Lu <thegre...@chromium.org>
Gerrit-Reviewer: Chris Lu <thegre...@chromium.org>
Gerrit-Reviewer: Gauthier Ambard <gam...@chromium.org>
Gerrit-Attention: Gauthier Ambard <gam...@chromium.org>
Gerrit-Comment-Date: Wed, 11 Mar 2026 20:10:37 +0000
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
satisfied_requirement
unsatisfied_requirement
open
diffy

Gauthier Ambard (Gerrit)

unread,
Mar 12, 2026, 4:16:26 AMMar 12
to Chris Lu, Adam Arcaro, Chromium LUCI CQ, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org
Attention needed from Adam Arcaro and Chris Lu

Gauthier Ambard added 9 comments

Patchset-level comments
File-level comment, Patchset 11 (Latest):
Gauthier Ambard . resolved

+Adam for model changes

File ios/chrome/browser/app_bar/coordinator/app_bar_coordinator.mm
Line 60, Patchset 11 (Latest): id<BWGCommands> bwgHandler =
Gauthier Ambard . unresolved
```suggestion
id<BWGCommands> geminiHandler =
```

(it should be renamed at some point)

Line 80, Patchset 11 (Latest): bwgService:BwgServiceFactory::GetForProfile(profile)
Gauthier Ambard . unresolved
```suggestion
geminiService:BwgServiceFactory::GetForProfile(profile)
```
File ios/chrome/browser/app_bar/coordinator/app_bar_mediator.mm
Line 155, Patchset 11 (Latest): if (_identityManager) {
Gauthier Ambard . unresolved

You can probably remove this check

Line 599, Patchset 11 (Latest):- (void)updateAssistantButton {
Gauthier Ambard . unresolved

Add comment

Line 624, Patchset 11 (Latest): [self.consumer setAssistantButtonState:state avatar:avatar];
Gauthier Ambard . unresolved

How do you plan to handle the action from the button? Is it the VC that will always call the right command? Should it go through the mediator?

Line 649, Patchset 11 (Latest): _identityManager = nullptr;
Gauthier Ambard . unresolved

Shouldn't you stop observation here?

File ios/chrome/browser/app_bar/ui/app_bar_consumer.h
Line 20, Patchset 11 (Latest): AppBarAssistantButtonStateIneligible,
Gauthier Ambard . unresolved

What is this state? Is it signed in + inelligible? I think it maybe should be more clear. Also, is this an enum for the UI states only or is it also an enum for the different actions (for example signed out and signed in with Gemini enabled is the same UI but different action)?

Line 18, Patchset 11 (Latest):typedef NS_ENUM(NSUInteger, AppBarAssistantButtonState) {
Gauthier Ambard . unresolved

Use enum class

Open in Gerrit

Related details

Attention is currently required from:
  • Adam Arcaro
  • Chris Lu
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: I8d822a21b5b026fcc75f780be22580d9c431025f
    Gerrit-Change-Number: 7657645
    Gerrit-PatchSet: 11
    Gerrit-Owner: Chris Lu <thegre...@chromium.org>
    Gerrit-Reviewer: Adam Arcaro <ada...@google.com>
    Gerrit-Reviewer: Chris Lu <thegre...@chromium.org>
    Gerrit-Reviewer: Gauthier Ambard <gam...@chromium.org>
    Gerrit-Attention: Chris Lu <thegre...@chromium.org>
    Gerrit-Attention: Adam Arcaro <ada...@google.com>
    Gerrit-Comment-Date: Thu, 12 Mar 2026 08:16:07 +0000
    Gerrit-HasComments: Yes
    Gerrit-Has-Labels: No
    satisfied_requirement
    unsatisfied_requirement
    open
    diffy

    Adam Arcaro (Gerrit)

    unread,
    Mar 12, 2026, 8:56:35 AMMar 12
    to Chris Lu, Gauthier Ambard, Chromium LUCI CQ, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org
    Attention needed from Chris Lu

    Adam Arcaro voted and added 3 comments

    Votes added by Adam Arcaro

    Code-Review+1

    3 comments

    Patchset-level comments
    Adam Arcaro . resolved

    BwgService change lgtm, thanks for the improvement!

    File ios/chrome/browser/app_bar/coordinator/app_bar_coordinator.mm
    Line 60, Patchset 11 (Latest): id<BWGCommands> bwgHandler =
    Gauthier Ambard . unresolved
    ```suggestion
    id<BWGCommands> geminiHandler =
    ```

    (it should be renamed at some point)

    Adam Arcaro

    We're planning to rename it soon (it's a heavy rename that touches a lot of files), but +1 to using `gemini` instead of `bwg` in local vars in the meantime

    File ios/chrome/browser/app_bar/ui/app_bar_view_controller.h
    Line 33, Patchset 11 (Latest):@property(nonatomic, weak) id<BWGCommands> bwgHandler;
    Adam Arcaro . unresolved

    nit: geminiHandler

    Open in Gerrit

    Related details

    Attention is currently required from:
    • Chris Lu
    Submit Requirements:
      • requirement satisfiedCode-Coverage
      • requirement is not 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: I8d822a21b5b026fcc75f780be22580d9c431025f
      Gerrit-Change-Number: 7657645
      Gerrit-PatchSet: 11
      Gerrit-Owner: Chris Lu <thegre...@chromium.org>
      Gerrit-Reviewer: Adam Arcaro <ada...@google.com>
      Gerrit-Reviewer: Chris Lu <thegre...@chromium.org>
      Gerrit-Reviewer: Gauthier Ambard <gam...@chromium.org>
      Gerrit-Attention: Chris Lu <thegre...@chromium.org>
      Gerrit-Comment-Date: Thu, 12 Mar 2026 12:56:27 +0000
      Gerrit-HasComments: Yes
      Gerrit-Has-Labels: Yes
      Comment-In-Reply-To: Gauthier Ambard <gam...@chromium.org>
      satisfied_requirement
      unsatisfied_requirement
      open
      diffy

      Chris Lu (Gerrit)

      unread,
      Mar 12, 2026, 6:04:57 PMMar 12
      to Adam Arcaro, Gauthier Ambard, Chromium LUCI CQ, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org
      Attention needed from Adam Arcaro and Gauthier Ambard

      Chris Lu added 9 comments

      File ios/chrome/browser/app_bar/coordinator/app_bar_coordinator.mm
      Line 60, Patchset 11: id<BWGCommands> bwgHandler =
      Gauthier Ambard . resolved
      ```suggestion
      id<BWGCommands> geminiHandler =
      ```

      (it should be renamed at some point)

      Adam Arcaro

      We're planning to rename it soon (it's a heavy rename that touches a lot of files), but +1 to using `gemini` instead of `bwg` in local vars in the meantime

      Chris Lu

      Done

      Line 80, Patchset 11: bwgService:BwgServiceFactory::GetForProfile(profile)
      Gauthier Ambard . resolved
      ```suggestion
      geminiService:BwgServiceFactory::GetForProfile(profile)
      ```
      Chris Lu

      Done

      File ios/chrome/browser/app_bar/coordinator/app_bar_mediator.mm
      Line 155, Patchset 11: if (_identityManager) {
      Gauthier Ambard . resolved

      You can probably remove this check

      Chris Lu

      Done

      Line 599, Patchset 11:- (void)updateAssistantButton {
      Gauthier Ambard . resolved

      Add comment

      Chris Lu

      Done

      Line 624, Patchset 11: [self.consumer setAssistantButtonState:state avatar:avatar];
      Gauthier Ambard . unresolved

      How do you plan to handle the action from the button? Is it the VC that will always call the right command? Should it go through the mediator?

      Chris Lu

      I was thinking we go through the mediator, since there seems to be a few different behaviors that could show the same icon. I don't mind just having one mutator API and the mediator decides the exact action.

      Line 649, Patchset 11: _identityManager = nullptr;
      Gauthier Ambard . resolved

      Shouldn't you stop observation here?

      Chris Lu

      Yes

      File ios/chrome/browser/app_bar/ui/app_bar_consumer.h
      Line 20, Patchset 11: AppBarAssistantButtonStateIneligible,
      Gauthier Ambard . unresolved

      What is this state? Is it signed in + inelligible? I think it maybe should be more clear. Also, is this an enum for the UI states only or is it also an enum for the different actions (for example signed out and signed in with Gemini enabled is the same UI but different action)?

      Chris Lu

      Yes that is correct, intended to be UI state. However, reflecting more, it should definitely be more aligned with UI-focused state. "eligible" will be determined later after the tap since we may show the ask button even if the assistant is not available.

      Line 18, Patchset 11:typedef NS_ENUM(NSUInteger, AppBarAssistantButtonState) {
      Gauthier Ambard . resolved

      Use enum class

      Chris Lu

      Done

      File ios/chrome/browser/app_bar/ui/app_bar_view_controller.h
      Line 33, Patchset 11:@property(nonatomic, weak) id<BWGCommands> bwgHandler;
      Adam Arcaro . resolved

      nit: geminiHandler

      Chris Lu

      Done

      Open in Gerrit

      Related details

      Attention is currently required from:
      • Adam Arcaro
      • Gauthier Ambard
      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: I8d822a21b5b026fcc75f780be22580d9c431025f
        Gerrit-Change-Number: 7657645
        Gerrit-PatchSet: 21
        Gerrit-Owner: Chris Lu <thegre...@chromium.org>
        Gerrit-Reviewer: Adam Arcaro <ada...@google.com>
        Gerrit-Reviewer: Chris Lu <thegre...@chromium.org>
        Gerrit-Reviewer: Gauthier Ambard <gam...@chromium.org>
        Gerrit-Attention: Adam Arcaro <ada...@google.com>
        Gerrit-Attention: Gauthier Ambard <gam...@chromium.org>
        Gerrit-Comment-Date: Thu, 12 Mar 2026 22:04:44 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        Comment-In-Reply-To: Adam Arcaro <ada...@google.com>
        Comment-In-Reply-To: Gauthier Ambard <gam...@chromium.org>
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Gauthier Ambard (Gerrit)

        unread,
        Mar 13, 2026, 6:49:59 AMMar 13
        to Chris Lu, Adam Arcaro, Chromium LUCI CQ, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org
        Attention needed from Adam Arcaro and Chris Lu

        Gauthier Ambard voted and added 3 comments

        Votes added by Gauthier Ambard

        Code-Review+1

        3 comments

        File ios/chrome/browser/app_bar/coordinator/app_bar_mediator.mm
        Line 624, Patchset 11: [self.consumer setAssistantButtonState:state avatar:avatar];
        Gauthier Ambard . resolved

        How do you plan to handle the action from the button? Is it the VC that will always call the right command? Should it go through the mediator?

        Chris Lu

        I was thinking we go through the mediator, since there seems to be a few different behaviors that could show the same icon. I don't mind just having one mutator API and the mediator decides the exact action.

        Gauthier Ambard

        Acknowledged

        File ios/chrome/browser/app_bar/ui/app_bar_consumer.h
        Line 20, Patchset 11: AppBarAssistantButtonStateIneligible,
        Gauthier Ambard . unresolved

        What is this state? Is it signed in + inelligible? I think it maybe should be more clear. Also, is this an enum for the UI states only or is it also an enum for the different actions (for example signed out and signed in with Gemini enabled is the same UI but different action)?

        Chris Lu

        Yes that is correct, intended to be UI state. However, reflecting more, it should definitely be more aligned with UI-focused state. "eligible" will be determined later after the tap since we may show the ask button even if the assistant is not available.

        Gauthier Ambard

        Yeah I agree. I think it makes sense for the mediator to push the UI state + info relevant for the state.

        File ios/chrome/browser/app_bar/ui/app_bar_view_controller.mm
        Line 273, Patchset 21 (Latest): image = _assistantButtonAvatar;
        Gauthier Ambard . unresolved

        Are we expecting the mediator to always pass an avatar (including the default "no avatar" image)? Or can this be nil in which case the VC should handle it?

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Adam Arcaro
        • Chris Lu
        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: I8d822a21b5b026fcc75f780be22580d9c431025f
        Gerrit-Change-Number: 7657645
        Gerrit-PatchSet: 21
        Gerrit-Owner: Chris Lu <thegre...@chromium.org>
        Gerrit-Reviewer: Adam Arcaro <ada...@google.com>
        Gerrit-Reviewer: Chris Lu <thegre...@chromium.org>
        Gerrit-Reviewer: Gauthier Ambard <gam...@chromium.org>
        Gerrit-Attention: Chris Lu <thegre...@chromium.org>
        Gerrit-Attention: Adam Arcaro <ada...@google.com>
        Gerrit-Comment-Date: Fri, 13 Mar 2026 10:49:44 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: Yes
        Comment-In-Reply-To: Chris Lu <thegre...@chromium.org>
        Comment-In-Reply-To: Gauthier Ambard <gam...@chromium.org>
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Adam Arcaro (Gerrit)

        unread,
        Mar 13, 2026, 9:44:09 AMMar 13
        to Chris Lu, Gauthier Ambard, Chromium LUCI CQ, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org
        Attention needed from Chris Lu

        Adam Arcaro voted and added 1 comment

        Votes added by Adam Arcaro

        Code-Review+1

        1 comment

        File ios/chrome/browser/intelligence/bwg/model/bwg_service.h
        Line 82, Patchset 21 (Latest): base::ScopedObservation<signin::IdentityManager,
        Adam Arcaro . unresolved

        nit: Comment for consistency

        Open in Gerrit

        Related details

        Attention is currently required from:
        • Chris Lu
        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: I8d822a21b5b026fcc75f780be22580d9c431025f
        Gerrit-Change-Number: 7657645
        Gerrit-PatchSet: 21
        Gerrit-Owner: Chris Lu <thegre...@chromium.org>
        Gerrit-Reviewer: Adam Arcaro <ada...@google.com>
        Gerrit-Reviewer: Chris Lu <thegre...@chromium.org>
        Gerrit-Reviewer: Gauthier Ambard <gam...@chromium.org>
        Gerrit-Attention: Chris Lu <thegre...@chromium.org>
        Gerrit-Comment-Date: Fri, 13 Mar 2026 13:44:01 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: Yes
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Chris Lu (Gerrit)

        unread,
        Mar 13, 2026, 11:51:23 AMMar 13
        to Adam Arcaro, Gauthier Ambard, Chromium LUCI CQ, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org

        Chris Lu added 2 comments

        File ios/chrome/browser/app_bar/ui/app_bar_consumer.h
        Line 20, Patchset 11: AppBarAssistantButtonStateIneligible,
        Gauthier Ambard . resolved

        What is this state? Is it signed in + inelligible? I think it maybe should be more clear. Also, is this an enum for the UI states only or is it also an enum for the different actions (for example signed out and signed in with Gemini enabled is the same UI but different action)?

        Chris Lu

        Yes that is correct, intended to be UI state. However, reflecting more, it should definitely be more aligned with UI-focused state. "eligible" will be determined later after the tap since we may show the ask button even if the assistant is not available.

        Gauthier Ambard

        Yeah I agree. I think it makes sense for the mediator to push the UI state + info relevant for the state.

        Chris Lu

        Acknowledged

        File ios/chrome/browser/app_bar/ui/app_bar_view_controller.mm
        Line 273, Patchset 21: image = _assistantButtonAvatar;
        Gauthier Ambard . resolved

        Are we expecting the mediator to always pass an avatar (including the default "no avatar" image)? Or can this be nil in which case the VC should handle it?

        Chris Lu

        we can have to VC handle default image

        Open in Gerrit

        Related details

        Attention set is empty
        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: I8d822a21b5b026fcc75f780be22580d9c431025f
        Gerrit-Change-Number: 7657645
        Gerrit-PatchSet: 22
        Gerrit-Owner: Chris Lu <thegre...@chromium.org>
        Gerrit-Reviewer: Adam Arcaro <ada...@google.com>
        Gerrit-Reviewer: Chris Lu <thegre...@chromium.org>
        Gerrit-Reviewer: Gauthier Ambard <gam...@chromium.org>
        Gerrit-Comment-Date: Fri, 13 Mar 2026 15:51:13 +0000
        Gerrit-HasComments: Yes
        Gerrit-Has-Labels: No
        satisfied_requirement
        unsatisfied_requirement
        open
        diffy

        Chris Lu (Gerrit)

        unread,
        Mar 13, 2026, 12:54:24 PMMar 13
        to Adam Arcaro, Gauthier Ambard, Chromium LUCI CQ, chromium...@chromium.org, feature-me...@chromium.org, ios-revie...@chromium.org, ios-r...@chromium.org, marq+...@chromium.org

        Chris Lu voted and added 1 comment

        Votes added by Chris Lu

        Commit-Queue+2

        1 comment

        File ios/chrome/browser/intelligence/bwg/model/bwg_service.h
        Line 82, Patchset 21: base::ScopedObservation<signin::IdentityManager,
        Adam Arcaro . resolved

        nit: Comment for consistency

        Chris Lu

        sorry i didnt see this initially... but now looking through the codebase we don't really leave comments for ScopedObservation properties.. so going to avoid the extra CQ dry run and just let this slide :P

        Open in Gerrit

        Related details

        Attention set is empty
        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: I8d822a21b5b026fcc75f780be22580d9c431025f
          Gerrit-Change-Number: 7657645
          Gerrit-PatchSet: 22
          Gerrit-Owner: Chris Lu <thegre...@chromium.org>
          Gerrit-Reviewer: Adam Arcaro <ada...@google.com>
          Gerrit-Reviewer: Chris Lu <thegre...@chromium.org>
          Gerrit-Reviewer: Gauthier Ambard <gam...@chromium.org>
          Gerrit-Comment-Date: Fri, 13 Mar 2026 16:54:11 +0000
          Gerrit-HasComments: Yes
          Gerrit-Has-Labels: Yes
          Comment-In-Reply-To: Adam Arcaro <ada...@google.com>
          satisfied_requirement
          open
          diffy

          Chromium LUCI CQ (Gerrit)

          unread,
          Mar 13, 2026, 12:58:32 PMMar 13
          to Chris Lu, Adam Arcaro, Gauthier Ambard, 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

          21 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/app_bar/coordinator/app_bar_mediator.mm
          Insertions: 0, Deletions: 2.

          @@ -719,8 +719,6 @@
          if (avatarProvider) {
          avatar = avatarProvider->GetIdentityAvatar(
          identity, IdentityAvatarSize::TableViewIcon);
          - } else {
          - avatar = DefaultSymbolTemplateWithPointSize(kPersonCropCircleSymbol, 30);
          }
          }

          ```
          ```
          The name of the file: ios/chrome/browser/app_bar/ui/app_bar_view_controller.mm
          Insertions: 2, Deletions: 1.

          @@ -284,7 +284,8 @@

          UIButtonConfiguration* configuration = _assistantButton.configuration;
          configuration.title = title;
          - configuration.image = image;
          + configuration.image =
          + image ? image : DefaultAppBarSymbol(kPersonCropCircleSymbol);
          _assistantButton.configuration = configuration;
          }

          ```

          Change information

          Commit message:
          [ios] Implement AppBar Assistant button states

          Supports three states of the Assistant button represented by
          AppBarAssistantButtonState:
          - ask: show the assistant icon, shown if feature is enabled and locale requirements are met
          - account: show the user's profile icon, shown if signed in
          - signed out: show the signed out icon

          video: https://screencast.googleplex.com/cast/NDY3NTk2ODgwMjIyNjE3NnxiOGVkMTM5NC05OQ
          https://screenshot.googleplex.com/49aehKDnWNwXGnB
          Bug: 484000888
          Change-Id: I8d822a21b5b026fcc75f780be22580d9c431025f
          Reviewed-by: Adam Arcaro <ada...@google.com>
          Commit-Queue: Chris Lu <thegre...@chromium.org>
          Reviewed-by: Gauthier Ambard <gam...@chromium.org>
          Cr-Commit-Position: refs/heads/main@{#1599134}
          Files:
          Change size: L
          Delta: 13 files changed, 451 insertions(+), 42 deletions(-)
          Branch: refs/heads/main
          Submit Requirements:
          • requirement satisfiedCode-Review: +1 by Gauthier Ambard, +1 by Adam Arcaro
          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: I8d822a21b5b026fcc75f780be22580d9c431025f
          Gerrit-Change-Number: 7657645
          Gerrit-PatchSet: 23
          Gerrit-Owner: Chris Lu <thegre...@chromium.org>
          Gerrit-Reviewer: Adam Arcaro <ada...@google.com>
          Gerrit-Reviewer: Chris Lu <thegre...@chromium.org>
          Gerrit-Reviewer: Chromium LUCI CQ <chromiu...@luci-project-accounts.iam.gserviceaccount.com>
          Gerrit-Reviewer: Gauthier Ambard <gam...@chromium.org>
          open
          diffy
          satisfied_requirement
          Reply all
          Reply to author
          Forward
          0 new messages