[iOS] Implement safe browsing in WebKit
authorachristensen@apple.com <achristensen@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 13 Nov 2018 01:08:07 +0000 (01:08 +0000)
committerachristensen@apple.com <achristensen@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 13 Nov 2018 01:08:07 +0000 (01:08 +0000)
commit091bfc10c09a2f0b72ecc58bb197ee0d554442cd
tree7e77ddc2914b36a88028c7ca11ca211c2c206721
parent339c734a42cbefe495ecca8d5b7692206d251578
[iOS] Implement safe browsing in WebKit
https://bugs.webkit.org/show_bug.cgi?id=191441

Reviewed by Tim Horton.

Source/WebKit:

In r237863 I implemented this for Mac.  This refines the UI and implements it for iOS.

* Shared/WebPreferences.yaml:
* Shared/WebPreferencesDefaultValues.h:
* UIProcess/API/C/mac/WKContextPrivateMac.mm:
(WKContextHandlesSafeBrowsing):
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _showSafeBrowsingWarning:completionHandler:]):
(-[WKWebView _clearSafeBrowsingWarning]):
(-[WKWebView layoutSubviews]):
(-[WKWebView setFrameSize:]):
(+[WKWebView _handlesSafeBrowsing]):
(-[WKWebView _safeBrowsingWarningForTesting]):
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/Cocoa/PageClientImplCocoa.h:
* UIProcess/Cocoa/PageClientImplCocoa.mm:
(WebKit::PageClientImplCocoa::allocFileWrapperInstance const):
(WebKit::PageClientImplCocoa::serializableFileWrapperClasses const):
* UIProcess/Cocoa/WKSafeBrowsingWarning.h:
* UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
(confirmMalwareSentinel):
(visitUnsafeWebsiteSentinel):
(colorForItem):
(addLinkAndReplace):
(-[WKSafeBrowsingExclamationPoint drawRect:]):
(makeButton):
(makeTitleLabel):
(setBackground):
(-[WKSafeBrowsingWarning initWithFrame:safeBrowsingResult:completionHandler:]):
(-[WKSafeBrowsingWarning addContent]):
(-[WKSafeBrowsingWarning showDetailsClicked]):
(-[WKSafeBrowsingWarning layoutText]):
(-[WKSafeBrowsingWarning textView:clickedOnLink:atIndex:]):
(-[WKSafeBrowsingWarning layout]):
(-[WKSafeBrowsingWarning layoutSubviews]):
(-[WKSafeBrowsingWarning textView:shouldInteractWithURL:inRange:interaction:]):
(-[WKSafeBrowsingWarning didMoveToWindow]):
(-[WKSafeBrowsingWarning clickedOnLink:]):
(-[WKSafeBrowsingTextView initWithAttributedString:forWarning:]):
(-[WKSafeBrowsingTextView intrinsicContentSize]):
(colorNamed): Deleted.
(+[WKSafeBrowsingTextView viewWithAttributedString:linkTarget:]): Deleted.
(+[WKSafeBrowsingTextView viewWithString:]): Deleted.
(-[WKSafeBrowsingTextView clickedOnLink:atIndex:]): Deleted.
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::isViewWindowActive):
(WebKit::PageClientImpl::isViewFocused):
(WebKit::PageClientImpl::isViewVisible):
(WebKit::PageClientImpl::isViewInWindow):
(WebKit::PageClientImpl::decidePolicyForGeolocationPermissionRequest):
(WebKit::PageClientImpl::enterAcceleratedCompositingMode):
(WebKit::PageClientImpl::showSafeBrowsingWarning):
(WebKit::PageClientImpl::clearSafeBrowsingWarning):
(WebKit::PageClientImpl::mimeTypesWithCustomContentProviders):
(WebKit::PageClientImpl::navigationGestureDidBegin):
(WebKit::PageClientImpl::navigationGestureWillEnd):
(WebKit::PageClientImpl::navigationGestureDidEnd):
(WebKit::PageClientImpl::willRecordNavigationSnapshot):
(WebKit::PageClientImpl::didRemoveNavigationGestureSnapshot):
(WebKit::PageClientImpl::requestPasswordForQuickLookDocument):
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::showShareSheet):
(WebKit::PageClientImpl::navigationGestureDidBegin):
(WebKit::PageClientImpl::navigationGestureWillEnd):
(WebKit::PageClientImpl::navigationGestureDidEnd):
(WebKit::PageClientImpl::willRecordNavigationSnapshot):
(WebKit::PageClientImpl::didRemoveNavigationGestureSnapshot):

Tools:

* TestWebKitAPI/Tests/WebKitCocoa/SafeBrowsing.mm:
(checkTitleAndClick):
(TEST):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@238115 268f45cc-cd09-0410-ab3c-d52691b4dbfc
14 files changed:
Source/WebKit/ChangeLog
Source/WebKit/Shared/WebPreferences.yaml
Source/WebKit/Shared/WebPreferencesDefaultValues.h
Source/WebKit/UIProcess/API/C/mac/WKContextPrivateMac.mm
Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h
Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.h
Source/WebKit/UIProcess/Cocoa/PageClientImplCocoa.mm
Source/WebKit/UIProcess/Cocoa/WKSafeBrowsingWarning.h
Source/WebKit/UIProcess/Cocoa/WKSafeBrowsingWarning.mm
Source/WebKit/UIProcess/ios/PageClientImplIOS.mm
Source/WebKit/UIProcess/mac/PageClientImplMac.mm
Tools/ChangeLog
Tools/TestWebKitAPI/Tests/WebKitCocoa/SafeBrowsing.mm