OLD | NEW |
1 // Copyright 2012 The Chromium Authors. All rights reserved. | 1 // Copyright 2012 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/ui/crw_web_controller.h" | 5 #import "ios/web/web_state/ui/crw_web_controller.h" |
6 | 6 |
7 #import <WebKit/WebKit.h> | 7 #import <WebKit/WebKit.h> |
8 | 8 |
9 #import <objc/runtime.h> | 9 #import <objc/runtime.h> |
10 #include <stddef.h> | 10 #include <stddef.h> |
(...skipping 4749 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4760 [self handleLoadError:loadError inMainFrame:YES]; | 4760 [self handleLoadError:loadError inMainFrame:YES]; |
4761 else | 4761 else |
4762 self.webStateImpl->SetContentsMimeType("text/html"); | 4762 self.webStateImpl->SetContentsMimeType("text/html"); |
4763 }]; | 4763 }]; |
4764 } | 4764 } |
4765 | 4765 |
4766 - (void)loadHTML:(NSString*)HTML forURL:(const GURL&)URL { | 4766 - (void)loadHTML:(NSString*)HTML forURL:(const GURL&)URL { |
4767 // Remove the transient content view. | 4767 // Remove the transient content view. |
4768 [self clearTransientContentView]; | 4768 [self clearTransientContentView]; |
4769 | 4769 |
4770 DLOG_IF(WARNING, !_webView) << "_webView null while trying to load HTML"; | |
4771 _loadPhase = web::LOAD_REQUESTED; | 4770 _loadPhase = web::LOAD_REQUESTED; |
| 4771 [self ensureWebViewCreated]; |
| 4772 DCHECK(_webView) << "_webView null while trying to load HTML"; |
4772 [_webView loadHTMLString:HTML baseURL:net::NSURLWithGURL(URL)]; | 4773 [_webView loadHTMLString:HTML baseURL:net::NSURLWithGURL(URL)]; |
4773 } | 4774 } |
4774 | 4775 |
4775 - (void)loadHTML:(NSString*)HTML forAppSpecificURL:(const GURL&)URL { | 4776 - (void)loadHTML:(NSString*)HTML forAppSpecificURL:(const GURL&)URL { |
4776 CHECK(web::GetWebClient()->IsAppSpecificURL(URL)); | 4777 CHECK(web::GetWebClient()->IsAppSpecificURL(URL)); |
4777 [self loadHTML:HTML forURL:URL]; | 4778 [self loadHTML:HTML forURL:URL]; |
4778 } | 4779 } |
4779 | 4780 |
4780 - (void)loadHTMLForCurrentURL:(NSString*)HTML { | 4781 - (void)loadHTMLForCurrentURL:(NSString*)HTML { |
4781 [self loadHTML:HTML forURL:self.currentURL]; | 4782 [self loadHTML:HTML forURL:self.currentURL]; |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4968 | 4969 |
4969 BOOL allowLoad = [self shouldAllowLoadWithNavigationAction:action]; | 4970 BOOL allowLoad = [self shouldAllowLoadWithNavigationAction:action]; |
4970 | 4971 |
4971 if (allowLoad) { | 4972 if (allowLoad) { |
4972 allowLoad = self.webStateImpl->ShouldAllowRequest(action.request); | 4973 allowLoad = self.webStateImpl->ShouldAllowRequest(action.request); |
4973 if (!allowLoad && action.targetFrame.mainFrame) { | 4974 if (!allowLoad && action.targetFrame.mainFrame) { |
4974 [_pendingNavigationInfo setCancelled:YES]; | 4975 [_pendingNavigationInfo setCancelled:YES]; |
4975 } | 4976 } |
4976 } | 4977 } |
4977 | 4978 |
4978 if (!allowLoad && action.targetFrame.isMainFrame) { | |
4979 // WKWebView will stop this navigation without calling any further | |
4980 // callbacks, so change load phase to loaded now. | |
4981 _loadPhase = web::PAGE_LOADED; | |
4982 _webStateImpl->SetIsLoading(false); | |
4983 } | |
4984 | |
4985 decisionHandler(allowLoad ? WKNavigationActionPolicyAllow | 4979 decisionHandler(allowLoad ? WKNavigationActionPolicyAllow |
4986 : WKNavigationActionPolicyCancel); | 4980 : WKNavigationActionPolicyCancel); |
4987 } | 4981 } |
4988 | 4982 |
4989 - (void)webView:(WKWebView*)webView | 4983 - (void)webView:(WKWebView*)webView |
4990 decidePolicyForNavigationResponse:(WKNavigationResponse*)navigationResponse | 4984 decidePolicyForNavigationResponse:(WKNavigationResponse*)navigationResponse |
4991 decisionHandler: | 4985 decisionHandler: |
4992 (void (^)(WKNavigationResponsePolicy))handler { | 4986 (void (^)(WKNavigationResponsePolicy))handler { |
4993 if ([navigationResponse.response isKindOfClass:[NSHTTPURLResponse class]]) { | 4987 if ([navigationResponse.response isKindOfClass:[NSHTTPURLResponse class]]) { |
4994 // Create HTTP headers from the response. | 4988 // Create HTTP headers from the response. |
(...skipping 640 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5635 } | 5629 } |
5636 | 5630 |
5637 return web::WEB_VIEW_DOCUMENT_TYPE_GENERIC; | 5631 return web::WEB_VIEW_DOCUMENT_TYPE_GENERIC; |
5638 } | 5632 } |
5639 | 5633 |
5640 - (NSString*)refererFromNavigationAction:(WKNavigationAction*)action { | 5634 - (NSString*)refererFromNavigationAction:(WKNavigationAction*)action { |
5641 return [action.request valueForHTTPHeaderField:@"Referer"]; | 5635 return [action.request valueForHTTPHeaderField:@"Referer"]; |
5642 } | 5636 } |
5643 | 5637 |
5644 @end | 5638 @end |
OLD | NEW |