Commit 4d486861 authored by Nazerke's avatar Nazerke Committed by Commit Bot

[iOS][coordinator] Modernize Chrome Activity Overlay Coordinator.

This CL modernizes the ChromeActivityOverlayCoordinator to use |browser|
in the initializer. This includes updates in corresponding table view
controllers and unittests.

Bug: 1029346, 1048395
Change-Id: I8f1a642d1c9d4c1daf67c2fedf554fdde969e0d0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2089830
Commit-Queue: Nazerke Kalidolda <nazerke@google.com>
Reviewed-by: default avatarMark Cogan <marq@chromium.org>
Cr-Commit-Position: refs/heads/master@{#748680}
parent 37f074ba
......@@ -11,6 +11,15 @@
// context.
@interface ChromeActivityOverlayCoordinator : ChromeCoordinator
// Use -initWithBaseViewController:browser:
- (instancetype)initWithBaseViewController:(UIViewController*)viewController
NS_UNAVAILABLE;
// Use -initWithBaseViewController:browser:
- (instancetype)initWithBaseViewController:(UIViewController*)viewController
browserState:(ChromeBrowserState*)browserState
NS_UNAVAILABLE;
// Text that will be shown above the UIActivityIndicatorView.
@property(nonatomic, copy) NSString* messageText;
......
......@@ -4,6 +4,8 @@
#import "ios/chrome/browser/ui/elements/chrome_activity_overlay_coordinator.h"
#import "base/test/task_environment.h"
#import "ios/chrome/browser/main/test_browser.h"
#include "testing/gtest/include/gtest/gtest.h"
#import "testing/gtest_mac.h"
#include "testing/platform_test.h"
......@@ -19,10 +21,13 @@ using ChromeActivityOverlayCoordinatorTest = PlatformTest;
TEST_F(ChromeActivityOverlayCoordinatorTest, StartAndStop) {
__weak UIView* overlay_view;
@autoreleasepool {
base::test::TaskEnvironment task_environment_;
UIViewController* base_view_controller = [[UIViewController alloc] init];
std::unique_ptr<Browser> browser_ = std::make_unique<TestBrowser>();
ChromeActivityOverlayCoordinator* coordinator =
[[ChromeActivityOverlayCoordinator alloc]
initWithBaseViewController:base_view_controller];
initWithBaseViewController:base_view_controller
browser:browser_.get()];
EXPECT_EQ(0u, [base_view_controller.childViewControllers count]);
......
......@@ -48,7 +48,7 @@
- (void)start {
self.clearBrowsingDataTableViewController =
[[ClearBrowsingDataTableViewController alloc]
initWithBrowserState:self.browser->GetBrowserState()];
initWithBrowser:self.browser];
self.clearBrowsingDataTableViewController.extendedLayoutIncludesOpaqueBars =
YES;
self.clearBrowsingDataTableViewController.delegate = self;
......
......@@ -37,6 +37,7 @@ source_set("clear_browsing_data") {
"//ios/chrome/browser/browsing_data:feature_flags",
"//ios/chrome/browser/feature_engagement",
"//ios/chrome/browser/history",
"//ios/chrome/browser/main:public",
"//ios/chrome/browser/signin",
"//ios/chrome/browser/sync",
"//ios/chrome/browser/ui:feature_flags",
......
......@@ -9,7 +9,7 @@
@protocol ApplicationCommands;
@protocol BrowsingDataCommands;
class ChromeBrowserState;
class Browser;
@protocol ClearBrowsingDataUIDelegate;
// TableView for clearing browsing data (including history,
......@@ -17,9 +17,8 @@ class ChromeBrowserState;
@interface ClearBrowsingDataTableViewController
: SettingsRootTableViewController <UIAdaptivePresentationControllerDelegate>
// Initializers. |browserState| can't be nil.
- (instancetype)initWithBrowserState:(ChromeBrowserState*)browserState
NS_DESIGNATED_INITIALIZER;
// Initializers. |browser| can't be nil.
- (instancetype)initWithBrowser:(Browser*)browser NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithStyle:(UITableViewStyle)style NS_UNAVAILABLE;
// Prepares view controller so that -dismissViewControllerAnimated dismisses it.
......
......@@ -12,6 +12,7 @@
#include "ios/chrome/browser/browsing_data/browsing_data_features.h"
#include "ios/chrome/browser/browsing_data/browsing_data_remove_mask.h"
#include "ios/chrome/browser/chrome_url_constants.h"
#import "ios/chrome/browser/main/browser.h"
#import "ios/chrome/browser/ui/alert_coordinator/action_sheet_coordinator.h"
#import "ios/chrome/browser/ui/alert_coordinator/alert_coordinator.h"
#import "ios/chrome/browser/ui/commands/application_commands.h"
......@@ -48,7 +49,10 @@
@property(nonatomic, readonly, strong) ClearBrowsingDataManager* dataManager;
// Browser state.
@property(nonatomic, assign) ChromeBrowserState* browserState;
@property(nonatomic, readonly) ChromeBrowserState* browserState;
// Browser.
@property(nonatomic, readonly) Browser* browser;
// Coordinator that managers a UIAlertController to clear browsing data.
@property(nonatomic, strong) ActionSheetCoordinator* actionSheetCoordinator;
......@@ -75,6 +79,7 @@
@synthesize actionSheetCoordinator = _actionSheetCoordinator;
@synthesize alertCoordinator = _alertCoordinator;
@synthesize browserState = _browserState;
@synthesize browser = _browser;
@synthesize clearBrowsingDataBarButton = _clearBrowsingDataBarButton;
@synthesize dataManager = _dataManager;
@synthesize dispatcher = _dispatcher;
......@@ -83,12 +88,13 @@
#pragma mark - ViewController Lifecycle.
- (instancetype)initWithBrowserState:(ChromeBrowserState*)browserState {
- (instancetype)initWithBrowser:(Browser*)browser {
self = [super initWithStyle:UITableViewStylePlain];
if (self) {
_browserState = browserState;
_dataManager =
[[ClearBrowsingDataManager alloc] initWithBrowserState:browserState];
_browser = browser;
_browserState = browser->GetBrowserState();
_dataManager = [[ClearBrowsingDataManager alloc]
initWithBrowserState:browser->GetBrowserState()];
_dataManager.consumer = self;
}
return self;
......@@ -312,7 +318,8 @@
// Show activity indicator modal while removal is happening.
self.chromeActivityOverlayCoordinator =
[[ChromeActivityOverlayCoordinator alloc]
initWithBaseViewController:self.navigationController];
initWithBaseViewController:self.navigationController
browser:_browser];
self.chromeActivityOverlayCoordinator.messageText =
l10n_util::GetNSStringWithFixup(
IDS_IOS_CLEAR_BROWSING_DATA_ACTIVITY_MODAL);
......
......@@ -7,7 +7,7 @@
#import "ios/chrome/browser/ui/settings/settings_root_table_view_controller.h"
class ChromeBrowserState;
class Browser;
// The accessibility identifier of the privacy settings collection view.
extern NSString* const kPrivacyTableViewId;
......@@ -15,8 +15,7 @@ extern NSString* const kPrivacyTableViewId;
@interface PrivacyTableViewController : SettingsRootTableViewController
// |browserState| cannot be nil
- (instancetype)initWithBrowserState:(ChromeBrowserState*)browserState
NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithBrowser:(Browser*)browser NS_DESIGNATED_INITIALIZER;
- (instancetype)initWithStyle:(UITableViewStyle)style NS_UNAVAILABLE;
......
......@@ -14,6 +14,7 @@
#include "ios/chrome/browser/application_context.h"
#include "ios/chrome/browser/browser_state/chrome_browser_state.h"
#include "ios/chrome/browser/browsing_data/browsing_data_features.h"
#import "ios/chrome/browser/main/browser.h"
#import "ios/chrome/browser/ui/commands/open_new_tab_command.h"
#import "ios/chrome/browser/ui/settings/cells/settings_switch_cell.h"
#import "ios/chrome/browser/ui/settings/cells/settings_switch_item.h"
......@@ -70,20 +71,24 @@ const char kGoogleServicesSettingsURL[] = "settings://open_google_services";
TableViewDetailIconItem* _handoffDetailItem;
}
// Browser.
@property(nonatomic, readonly) Browser* browser;
@end
@implementation PrivacyTableViewController
#pragma mark - Initialization
- (instancetype)initWithBrowserState:(ChromeBrowserState*)browserState {
DCHECK(browserState);
- (instancetype)initWithBrowser:(Browser*)browser {
DCHECK(browser);
UITableViewStyle style = base::FeatureList::IsEnabled(kSettingsRefresh)
? UITableViewStylePlain
: UITableViewStyleGrouped;
self = [super initWithStyle:style];
if (self) {
_browserState = browserState;
_browser = browser;
_browserState = browser->GetBrowserState();
self.title =
l10n_util::GetNSString(IDS_OPTIONS_ADVANCED_SECTION_TITLE_PRIVACY);
......@@ -210,7 +215,7 @@ const char kGoogleServicesSettingsURL[] = "settings://open_google_services";
case ItemTypeClearBrowsingDataClear: {
ClearBrowsingDataTableViewController* clearBrowsingDataViewController =
[[ClearBrowsingDataTableViewController alloc]
initWithBrowserState:_browserState];
initWithBrowser:_browser];
clearBrowsingDataViewController.delegate = self;
controller = clearBrowsingDataViewController;
break;
......
......@@ -15,6 +15,7 @@
#include "components/sync_preferences/pref_service_syncable.h"
#include "ios/chrome/browser/application_context.h"
#include "ios/chrome/browser/browser_state/test_chrome_browser_state.h"
#import "ios/chrome/browser/main/test_browser.h"
#include "ios/chrome/browser/pref_names.h"
#include "ios/chrome/browser/prefs/browser_prefs.h"
#include "ios/chrome/browser/system_flags.h"
......@@ -42,6 +43,8 @@ class PrivacyTableViewControllerTest : public ChromeTableViewControllerTest {
test_cbs_builder.SetPrefService(CreatePrefService());
chrome_browser_state_ = test_cbs_builder.Build();
browser_ = std::make_unique<TestBrowser>(chrome_browser_state_.get());
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
initialValueForSpdyProxyEnabled_ =
[[defaults valueForKey:kSpdyProxyEnabled] copy];
......@@ -71,13 +74,13 @@ class PrivacyTableViewControllerTest : public ChromeTableViewControllerTest {
}
ChromeTableViewController* InstantiateController() override {
return [[PrivacyTableViewController alloc]
initWithBrowserState:chrome_browser_state_.get()];
return [[PrivacyTableViewController alloc] initWithBrowser:browser_.get()];
}
web::WebTaskEnvironment task_environment_;
IOSChromeScopedTestingLocalState local_state_;
std::unique_ptr<TestChromeBrowserState> chrome_browser_state_;
std::unique_ptr<Browser> browser_;
NSString* initialValueForSpdyProxyEnabled_;
};
......
......@@ -825,8 +825,8 @@ NSString* kDevViewSourceKey = @"DevViewSource";
initWithPrefs:_browserState->GetPrefs()];
break;
case ItemTypePrivacy:
controller = [[PrivacyTableViewController alloc]
initWithBrowserState:_browserState];
controller =
[[PrivacyTableViewController alloc] initWithBrowser:_browser];
break;
case ItemTypeLanguageSettings: {
LanguageSettingsMediator* mediator =
......
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