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

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

Issue 2810193002: [ObjC ARC] Converts ios/chrome/browser/ui/tab_switcher:tab_switcher to ARC. (Closed)
Patch Set: cast 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_cache.mm
diff --git a/ios/chrome/browser/ui/tab_switcher/tab_switcher_cache.mm b/ios/chrome/browser/ui/tab_switcher/tab_switcher_cache.mm
index 49c28475e41870491f35c701cac4e01a0bac28d4..775e25ca9699eaf901e4f390760ac60158bcb11d 100644
--- a/ios/chrome/browser/ui/tab_switcher/tab_switcher_cache.mm
+++ b/ios/chrome/browser/ui/tab_switcher/tab_switcher_cache.mm
@@ -6,9 +6,7 @@
#include <unordered_map>
-#import "base/ios/weak_nsobject.h"
#include "base/logging.h"
-#include "base/mac/scoped_nsobject.h"
#include "base/strings/stringprintf.h"
#include "base/synchronization/lock.h"
#import "ios/chrome/browser/tabs/tab.h"
@@ -17,6 +15,10 @@
#include "ios/chrome/common/ios_app_bundle_id_prefix.h"
#include "ios/web/public/navigation_item.h"
+#if !defined(__has_feature) || !__has_feature(objc_arc)
+#error "This file requires ARC support."
+#endif
+
namespace {
// The maximum amount of pixels the cache should hold.
NSUInteger kCacheMaxPixelCount = 2048 * 1536 * 4;
@@ -34,11 +36,11 @@ const CGFloat kMaxFloatDelta = 0.01;
@end
@implementation TabSwitcherCache {
- base::scoped_nsobject<NSCache> _cache;
+ NSCache* _cache;
dispatch_queue_t _cacheQueue;
// The tab models.
- TabModel* _mainTabModel; // weak
- TabModel* _otrTabModel; // weak
+ __weak TabModel* _mainTabModel;
+ __weak TabModel* _otrTabModel;
// Lock protecting the pending requests map.
base::Lock _lock;
@@ -50,7 +52,7 @@ const CGFloat kMaxFloatDelta = 0.01;
- (instancetype)init {
self = [super init];
if (self) {
- _cache.reset([[NSCache alloc] init]);
+ _cache = [[NSCache alloc] init];
[_cache setTotalCostLimit:kCacheMaxPixelCount];
NSNotificationCenter* nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self
@@ -71,10 +73,8 @@ const CGFloat kMaxFloatDelta = 0.01;
[nc removeObserver:self
name:UIApplicationDidReceiveMemoryWarningNotification
object:nil];
- dispatch_release(_cacheQueue);
[_mainTabModel removeObserver:self];
[_otrTabModel removeObserver:self];
- [super dealloc];
}
- (PendingSnapshotRequest)requestSnapshotForTab:(Tab*)tab
@@ -231,28 +231,39 @@ const CGFloat kMaxFloatDelta = 0.01;
UIImage* resizedSnapshot =
ResizeImage(image, pixelSize, ProjectionMode::kAspectFillNoClipping, YES);
// Creates a new image with the correct |scale| attribute.
- return [[[UIImage alloc] initWithCGImage:resizedSnapshot.CGImage
- scale:screenScale
- orientation:UIImageOrientationUp] autorelease];
+ return [[UIImage alloc] initWithCGImage:resizedSnapshot.CGImage
+ scale:screenScale
+ orientation:UIImageOrientationUp];
}
- (void)lowMemoryWarningReceived {
[_cache removeAllObjects];
}
-- (void)setMainTabModel:(TabModel*)mainTabModel
- otrTabModel:(TabModel*)otrTabModel {
- if (mainTabModel != _mainTabModel)
- [self replaceOldTabModel:&_mainTabModel withTabModel:mainTabModel];
- if (otrTabModel != _otrTabModel)
- [self replaceOldTabModel:&_otrTabModel withTabModel:otrTabModel];
+- (void)setMainTabModel:(TabModel*)mainTabModel {
+ if (mainTabModel == _mainTabModel) {
+ return;
+ }
+
+ [_mainTabModel removeObserver:self];
+ _mainTabModel = mainTabModel;
+ [_mainTabModel addObserver:self];
}
-- (void)replaceOldTabModel:(TabModel**)oldTabModel
- withTabModel:(TabModel*)newTabModel {
- [*oldTabModel removeObserver:self];
- *oldTabModel = newTabModel;
- [newTabModel addObserver:self];
+- (void)setOTRTabModel:(TabModel*)otrTabModel {
+ if (_otrTabModel == otrTabModel) {
+ return;
+ }
+
+ [_otrTabModel removeObserver:self];
+ _otrTabModel = otrTabModel;
+ [_otrTabModel addObserver:self];
+}
+
+- (void)setMainTabModel:(TabModel*)mainTabModel
+ otrTabModel:(TabModel*)otrTabModel {
+ [self setMainTabModel:mainTabModel];
+ [self setOTRTabModel:otrTabModel];
}
#pragma mark - TabModelObserver

Powered by Google App Engine
This is Rietveld 408576698