| Index: ios/chrome/browser/ui/ntp/google_landing_mediator.mm
|
| diff --git a/ios/chrome/browser/ui/ntp/google_landing_mediator.mm b/ios/chrome/browser/ui/ntp/google_landing_mediator.mm
|
| index 693d4507516dbe02a2928a4f23a305de8504c58a..487c2232ef43ddf1f8352616ad5c1639f4fc0a07 100644
|
| --- a/ios/chrome/browser/ui/ntp/google_landing_mediator.mm
|
| +++ b/ios/chrome/browser/ui/ntp/google_landing_mediator.mm
|
| @@ -4,9 +4,7 @@
|
|
|
| #import "ios/chrome/browser/ui/ntp/google_landing_mediator.h"
|
|
|
| -#import "base/ios/weak_nsobject.h"
|
| #include "base/mac/bind_objc_block.h"
|
| -#include "base/mac/scoped_nsobject.h"
|
| #include "base/metrics/user_metrics.h"
|
| #include "base/metrics/user_metrics_action.h"
|
| #include "base/strings/sys_string_conversions.h"
|
| @@ -44,6 +42,10 @@
|
| #include "ios/web/public/web_state/web_state.h"
|
| #include "skia/ext/skia_utils_ios.h"
|
|
|
| +#if !defined(__has_feature) || !__has_feature(objc_arc)
|
| +#error "This file requires ARC support."
|
| +#endif
|
| +
|
| using base::UserMetricsAction;
|
|
|
| namespace {
|
| @@ -70,7 +72,7 @@ class SearchEngineObserver : public TemplateURLServiceObserver {
|
| void OnTemplateURLServiceChanged() override;
|
|
|
| private:
|
| - base::WeakNSObject<GoogleLandingMediator> _owner;
|
| + __weak GoogleLandingMediator* _owner;
|
| TemplateURLService* _templateURLService; // weak
|
| };
|
|
|
| @@ -100,7 +102,7 @@ void SearchEngineObserver::OnTemplateURLServiceChanged() {
|
| BOOL _recordedPageImpression;
|
|
|
| // Controller to fetch and show doodles or a default Google logo.
|
| - base::scoped_nsprotocol<id<LogoVendor>> _doodleController;
|
| + id<LogoVendor> _doodleController;
|
|
|
| // Listen for default search engine changes.
|
| std::unique_ptr<google_landing::SearchEngineObserver> _observer;
|
| @@ -135,23 +137,16 @@ void SearchEngineObserver::OnTemplateURLServiceChanged() {
|
|
|
| // Used to cancel tasks for the LargeIconService.
|
| base::CancelableTaskTracker _cancelable_task_tracker;
|
| -
|
| - // Consumer to handle google landing update notifications.
|
| - base::WeakNSProtocol<id<GoogleLandingConsumer>> _consumer;
|
| -
|
| - // Dispatcher for this mediator.
|
| - base::WeakNSProtocol<id<ChromeExecuteCommand, UrlLoader>> _dispatcher;
|
| }
|
|
|
| // Consumer to handle google landing update notifications.
|
| -@property(nonatomic, assign, readonly) id<GoogleLandingConsumer> consumer;
|
| +@property(nonatomic, weak) id<GoogleLandingConsumer> consumer;
|
|
|
| // The WebStateList that is being observed by this mediator.
|
| @property(nonatomic, assign, readonly) WebStateList* webStateList;
|
|
|
| // The dispatcher for this mediator.
|
| -@property(nonatomic, assign, readonly) id<ChromeExecuteCommand, UrlLoader>
|
| - dispatcher;
|
| +@property(nonatomic, weak) id<ChromeExecuteCommand, UrlLoader> dispatcher;
|
|
|
| // Perform initial setup.
|
| - (void)setUp;
|
| @@ -161,6 +156,8 @@ void SearchEngineObserver::OnTemplateURLServiceChanged() {
|
| @implementation GoogleLandingMediator
|
|
|
| @synthesize webStateList = _webStateList;
|
| +@synthesize consumer = _consumer;
|
| +@synthesize dispatcher = _dispatcher;
|
|
|
| - (instancetype)initWithConsumer:(id<GoogleLandingConsumer>)consumer
|
| browserState:(ios::ChromeBrowserState*)browserState
|
| @@ -168,9 +165,9 @@ void SearchEngineObserver::OnTemplateURLServiceChanged() {
|
| webStateList:(WebStateList*)webStateList {
|
| self = [super init];
|
| if (self) {
|
| - _consumer.reset(consumer);
|
| + _consumer = consumer;
|
| _browserState = browserState;
|
| - _dispatcher.reset(dispatcher);
|
| + _dispatcher = dispatcher;
|
| _webStateList = webStateList;
|
|
|
| _webStateListObserver = base::MakeUnique<WebStateListObserverBridge>(self);
|
| @@ -207,9 +204,9 @@ void SearchEngineObserver::OnTemplateURLServiceChanged() {
|
| _observer.reset(
|
| new google_landing::SearchEngineObserver(self, _templateURLService));
|
| _templateURLService->Load();
|
| - _doodleController.reset(ios::GetChromeBrowserProvider()->CreateLogoVendor(
|
| - _browserState, self.dispatcher));
|
| - [self.consumer setLogoVendor:_doodleController];
|
| + _doodleController = ios::GetChromeBrowserProvider()->CreateLogoVendor(
|
| + _browserState, self.dispatcher);
|
| + [_consumer setLogoVendor:_doodleController];
|
| [self updateShowLogo];
|
|
|
| // Set up most visited sites. This call may have the side effect of
|
| @@ -298,7 +295,7 @@ void SearchEngineObserver::OnTemplateURLServiceChanged() {
|
| fallbackCallback:(void (^)(UIColor* textColor,
|
| UIColor* backgroundColor,
|
| BOOL isDefaultColor))fallbackCallback {
|
| - base::WeakNSObject<GoogleLandingMediator> weakSelf(self);
|
| + __weak GoogleLandingMediator* weakSelf = self;
|
|
|
| void (^faviconBlock)(const favicon_base::LargeIconResult&) = ^(
|
| const favicon_base::LargeIconResult& result) {
|
| @@ -325,11 +322,10 @@ void SearchEngineObserver::OnTemplateURLServiceChanged() {
|
| : ntp_tiles::TileVisualType::ICON_COLOR;
|
| }
|
|
|
| - base::scoped_nsobject<GoogleLandingMediator> strongSelf([weakSelf retain]);
|
| - if (strongSelf) {
|
| - if ((result.bitmap.is_valid() || result.fallback_icon_style))
|
| - [strongSelf largeIconCache]->SetCachedResult(URL, result);
|
| - [strongSelf faviconOfType:tileType fetchedForURL:URL];
|
| + GoogleLandingMediator* strongSelf = weakSelf;
|
| + if (strongSelf &&
|
| + (result.bitmap.is_valid() || result.fallback_icon_style)) {
|
| + [strongSelf largeIconCache]->SetCachedResult(URL, result);
|
| }
|
| };
|
|
|
| @@ -344,7 +340,7 @@ void SearchEngineObserver::OnTemplateURLServiceChanged() {
|
| CGFloat faviconSize = [UIScreen mainScreen].scale * size;
|
| CGFloat faviconMinSize = [UIScreen mainScreen].scale * kFaviconMinSize;
|
| [self largeIconService]->GetLargeIconOrFallbackStyle(
|
| - URL, faviconMinSize, faviconSize, base::BindBlock(faviconBlock),
|
| + URL, faviconMinSize, faviconSize, base::BindBlockArc(faviconBlock),
|
| &_cancelable_task_tracker);
|
| }
|
|
|
| @@ -439,9 +435,8 @@ void SearchEngineObserver::OnTemplateURLServiceChanged() {
|
| }
|
|
|
| if (_notificationPromo->IsChromeCommand()) {
|
| - base::scoped_nsobject<GenericChromeCommand> command(
|
| - [[GenericChromeCommand alloc]
|
| - initWithTag:_notificationPromo->command_id()]);
|
| + GenericChromeCommand* command = [[GenericChromeCommand alloc]
|
| + initWithTag:_notificationPromo->command_id()];
|
| [self.dispatcher chromeExecuteCommand:command];
|
| return;
|
| }
|
| @@ -474,14 +469,4 @@ void SearchEngineObserver::OnTemplateURLServiceChanged() {
|
| }
|
| }
|
|
|
| -#pragma mark - Properties
|
| -
|
| -- (id<GoogleLandingConsumer>)consumer {
|
| - return _consumer.get();
|
| -}
|
| -
|
| -- (id<ChromeExecuteCommand, UrlLoader>)dispatcher {
|
| - return _dispatcher.get();
|
| -}
|
| -
|
| @end
|
|
|