Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(675)

Unified Diff: ios/chrome/browser/ui/tab_switcher/tab_switcher_model.mm

Issue 2810193002: [ObjC ARC] Converts ios/chrome/browser/ui/tab_switcher:tab_switcher to ARC. (Closed)
Patch Set: comment Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ios/chrome/browser/ui/tab_switcher/tab_switcher_model.mm
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_switcher_model.mm b/ios/chrome/browser/ui/tab_switcher/tab_switcher_model.mm
index 3024a2f47be5bccf8547f597ede9e5f1f102ad2c..3daeb7993caf8c04623f3ee1190f88473d900764 100644
--- a/ios/chrome/browser/ui/tab_switcher/tab_switcher_model.mm
+++ b/ios/chrome/browser/ui/tab_switcher/tab_switcher_model.mm
@@ -23,6 +23,10 @@
#import "ios/chrome/browser/ui/tab_switcher/tab_switcher_model_private.h"
#import "ios/chrome/browser/ui/tab_switcher/tab_switcher_panel_cell.h"
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
bool TabSwitcherSessionTypeIsLocalSession(TabSwitcherSessionType sessionType) {
return sessionType == TabSwitcherSessionType::OFF_THE_RECORD_SESSION ||
sessionType == TabSwitcherSessionType::REGULAR_SESSION;
@@ -54,10 +58,10 @@ void FillSetUsingSessions(synced_sessions::SyncedSessions const& sessions,
// The browser state.
ios::ChromeBrowserState* _browserState; // weak
// The tab models.
- TabModel* _mainTabModel; // weak
- TabModel* _otrTabModel; // weak
+ __weak TabModel* _mainTabModel;
+ __weak TabModel* _otrTabModel;
// The delegate for event callbacks.
- id<TabSwitcherModelDelegate> _delegate; // weak, owns us.
+ __weak id<TabSwitcherModelDelegate> _delegate;
// The synced sessions. Must never be null.
std::unique_ptr<synced_sessions::SyncedSessions> _syncedSessions;
// The synced sessions change observer.
@@ -67,7 +71,7 @@ void FillSetUsingSessions(synced_sessions::SyncedSessions const& sessions,
std::unique_ptr<TabModelSnapshot> _mainTabModelSnapshot;
std::unique_ptr<TabModelSnapshot> _otrTabModelSnapshot;
// The cache holding resized tabs snapshots.
- base::scoped_nsobject<TabSwitcherCache> _cache;
+ TabSwitcherCache* _cache;
}
// Returns the type of the local session corresponding to the given |tabModel|.
@@ -101,23 +105,36 @@ void FillSetUsingSessions(synced_sessions::SyncedSessions const& sessions,
_otrTabModelSnapshot.reset(new TabModelSnapshot(otrTabModel));
[_mainTabModel addObserver:self];
[_otrTabModel addObserver:self];
- _cache.reset([cache retain]);
+ _cache = cache;
}
return self;
}
- (void)setMainTabModel:(TabModel*)mainTabModel
otrTabModel:(TabModel*)otrTabModel {
- [self replaceOldTabModel:&_mainTabModel withTabModel:mainTabModel];
- [self replaceOldTabModel:&_otrTabModel withTabModel:otrTabModel];
+ [self replaceMainTabModelWithTabModel:mainTabModel];
+ [self replaceOTRTabModelWithTabModel:otrTabModel];
}
-- (void)replaceOldTabModel:(TabModel**)oldTabModel
- withTabModel:(TabModel*)newTabModel {
- if (*oldTabModel == newTabModel)
+- (void)replaceMainTabModelWithTabModel:(TabModel*)newTabModel {
+ if (_mainTabModel == newTabModel)
return;
- [*oldTabModel removeObserver:self];
- *oldTabModel = newTabModel;
+ [_mainTabModel removeObserver:self];
+ _mainTabModel = newTabModel;
+ [newTabModel addObserver:self];
+ // Calling |tabModelChanged:| may trigger an animated refresh of the
+ // Tab Switcher's collection view.
+ // Here in |replaceOldTabModel:withTabModel:| the animation is undesirable.
+ [UIView performWithoutAnimation:^{
+ [self tabModelChanged:newTabModel];
+ }];
+}
+
+- (void)replaceOTRTabModelWithTabModel:(TabModel*)newTabModel {
+ if (_otrTabModel == newTabModel)
+ return;
+ [_otrTabModel removeObserver:self];
+ _otrTabModel = newTabModel;
[newTabModel addObserver:self];
// Calling |tabModelChanged:| may trigger an animated refresh of the
// Tab Switcher's collection view.
@@ -130,7 +147,6 @@ void FillSetUsingSessions(synced_sessions::SyncedSessions const& sessions,
- (void)dealloc {
[_mainTabModel removeObserver:self];
[_otrTabModel removeObserver:self];
- [super dealloc];
}
- (NSInteger)sessionCount {

Powered by Google App Engine
This is Rietveld 408576698