| Index: ios/chrome/browser/ui/reader_mode/reader_mode_controller.mm
|
| diff --git a/ios/chrome/browser/ui/reader_mode/reader_mode_controller.mm b/ios/chrome/browser/ui/reader_mode/reader_mode_controller.mm
|
| index f04917f4ca09773eacf1ab08739aa0b30269fae7..7b34b391215c7e15d6fb1a273a981b5b97378bcb 100644
|
| --- a/ios/chrome/browser/ui/reader_mode/reader_mode_controller.mm
|
| +++ b/ios/chrome/browser/ui/reader_mode/reader_mode_controller.mm
|
| @@ -7,9 +7,7 @@
|
| #include <memory>
|
| #include <utility>
|
|
|
| -#include "base/ios/weak_nsobject.h"
|
| #include "base/mac/bind_objc_block.h"
|
| -#include "base/mac/scoped_nsobject.h"
|
| #include "base/memory/ptr_util.h"
|
| #include "base/strings/sys_string_conversions.h"
|
| #include "components/infobars/core/infobar.h"
|
| @@ -24,6 +22,10 @@
|
| #include "ios/web/public/browser_state.h"
|
| #include "ios/web/public/web_state/web_state.h"
|
|
|
| +#if !defined(__has_feature) || !__has_feature(objc_arc)
|
| +#error "This file requires ARC support."
|
| +#endif
|
| +
|
| @protocol ReaderModeCheckerObserverBridgeProtocol
|
| - (void)pageIsDistillable;
|
| @end
|
| @@ -96,7 +98,7 @@ class InfoBarManagerObserverBridge : infobars::InfoBarManager::Observer {
|
| infobars::InfoBar* infobar_;
|
| web::WebState* _webState;
|
| }
|
| -@property(readonly, nonatomic) id<ReaderModeControllerDelegate> delegate;
|
| +@property(weak, readonly, nonatomic) id<ReaderModeControllerDelegate> delegate;
|
|
|
| // Triggers a distillation and returns a DistillerViewer to keep as a handle to
|
| // the running distillation.
|
| @@ -142,7 +144,6 @@ class InfoBarManagerObserverBridge : infobars::InfoBarManager::Observer {
|
| - (void)dealloc {
|
| if (_webState)
|
| [self detachFromWebState];
|
| - [super dealloc];
|
| }
|
|
|
| - (void)detachFromWebState {
|
| @@ -160,7 +161,7 @@ class InfoBarManagerObserverBridge : infobars::InfoBarManager::Observer {
|
|
|
| - (std::unique_ptr<dom_distiller::DistillerViewer>)startDistillation {
|
| DCHECK(_webState);
|
| - base::WeakNSObject<ReaderModeController> weakSelf(self);
|
| + __weak ReaderModeController* weakSelf = self;
|
| GURL pageURL = _webState->GetLastCommittedURL();
|
| ios::ChromeBrowserState* browserState =
|
| ios::ChromeBrowserState::FromBrowserState(_webState->GetBrowserState());
|
| @@ -168,7 +169,7 @@ class InfoBarManagerObserverBridge : infobars::InfoBarManager::Observer {
|
| dom_distiller::DomDistillerServiceFactory::GetForBrowserState(
|
| browserState),
|
| browserState->GetPrefs(), pageURL,
|
| - base::BindBlock(^(
|
| + base::BindBlockArc(^(
|
| const GURL& pageURL, const std::string& html,
|
| const std::vector<dom_distiller::DistillerViewer::ImageInfo>& images,
|
| const std::string& title) {
|
| @@ -191,7 +192,7 @@ class InfoBarManagerObserverBridge : infobars::InfoBarManager::Observer {
|
| - (ReaderModeView*)readerModeViewWithFrame:(CGRect)frame {
|
| DCHECK(_checker->CanSwitchToReaderMode());
|
| ReaderModeView* view =
|
| - [[[ReaderModeView alloc] initWithFrame:frame delegate:self] autorelease];
|
| + [[ReaderModeView alloc] initWithFrame:frame delegate:self];
|
| [view assignDistillerViewer:[self startDistillation]];
|
| return view;
|
| }
|
| @@ -200,14 +201,13 @@ class InfoBarManagerObserverBridge : infobars::InfoBarManager::Observer {
|
|
|
| - (void)showInfoBar:(const std::string&)html forURL:(const GURL&)url {
|
| DCHECK(_webState);
|
| - base::WeakNSProtocol<id<ReaderModeControllerDelegate>> weakDelegate(
|
| - self.delegate);
|
| + __weak id<ReaderModeControllerDelegate> weakDelegate = self.delegate;
|
|
|
| // Non reference version of the variables needed.
|
| const std::string html_non_ref(html);
|
| const GURL url_non_ref(url);
|
| auto infoBarDelegate =
|
| - base::MakeUnique<ReaderModeInfoBarDelegate>(base::BindBlock(^{
|
| + base::MakeUnique<ReaderModeInfoBarDelegate>(base::BindBlockArc(^{
|
| [weakDelegate loadReaderModeHTML:base::SysUTF8ToNSString(html_non_ref)
|
| forURL:url_non_ref];
|
| }));
|
|
|