Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(291)

Side by Side Diff: ios/web/web_state/js/crw_js_post_request_loader.mm

Issue 2840473003: Return WKNavigation from loadRequest and loadPostRequest. (Closed)
Patch Set: Rebased Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
OLDNEW
« no previous file with comments | « ios/web/web_state/js/crw_js_post_request_loader.h ('k') | ios/web/web_state/ui/crw_web_controller.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698