Add SPI to show a safe browsing warning
authorachristensen@apple.com <achristensen@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 14 Nov 2018 19:47:00 +0000 (19:47 +0000)
committerachristensen@apple.com <achristensen@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 14 Nov 2018 19:47:00 +0000 (19:47 +0000)
commitfb51d7624730b437388d390c322c5e1ac1dc2af5
treee7379f48d70959ab3b8c5b13edd710e3938ca97b
parent93a9ddf8b3890faf76bfa2b8e8505910e68e8c4f
Add SPI to show a safe browsing warning
https://bugs.webkit.org/show_bug.cgi?id=191604

Reviewed by Andy Estes.

Source/WebKit:

Safari has a case where it shows safe browsing warnings for a reason other than being told to by the SafeBrowsing framework.
Because safe browsing is moving to WebKit, we will have Safari call this WebKit SPI in that case.
The warning looks a little different, so I had to change the structure of a SafeBrowsingResult and the location of the string processing,
but the existing behavior is the same as verified by existing unit tests.  I added a unit test to verify behavior of the new SPI.

* SourcesCocoa.txt:
* UIProcess/API/Cocoa/WKWebView.mm:
(-[WKWebView _showSafeBrowsingWarningWithTitle:warning:details:completionHandler:]):
(-[WKWebView _showSafeBrowsingWarning:completionHandler:]):
(+[WKWebView _confirmMalwareSentinel]):
(+[WKWebView _visitUnsafeWebsiteSentinel]):
* UIProcess/API/Cocoa/WKWebViewInternal.h:
* UIProcess/API/Cocoa/WKWebViewPrivate.h:
* UIProcess/Cocoa/SafeBrowsingResultCocoa.mm: Removed.
* UIProcess/Cocoa/SafeBrowsingWarningCocoa.mm: Copied from Source/WebKit/UIProcess/Cocoa/SafeBrowsingResultCocoa.mm.
(WebKit::malwareDetailsBase):
(WebKit::learnMoreURL):
(WebKit::reportAnErrorBase):
(WebKit::localizedProvider):
(WebKit::SafeBrowsingWarning::visitUnsafeWebsiteSentinel):
(WebKit::SafeBrowsingWarning::confirmMalwareSentinel):
(WebKit::replace):
(WebKit::addLinkAndReplace):
(WebKit::reportAnErrorURL):
(WebKit::malwareDetailsURL):
(WebKit::safeBrowsingTitleText):
(WebKit::safeBrowsingWarningText):
(WebKit::safeBrowsingDetailsText):
(WebKit::SafeBrowsingWarning::SafeBrowsingWarning):
(WebKit::learnMore): Deleted.
(WebKit::SafeBrowsingResult::SafeBrowsingResult): Deleted.
* UIProcess/Cocoa/WKSafeBrowsingWarning.h:
* UIProcess/Cocoa/WKSafeBrowsingWarning.mm:
(-[WKSafeBrowsingWarning initWithFrame:safeBrowsingWarning:completionHandler:]):
(-[WKSafeBrowsingWarning addContent]):
(-[WKSafeBrowsingWarning showDetailsClicked]):
(-[WKSafeBrowsingWarning clickedOnLink:]):
(-[WKSafeBrowsingTextView initWithAttributedString:forWarning:]):
(confirmMalwareSentinel): Deleted.
(visitUnsafeWebsiteSentinel): Deleted.
(replace): Deleted.
(addLinkAndReplace): Deleted.
(reportAnErrorURL): Deleted.
(malwareDetailsURL): Deleted.
(titleText): Deleted.
(warningText): Deleted.
(detailsText): Deleted.
(-[WKSafeBrowsingWarning initWithFrame:safeBrowsingResult:completionHandler:]): Deleted.
* UIProcess/Cocoa/WebPageProxyCocoa.mm:
(WebKit::WebPageProxy::beginSafeBrowsingCheck):
* UIProcess/Cocoa/WebViewImpl.h:
* UIProcess/Cocoa/WebViewImpl.mm:
(WebKit::WebViewImpl::showSafeBrowsingWarning):
* UIProcess/PageClient.h:
(WebKit::PageClient::showSafeBrowsingWarning):
* UIProcess/SafeBrowsingResult.h: Removed.
* UIProcess/SafeBrowsingWarning.h: Copied from Source/WebKit/UIProcess/SafeBrowsingResult.h.
(WebKit::SafeBrowsingWarning::create):
(WebKit::SafeBrowsingWarning::title const):
(WebKit::SafeBrowsingWarning::warning const):
(WebKit::SafeBrowsingWarning::details const):
(WebKit::SafeBrowsingResult::create): Deleted.
(WebKit::SafeBrowsingResult::isPhishing const): Deleted.
(WebKit::SafeBrowsingResult::isMalware const): Deleted.
(WebKit::SafeBrowsingResult::isUnwantedSoftware const): Deleted.
(WebKit::SafeBrowsingResult::url const): Deleted.
(WebKit::SafeBrowsingResult::provider const): Deleted.
(WebKit::SafeBrowsingResult::localizedProviderName const): Deleted.
(WebKit::SafeBrowsingResult::malwareDetailsURLBase const): Deleted.
(WebKit::SafeBrowsingResult::reportAnErrorURLBase const): Deleted.
(WebKit::SafeBrowsingResult::learnMoreURL const): Deleted.
(WebKit::SafeBrowsingResult::needsSafeBrowsingWarning const): Deleted.
(): Deleted.
* UIProcess/WebFramePolicyListenerProxy.cpp:
(WebKit::WebFramePolicyListenerProxy::didReceiveSafeBrowsingResults):
(WebKit::WebFramePolicyListenerProxy::use):
* UIProcess/WebFramePolicyListenerProxy.h:
* UIProcess/WebFrameProxy.cpp:
(WebKit::WebFrameProxy::WebFrameProxy):
(WebKit::WebFrameProxy::setUpPolicyListenerProxy):
(WebKit::WebFrameProxy::didHandleContentFilterUnblockNavigation):
* UIProcess/WebFrameProxy.h:
(WebKit::WebFrameProxy::create):
(WebKit::WebFrameProxy::page const):
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::swapToWebProcess):
(WebKit::WebPageProxy::didCreateMainFrame):
(WebKit::WebPageProxy::didCreateSubframe):
(WebKit::WebPageProxy::decidePolicyForNavigationAction):
(WebKit::WebPageProxy::decidePolicyForNewWindowAction):
(WebKit::WebPageProxy::decidePolicyForResponse):
* UIProcess/ios/PageClientImplIOS.h:
* UIProcess/ios/PageClientImplIOS.mm:
(WebKit::PageClientImpl::showSafeBrowsingWarning):
* UIProcess/mac/PageClientImplMac.h:
* UIProcess/mac/PageClientImplMac.mm:
(WebKit::PageClientImpl::showSafeBrowsingWarning):
* UIProcess/mac/WebDataListSuggestionsDropdownMac.mm:
* WebKit.xcodeproj/project.pbxproj:

