Index: ios/web/web_state/js/crw_js_post_request_loader.mm |
diff --git a/ios/web/web_state/js/crw_js_post_request_loader.mm b/ios/web/web_state/js/crw_js_post_request_loader.mm |
index 4c9eea113cd5874e24007ab96cba0b92f9ab17b2..972d59750a819e374c11729089f4be1189e3a92e 100644 |
--- a/ios/web/web_state/js/crw_js_post_request_loader.mm |
+++ b/ios/web/web_state/js/crw_js_post_request_loader.mm |
@@ -10,6 +10,10 @@ |
#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 { |
// Escapes characters and encloses given string in quotes for use in JavaScript. |
@@ -62,7 +66,6 @@ NSString* const kSuccessHandlerName = @"POSTSuccessHandler"; |
- (void)dealloc { |
[[NSNotificationCenter defaultCenter] removeObserver:self]; |
- [super dealloc]; |
} |
- (NSString*)requestScript { |
@@ -82,12 +85,13 @@ NSString* const kSuccessHandlerName = @"POSTSuccessHandler"; |
DCHECK(completionHandler); |
// Install error handling and success routers. |
+ __weak CRWWKScriptMessageRouter* weakRouter = messageRouter; |
[messageRouter setScriptMessageHandler:^(WKScriptMessage* message) { |
// Cleaning up script handlers. |
- [messageRouter removeScriptMessageHandlerForName:kErrorHandlerName |
- webView:webView]; |
- [messageRouter removeScriptMessageHandlerForName:kSuccessHandlerName |
- webView:webView]; |
+ [weakRouter removeScriptMessageHandlerForName:kErrorHandlerName |
+ webView:webView]; |
+ [weakRouter removeScriptMessageHandlerForName:kSuccessHandlerName |
+ webView:webView]; |
completionHandler(nil); |
} |
name:kSuccessHandlerName |
@@ -98,10 +102,10 @@ NSString* const kSuccessHandlerName = @"POSTSuccessHandler"; |
NSError* error = [NSError errorWithDomain:NSURLErrorDomain |
code:statusCode.integerValue |
userInfo:nil]; |
- [messageRouter removeScriptMessageHandlerForName:kErrorHandlerName |
- webView:webView]; |
- [messageRouter removeScriptMessageHandlerForName:kSuccessHandlerName |
- webView:webView]; |
+ [weakRouter removeScriptMessageHandlerForName:kErrorHandlerName |
+ webView:webView]; |
+ [weakRouter removeScriptMessageHandlerForName:kSuccessHandlerName |
+ webView:webView]; |
completionHandler(error); |
} |
name:kErrorHandlerName |
@@ -146,8 +150,8 @@ NSString* const kSuccessHandlerName = @"POSTSuccessHandler"; |
// This string is properly escaped by NSJSONSerialization. It needs to |
// have no quotes since JavaScripts takes this parameter as an |
// Object<string, string>. |
- return [[[NSString alloc] initWithData:headerData |
- encoding:NSUTF8StringEncoding] autorelease]; |
+ return [[NSString alloc] initWithData:headerData |
+ encoding:NSUTF8StringEncoding]; |
} |
} |
return @"{}"; |