Commit fcde3a30 authored by Kurt Horimoto's avatar Kurt Horimoto Committed by Commit Bot

[iOS] Remove UI dependencies from InfobarBadgeTabHelperTest.

The previous implementation of these tests relied on asynchronous view
controller presentation as well as implementation details of
InfobarCoordinator and InfobarContainerIOS.  This CL updates these
tests to instead directly call the public API of the tab helper.  It
also uses FakeInfobarIOS so that full InfobarCoordinator objects no
longer need to be constructed for the tests to operate.

Bug: none
Change-Id: I09bc28758761d2c2c5068300b965cf565557e39c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1974579
Commit-Queue: Kurt Horimoto <kkhorimoto@chromium.org>
Reviewed-by: default avatarSergio Collazos <sczs@chromium.org>
Cr-Commit-Position: refs/heads/master@{#727307}
parent f95eede2
...@@ -109,10 +109,9 @@ source_set("unit_tests") { ...@@ -109,10 +109,9 @@ source_set("unit_tests") {
"//ios/chrome/browser/overlays/public/common/infobars", "//ios/chrome/browser/overlays/public/common/infobars",
"//ios/chrome/browser/overlays/test", "//ios/chrome/browser/overlays/test",
"//ios/chrome/browser/ui/badges:public", "//ios/chrome/browser/ui/badges:public",
"//ios/chrome/browser/ui/badges:util",
"//ios/chrome/browser/ui/infobars:feature_flags", "//ios/chrome/browser/ui/infobars:feature_flags",
"//ios/chrome/browser/ui/infobars:infobars_ui",
"//ios/chrome/browser/ui/infobars:test_support", "//ios/chrome/browser/ui/infobars:test_support",
"//ios/chrome/browser/ui/infobars/coordinators",
"//ios/chrome/browser/ui/infobars/test", "//ios/chrome/browser/ui/infobars/test",
"//ios/chrome/browser/web_state_list", "//ios/chrome/browser/web_state_list",
"//ios/chrome/browser/web_state_list:test_support", "//ios/chrome/browser/web_state_list:test_support",
......
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "ios/chrome/browser/infobars/infobar_badge_tab_helper_delegate.h" #include "ios/chrome/browser/infobars/infobar_badge_tab_helper_delegate.h"
#include "ios/chrome/browser/infobars/infobar_manager_impl.h" #include "ios/chrome/browser/infobars/infobar_manager_impl.h"
#import "ios/chrome/browser/infobars/overlays/fake_infobar_overlay_request_factory.h" #import "ios/chrome/browser/infobars/overlays/fake_infobar_overlay_request_factory.h"
#import "ios/chrome/browser/infobars/test/fake_infobar_badge_tab_helper_delegate.h"
#import "ios/chrome/browser/infobars/test/fake_infobar_ios.h" #import "ios/chrome/browser/infobars/test/fake_infobar_ios.h"
#import "ios/chrome/browser/main/test_browser.h" #import "ios/chrome/browser/main/test_browser.h"
#include "ios/chrome/browser/overlays/public/overlay_callback_manager.h" #include "ios/chrome/browser/overlays/public/overlay_callback_manager.h"
...@@ -41,41 +42,10 @@ using infobars::InfoBar; ...@@ -41,41 +42,10 @@ using infobars::InfoBar;
namespace { namespace {
// The InfobarType to use for the test. // The InfobarType to use for the test.
const InfobarType kInfobarType = InfobarType::kInfobarTypePasswordSave; const InfobarType kInfobarType = InfobarType::kInfobarTypePasswordSave;
// The BadgeType used for the test. // The corresponding BadgeType for kInfobarType.
const BadgeType kBadgeType = BadgeType::kBadgeTypePasswordSave; const BadgeType kBadgeType = BadgeType::kBadgeTypePasswordSave;
} // namespace } // namespace
#pragma mark - FakeInfobarTabHelperDelegate
// Fake version of InfobarTabHelperDelegate to use in tests.
@interface FakeInfobarTabHelperDelegate
: NSObject <InfobarBadgeTabHelperDelegate> {
std::map<BadgeType, id<BadgeItem>> _badgeItems;
}
- (id<BadgeItem>)itemForBadgeType:(BadgeType)type;
@end
@implementation FakeInfobarTabHelperDelegate
- (void)addInfobarBadge:(id<BadgeItem>)badgeItem {
_badgeItems[badgeItem.badgeType] = badgeItem;
}
- (void)removeInfobarBadge:(id<BadgeItem>)badgeItem {
_badgeItems[badgeItem.badgeType] = nil;
}
- (void)updateInfobarBadge:(id<BadgeItem>)badgeItem {
}
- (id<BadgeItem>)itemForBadgeType:(BadgeType)type {
return _badgeItems[type];
}
@end
#pragma mark - InfobarBadgeBrowserAgentTest
// Test fixture for InfobarBadgeBrowserAgent. // Test fixture for InfobarBadgeBrowserAgent.
class InfobarBadgeBrowserAgentTest : public PlatformTest { class InfobarBadgeBrowserAgentTest : public PlatformTest {
public: public:
......
...@@ -5,6 +5,8 @@ ...@@ -5,6 +5,8 @@
source_set("test") { source_set("test") {
testonly = true testonly = true
sources = [ sources = [
"fake_infobar_badge_tab_helper_delegate.h",
"fake_infobar_badge_tab_helper_delegate.mm",
"fake_infobar_delegate.cc", "fake_infobar_delegate.cc",
"fake_infobar_delegate.h", "fake_infobar_delegate.h",
"fake_infobar_ios.h", "fake_infobar_ios.h",
...@@ -17,7 +19,9 @@ source_set("test") { ...@@ -17,7 +19,9 @@ source_set("test") {
"//base", "//base",
"//components/infobars/core", "//components/infobars/core",
"//ios/chrome/browser/infobars", "//ios/chrome/browser/infobars",
"//ios/chrome/browser/infobars:badge",
"//ios/chrome/browser/infobars:public", "//ios/chrome/browser/infobars:public",
"//ios/chrome/browser/ui/badges:public",
"//ios/chrome/browser/ui/infobars/test", "//ios/chrome/browser/ui/infobars/test",
] ]
} }
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef IOS_CHROME_BROWSER_INFOBARS_TEST_FAKE_INFOBAR_BADGE_TAB_HELPER_DELEGATE_H_
#define IOS_CHROME_BROWSER_INFOBARS_TEST_FAKE_INFOBAR_BADGE_TAB_HELPER_DELEGATE_H_
#import <Foundation/Foundation.h>
#include "ios/chrome/browser/infobars/infobar_badge_tab_helper_delegate.h"
#import "ios/chrome/browser/ui/badges/badge_type.h"
// Fake version of InfobarTabHelperDelegate to use in tests.
@interface FakeInfobarTabHelperDelegate
: NSObject <InfobarBadgeTabHelperDelegate>
// Returns the BadgeItem that was added to the tab helper for |type|, or nil if
// one does not exist.
- (id<BadgeItem>)itemForBadgeType:(BadgeType)type;
@end
#endif // IOS_CHROME_BROWSER_INFOBARS_TEST_FAKE_INFOBAR_BADGE_TAB_HELPER_DELEGATE_H_
// Copyright 2019 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "ios/chrome/browser/infobars/test/fake_infobar_badge_tab_helper_delegate.h"
#include <map>
#import "ios/chrome/browser/ui/badges/badge_item.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
@interface FakeInfobarTabHelperDelegate () {
std::map<BadgeType, id<BadgeItem>> _badgeItems;
}
@end
@implementation FakeInfobarTabHelperDelegate
#pragma mark - Public
- (id<BadgeItem>)itemForBadgeType:(BadgeType)type {
return _badgeItems[type];
}
#pragma mark - InfobarBadgeTabHelperDelegate
- (void)addInfobarBadge:(id<BadgeItem>)badgeItem {
_badgeItems[badgeItem.badgeType] = badgeItem;
}
- (void)removeInfobarBadge:(id<BadgeItem>)badgeItem {
_badgeItems[badgeItem.badgeType] = nil;
}
- (void)updateInfobarBadge:(id<BadgeItem>)badgeItem {
}
@end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment