Index: ios/chrome/browser/ui/contextual_search/contextual_search_results_view.mm |
diff --git a/ios/chrome/browser/ui/contextual_search/contextual_search_results_view.mm b/ios/chrome/browser/ui/contextual_search/contextual_search_results_view.mm |
index 50ba220b849dfc0585a366ed1211e093fe719cdf..92e6652759be6f20e05302b71ed95cf8bc13cf87 100644 |
--- a/ios/chrome/browser/ui/contextual_search/contextual_search_results_view.mm |
+++ b/ios/chrome/browser/ui/contextual_search/contextual_search_results_view.mm |
@@ -6,8 +6,6 @@ |
#include <memory> |
-#import "base/ios/weak_nsobject.h" |
-#include "base/mac/scoped_nsobject.h" |
#import "ios/chrome/browser/tabs/tab.h" |
#import "ios/chrome/browser/ui/contextual_search/contextual_search_metrics.h" |
#import "ios/chrome/browser/ui/contextual_search/contextual_search_panel_view.h" |
@@ -19,6 +17,10 @@ |
#import "ios/web/public/web_state/ui/crw_native_content_provider.h" |
#import "ios/web/web_state/ui/crw_web_controller.h" |
+#if !defined(__has_feature) || !__has_feature(objc_arc) |
+#error "This file requires ARC support." |
+#endif |
+ |
namespace { |
enum SearchResultsViewVisibility { OFFSCREEN, PRELOAD, VISIBLE }; |
} |
@@ -31,15 +33,13 @@ enum SearchResultsViewVisibility { OFFSCREEN, PRELOAD, VISIBLE }; |
@end |
@implementation ContextualSearchResultsView { |
- base::WeakNSProtocol<id<ContextualSearchTabPromoter>> _promoter; |
- base::WeakNSProtocol<id<ContextualSearchPreloadChecker>> _preloadChecker; |
std::unique_ptr<ContextualSearchWebStateObserver> _webStateObserver; |
// Tab that loads the search results. |
- base::scoped_nsobject<Tab> _tab; |
+ Tab* _tab; |
// Access to the search tab's web view proxy. |
- base::scoped_nsprotocol<id<CRWWebViewProxy>> _webViewProxy; |
+ id<CRWWebViewProxy> _webViewProxy; |
BOOL _loaded; |
BOOL _displayed; |
@@ -58,6 +58,8 @@ enum SearchResultsViewVisibility { OFFSCREEN, PRELOAD, VISIBLE }; |
@synthesize active = _active; |
@synthesize opener = _opener; |
+@synthesize promoter = _promoter; |
+@synthesize preloadChecker = _preloadChecker; |
- (instancetype)initWithFrame:(CGRect)frame { |
if ((self = [super initWithFrame:frame])) { |
@@ -89,7 +91,7 @@ enum SearchResultsViewVisibility { OFFSCREEN, PRELOAD, VISIBLE }; |
} |
- (void)setPromoter:(id<ContextualSearchTabPromoter>)promoter { |
- _promoter.reset(promoter); |
+ _promoter = promoter; |
} |
- (id<ContextualSearchPreloadChecker>)preloadChecker { |
@@ -97,7 +99,7 @@ enum SearchResultsViewVisibility { OFFSCREEN, PRELOAD, VISIBLE }; |
} |
- (void)setPreloadChecker:(id<ContextualSearchPreloadChecker>)preloadChecker { |
- _preloadChecker.reset(preloadChecker); |
+ _preloadChecker = preloadChecker; |
} |
- (BOOL)contentVisible { |
@@ -109,12 +111,12 @@ enum SearchResultsViewVisibility { OFFSCREEN, PRELOAD, VISIBLE }; |
// Start watching the embedded Tab's web activity. |
_webStateObserver->ObserveWebState([_tab webState]); |
[[_tab webController] setShouldSuppressDialogs:NO]; |
- _webViewProxy.reset([[[_tab webController] webViewProxy] retain]); |
+ _webViewProxy = [[_tab webController] webViewProxy]; |
[[_webViewProxy scrollViewProxy] setBounces:NO]; |
} else { |
// Stop watching the embedded Tab's web activity. |
_webStateObserver->ObserveWebState(nullptr); |
- _webViewProxy.reset(nil); |
+ _webViewProxy = nil; |
} |
_active = active; |
@@ -148,7 +150,7 @@ enum SearchResultsViewVisibility { OFFSCREEN, PRELOAD, VISIBLE }; |
opener:self.opener |
desktopUserAgent:false |
configuration:searchTabConfiguration]; |
- _tab.reset([tab retain]); |
+ _tab = tab; |
// Don't actually start the page load yet -- that happens in -loadTab |
_preloadEnabled = preloadEnabled; |
@@ -159,7 +161,9 @@ enum SearchResultsViewVisibility { OFFSCREEN, PRELOAD, VISIBLE }; |
[self disconnectTab]; |
// Allow the search tab to be sized by autoresizing mask again. |
[[_tab view] setTranslatesAutoresizingMaskIntoConstraints:YES]; |
- return [_tab.release() autorelease]; |
+ Tab* tab = _tab; |
+ _tab = nil; |
+ return tab; |
} |
- (void)recordFinishedSearchChained:(BOOL)chained { |
@@ -173,7 +177,7 @@ enum SearchResultsViewVisibility { OFFSCREEN, PRELOAD, VISIBLE }; |
[[_tab view] removeFromSuperview]; |
[[_tab webController] setNativeProvider:nil]; |
self.active = NO; |
- _webViewProxy.reset(); |
+ _webViewProxy = nil; |
} |
- (void)cancelLoad { |
@@ -181,12 +185,12 @@ enum SearchResultsViewVisibility { OFFSCREEN, PRELOAD, VISIBLE }; |
_loadInProgress = NO; |
_loaded = NO; |
[_tab close]; |
- _tab.reset(); |
+ _tab = nil; |
} |
- (void)loadPendingSearchIfPossible { |
// If the search tab hasn't been created, or if it's already loaded, no-op. |
- if (!_tab.get() || _loadInProgress || self.active || _visibility == OFFSCREEN) |
+ if (!_tab || _loadInProgress || self.active || _visibility == OFFSCREEN) |
return; |
// If this view is in a position where loading would be "preloading", check |
@@ -199,7 +203,7 @@ enum SearchResultsViewVisibility { OFFSCREEN, PRELOAD, VISIBLE }; |
} |
- (void)loadTab { |
- DCHECK(_tab.get()); |
+ DCHECK(_tab); |
// Start observing the search tab. |
self.active = YES; |
// TODO(crbug.com/546223): See if |_waitingForInitialSearchTabLoad| and |