Index: ios/chrome/browser/ui/settings/settings_navigation_controller.mm |
diff --git a/ios/chrome/browser/ui/settings/settings_navigation_controller.mm b/ios/chrome/browser/ui/settings/settings_navigation_controller.mm |
index 9f7b5db3e61bb1f8d78401b73f278358bada50b5..894f8c303cc9623e89185911f69603858c865a8e 100644 |
--- a/ios/chrome/browser/ui/settings/settings_navigation_controller.mm |
+++ b/ios/chrome/browser/ui/settings/settings_navigation_controller.mm |
@@ -5,9 +5,7 @@ |
#import "ios/chrome/browser/ui/settings/settings_navigation_controller.h" |
#include "base/ios/ios_util.h" |
-#import "base/ios/weak_nsobject.h" |
#include "base/mac/foundation_util.h" |
-#import "base/mac/scoped_nsobject.h" |
#include "components/strings/grit/components_strings.h" |
#include "ios/chrome/browser/browser_state/chrome_browser_state.h" |
#include "ios/chrome/browser/sync/sync_setup_service.h" |
@@ -40,6 +38,10 @@ |
#include "ui/base/l10n/l10n_util.h" |
#include "ui/base/l10n/l10n_util_mac.h" |
+#if !defined(__has_feature) || !__has_feature(objc_arc) |
+#error "This file requires ARC support." |
+#endif |
+ |
// TODO(crbug.com/620361): Remove the entire class when iOS 9 is dropped. |
@interface SettingsAppBarContainerViewController |
: MDCAppBarContainerViewController |
@@ -100,10 +102,10 @@ |
@implementation SettingsNavigationController { |
ios::ChromeBrowserState* mainBrowserState_; // weak |
- base::WeakNSProtocol<id<SettingsNavigationControllerDelegate>> delegate_; |
+ __weak id<SettingsNavigationControllerDelegate> delegate_; |
// Keeps a mapping between the view controllers that are wrapped to display an |
// app bar and the containers that wrap them. |
- base::scoped_nsobject<NSMutableDictionary> appBarContainedViewControllers_; |
+ NSMutableDictionary* appBarContainedViewControllers_; |
} |
@synthesize shouldCommitSyncChangesOnDismissal = |
@@ -119,10 +121,9 @@ |
delegate: |
(id<SettingsNavigationControllerDelegate>)delegate { |
// clang-format on |
- base::scoped_nsobject<UIViewController> controller( |
- [[SettingsCollectionViewController alloc] |
- initWithBrowserState:browserState |
- currentBrowserState:currentBrowserState]); |
+ UIViewController* controller = [[SettingsCollectionViewController alloc] |
+ initWithBrowserState:browserState |
+ currentBrowserState:currentBrowserState]; |
SettingsNavigationController* nc = [[SettingsNavigationController alloc] |
initWithRootViewController:controller |
browserState:browserState |
@@ -134,9 +135,9 @@ |
+ (SettingsNavigationController*) |
newAccountsController:(ios::ChromeBrowserState*)browserState |
delegate:(id<SettingsNavigationControllerDelegate>)delegate { |
- base::scoped_nsobject<UIViewController> controller([ |
- [AccountsCollectionViewController alloc] initWithBrowserState:browserState |
- closeSettingsOnAddAccount:YES]); |
+ UIViewController* controller = [[AccountsCollectionViewController alloc] |
+ initWithBrowserState:browserState |
+ closeSettingsOnAddAccount:YES]; |
SettingsNavigationController* nc = [[SettingsNavigationController alloc] |
initWithRootViewController:controller |
browserState:browserState |
@@ -149,10 +150,9 @@ newAccountsController:(ios::ChromeBrowserState*)browserState |
newSyncController:(ios::ChromeBrowserState*)browserState |
allowSwitchSyncAccount:(BOOL)allowSwitchSyncAccount |
delegate:(id<SettingsNavigationControllerDelegate>)delegate { |
- base::scoped_nsobject<UIViewController> controller( |
- [[SyncSettingsCollectionViewController alloc] |
- initWithBrowserState:browserState |
- allowSwitchSyncAccount:allowSwitchSyncAccount]); |
+ UIViewController* controller = [[SyncSettingsCollectionViewController alloc] |
+ initWithBrowserState:browserState |
+ allowSwitchSyncAccount:allowSwitchSyncAccount]; |
SettingsNavigationController* nc = [[SettingsNavigationController alloc] |
initWithRootViewController:controller |
browserState:browserState |
@@ -168,10 +168,9 @@ newUserFeedbackController:(ios::ChromeBrowserState*)browserState |
DCHECK(ios::GetChromeBrowserProvider() |
->GetUserFeedbackProvider() |
->IsUserFeedbackEnabled()); |
- base::scoped_nsobject<UIViewController> controller( |
- ios::GetChromeBrowserProvider() |
- ->GetUserFeedbackProvider() |
- ->CreateViewController(dataSource)); |
+ UIViewController* controller = ios::GetChromeBrowserProvider() |
+ ->GetUserFeedbackProvider() |
+ ->CreateViewController(dataSource); |
DCHECK(controller); |
SettingsNavigationController* nc = [[SettingsNavigationController alloc] |
initWithRootViewController:controller |
@@ -185,9 +184,9 @@ newUserFeedbackController:(ios::ChromeBrowserState*)browserState |
newClearBrowsingDataController:(ios::ChromeBrowserState*)browserState |
delegate: |
(id<SettingsNavigationControllerDelegate>)delegate { |
- base::scoped_nsobject<UIViewController> controller( |
+ UIViewController* controller = |
[[ClearBrowsingDataCollectionViewController alloc] |
- initWithBrowserState:browserState]); |
+ initWithBrowserState:browserState]; |
SettingsNavigationController* nc = [[SettingsNavigationController alloc] |
initWithRootViewController:controller |
browserState:browserState |
@@ -200,9 +199,9 @@ newClearBrowsingDataController:(ios::ChromeBrowserState*)browserState |
newContextualSearchController:(ios::ChromeBrowserState*)browserState |
delegate: |
(id<SettingsNavigationControllerDelegate>)delegate { |
- base::scoped_nsobject<UIViewController> controller( |
+ UIViewController* controller = |
[[ContextualSearchCollectionViewController alloc] |
- initWithBrowserState:browserState]); |
+ initWithBrowserState:browserState]; |
SettingsNavigationController* nc = [[SettingsNavigationController alloc] |
initWithRootViewController:controller |
browserState:browserState |
@@ -215,9 +214,9 @@ newContextualSearchController:(ios::ChromeBrowserState*)browserState |
newSyncEncryptionPassphraseController:(ios::ChromeBrowserState*)browserState |
delegate:(id<SettingsNavigationControllerDelegate>) |
delegate { |
- base::scoped_nsobject<UIViewController> controller( |
+ UIViewController* controller = |
[[SyncEncryptionPassphraseCollectionViewController alloc] |
- initWithBrowserState:browserState]); |
+ initWithBrowserState:browserState]; |
SettingsNavigationController* nc = [[SettingsNavigationController alloc] |
initWithRootViewController:controller |
browserState:browserState |
@@ -229,9 +228,8 @@ newSyncEncryptionPassphraseController:(ios::ChromeBrowserState*)browserState |
+ (SettingsNavigationController*) |
newNativeAppsController:(ios::ChromeBrowserState*)browserState |
delegate:(id<SettingsNavigationControllerDelegate>)delegate { |
- base::scoped_nsobject<UIViewController> controller( |
- [[NativeAppsCollectionViewController alloc] |
- initWithURLRequestContextGetter:browserState->GetRequestContext()]); |
+ UIViewController* controller = [[NativeAppsCollectionViewController alloc] |
+ initWithURLRequestContextGetter:browserState->GetRequestContext()]; |
SettingsNavigationController* nc = [[SettingsNavigationController alloc] |
initWithRootViewController:controller |
browserState:browserState |
@@ -242,9 +240,8 @@ newNativeAppsController:(ios::ChromeBrowserState*)browserState |
+ (SettingsNavigationController*) |
newSavePasswordsController:(ios::ChromeBrowserState*)browserState |
delegate:(id<SettingsNavigationControllerDelegate>)delegate { |
- base::scoped_nsobject<UIViewController> controller( |
- [[SavePasswordsCollectionViewController alloc] |
- initWithBrowserState:browserState]); |
+ UIViewController* controller = [[SavePasswordsCollectionViewController alloc] |
+ initWithBrowserState:browserState]; |
SettingsNavigationController* nc = [[SettingsNavigationController alloc] |
initWithRootViewController:controller |
@@ -265,12 +262,11 @@ newImportDataController:(ios::ChromeBrowserState*)browserState |
fromEmail:(NSString*)fromEmail |
toEmail:(NSString*)toEmail |
isSignedIn:(BOOL)isSignedIn { |
- base::scoped_nsobject<UIViewController> controller( |
- [[ImportDataCollectionViewController alloc] |
- initWithDelegate:importDataDelegate |
- fromEmail:fromEmail |
- toEmail:toEmail |
- isSignedIn:isSignedIn]); |
+ UIViewController* controller = [[ImportDataCollectionViewController alloc] |
+ initWithDelegate:importDataDelegate |
+ fromEmail:fromEmail |
+ toEmail:toEmail |
+ isSignedIn:isSignedIn]; |
SettingsNavigationController* nc = [[SettingsNavigationController alloc] |
initWithRootViewController:controller |
@@ -286,9 +282,8 @@ newImportDataController:(ios::ChromeBrowserState*)browserState |
+ (SettingsNavigationController*) |
newAutofillController:(ios::ChromeBrowserState*)browserState |
delegate:(id<SettingsNavigationControllerDelegate>)delegate { |
- base::scoped_nsobject<UIViewController> controller( |
- [[AutofillCollectionViewController alloc] |
- initWithBrowserState:browserState]); |
+ UIViewController* controller = [[AutofillCollectionViewController alloc] |
+ initWithBrowserState:browserState]; |
SettingsNavigationController* nc = [[SettingsNavigationController alloc] |
initWithRootViewController:controller |
@@ -313,7 +308,7 @@ initWithRootViewController:(UIViewController*)rootViewController |
self = [super initWithRootViewController:rootViewController]; |
if (self) { |
mainBrowserState_ = browserState; |
- delegate_.reset(delegate); |
+ delegate_ = delegate; |
shouldCommitSyncChangesOnDismissal_ = YES; |
[self configureUI]; |
} |
@@ -337,7 +332,7 @@ initWithRootViewController:(UIViewController*)rootViewController |
// Reset the delegate to prevent any queued transitions from attempting to |
// close the settings. |
- delegate_.reset(); |
+ delegate_ = nil; |
} |
- (void)closeSettings { |
@@ -375,7 +370,7 @@ initWithRootViewController:(UIViewController*)rootViewController |
self.topViewController.navigationItem.rightBarButtonItem; |
if (!rightButton) |
return NO; |
- base::scoped_nsobject<UIBarButtonItem> doneButton([self doneButton]); |
+ UIBarButtonItem* doneButton = [self doneButton]; |
return [rightButton style] == [doneButton style] && |
[[rightButton title] compare:[doneButton title]] == NSOrderedSame; |
} |
@@ -391,11 +386,11 @@ initWithRootViewController:(UIViewController*)rootViewController |
- (UIBarButtonItem*)doneButton { |
// Create a custom Done bar button item, as Material Navigation Bar does not |
// handle a system UIBarButtonSystemItemDone item. |
- return [[[UIBarButtonItem alloc] |
+ return [[UIBarButtonItem alloc] |
initWithTitle:l10n_util::GetNSString(IDS_IOS_NAVIGATION_BAR_DONE_BUTTON) |
style:UIBarButtonItemStyleDone |
target:self |
- action:@selector(closeSettings)] autorelease]; |
+ action:@selector(closeSettings)]; |
} |
- (UIBarButtonItem*)closeButton { |
@@ -410,11 +405,11 @@ initWithRootViewController:(UIViewController*)rootViewController |
- (UIBarButtonItem*)cancelButton { |
// Create a custom Cancel bar button item, as Material Navigation Bar does not |
// handle a system UIBarButtonSystemItemCancel item. |
- return [[[UIBarButtonItem alloc] |
+ return [[UIBarButtonItem alloc] |
initWithTitle:l10n_util::GetNSString(IDS_IOS_NAVIGATION_BAR_CANCEL_BUTTON) |
style:UIBarButtonItemStyleDone |
target:self |
- action:@selector(closeSettings)] autorelease]; |
+ action:@selector(closeSettings)]; |
} |
- (UIInterfaceOrientationMask)supportedInterfaceOrientations { |
@@ -529,25 +524,24 @@ initWithRootViewController:(UIViewController*)rootViewController |
// it can just be forwarded it up the responder chain. |
break; |
case IDC_SHOW_ACCOUNTS_SETTINGS: { |
- base::scoped_nsobject<UIViewController> controller( |
- [[AccountsCollectionViewController alloc] |
- initWithBrowserState:mainBrowserState_ |
- closeSettingsOnAddAccount:NO]); |
+ UIViewController* controller = [[AccountsCollectionViewController alloc] |
+ initWithBrowserState:mainBrowserState_ |
+ closeSettingsOnAddAccount:NO]; |
[self pushViewController:controller animated:YES]; |
return; |
} |
case IDC_SHOW_SYNC_SETTINGS: { |
- base::scoped_nsobject<UIViewController> controller( |
+ UIViewController* controller = |
[[SyncSettingsCollectionViewController alloc] |
initWithBrowserState:mainBrowserState_ |
- allowSwitchSyncAccount:YES]); |
+ allowSwitchSyncAccount:YES]; |
[self pushViewController:controller animated:YES]; |
return; |
} |
case IDC_SHOW_SYNC_PASSPHRASE_SETTINGS: { |
- base::scoped_nsobject<UIViewController> controller( |
+ UIViewController* controller = |
[[SyncEncryptionPassphraseCollectionViewController alloc] |
- initWithBrowserState:mainBrowserState_]); |
+ initWithBrowserState:mainBrowserState_]; |
[self pushViewController:controller animated:YES]; |
return; |
} |
@@ -565,7 +559,7 @@ initWithRootViewController:(UIViewController*)rootViewController |
if ([self presentedViewController]) { |
return nil; |
} |
- base::WeakNSObject<SettingsNavigationController> weakSelf(self); |
+ __weak SettingsNavigationController* weakSelf = self; |
return @[ |
[UIKeyCommand cr_keyCommandWithInput:UIKeyInputEscape |
modifierFlags:Cr_UIKeyModifierNone |
@@ -613,8 +607,8 @@ initWithRootViewController:(UIViewController*)rootViewController |
// wrapped in an MDCAppBarContainerViewController. |
if (![controller conformsToProtocol:@protocol(AppBarPresenting)]) { |
MDCAppBarContainerViewController* appBarContainer = |
- [[[SettingsAppBarContainerViewController alloc] |
- initWithContentViewController:controller] autorelease]; |
+ [[SettingsAppBarContainerViewController alloc] |
+ initWithContentViewController:controller]; |
// Configure the style. |
ConfigureAppBarWithCardStyle(appBarContainer.appBar); |
@@ -654,7 +648,7 @@ initWithRootViewController:(UIViewController*)rootViewController |
// controller's pointer to itself. |
- (void)registerAppBarContainer:(MDCAppBarContainerViewController*)container { |
if (!appBarContainedViewControllers_) { |
- appBarContainedViewControllers_.reset([[NSMutableDictionary alloc] init]); |
+ appBarContainedViewControllers_ = [[NSMutableDictionary alloc] init]; |
} |
NSValue* key = [self keyForController:[container contentViewController]]; |
[appBarContainedViewControllers_ setObject:container forKey:key]; |
@@ -676,7 +670,7 @@ initWithRootViewController:(UIViewController*)rootViewController |
// Returns the dictionary key to use when dealing with |controller|. |
- (NSValue*)keyForController:(UIViewController*)controller { |
- return [NSValue valueWithPointer:controller]; |
+ return [NSValue valueWithNonretainedObject:controller]; |
} |
#pragma mark - UIResponder |