Improve SF symbol unit test cases.

Use the standard approach to set up the feature list.
The previous approach would just bypass the UseSymbol case
since it's always disabled.

Bug: 1315544
Change-Id: Id17d6e68048e995d37b99cf55227c8239c782263
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3922120
Reviewed-by: Gauthier Ambard <gambard@chromium.org>
Commit-Queue: Huiting Yu <huitingyu@google.com>
Cr-Commit-Position: refs/heads/main@{#1052805}
diff --git a/ios/chrome/browser/ui/overlays/infobar_banner/passwords/BUILD.gn b/ios/chrome/browser/ui/overlays/infobar_banner/passwords/BUILD.gn
index a917cebf..9357260 100644
--- a/ios/chrome/browser/ui/overlays/infobar_banner/passwords/BUILD.gn
+++ b/ios/chrome/browser/ui/overlays/infobar_banner/passwords/BUILD.gn
@@ -50,6 +50,7 @@
     "//ios/chrome/browser/overlays/test",
     "//ios/chrome/browser/passwords:infobar_delegates",
     "//ios/chrome/browser/passwords/test",
+    "//ios/chrome/browser/ui:feature_flags",
     "//ios/chrome/browser/ui/icons:infobar_icons",
     "//ios/chrome/browser/ui/icons:symbols",
     "//ios/chrome/browser/ui/infobars/banners/test",
diff --git a/ios/chrome/browser/ui/overlays/infobar_banner/passwords/save_password_infobar_banner_overlay_mediator_unittest.mm b/ios/chrome/browser/ui/overlays/infobar_banner/passwords/save_password_infobar_banner_overlay_mediator_unittest.mm
index 9993ff5b..7c65219 100644
--- a/ios/chrome/browser/ui/overlays/infobar_banner/passwords/save_password_infobar_banner_overlay_mediator_unittest.mm
+++ b/ios/chrome/browser/ui/overlays/infobar_banner/passwords/save_password_infobar_banner_overlay_mediator_unittest.mm
@@ -9,6 +9,7 @@
 #import "base/feature_list.h"
 #import "base/strings/sys_string_conversions.h"
 #import "base/strings/utf_string_conversions.h"
+#import "base/test/scoped_feature_list.h"
 #import "components/infobars/core/infobar.h"
 #import "components/password_manager/core/common/password_manager_features.h"
 #import "ios/chrome/browser/infobars/infobar_ios.h"
@@ -20,6 +21,7 @@
 #import "ios/chrome/browser/ui/icons/chrome_symbol.h"
 #import "ios/chrome/browser/ui/icons/infobar_icon.h"
 #import "ios/chrome/browser/ui/infobars/banners/test/fake_infobar_banner_consumer.h"
+#import "ios/chrome/browser/ui/ui_feature_flags.h"
 #import "ios/chrome/grit/ios_strings.h"
 #import "testing/gtest_mac.h"
 #import "testing/platform_test.h"
@@ -57,6 +59,7 @@
   FakeInfobarBannerConsumer* consumer =
       [[FakeInfobarBannerConsumer alloc] init];
   mediator.consumer = consumer;
+
   // Verify that the infobar was set up properly.
   NSString* title = base::SysUTF16ToNSString(delegate->GetMessageText());
   NSString* password = [@"" stringByPaddingToLength:kPassword.length
@@ -74,17 +77,65 @@
               consumer.buttonText);
   EXPECT_NSEQ(title, consumer.titleText);
   EXPECT_NSEQ(subtitle, consumer.subtitleText);
-  if (UseSymbols()) {
-    EXPECT_NSEQ(
-        CustomSymbolWithPointSize(kPasswordSymbol, kSymbolImagePointSize),
-        consumer.iconImage);
-  } else if (base::FeatureList::IsEnabled(
-                 password_manager::features::
-                     kIOSEnablePasswordManagerBrandingUpdate)) {
+
+  EXPECT_TRUE(consumer.presentsModal);
+}
+
+// Tests that a SavePasswordInfobarBannerOverlayMediator correctly sets up its
+// consumer's icon with legacy assets.
+TEST_F(SavePasswordInfobarBannerOverlayMediatorTest,
+       SetUpConsumerIconNotUseSymbols) {
+  // Create an InfoBarIOS with a IOSChromeSavePasswordInfoBarDelegate.
+  std::unique_ptr<IOSChromeSavePasswordInfoBarDelegate> passed_delegate =
+      MockIOSChromeSavePasswordInfoBarDelegate::Create(kUsername, kPassword);
+  InfoBarIOS infobar(InfobarType::kInfobarTypePasswordSave,
+                     std::move(passed_delegate));
+  // Package the infobar into an OverlayRequest, then create a mediator that
+  // uses this request in order to set up a fake consumer.
+  std::unique_ptr<OverlayRequest> request = OverlayRequest::CreateWithConfig<
+      SavePasswordInfobarBannerOverlayRequestConfig>(&infobar);
+  SavePasswordInfobarBannerOverlayMediator* mediator =
+      [[SavePasswordInfobarBannerOverlayMediator alloc]
+          initWithRequest:request.get()];
+  FakeInfobarBannerConsumer* consumer =
+      [[FakeInfobarBannerConsumer alloc] init];
+  mediator.consumer = consumer;
+
+  // Verify that the infobar icon was set up properly.
+  if (base::FeatureList::IsEnabled(
+          password_manager::features::
+              kIOSEnablePasswordManagerBrandingUpdate)) {
     EXPECT_NSEQ([UIImage imageNamed:@"password_key"], consumer.iconImage);
   } else {
     EXPECT_NSEQ([UIImage imageNamed:@"legacy_password_key"],
                 consumer.iconImage);
   }
-  EXPECT_TRUE(consumer.presentsModal);
+}
+
+// Tests that a SavePasswordInfobarBannerOverlayMediator correctly sets up its
+// consumer's icon with SF symbol.
+TEST_F(SavePasswordInfobarBannerOverlayMediatorTest,
+       SetUpConsumerIconUseSymbols) {
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndEnableFeature(kUseSFSymbols);
+
+  // Create an InfoBarIOS with a IOSChromeSavePasswordInfoBarDelegate.
+  std::unique_ptr<IOSChromeSavePasswordInfoBarDelegate> passed_delegate =
+      MockIOSChromeSavePasswordInfoBarDelegate::Create(kUsername, kPassword);
+  InfoBarIOS infobar(InfobarType::kInfobarTypePasswordSave,
+                     std::move(passed_delegate));
+  // Package the infobar into an OverlayRequest, then create a mediator that
+  // uses this request in order to set up a fake consumer.
+  std::unique_ptr<OverlayRequest> request = OverlayRequest::CreateWithConfig<
+      SavePasswordInfobarBannerOverlayRequestConfig>(&infobar);
+  SavePasswordInfobarBannerOverlayMediator* mediator =
+      [[SavePasswordInfobarBannerOverlayMediator alloc]
+          initWithRequest:request.get()];
+  FakeInfobarBannerConsumer* consumer =
+      [[FakeInfobarBannerConsumer alloc] init];
+  mediator.consumer = consumer;
+
+  // Verify that the infobar icon was set up properly.
+  EXPECT_NSEQ(CustomSymbolWithPointSize(kPasswordSymbol, kSymbolImagePointSize),
+              consumer.iconImage);
 }
diff --git a/ios/chrome/browser/ui/overlays/infobar_banner/passwords/update_password_infobar_banner_overlay_mediator_unittest.mm b/ios/chrome/browser/ui/overlays/infobar_banner/passwords/update_password_infobar_banner_overlay_mediator_unittest.mm
index 4ea0cffe..a87e9e0 100644
--- a/ios/chrome/browser/ui/overlays/infobar_banner/passwords/update_password_infobar_banner_overlay_mediator_unittest.mm
+++ b/ios/chrome/browser/ui/overlays/infobar_banner/passwords/update_password_infobar_banner_overlay_mediator_unittest.mm
@@ -9,6 +9,7 @@
 #import "base/feature_list.h"
 #import "base/strings/sys_string_conversions.h"
 #import "base/strings/utf_string_conversions.h"
+#import "base/test/scoped_feature_list.h"
 #import "components/infobars/core/infobar.h"
 #import "components/password_manager/core/common/password_manager_features.h"
 #import "ios/chrome/browser/infobars/infobar_ios.h"
@@ -20,6 +21,7 @@
 #import "ios/chrome/browser/ui/icons/chrome_symbol.h"
 #import "ios/chrome/browser/ui/icons/infobar_icon.h"
 #import "ios/chrome/browser/ui/infobars/banners/test/fake_infobar_banner_consumer.h"
+#import "ios/chrome/browser/ui/ui_feature_flags.h"
 #import "ios/chrome/grit/ios_strings.h"
 #import "testing/gtest_mac.h"
 #import "testing/platform_test.h"
@@ -75,18 +77,62 @@
   EXPECT_NSEQ(title, consumer.titleText);
   EXPECT_NSEQ(subtitle, consumer.subtitleText);
 
-  if (UseSymbols()) {
-    EXPECT_NSEQ(
-        CustomSymbolWithPointSize(kPasswordSymbol, kSymbolImagePointSize),
-        consumer.iconImage);
-  } else if (base::FeatureList::IsEnabled(
-                 password_manager::features::
-                     kIOSEnablePasswordManagerBrandingUpdate)) {
+  EXPECT_TRUE(consumer.presentsModal);
+}
+
+// Tests that a UpdatePasswordInfobarBannerOverlayMediator correctly sets up its
+// consumer's icon with legacy assets.
+TEST_F(UpdatePasswordInfobarBannerOverlayMediatorTest,
+       SetUpConsumerIconsNotUseSymbols) {
+  // Create an InfoBarIOS with a IOSChromeSavePasswordInfoBarDelegate.
+  std::unique_ptr<IOSChromeSavePasswordInfoBarDelegate> passed_delegate =
+      MockIOSChromeSavePasswordInfoBarDelegate::Create(kUsername, kPassword);
+  InfoBarIOS infobar(InfobarType::kInfobarTypePasswordUpdate,
+                     std::move(passed_delegate));
+  // Package the infobar into an OverlayRequest, then create a mediator that
+  // uses this request in order to set up a fake consumer.
+  std::unique_ptr<OverlayRequest> request = OverlayRequest::CreateWithConfig<
+      UpdatePasswordInfobarBannerOverlayRequestConfig>(&infobar);
+  UpdatePasswordInfobarBannerOverlayMediator* mediator =
+      [[UpdatePasswordInfobarBannerOverlayMediator alloc]
+          initWithRequest:request.get()];
+  FakeInfobarBannerConsumer* consumer =
+      [[FakeInfobarBannerConsumer alloc] init];
+  mediator.consumer = consumer;
+
+  if (base::FeatureList::IsEnabled(
+          password_manager::features::
+              kIOSEnablePasswordManagerBrandingUpdate)) {
     EXPECT_NSEQ([UIImage imageNamed:@"password_key"], consumer.iconImage);
   } else {
     EXPECT_NSEQ([UIImage imageNamed:@"legacy_password_key"],
                 consumer.iconImage);
   }
+}
 
-  EXPECT_TRUE(consumer.presentsModal);
+// Tests that a UpdatePasswordInfobarBannerOverlayMediator correctly sets up its
+// consumer's icon with SF symbol.
+TEST_F(UpdatePasswordInfobarBannerOverlayMediatorTest,
+       SetUpConsumerIconsUseSymbols) {
+  base::test::ScopedFeatureList feature_list;
+  feature_list.InitAndEnableFeature(kUseSFSymbols);
+
+  // Create an InfoBarIOS with a IOSChromeSavePasswordInfoBarDelegate.
+  std::unique_ptr<IOSChromeSavePasswordInfoBarDelegate> passed_delegate =
+      MockIOSChromeSavePasswordInfoBarDelegate::Create(kUsername, kPassword);
+  InfoBarIOS infobar(InfobarType::kInfobarTypePasswordUpdate,
+                     std::move(passed_delegate));
+  // Package the infobar into an OverlayRequest, then create a mediator that
+  // uses this request in order to set up a fake consumer.
+  std::unique_ptr<OverlayRequest> request = OverlayRequest::CreateWithConfig<
+      UpdatePasswordInfobarBannerOverlayRequestConfig>(&infobar);
+  UpdatePasswordInfobarBannerOverlayMediator* mediator =
+      [[UpdatePasswordInfobarBannerOverlayMediator alloc]
+          initWithRequest:request.get()];
+  FakeInfobarBannerConsumer* consumer =
+      [[FakeInfobarBannerConsumer alloc] init];
+  mediator.consumer = consumer;
+
+  EXPECT_NSEQ(CustomSymbolWithPointSize(kPasswordSymbol, kSymbolImagePointSize),
+              consumer.iconImage);
 }