Chromium Code Reviews| Index: ios/web/web_state/ui/crw_wk_script_message_router.mm |
| diff --git a/ios/web/web_state/ui/crw_wk_script_message_router.mm b/ios/web/web_state/ui/crw_wk_script_message_router.mm |
| index ed13ddb0b878def502fbd03555fc35f32ee2a154..8aa0f7067675220e6038afdbc42efd0fbdd3406e 100644 |
| --- a/ios/web/web_state/ui/crw_wk_script_message_router.mm |
| +++ b/ios/web/web_state/ui/crw_wk_script_message_router.mm |
| @@ -5,7 +5,10 @@ |
| #import "ios/web/web_state/ui/crw_wk_script_message_router.h" |
| #include "base/logging.h" |
| -#import "base/mac/scoped_nsobject.h" |
| + |
| +#if !defined(__has_feature) || !__has_feature(objc_arc) |
| +#error "This file requires ARC support." |
| +#endif |
| @interface CRWWKScriptMessageRouter ()<WKScriptMessageHandler> |
| @@ -18,16 +21,16 @@ |
| @implementation CRWWKScriptMessageRouter { |
| // Two level map of registed message handlers. Keys are message names and |
| // values are more maps (where keys are web views and values are handlers). |
| - base::scoped_nsobject<NSMutableDictionary> _handlers; |
| + NSMutableDictionary* _handlers; |
| // Wrapped WKUserContentController. |
| - base::scoped_nsobject<WKUserContentController> _userContentController; |
| + WKUserContentController* _userContentController; |
| } |
| #pragma mark - |
| #pragma mark Interface |
| - (WKUserContentController*)userContentController { |
| - return _userContentController.get(); |
| + return _userContentController; |
| } |
| - (instancetype)init { |
| @@ -39,8 +42,8 @@ |
| (WKUserContentController*)userContentController { |
| DCHECK(userContentController); |
| if ((self = [super init])) { |
| - _handlers.reset([[NSMutableDictionary alloc] init]); |
| - _userContentController.reset([userContentController retain]); |
| + _handlers = [[NSMutableDictionary alloc] init]; |
| + _userContentController = userContentController; |
| } |
| return self; |
| } |
| @@ -103,9 +106,7 @@ |
| id handler = [webViewToHandlerMap objectForKey:webView]; |
| if (!handler) |
| return; |
| - // Extend the lifetime of |handler| so removeScriptMessageHandlerForName: can |
| - // be called from inside of |handler|. |
| - [[handler retain] autorelease]; |
| + // ARC TODO: Discuss the lifecycle of handler here in ARC. |
|
PL
2017/06/02 21:42:12
Would like to discuss this! I'm not sure quite wha
PL
2017/06/02 21:47:45
AHA! I think this is a candidate for NS_VALID_UNTI
|
| if (webViewToHandlerMap.count == 1) { |
| [_handlers removeObjectForKey:messageName]; |
| [_userContentController removeScriptMessageHandlerForName:messageName]; |