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

Side by Side Diff: ios/web/web_state/ui/crw_wk_web_view_web_controller.mm

Issue 1806043004: [ios] Refactored dialogs suppression. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed review comments Created 4 years, 9 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
« no previous file with comments | « ios/web/web_state/ui/crw_web_controller_unittest.mm ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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_wk_web_view_web_controller.h" 5 #import "ios/web/web_state/ui/crw_wk_web_view_web_controller.h"
6 6
7 #import <WebKit/WebKit.h> 7 #import <WebKit/WebKit.h>
8 #include <stddef.h> 8 #include <stddef.h>
9 9
10 #include <utility> 10 #include <utility>
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after
450 - (void)evaluateUserJavaScript:(NSString*)script { 450 - (void)evaluateUserJavaScript:(NSString*)script {
451 [self setUserInteractionRegistered:YES]; 451 [self setUserInteractionRegistered:YES];
452 web::EvaluateJavaScript(_wkWebView, script, nil); 452 web::EvaluateJavaScript(_wkWebView, script, nil);
453 } 453 }
454 454
455 - (void)terminateNetworkActivity { 455 - (void)terminateNetworkActivity {
456 web::CertStore::GetInstance()->RemoveCertsForGroup(self.certGroupID); 456 web::CertStore::GetInstance()->RemoveCertsForGroup(self.certGroupID);
457 [super terminateNetworkActivity]; 457 [super terminateNetworkActivity];
458 } 458 }
459 459
460 - (void)setPageDialogOpenPolicy:(web::PageDialogOpenPolicy)policy {
461 // TODO(eugenebut): implement dialogs/windows suppression using
462 // WKNavigationDelegate methods where possible.
463 [super setPageDialogOpenPolicy:policy];
464 }
465
466 - (void)close { 460 - (void)close {
467 [_certVerificationController shutDown]; 461 [_certVerificationController shutDown];
468 [super close]; 462 [super close];
469 } 463 }
470 464
471 - (void)stopLoading { 465 - (void)stopLoading {
472 _stoppedWKNavigation.reset(_latestWKNavigation); 466 _stoppedWKNavigation.reset(_latestWKNavigation);
473 [super stopLoading]; 467 [super stopLoading];
474 } 468 }
475 469
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
690 - (void)abortWebLoad { 684 - (void)abortWebLoad {
691 [_wkWebView stopLoading]; 685 [_wkWebView stopLoading];
692 [_pendingNavigationInfo setCancelled:YES]; 686 [_pendingNavigationInfo setCancelled:YES];
693 _certVerificationErrors->Clear(); 687 _certVerificationErrors->Clear();
694 } 688 }
695 689
696 - (void)resetLoadState { 690 - (void)resetLoadState {
697 // Nothing to do. 691 // Nothing to do.
698 } 692 }
699 693
700 - (void)setSuppressDialogsWithHelperScript:(NSString*)script {
701 [self evaluateJavaScript:script stringResultHandler:nil];
702 }
703
704 - (void)applyWebViewScrollZoomScaleFromZoomState: 694 - (void)applyWebViewScrollZoomScaleFromZoomState:
705 (const web::PageZoomState&)zoomState { 695 (const web::PageZoomState&)zoomState {
706 // After rendering a web page, WKWebView keeps the |minimumZoomScale| and 696 // After rendering a web page, WKWebView keeps the |minimumZoomScale| and
707 // |maximumZoomScale| properties of its scroll view constant while adjusting 697 // |maximumZoomScale| properties of its scroll view constant while adjusting
708 // the |zoomScale| property accordingly. The maximum-scale or minimum-scale 698 // the |zoomScale| property accordingly. The maximum-scale or minimum-scale
709 // meta tags of a page may have changed since the state was recorded, so clamp 699 // meta tags of a page may have changed since the state was recorded, so clamp
710 // the zoom scale to the current range if necessary. 700 // the zoom scale to the current range if necessary.
711 DCHECK(zoomState.IsValid()); 701 DCHECK(zoomState.IsValid());
712 // Legacy-format scroll states cannot be applied to WKWebViews. 702 // Legacy-format scroll states cannot be applied to WKWebViews.
713 if (zoomState.IsLegacyFormat()) 703 if (zoomState.IsLegacyFormat())
(...skipping 494 matching lines...) Expand 10 before | Expand all | Expand 10 after
1208 - (void)handleHTTPAuthForChallenge:(NSURLAuthenticationChallenge*)challenge 1198 - (void)handleHTTPAuthForChallenge:(NSURLAuthenticationChallenge*)challenge
1209 completionHandler: 1199 completionHandler:
1210 (void (^)(NSURLSessionAuthChallengeDisposition, 1200 (void (^)(NSURLSessionAuthChallengeDisposition,
1211 NSURLCredential*))completionHandler { 1201 NSURLCredential*))completionHandler {
1212 NSURLProtectionSpace* space = challenge.protectionSpace; 1202 NSURLProtectionSpace* space = challenge.protectionSpace;
1213 DCHECK( 1203 DCHECK(
1214 [space.authenticationMethod isEqual:NSURLAuthenticationMethodHTTPBasic] || 1204 [space.authenticationMethod isEqual:NSURLAuthenticationMethodHTTPBasic] ||
1215 [space.authenticationMethod isEqual:NSURLAuthenticationMethodNTLM] || 1205 [space.authenticationMethod isEqual:NSURLAuthenticationMethodNTLM] ||
1216 [space.authenticationMethod isEqual:NSURLAuthenticationMethodHTTPDigest]); 1206 [space.authenticationMethod isEqual:NSURLAuthenticationMethodHTTPDigest]);
1217 1207
1208 if (self.suppressDialogs) {
1209 [self didSuppressDialog];
1210 completionHandler(NSURLSessionAuthChallengeRejectProtectionSpace, nil);
1211 return;
1212 }
1213
1218 SEL selector = @selector(webController: 1214 SEL selector = @selector(webController:
1219 runAuthDialogForProtectionSpace: 1215 runAuthDialogForProtectionSpace:
1220 proposedCredential: 1216 proposedCredential:
1221 completionHandler:); 1217 completionHandler:);
1222 if (![self.UIDelegate respondsToSelector:selector]) { 1218 if (![self.UIDelegate respondsToSelector:selector]) {
1223 // Embedder does not support HTTP Authentication. 1219 // Embedder does not support HTTP Authentication.
1224 completionHandler(NSURLSessionAuthChallengeRejectProtectionSpace, nil); 1220 completionHandler(NSURLSessionAuthChallengeRejectProtectionSpace, nil);
1225 return; 1221 return;
1226 } 1222 }
1227 1223
(...skipping 746 matching lines...) Expand 10 before | Expand all | Expand 10 after
1974 _certVerificationErrors->Clear(); 1970 _certVerificationErrors->Clear();
1975 [self webViewWebProcessDidCrash]; 1971 [self webViewWebProcessDidCrash];
1976 } 1972 }
1977 1973
1978 #pragma mark WKUIDelegate Methods 1974 #pragma mark WKUIDelegate Methods
1979 1975
1980 - (WKWebView*)webView:(WKWebView*)webView 1976 - (WKWebView*)webView:(WKWebView*)webView
1981 createWebViewWithConfiguration:(WKWebViewConfiguration*)configuration 1977 createWebViewWithConfiguration:(WKWebViewConfiguration*)configuration
1982 forNavigationAction:(WKNavigationAction*)navigationAction 1978 forNavigationAction:(WKNavigationAction*)navigationAction
1983 windowFeatures:(WKWindowFeatures*)windowFeatures { 1979 windowFeatures:(WKWindowFeatures*)windowFeatures {
1980 if (self.suppressDialogs) {
1981 [self didSuppressDialog];
1982 return nil;
1983 }
1984
1984 GURL requestURL = net::GURLWithNSURL(navigationAction.request.URL); 1985 GURL requestURL = net::GURLWithNSURL(navigationAction.request.URL);
1985 1986
1986 if (![self userIsInteracting]) { 1987 if (![self userIsInteracting]) {
1987 NSString* referer = GetRefererFromNavigationAction(navigationAction); 1988 NSString* referer = GetRefererFromNavigationAction(navigationAction);
1988 GURL referrerURL = 1989 GURL referrerURL =
1989 referer ? GURL(base::SysNSStringToUTF8(referer)) : [self currentURL]; 1990 referer ? GURL(base::SysNSStringToUTF8(referer)) : [self currentURL];
1990 if ([self shouldBlockPopupWithURL:requestURL sourceURL:referrerURL]) { 1991 if ([self shouldBlockPopupWithURL:requestURL sourceURL:referrerURL]) {
1991 [self didBlockPopupWithURL:requestURL sourceURL:referrerURL]; 1992 [self didBlockPopupWithURL:requestURL sourceURL:referrerURL];
1992 // Desktop Chrome does not return a window for the blocked popups; 1993 // Desktop Chrome does not return a window for the blocked popups;
1993 // follow the same approach by returning nil; 1994 // follow the same approach by returning nil;
(...skipping 15 matching lines...) Expand all
2009 - (void)webViewDidClose:(WKWebView*)webView { 2010 - (void)webViewDidClose:(WKWebView*)webView {
2010 if (self.sessionController.openedByDOM) { 2011 if (self.sessionController.openedByDOM) {
2011 [self.delegate webPageOrderedClose]; 2012 [self.delegate webPageOrderedClose];
2012 } 2013 }
2013 } 2014 }
2014 2015
2015 - (void)webView:(WKWebView*)webView 2016 - (void)webView:(WKWebView*)webView
2016 runJavaScriptAlertPanelWithMessage:(NSString*)message 2017 runJavaScriptAlertPanelWithMessage:(NSString*)message
2017 initiatedByFrame:(WKFrameInfo*)frame 2018 initiatedByFrame:(WKFrameInfo*)frame
2018 completionHandler:(void(^)())completionHandler { 2019 completionHandler:(void(^)())completionHandler {
2020 if (self.suppressDialogs) {
2021 [self didSuppressDialog];
2022 completionHandler();
2023 return;
2024 }
2025
2019 SEL alertSelector = @selector(webController: 2026 SEL alertSelector = @selector(webController:
2020 runJavaScriptAlertPanelWithMessage: 2027 runJavaScriptAlertPanelWithMessage:
2021 requestURL: 2028 requestURL:
2022 completionHandler:); 2029 completionHandler:);
2023 if ([self.UIDelegate respondsToSelector:alertSelector]) { 2030 if ([self.UIDelegate respondsToSelector:alertSelector]) {
2024 [self.UIDelegate webController:self 2031 [self.UIDelegate webController:self
2025 runJavaScriptAlertPanelWithMessage:message 2032 runJavaScriptAlertPanelWithMessage:message
2026 requestURL:net::GURLWithNSURL(frame.request.URL) 2033 requestURL:net::GURLWithNSURL(frame.request.URL)
2027 completionHandler:completionHandler]; 2034 completionHandler:completionHandler];
2028 } else if (completionHandler) { 2035 } else if (completionHandler) {
2029 completionHandler(); 2036 completionHandler();
2030 } 2037 }
2031 } 2038 }
2032 2039
2033 - (void)webView:(WKWebView*)webView 2040 - (void)webView:(WKWebView*)webView
2034 runJavaScriptConfirmPanelWithMessage:(NSString*)message 2041 runJavaScriptConfirmPanelWithMessage:(NSString*)message
2035 initiatedByFrame:(WKFrameInfo*)frame 2042 initiatedByFrame:(WKFrameInfo*)frame
2036 completionHandler: 2043 completionHandler:
2037 (void (^)(BOOL result))completionHandler { 2044 (void (^)(BOOL result))completionHandler {
2045 if (self.suppressDialogs) {
2046 [self didSuppressDialog];
2047 completionHandler(NO);
2048 return;
2049 }
2050
2038 SEL confirmationSelector = @selector(webController: 2051 SEL confirmationSelector = @selector(webController:
2039 runJavaScriptConfirmPanelWithMessage: 2052 runJavaScriptConfirmPanelWithMessage:
2040 requestURL: 2053 requestURL:
2041 completionHandler:); 2054 completionHandler:);
2042 if ([self.UIDelegate respondsToSelector:confirmationSelector]) { 2055 if ([self.UIDelegate respondsToSelector:confirmationSelector]) {
2043 [self.UIDelegate webController:self 2056 [self.UIDelegate webController:self
2044 runJavaScriptConfirmPanelWithMessage:message 2057 runJavaScriptConfirmPanelWithMessage:message
2045 requestURL: 2058 requestURL:
2046 net::GURLWithNSURL(frame.request.URL) 2059 net::GURLWithNSURL(frame.request.URL)
2047 completionHandler:completionHandler]; 2060 completionHandler:completionHandler];
2048 } else if (completionHandler) { 2061 } else if (completionHandler) {
2049 completionHandler(NO); 2062 completionHandler(NO);
2050 } 2063 }
2051 } 2064 }
2052 2065
2053 - (void)webView:(WKWebView*)webView 2066 - (void)webView:(WKWebView*)webView
2054 runJavaScriptTextInputPanelWithPrompt:(NSString*)prompt 2067 runJavaScriptTextInputPanelWithPrompt:(NSString*)prompt
2055 defaultText:(NSString*)defaultText 2068 defaultText:(NSString*)defaultText
2056 initiatedByFrame:(WKFrameInfo*)frame 2069 initiatedByFrame:(WKFrameInfo*)frame
2057 completionHandler: 2070 completionHandler:
2058 (void (^)(NSString *result))completionHandler { 2071 (void (^)(NSString *result))completionHandler {
2072 if (self.suppressDialogs) {
2073 [self didSuppressDialog];
2074 completionHandler(nil);
2075 return;
2076 }
2077
2059 SEL textInputSelector = @selector(webController: 2078 SEL textInputSelector = @selector(webController:
2060 runJavaScriptTextInputPanelWithPrompt: 2079 runJavaScriptTextInputPanelWithPrompt:
2061 defaultText: 2080 defaultText:
2062 requestURL: 2081 requestURL:
2063 completionHandler:); 2082 completionHandler:);
2064 if ([self.UIDelegate respondsToSelector:textInputSelector]) { 2083 if ([self.UIDelegate respondsToSelector:textInputSelector]) {
2065 GURL requestURL = net::GURLWithNSURL(frame.request.URL); 2084 GURL requestURL = net::GURLWithNSURL(frame.request.URL);
2066 [self.UIDelegate webController:self 2085 [self.UIDelegate webController:self
2067 runJavaScriptTextInputPanelWithPrompt:prompt 2086 runJavaScriptTextInputPanelWithPrompt:prompt
2068 defaultText:defaultText 2087 defaultText:defaultText
2069 requestURL:requestURL 2088 requestURL:requestURL
2070 completionHandler:completionHandler]; 2089 completionHandler:completionHandler];
2071 } else if (completionHandler) { 2090 } else if (completionHandler) {
2072 completionHandler(nil); 2091 completionHandler(nil);
2073 } 2092 }
2074 } 2093 }
2075 2094
2076 @end 2095 @end
OLDNEW
« no previous file with comments | « ios/web/web_state/ui/crw_web_controller_unittest.mm ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698