Chromium Code Reviews| Index: ios/web/web_state/ui/web_view_js_utils.mm |
| diff --git a/ios/web/web_state/ui/web_view_js_utils.mm b/ios/web/web_state/ui/web_view_js_utils.mm |
| index 8f7b202b044bd60289af98e906e276c243cbe1c2..fab245f5ad53b55ac61e96f412cc0ed20e586117 100644 |
| --- a/ios/web/web_state/ui/web_view_js_utils.mm |
| +++ b/ios/web/web_state/ui/web_view_js_utils.mm |
| @@ -56,22 +56,14 @@ void EvaluateJavaScript(WKWebView* web_view, |
| NSString* script, |
| JavaScriptCompletion completion_handler) { |
| DCHECK([script length]); |
| - // __block qualifier ensures that web_view_completion_handler is correctly |
| - // captured by itself. |
| - __block void (^web_view_completion_handler)(id, NSError*) = nil; |
| - // Do not create a web_view_completion_handler if no |handler| is passed to |
| - // this function. This results in no creation of an unnecessary block. |
| + void (^web_view_completion_handler)(id, NSError*) = nil; |
| + // Do not create a web_view_completion_handler if no |completion_handler| is |
| + // passed to this function. WKWebView flushes it's completion handlers on |
| + // deallocation, which will be inefficient use of resources. |
|
shreyasv1
2015/11/10 21:34:04
It's not clear what resource usage is being referr
Eugene But (OOO till 7-30)
2015/11/10 21:44:05
It's not only superfluous, it is actually more wor
|
| if (completion_handler) { |
| - // WKWebView crashes on deallocation when it flushes scripts that did not |
| - // finish the execution but have |completion_handler|. Passing |
| - // |completion_handler| ownership to the block itself and keeping it alive |
| - // until it's executed fixes the crash. No memory leak is expected since |
| - // |completion_handler| is always executed even if WKWebView is deallocated. |
| - // https://bugs.webkit.org/show_bug.cgi?id=140203 |
| - web_view_completion_handler = [^(id result, NSError* error) { |
| + web_view_completion_handler = ^(id result, NSError* error) { |
| completion_handler(UIResultFromWKResult(result), error); |
| - [web_view_completion_handler autorelease]; |
| - } copy]; |
| + }; |
| } |
| [web_view evaluateJavaScript:script |
| completionHandler:web_view_completion_handler]; |