| Index: ios/chrome/browser/ui/history/favicon_view_provider.mm
|
| diff --git a/ios/chrome/browser/ui/history/favicon_view_provider.mm b/ios/chrome/browser/ui/history/favicon_view_provider.mm
|
| index ea2707e9dc595e037eb94c733d0e08dfde6520f1..2b65dbd608c198fb6f05653f23aba8335902616a 100644
|
| --- a/ios/chrome/browser/ui/history/favicon_view_provider.mm
|
| +++ b/ios/chrome/browser/ui/history/favicon_view_provider.mm
|
| @@ -5,11 +5,8 @@
|
| #import "ios/chrome/browser/ui/history/favicon_view_provider.h"
|
|
|
| #include "base/i18n/case_conversion.h"
|
| -#include "base/ios/weak_nsobject.h"
|
| #include "base/mac/bind_objc_block.h"
|
| #import "base/mac/foundation_util.h"
|
| -#include "base/mac/objc_property_releaser.h"
|
| -#include "base/mac/scoped_nsobject.h"
|
| #include "base/memory/ref_counted_memory.h"
|
| #include "base/strings/sys_string_conversions.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| @@ -24,30 +21,30 @@
|
| #include "skia/ext/skia_utils_ios.h"
|
| #include "url/gurl.h"
|
|
|
| +#if !defined(__has_feature) || !__has_feature(objc_arc)
|
| +#error "This file requires ARC support."
|
| +#endif
|
| +
|
| @interface FaviconViewProvider () {
|
| - // Property releaser for FaviconViewProvider.
|
| - base::mac::ObjCPropertyReleaser _propertyReleaser_FaviconViewProvider;
|
| // Delegate for handling completion of favicon load.
|
| - base::WeakNSProtocol<id<FaviconViewProviderDelegate>> _delegate;
|
| + __weak id<FaviconViewProviderDelegate> _delegate;
|
| // Used to cancel tasks for the LargeIconService.
|
| base::CancelableTaskTracker _faviconTaskTracker;
|
| - // View that renders a favicon or a fallback image.
|
| - base::scoped_nsobject<FaviconView> _faviconView;
|
| }
|
|
|
| // Size to render the favicon.
|
| @property(nonatomic, assign) CGFloat faviconSize;
|
| // Favicon image for the favicon view.
|
| -@property(nonatomic, retain) UIImage* favicon;
|
| +@property(nonatomic, strong) UIImage* favicon;
|
| // Fallback text for the favicon view if there is no appropriately sized
|
| // favicon availabile.
|
| @property(nonatomic, copy) NSString* fallbackText;
|
| // Fallback background color for the favicon view if there is no appropriately
|
| // sized favicon available.
|
| -@property(nonatomic, retain) UIColor* fallbackBackgroundColor;
|
| +@property(nonatomic, strong) UIColor* fallbackBackgroundColor;
|
| // Fallback text color for the favicon view if there is no appropriately
|
| // sized favicon available.
|
| -@property(nonatomic, retain) UIColor* fallbackTextColor;
|
| +@property(nonatomic, strong) UIColor* fallbackTextColor;
|
|
|
| // Fetches favicon for |URL| from |faviconService|. Notifies delegate when
|
| // favicon is retrieved.
|
| @@ -65,6 +62,7 @@
|
| @synthesize fallbackText = _fallbackText;
|
| @synthesize fallbackBackgroundColor = _fallbackBackgroundColor;
|
| @synthesize fallbackTextColor = _fallbackTextColor;
|
| +@synthesize faviconView = _faviconView;
|
|
|
| - (instancetype)initWithURL:(const GURL&)URL
|
| faviconSize:(CGFloat)faviconSize
|
| @@ -73,12 +71,10 @@
|
| delegate:(id<FaviconViewProviderDelegate>)delegate {
|
| self = [super init];
|
| if (self) {
|
| - _propertyReleaser_FaviconViewProvider.Init(self,
|
| - [FaviconViewProvider class]);
|
| _faviconSize = faviconSize;
|
| - _delegate.reset(delegate);
|
| - _fallbackBackgroundColor = [[UIColor grayColor] retain];
|
| - _fallbackTextColor = [[UIColor whiteColor] retain];
|
| + _delegate = delegate;
|
| + _fallbackBackgroundColor = [UIColor grayColor];
|
| + _fallbackTextColor = [UIColor whiteColor];
|
| [self fetchFaviconForURL:URL
|
| size:faviconSize
|
| minSize:minFaviconSize
|
| @@ -98,11 +94,11 @@
|
| service:(favicon::LargeIconService*)largeIconService {
|
| if (!largeIconService)
|
| return;
|
| - base::WeakNSObject<FaviconViewProvider> weakSelf(self);
|
| + __weak FaviconViewProvider* weakSelf = self;
|
| GURL blockURL(URL);
|
| void (^faviconBlock)(const favicon_base::LargeIconResult&) = ^(
|
| const favicon_base::LargeIconResult& result) {
|
| - base::scoped_nsobject<FaviconViewProvider> strongSelf([weakSelf retain]);
|
| + FaviconViewProvider* strongSelf = weakSelf;
|
| if (!strongSelf)
|
| return;
|
| if (result.bitmap.is_valid()) {
|
| @@ -122,36 +118,35 @@
|
| [strongSelf setFallbackText:base::SysUTF16ToNSString(
|
| favicon::GetFallbackIconText(blockURL))];
|
| }
|
| - [strongSelf.get()->_delegate faviconViewProviderFaviconDidLoad:strongSelf];
|
| + [strongSelf->_delegate faviconViewProviderFaviconDidLoad:strongSelf];
|
| };
|
|
|
| // Always call LargeIconService in case the favicon was updated.
|
| CGFloat faviconSize = [UIScreen mainScreen].scale * size;
|
| CGFloat minFaviconSize = [UIScreen mainScreen].scale * minSize;
|
| largeIconService->GetLargeIconOrFallbackStyle(
|
| - URL, minFaviconSize, faviconSize, base::BindBlock(faviconBlock),
|
| + URL, minFaviconSize, faviconSize, base::BindBlockArc(faviconBlock),
|
| &_faviconTaskTracker);
|
| }
|
|
|
| - (FaviconView*)faviconView {
|
| if (!_faviconView) {
|
| - _faviconView.reset([[FaviconView alloc] initWithFrame:CGRectZero]);
|
| + _faviconView = [[FaviconView alloc] initWithFrame:CGRectZero];
|
| }
|
| - _faviconView.get().size = _faviconSize;
|
| + _faviconView.size = _faviconSize;
|
| // Update favicon view with current properties.
|
| if (self.favicon) {
|
| - _faviconView.get().faviconImage.image = self.favicon;
|
| - _faviconView.get().faviconImage.backgroundColor = [UIColor whiteColor];
|
| - _faviconView.get().faviconFallbackLabel.text = nil;
|
| + _faviconView.faviconImage.image = self.favicon;
|
| + _faviconView.faviconImage.backgroundColor = [UIColor whiteColor];
|
| + _faviconView.faviconFallbackLabel.text = nil;
|
| } else {
|
| - _faviconView.get().faviconImage.image = nil;
|
| - _faviconView.get().faviconImage.backgroundColor =
|
| - self.fallbackBackgroundColor;
|
| - _faviconView.get().faviconFallbackLabel.text = self.fallbackText;
|
| - _faviconView.get().faviconFallbackLabel.textColor = self.fallbackTextColor;
|
| + _faviconView.faviconImage.image = nil;
|
| + _faviconView.faviconImage.backgroundColor = self.fallbackBackgroundColor;
|
| + _faviconView.faviconFallbackLabel.text = self.fallbackText;
|
| + _faviconView.faviconFallbackLabel.textColor = self.fallbackTextColor;
|
|
|
| CGFloat fontSize = floorf(_faviconSize / 2);
|
| - _faviconView.get().faviconFallbackLabel.font =
|
| + _faviconView.faviconFallbackLabel.font =
|
| [[MDFRobotoFontLoader sharedInstance] regularFontOfSize:fontSize];
|
| }
|
| return _faviconView;
|
|
|