Tools:

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

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@238190 268f45cc-cd09-0410-ab3c-d52691b4dbfc
26 files changed:
Source/WebKit/ChangeLog
Source/WebKit/SourcesCocoa.txt
Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm
Source/WebKit/UIProcess/API/Cocoa/WKWebViewInternal.h
Source/WebKit/UIProcess/API/Cocoa/WKWebViewPrivate.h
Source/WebKit/UIProcess/Cocoa/SafeBrowsingResultCocoa.mm [deleted file]
Source/WebKit/UIProcess/Cocoa/SafeBrowsingWarningCocoa.mm [new file with mode: 0644]
Source/WebKit/UIProcess/Cocoa/WKSafeBrowsingWarning.h
Source/WebKit/UIProcess/Cocoa/WKSafeBrowsingWarning.mm
Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm
Source/WebKit/UIProcess/Cocoa/WebViewImpl.h
Source/WebKit/UIProcess/Cocoa/WebViewImpl.mm
Source/WebKit/UIProcess/PageClient.h
Source/WebKit/UIProcess/SafeBrowsingWarning.h [moved from Source/WebKit/UIProcess/SafeBrowsingResult.h with 55% similarity]
Source/WebKit/UIProcess/WebFramePolicyListenerProxy.cpp
Source/WebKit/UIProcess/WebFramePolicyListenerProxy.h
Source/WebKit/UIProcess/WebFrameProxy.cpp
Source/WebKit/UIProcess/WebFrameProxy.h
Source/WebKit/UIProcess/WebPageProxy.cpp
Source/WebKit/UIProcess/ios/PageClientImplIOS.h
Source/WebKit/UIProcess/ios/PageClientImplIOS.mm
Source/WebKit/UIProcess/mac/PageClientImplMac.h
Source/WebKit/UIProcess/mac/PageClientImplMac.mm
Source/WebKit/WebKit.xcodeproj/project.pbxproj
Tools/ChangeLog
Tools/TestWebKitAPI/Tests/WebKitCocoa/SafeBrowsing.mm