| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #import "ios/web/web_state/js/crw_js_post_request_loader.h" | 5 #import "ios/web/web_state/js/crw_js_post_request_loader.h" |
| 6 | 6 |
| 7 #include "base/json/string_escape.h" | 7 #include "base/json/string_escape.h" |
| 8 #import "base/mac/scoped_nsobject.h" | 8 #import "base/mac/scoped_nsobject.h" |
| 9 #import "base/strings/sys_string_conversions.h" | 9 #import "base/strings/sys_string_conversions.h" |
| 10 #import "ios/web/web_state/js/page_script_util.h" | 10 #import "ios/web/web_state/js/page_script_util.h" |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 [[NSNotificationCenter defaultCenter] removeObserver:self]; | 68 [[NSNotificationCenter defaultCenter] removeObserver:self]; |
| 69 } | 69 } |
| 70 | 70 |
| 71 - (NSString*)requestScript { | 71 - (NSString*)requestScript { |
| 72 if (!_requestScript) { | 72 if (!_requestScript) { |
| 73 _requestScript.reset([web::GetPageScript(@"post_request") copy]); | 73 _requestScript.reset([web::GetPageScript(@"post_request") copy]); |
| 74 } | 74 } |
| 75 return _requestScript; | 75 return _requestScript; |
| 76 } | 76 } |
| 77 | 77 |
| 78 - (void)loadPOSTRequest:(NSURLRequest*)request | 78 - (WKNavigation*)loadPOSTRequest:(NSURLRequest*)request |
| 79 inWebView:(WKWebView*)webView | 79 inWebView:(WKWebView*)webView |
| 80 messageRouter:(CRWWKScriptMessageRouter*)messageRouter | 80 messageRouter:(CRWWKScriptMessageRouter*)messageRouter |
| 81 completionHandler:(void (^)(NSError*))completionHandler { | 81 completionHandler:(void (^)(NSError*))completionHandler { |
| 82 DCHECK([request.HTTPMethod isEqualToString:@"POST"]); | 82 DCHECK([request.HTTPMethod isEqualToString:@"POST"]); |
| 83 DCHECK(webView); | 83 DCHECK(webView); |
| 84 DCHECK(messageRouter); | 84 DCHECK(messageRouter); |
| 85 DCHECK(completionHandler); | 85 DCHECK(completionHandler); |
| 86 | 86 |
| 87 // Install error handling and success routers. | 87 // Install error handling and success routers. |
| 88 __weak CRWWKScriptMessageRouter* weakRouter = messageRouter; | 88 __weak CRWWKScriptMessageRouter* weakRouter = messageRouter; |
| 89 [messageRouter setScriptMessageHandler:^(WKScriptMessage* message) { | 89 [messageRouter setScriptMessageHandler:^(WKScriptMessage* message) { |
| 90 // Cleaning up script handlers. | 90 // Cleaning up script handlers. |
| 91 [weakRouter removeScriptMessageHandlerForName:kErrorHandlerName | 91 [weakRouter removeScriptMessageHandlerForName:kErrorHandlerName |
| (...skipping 16 matching lines...) Expand all Loading... |
| 108 webView:webView]; | 108 webView:webView]; |
| 109 completionHandler(error); | 109 completionHandler(error); |
| 110 } | 110 } |
| 111 name:kErrorHandlerName | 111 name:kErrorHandlerName |
| 112 webView:webView]; | 112 webView:webView]; |
| 113 | 113 |
| 114 NSString* HTML = | 114 NSString* HTML = |
| 115 [NSString stringWithFormat:@"<html><script>%@%@</script></html>", | 115 [NSString stringWithFormat:@"<html><script>%@%@</script></html>", |
| 116 self.requestScript, | 116 self.requestScript, |
| 117 [self scriptToExecutePOSTRequest:request]]; | 117 [self scriptToExecutePOSTRequest:request]]; |
| 118 [webView loadHTMLString:HTML baseURL:request.URL]; | 118 return [webView loadHTMLString:HTML baseURL:request.URL]; |
| 119 } | 119 } |
| 120 | 120 |
| 121 #pragma mark - Private methods. | 121 #pragma mark - Private methods. |
| 122 | 122 |
| 123 - (void)handleMemoryWarning { | 123 - (void)handleMemoryWarning { |
| 124 // Request script can be recreated from file at any moment. | 124 // Request script can be recreated from file at any moment. |
| 125 _requestScript.reset(); | 125 _requestScript.reset(); |
| 126 } | 126 } |
| 127 | 127 |
| 128 - (NSString*)scriptToExecutePOSTRequest:(NSURLRequest*)request { | 128 - (NSString*)scriptToExecutePOSTRequest:(NSURLRequest*)request { |
| (...skipping 22 matching lines...) Expand all Loading... |
| 151 // have no quotes since JavaScripts takes this parameter as an | 151 // have no quotes since JavaScripts takes this parameter as an |
| 152 // Object<string, string>. | 152 // Object<string, string>. |
| 153 return [[NSString alloc] initWithData:headerData | 153 return [[NSString alloc] initWithData:headerData |
| 154 encoding:NSUTF8StringEncoding]; | 154 encoding:NSUTF8StringEncoding]; |
| 155 } | 155 } |
| 156 } | 156 } |
| 157 return @"{}"; | 157 return @"{}"; |
| 158 } | 158 } |
| 159 | 159 |
| 160 @end | 160 @end |
| OLD | NEW |