| Index: ios/web/web_state/ui/wk_web_view_configuration_provider.mm | 
| diff --git a/ios/web/web_state/ui/wk_web_view_configuration_provider.mm b/ios/web/web_state/ui/wk_web_view_configuration_provider.mm | 
| index 209746341d51ce18344f1a7e7b68b8e944b77421..7527133963eaf71a5d883e8b9da24a8d72e6df5a 100644 | 
| --- a/ios/web/web_state/ui/wk_web_view_configuration_provider.mm | 
| +++ b/ios/web/web_state/ui/wk_web_view_configuration_provider.mm | 
| @@ -14,10 +14,6 @@ | 
| #import "ios/web/web_state/js/page_script_util.h" | 
| #import "ios/web/web_state/ui/crw_wk_script_message_router.h" | 
|  | 
| -#if !defined(__has_feature) || !__has_feature(objc_arc) | 
| -#error "This file requires ARC support." | 
| -#endif | 
| - | 
| namespace web { | 
|  | 
| namespace { | 
| @@ -27,10 +23,10 @@ | 
| // Returns an autoreleased instance of WKUserScript to be added to | 
| // configuration's userContentController. | 
| WKUserScript* InternalGetEarlyPageScript(BrowserState* browser_state) { | 
| -  return [[WKUserScript alloc] | 
| +  return [[[WKUserScript alloc] | 
| initWithSource:GetEarlyPageScript(browser_state) | 
| injectionTime:WKUserScriptInjectionTimeAtDocumentStart | 
| -      forMainFrameOnly:YES]; | 
| +      forMainFrameOnly:YES] autorelease]; | 
| } | 
|  | 
| }  // namespace | 
| @@ -74,7 +70,7 @@ | 
| addUserScript:InternalGetEarlyPageScript(browser_state_)]; | 
| } | 
| // Prevent callers from changing the internals of configuration. | 
| -  return [configuration_ copy]; | 
| +  return [[configuration_ copy] autorelease]; | 
| } | 
|  | 
| CRWWKScriptMessageRouter* | 
| @@ -92,16 +88,9 @@ | 
| void WKWebViewConfigurationProvider::Purge() { | 
| DCHECK([NSThread isMainThread]); | 
| #if DCHECK_IS_ON() | 
| -  base::WeakNSObject<id> weak_configuration; | 
| -  base::WeakNSObject<id> weak_router; | 
| -  // It's expected that the weak objects auto-nil by the end of this method. | 
| -  // They should not be in any autoreleasepool that might keep them alive. | 
| -  @autoreleasepool { | 
| -    weak_configuration.reset(configuration_); | 
| -    weak_router.reset(router_); | 
| -  } | 
| -// TODO(crbug.com/522672): See commented out DCHECK below. | 
| -// __weak id weak_process_pool = [configuration_ processPool]; | 
| +  base::WeakNSObject<id> weak_configuration(configuration_); | 
| +  base::WeakNSObject<id> weak_router(router_); | 
| +  base::WeakNSObject<id> weak_process_pool([configuration_ processPool]); | 
| #endif  // DCHECK_IS_ON() | 
| configuration_.reset(); | 
| router_.reset(); | 
|  |