Changeset 234998 in webkit
- Timestamp:
- Aug 17, 2018 4:24:37 PM (6 years ago)
- Location:
- trunk/Source
- Files:
-
- 1 added
- 27 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r234995 r234998 1 2018-08-17 Alex Christensen <achristensen@webkit.org> 2 3 Add some plumbing for safe browsing 4 https://bugs.webkit.org/show_bug.cgi?id=188709 5 6 Reviewed by Tim Horton. 7 8 No change in behavior. Just passing around unused booleans. 9 We will need this for a way to load a page even though safe browsing says it's unsafe. 10 11 * WebCore.xcodeproj/project.pbxproj: 12 * loader/EmptyClients.cpp: 13 (WebCore::EmptyFrameLoaderClient::dispatchDecidePolicyForNavigationAction): 14 * loader/EmptyFrameLoaderClient.h: 15 * loader/FrameLoadRequest.h: 16 (WebCore::FrameLoadRequest::setShouldSkipSafeBrowsingCheck): 17 (WebCore::FrameLoadRequest::shouldSkipSafeBrowsingCheck): 18 * loader/FrameLoader.cpp: 19 (WebCore::FrameLoader::loadArchive): 20 (WebCore::FrameLoader::loadURL): 21 (WebCore::FrameLoader::load): 22 (WebCore::FrameLoader::loadWithNavigationAction): 23 (WebCore::FrameLoader::loadWithDocumentLoader): 24 (WebCore::FrameLoader::shouldReloadToHandleUnreachableURL): 25 (WebCore::FrameLoader::reloadWithOverrideEncoding): 26 (WebCore::FrameLoader::reload): 27 (WebCore::FrameLoader::loadPostRequest): 28 (WebCore::FrameLoader::continueLoadAfterNewWindowPolicy): 29 (WebCore::FrameLoader::loadDifferentDocumentItem): 30 * loader/FrameLoader.h: 31 (WebCore::FrameLoader::loadWithDocumentLoader): 32 (WebCore::FrameLoader::loadWithNavigationAction): 33 * loader/FrameLoaderClient.h: 34 * loader/PolicyChecker.cpp: 35 (WebCore::PolicyChecker::checkNavigationPolicy): 36 * loader/PolicyChecker.h: 37 * loader/ShouldSkipSafeBrowsingCheck.h: Added. 38 1 39 2018-08-16 Ryosuke Niwa <rniwa@webkit.org> 2 40 -
trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj
r234898 r234998 1840 1840 5C6E65431D5CEFBF00F7862E /* URLParser.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C6E65401D5CEDC900F7862E /* URLParser.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1841 1841 5C7C88D81D0F1F4A009D2F6D /* SocketProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C7C88D71D0F1F2B009D2F6D /* SocketProvider.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1842 5C8C600921276B870082F88F /* ShouldSkipSafeBrowsingCheck.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C8C600721276B0F0082F88F /* ShouldSkipSafeBrowsingCheck.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1842 1843 5CA1DEC61F71F1C700E71BD3 /* HTTPHeaderField.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CA1DEC41F71E68700E71BD3 /* HTTPHeaderField.h */; settings = {ATTRIBUTES = (Private, ); }; }; 1843 1844 5CB37FFF1C62D2A100F20188 /* ScrollAnimatorMock.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CB37FFD1C62D27800F20188 /* ScrollAnimatorMock.h */; }; … … 8674 8675 5C6E65401D5CEDC900F7862E /* URLParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = URLParser.h; sourceTree = "<group>"; }; 8675 8676 5C7C88D71D0F1F2B009D2F6D /* SocketProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SocketProvider.h; sourceTree = "<group>"; }; 8677 5C8C600721276B0F0082F88F /* ShouldSkipSafeBrowsingCheck.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShouldSkipSafeBrowsingCheck.h; sourceTree = "<group>"; }; 8676 8678 5C97A3361F5F7A6500105207 /* RectEdges.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = RectEdges.h; sourceTree = "<group>"; }; 8677 8679 5C9B860B1C21E3C600110F36 /* NetworkLoadMetrics.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = NetworkLoadMetrics.mm; sourceTree = "<group>"; }; … … 24403 24405 286E4DCB2021048800315238 /* ServerTiming.cpp */, 24404 24406 286E4DCC2021048800315238 /* ServerTiming.h */, 24407 5C8C600721276B0F0082F88F /* ShouldSkipSafeBrowsingCheck.h */, 24405 24408 8362E8BF20CEF9CB00245886 /* ShouldTreatAsContinuingLoad.h */, 24406 24409 51327D5F11A33A2B004F9D65 /* SinkDocument.cpp */, … … 30299 30302 834DFAD01F7DAE5D00C2725B /* SharedStringHash.h in Headers */, 30300 30303 93309EA3099EB78C0056E581 /* SharedTimer.h in Headers */, 30304 5C8C600921276B870082F88F /* ShouldSkipSafeBrowsingCheck.h in Headers */, 30301 30305 8362E8C120CEF9CB00245886 /* ShouldTreatAsContinuingLoad.h in Headers */, 30302 30306 E48944A3180B57D800F165D8 /* SimpleLineLayout.h in Headers */, -
trunk/Source/WebCore/loader/EmptyClients.cpp
r232815 r234998 447 447 } 448 448 449 void EmptyFrameLoaderClient::dispatchDecidePolicyForNavigationAction(const NavigationAction&, const ResourceRequest&, const ResourceResponse&, FormState*, PolicyDecisionMode, FramePolicyFunction&&)449 void EmptyFrameLoaderClient::dispatchDecidePolicyForNavigationAction(const NavigationAction&, const ResourceRequest&, const ResourceResponse&, FormState*, PolicyDecisionMode, ShouldSkipSafeBrowsingCheck, FramePolicyFunction&&) 450 450 { 451 451 } -
trunk/Source/WebCore/loader/EmptyFrameLoaderClient.h
r232814 r234998 96 96 void dispatchDecidePolicyForResponse(const ResourceResponse&, const ResourceRequest&, FramePolicyFunction&&) final { } 97 97 void dispatchDecidePolicyForNewWindowAction(const NavigationAction&, const ResourceRequest&, FormState*, const String&, FramePolicyFunction&&) final; 98 void dispatchDecidePolicyForNavigationAction(const NavigationAction&, const ResourceRequest&, const ResourceResponse& redirectResponse, FormState*, PolicyDecisionMode, FramePolicyFunction&&) final;98 void dispatchDecidePolicyForNavigationAction(const NavigationAction&, const ResourceRequest&, const ResourceResponse& redirectResponse, FormState*, PolicyDecisionMode, ShouldSkipSafeBrowsingCheck, FramePolicyFunction&&) final; 99 99 void cancelPolicyCheck() final { } 100 100 -
trunk/Source/WebCore/loader/FrameLoadRequest.h
r232730 r234998 28 28 #include "FrameLoaderTypes.h" 29 29 #include "ResourceRequest.h" 30 #include "ShouldSkipSafeBrowsingCheck.h" 30 31 #include "SubstituteData.h" 31 32 #include <wtf/Forward.h> … … 64 65 bool shouldTreatAsContinuingLoad() const { return m_shouldTreatAsContinuingLoad; } 65 66 67 void setShouldSkipSafeBrowsingCheck(ShouldSkipSafeBrowsingCheck skip) { m_shouldSkipSafeBrowsingCheck = skip; } 68 ShouldSkipSafeBrowsingCheck shouldSkipSafeBrowsingCheck() { return m_shouldSkipSafeBrowsingCheck; } 69 66 70 const SubstituteData& substituteData() const { return m_substituteData; } 67 71 void setSubstituteData(const SubstituteData& data) { m_substituteData = data; } … … 111 115 bool m_isCrossOriginWindowOpenNavigation { false }; 112 116 SystemPreviewInfo m_systemPreviewInfo; 117 ShouldSkipSafeBrowsingCheck m_shouldSkipSafeBrowsingCheck { ShouldSkipSafeBrowsingCheck::No }; 113 118 }; 114 119 -
trunk/Source/WebCore/loader/FrameLoader.cpp
r234995 r234998 1004 1004 auto documentLoader = m_client.createDocumentLoader(request, substituteData); 1005 1005 documentLoader->setArchive(WTFMove(archive)); 1006 load(documentLoader. ptr());1006 load(documentLoader.get(), ShouldSkipSafeBrowsingCheck::No); 1007 1007 } 1008 1008 … … 1408 1408 request.setSystemPreviewRect(frameLoadRequest.systemPreviewRect()); 1409 1409 #endif 1410 loadWithNavigationAction(request, action, lockHistory, newLoadType, WTFMove(formState), allowNavigationToInvalidURL, [this, isRedirect, sameURL, newLoadType, protectedFrame = makeRef(m_frame), completionHandler = completionHandlerCaller.release()] () mutable {1410 loadWithNavigationAction(request, action, lockHistory, newLoadType, WTFMove(formState), allowNavigationToInvalidURL, frameLoadRequest.shouldSkipSafeBrowsingCheck(), [this, isRedirect, sameURL, newLoadType, protectedFrame = makeRef(m_frame), completionHandler = completionHandlerCaller.release()] () mutable { 1411 1411 if (isRedirect) { 1412 1412 m_quickRedirectComing = false; … … 1470 1470 1471 1471 SetForScope<bool> currentLoadShouldBeTreatedAsContinuingLoadGuard(m_currentLoadShouldBeTreatedAsContinuingLoad, request.shouldTreatAsContinuingLoad()); 1472 load(loader. ptr());1473 } 1474 1475 void FrameLoader::loadWithNavigationAction(const ResourceRequest& request, const NavigationAction& action, LockHistory lockHistory, FrameLoadType type, RefPtr<FormState>&& formState, AllowNavigationToInvalidURL allowNavigationToInvalidURL, CompletionHandler<void()>&& completionHandler)1472 load(loader.get(), request.shouldSkipSafeBrowsingCheck()); 1473 } 1474 1475 void FrameLoader::loadWithNavigationAction(const ResourceRequest& request, const NavigationAction& action, LockHistory lockHistory, FrameLoadType type, RefPtr<FormState>&& formState, AllowNavigationToInvalidURL allowNavigationToInvalidURL, ShouldSkipSafeBrowsingCheck shouldSkipSafeBrowsingCheck, CompletionHandler<void()>&& completionHandler) 1476 1476 { 1477 1477 Ref<DocumentLoader> loader = m_client.createDocumentLoader(request, defaultSubstituteDataForURL(request.url())); … … 1485 1485 loader->setOverrideEncoding(m_documentLoader->overrideEncoding()); 1486 1486 1487 loadWithDocumentLoader(loader.ptr(), type, WTFMove(formState), allowNavigationToInvalidURL, ShouldTreatAsContinuingLoad::No, WTFMove(completionHandler));1488 } 1489 1490 void FrameLoader::load(DocumentLoader * newDocumentLoader)1491 { 1492 ResourceRequest& r = newDocumentLoader ->request();1487 loadWithDocumentLoader(loader.ptr(), type, WTFMove(formState), allowNavigationToInvalidURL, ShouldTreatAsContinuingLoad::No, shouldSkipSafeBrowsingCheck, WTFMove(completionHandler)); 1488 } 1489 1490 void FrameLoader::load(DocumentLoader& newDocumentLoader, ShouldSkipSafeBrowsingCheck shouldSkipSafeBrowsingCheck) 1491 { 1492 ResourceRequest& r = newDocumentLoader.request(); 1493 1493 addExtraFieldsToMainResourceRequest(r); 1494 1494 FrameLoadType type; 1495 1495 1496 if (shouldTreatURLAsSameAsCurrent(newDocumentLoader ->originalRequest().url())) {1496 if (shouldTreatURLAsSameAsCurrent(newDocumentLoader.originalRequest().url())) { 1497 1497 r.setCachePolicy(ResourceRequestCachePolicy::ReloadIgnoringCacheData); 1498 1498 type = FrameLoadType::Same; 1499 } else if (shouldTreatURLAsSameAsCurrent(newDocumentLoader ->unreachableURL()) && isReload(m_loadType))1499 } else if (shouldTreatURLAsSameAsCurrent(newDocumentLoader.unreachableURL()) && isReload(m_loadType)) 1500 1500 type = m_loadType; 1501 else if (m_loadType == FrameLoadType::RedirectWithLockedBackForwardList && !newDocumentLoader ->unreachableURL().isEmpty() && newDocumentLoader->substituteData().isValid())1501 else if (m_loadType == FrameLoadType::RedirectWithLockedBackForwardList && !newDocumentLoader.unreachableURL().isEmpty() && newDocumentLoader.substituteData().isValid()) 1502 1502 type = FrameLoadType::RedirectWithLockedBackForwardList; 1503 1503 else … … 1505 1505 1506 1506 if (m_documentLoader) 1507 newDocumentLoader ->setOverrideEncoding(m_documentLoader->overrideEncoding());1507 newDocumentLoader.setOverrideEncoding(m_documentLoader->overrideEncoding()); 1508 1508 1509 1509 // When we loading alternate content for an unreachable URL that we're … … 1515 1515 // "load without affecting history" ? 1516 1516 if (shouldReloadToHandleUnreachableURL(newDocumentLoader)) { 1517 // shouldReloadToHandleUnreachableURL ()returns true only when the original load type is back-forward.1517 // shouldReloadToHandleUnreachableURL returns true only when the original load type is back-forward. 1518 1518 // In this case we should save the document state now. Otherwise the state can be lost because load type is 1519 1519 // changed and updateForBackForwardNavigation() will not be called when loading is committed. … … 1524 1524 } 1525 1525 1526 loadWithDocumentLoader( newDocumentLoader, type, { }, AllowNavigationToInvalidURL::Yes, ShouldTreatAsContinuingLoad::No, [] { });1527 } 1528 1529 void FrameLoader::loadWithDocumentLoader(DocumentLoader* loader, FrameLoadType type, RefPtr<FormState>&& formState, AllowNavigationToInvalidURL allowNavigationToInvalidURL, ShouldTreatAsContinuingLoad, CompletionHandler<void()>&& completionHandler)1526 loadWithDocumentLoader(&newDocumentLoader, type, nullptr, AllowNavigationToInvalidURL::Yes, ShouldTreatAsContinuingLoad::No, shouldSkipSafeBrowsingCheck); 1527 } 1528 1529 void FrameLoader::loadWithDocumentLoader(DocumentLoader* loader, FrameLoadType type, RefPtr<FormState>&& formState, AllowNavigationToInvalidURL allowNavigationToInvalidURL, ShouldTreatAsContinuingLoad, ShouldSkipSafeBrowsingCheck shouldSkipSafeBrowsingCheck, CompletionHandler<void()>&& completionHandler) 1530 1530 { 1531 1531 // Retain because dispatchBeforeLoadEvent may release the last reference to it. … … 1606 1606 continueLoadAfterNavigationPolicy(request, formState.get(), shouldContinue, allowNavigationToInvalidURL); 1607 1607 completionHandler(); 1608 } );1608 }, PolicyDecisionMode::Asynchronous, shouldSkipSafeBrowsingCheck); 1609 1609 } 1610 1610 … … 1671 1671 } 1672 1672 1673 bool FrameLoader::shouldReloadToHandleUnreachableURL(DocumentLoader *docLoader)1674 { 1675 URL unreachableURL = docLoader ->unreachableURL();1673 bool FrameLoader::shouldReloadToHandleUnreachableURL(DocumentLoader& docLoader) 1674 { 1675 URL unreachableURL = docLoader.unreachableURL(); 1676 1676 1677 1677 if (unreachableURL.isEmpty()) … … 1713 1713 loader->setOverrideEncoding(encoding); 1714 1714 1715 loadWithDocumentLoader(loader.ptr(), FrameLoadType::Reload, { }, AllowNavigationToInvalidURL::Yes, ShouldTreatAsContinuingLoad::No , [] { });1715 loadWithDocumentLoader(loader.ptr(), FrameLoadType::Reload, { }, AllowNavigationToInvalidURL::Yes, ShouldTreatAsContinuingLoad::No); 1716 1716 } 1717 1717 … … 1760 1760 }; 1761 1761 1762 loadWithDocumentLoader(loader.ptr(), frameLoadTypeForReloadOptions(options), { }, AllowNavigationToInvalidURL::Yes, ShouldTreatAsContinuingLoad::No , [] { });1762 loadWithDocumentLoader(loader.ptr(), frameLoadTypeForReloadOptions(options), { }, AllowNavigationToInvalidURL::Yes, ShouldTreatAsContinuingLoad::No); 1763 1763 } 1764 1764 … … 2919 2919 // The search for a target frame is done earlier in the case of form submission. 2920 2920 if (auto* targetFrame = formState ? nullptr : findFrameForNavigation(frameName)) { 2921 targetFrame->loader().loadWithNavigationAction(workingResourceRequest, action, lockHistory, loadType, WTFMove(formState), allowNavigationToInvalidURL, WTFMove(completionHandler));2921 targetFrame->loader().loadWithNavigationAction(workingResourceRequest, action, lockHistory, loadType, WTFMove(formState), allowNavigationToInvalidURL, ShouldSkipSafeBrowsingCheck::No, WTFMove(completionHandler)); 2922 2922 return; 2923 2923 } … … 2932 2932 // must grab this now, since this load may stop the previous load and clear this flag 2933 2933 bool isRedirect = m_quickRedirectComing; 2934 loadWithNavigationAction(workingResourceRequest, action, lockHistory, loadType, WTFMove(formState), allowNavigationToInvalidURL, [this, isRedirect, protectedFrame = makeRef(m_frame), completionHandler = WTFMove(completionHandler)] () mutable {2934 loadWithNavigationAction(workingResourceRequest, action, lockHistory, loadType, WTFMove(formState), allowNavigationToInvalidURL, request.shouldSkipSafeBrowsingCheck(), [this, isRedirect, protectedFrame = makeRef(m_frame), completionHandler = WTFMove(completionHandler)] () mutable { 2935 2935 if (isRedirect) { 2936 2936 m_quickRedirectComing = false; … … 3394 3394 3395 3395 NavigationAction newAction { *frame->document(), request, InitiatedByMainFrame::Unknown, NavigationType::Other, action.shouldOpenExternalURLsPolicy() }; 3396 mainFrame->loader().loadWithNavigationAction(request, newAction, LockHistory::No, FrameLoadType::Standard, formState, allowNavigationToInvalidURL , [] { });3396 mainFrame->loader().loadWithNavigationAction(request, newAction, LockHistory::No, FrameLoadType::Standard, formState, allowNavigationToInvalidURL); 3397 3397 } 3398 3398 … … 3590 3590 3591 3591 documentLoader->setLastCheckedRequest(ResourceRequest()); 3592 loadWithDocumentLoader(documentLoader, loadType, { }, AllowNavigationToInvalidURL::Yes, shouldTreatAsContinuingLoad , [] { });3592 loadWithDocumentLoader(documentLoader, loadType, { }, AllowNavigationToInvalidURL::Yes, shouldTreatAsContinuingLoad); 3593 3593 return; 3594 3594 } … … 3678 3678 action.setTargetBackForwardItem(item); 3679 3679 3680 loadWithNavigationAction(request, action, LockHistory::No, loadType, { }, AllowNavigationToInvalidURL::Yes , [] { });3680 loadWithNavigationAction(request, action, LockHistory::No, loadType, { }, AllowNavigationToInvalidURL::Yes); 3681 3681 } 3682 3682 -
trunk/Source/WebCore/loader/FrameLoader.h
r233374 r234998 42 42 #include "ResourceRequestBase.h" 43 43 #include "SecurityContext.h" 44 #include "ShouldSkipSafeBrowsingCheck.h" 44 45 #include "StoredCredentialsPolicy.h" 45 46 #include "Timer.h" 47 #include <wtf/CompletionHandler.h> 46 48 #include <wtf/Forward.h> 47 49 #include <wtf/HashSet.h> … … 362 364 void willRestoreFromCachedPage(); 363 365 364 bool shouldReloadToHandleUnreachableURL(DocumentLoader *);366 bool shouldReloadToHandleUnreachableURL(DocumentLoader&); 365 367 366 368 void dispatchDidCommitLoad(std::optional<HasInsecureContent> initialHasInsecureContent); … … 368 370 void urlSelected(FrameLoadRequest&&, Event*); 369 371 370 void loadWithDocumentLoader(DocumentLoader*, FrameLoadType, RefPtr<FormState>&&, AllowNavigationToInvalidURL, ShouldTreatAsContinuingLoad, CompletionHandler<void()>&&); // Calls continueLoadAfterNavigationPolicy371 void load(DocumentLoader *); // Calls loadWithDocumentLoader372 373 void loadWithNavigationAction(const ResourceRequest&, const NavigationAction&, LockHistory, FrameLoadType, RefPtr<FormState>&&, AllowNavigationToInvalidURL, CompletionHandler<void()>&&); // Calls loadWithDocumentLoader372 void loadWithDocumentLoader(DocumentLoader*, FrameLoadType, RefPtr<FormState>&&, AllowNavigationToInvalidURL, ShouldTreatAsContinuingLoad, ShouldSkipSafeBrowsingCheck = ShouldSkipSafeBrowsingCheck::No, CompletionHandler<void()>&& = [] { }); // Calls continueLoadAfterNavigationPolicy 373 void load(DocumentLoader&, ShouldSkipSafeBrowsingCheck); // Calls loadWithDocumentLoader 374 375 void loadWithNavigationAction(const ResourceRequest&, const NavigationAction&, LockHistory, FrameLoadType, RefPtr<FormState>&&, AllowNavigationToInvalidURL, ShouldSkipSafeBrowsingCheck = ShouldSkipSafeBrowsingCheck::No, CompletionHandler<void()>&& = [] { }); // Calls loadWithDocumentLoader 374 376 375 377 void loadPostRequest(FrameLoadRequest&&, const String& referrer, FrameLoadType, Event*, RefPtr<FormState>&&, CompletionHandler<void()>&&); -
trunk/Source/WebCore/loader/FrameLoaderClient.h
r233782 r234998 105 105 106 106 enum class PolicyDecisionMode; 107 enum class ShouldSkipSafeBrowsingCheck; 108 107 109 struct StringWithDirection; 108 110 … … 192 194 virtual void dispatchDecidePolicyForResponse(const ResourceResponse&, const ResourceRequest&, FramePolicyFunction&&) = 0; 193 195 virtual void dispatchDecidePolicyForNewWindowAction(const NavigationAction&, const ResourceRequest&, FormState*, const String& frameName, FramePolicyFunction&&) = 0; 194 virtual void dispatchDecidePolicyForNavigationAction(const NavigationAction&, const ResourceRequest&, const ResourceResponse& redirectResponse, FormState*, PolicyDecisionMode, FramePolicyFunction&&) = 0;196 virtual void dispatchDecidePolicyForNavigationAction(const NavigationAction&, const ResourceRequest&, const ResourceResponse& redirectResponse, FormState*, PolicyDecisionMode, ShouldSkipSafeBrowsingCheck, FramePolicyFunction&&) = 0; 195 197 virtual void cancelPolicyCheck() = 0; 196 198 -
trunk/Source/WebCore/loader/PolicyChecker.cpp
r234995 r234998 99 99 } 100 100 101 void PolicyChecker::checkNavigationPolicy(ResourceRequest&& request, const ResourceResponse& redirectResponse, DocumentLoader* loader, RefPtr<FormState>&& formState, NavigationPolicyDecisionFunction&& function, PolicyDecisionMode policyDecisionMode )101 void PolicyChecker::checkNavigationPolicy(ResourceRequest&& request, const ResourceResponse& redirectResponse, DocumentLoader* loader, RefPtr<FormState>&& formState, NavigationPolicyDecisionFunction&& function, PolicyDecisionMode policyDecisionMode, ShouldSkipSafeBrowsingCheck shouldSkipSafeBrowsingCheck) 102 102 { 103 103 NavigationAction action = loader->triggeringAction(); … … 169 169 m_delegateIsDecidingNavigationPolicy = true; 170 170 String suggestedFilename = action.downloadAttribute().isEmpty() ? nullAtom() : action.downloadAttribute(); 171 m_frame.loader().client().dispatchDecidePolicyForNavigationAction(action, request, redirectResponse, formState.get(), policyDecisionMode, [this, function = WTFMove(function), request = ResourceRequest(request), formState = WTFMove(formState), suggestedFilename = WTFMove(suggestedFilename), blobURLLifetimeExtension = WTFMove(blobURLLifetimeExtension)](PolicyAction policyAction) mutable {171 m_frame.loader().client().dispatchDecidePolicyForNavigationAction(action, request, redirectResponse, formState.get(), policyDecisionMode, shouldSkipSafeBrowsingCheck, [this, function = WTFMove(function), request = ResourceRequest(request), formState = WTFMove(formState), suggestedFilename = WTFMove(suggestedFilename), blobURLLifetimeExtension = WTFMove(blobURLLifetimeExtension)](PolicyAction policyAction) mutable { 172 172 m_delegateIsDecidingNavigationPolicy = false; 173 173 -
trunk/Source/WebCore/loader/PolicyChecker.h
r232814 r234998 32 32 #include "FrameLoaderTypes.h" 33 33 #include "ResourceRequest.h" 34 #include "ShouldSkipSafeBrowsingCheck.h" 34 35 #include <wtf/WeakPtr.h> 35 36 #include <wtf/text/WTFString.h> … … 70 71 explicit PolicyChecker(Frame&); 71 72 72 void checkNavigationPolicy(ResourceRequest&&, const ResourceResponse& redirectResponse, DocumentLoader*, RefPtr<FormState>&&, NavigationPolicyDecisionFunction&&, PolicyDecisionMode = PolicyDecisionMode::Asynchronous );73 void checkNavigationPolicy(ResourceRequest&&, const ResourceResponse& redirectResponse, DocumentLoader*, RefPtr<FormState>&&, NavigationPolicyDecisionFunction&&, PolicyDecisionMode = PolicyDecisionMode::Asynchronous, ShouldSkipSafeBrowsingCheck = ShouldSkipSafeBrowsingCheck::No); 73 74 void checkNavigationPolicy(ResourceRequest&&, const ResourceResponse& redirectResponse, NavigationPolicyDecisionFunction&&); 74 75 void checkNewWindowPolicy(NavigationAction&&, ResourceRequest&&, RefPtr<FormState>&&, const String& frameName, NewWindowPolicyDecisionFunction&&); -
trunk/Source/WebKit/ChangeLog
r234995 r234998 1 2018-08-17 Alex Christensen <achristensen@webkit.org> 2 3 Add some plumbing for safe browsing 4 https://bugs.webkit.org/show_bug.cgi?id=188709 5 6 Reviewed by Tim Horton. 7 8 Also adding a URL to SafeBrowsingResult because we'll need it. 9 Also adding a bool to LoadParameters because we will need to do special things 10 when loading the safe browsing warning, like adding a way to skip the safe browsing check. 11 12 * Shared/LoadParameters.cpp: 13 (WebKit::LoadParameters::encode const): 14 (WebKit::LoadParameters::decode): 15 * Shared/LoadParameters.h: 16 * UIProcess/Cocoa/SafeBrowsingResultCocoa.mm: 17 (WebKit::SafeBrowsingResult::SafeBrowsingResult): 18 * UIProcess/Cocoa/WebPageProxyCocoa.mm: 19 (WebKit::WebPageProxy::beginSafeBrowsingCheck): 20 * UIProcess/SafeBrowsingResult.h: 21 (WebKit::SafeBrowsingResult::url const): 22 * UIProcess/WebPageProxy.cpp: 23 (WebKit::WebPageProxy::loadAlternateHTML): 24 (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync): 25 (WebKit::WebPageProxy::decidePolicyForNavigationAction): 26 (WebKit::WebPageProxy::decidePolicyForNavigationActionSync): 27 * UIProcess/WebPageProxy.h: 28 * UIProcess/WebPageProxy.messages.in: 29 * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: 30 (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): 31 * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: 32 1 33 2018-08-16 Ryosuke Niwa <rniwa@webkit.org> 2 34 -
trunk/Source/WebKit/Shared/LoadParameters.cpp
r234985 r234998 50 50 encoder << shouldTreatAsContinuingLoad; 51 51 encoder << userData; 52 encoder << forSafeBrowsing; 52 53 53 54 platformEncode(encoder); … … 106 107 return false; 107 108 109 if (!decoder.decode(data.forSafeBrowsing)) 110 return false; 111 108 112 if (!platformDecode(decoder, data)) 109 113 return false; -
trunk/Source/WebKit/Shared/LoadParameters.h
r234985 r234998 63 63 bool shouldTreatAsContinuingLoad { false }; 64 64 UserData userData; 65 bool forSafeBrowsing { false }; 65 66 66 67 #if PLATFORM(COCOA) -
trunk/Source/WebKit/UIProcess/Cocoa/SafeBrowsingResultCocoa.mm
r234640 r234998 32 32 33 33 #if HAVE(SAFE_BROWSING) 34 SafeBrowsingResult::SafeBrowsingResult(SSBServiceLookupResult *result) 35 : m_provider([result provider]) 34 SafeBrowsingResult::SafeBrowsingResult(WebCore::URL&& url, SSBServiceLookupResult *result) 35 : m_url(WTFMove(url)) 36 , m_provider([result provider]) 36 37 , m_isPhishing([result isPhishing]) 37 38 , m_isMalware([result isMalware]) -
trunk/Source/WebKit/UIProcess/Cocoa/WebPageProxyCocoa.mm
r234739 r234998 78 78 if (!context) 79 79 return listener.didReceiveSafeBrowsingResults({ }); 80 [context lookUpURL:url completionHandler:BlockPtr<void(SSBLookupResult *, NSError *)>::fromCallable([listener = makeRef(listener) ] (SSBLookupResult *result, NSError *error) mutable {81 RunLoop::main().dispatch([listener = WTFMove(listener), result = retainPtr(result), error = retainPtr(error) ] {80 [context lookUpURL:url completionHandler:BlockPtr<void(SSBLookupResult *, NSError *)>::fromCallable([listener = makeRef(listener), url = url] (SSBLookupResult *result, NSError *error) mutable { 81 RunLoop::main().dispatch([listener = WTFMove(listener), result = retainPtr(result), error = retainPtr(error), url = WTFMove(url)] { 82 82 if (error) { 83 83 listener->didReceiveSafeBrowsingResults({ }); … … 89 89 resultsVector.reserveInitialCapacity([results count]); 90 90 for (SSBServiceLookupResult *result in results) 91 resultsVector.uncheckedAppend({ result });91 resultsVector.uncheckedAppend({ URL(url), result }); 92 92 listener->didReceiveSafeBrowsingResults(WTFMove(resultsVector)); 93 93 }); -
trunk/Source/WebKit/UIProcess/SafeBrowsingResult.h
r234640 r234998 26 26 #pragma once 27 27 28 #include <WebCore/URL.h> 28 29 #include <wtf/text/WTFString.h> 29 30 … … 35 36 public: 36 37 #if HAVE(SAFE_BROWSING) 37 SafeBrowsingResult( SSBServiceLookupResult *);38 SafeBrowsingResult(WebCore::URL&&, SSBServiceLookupResult *); 38 39 #endif 39 40 SafeBrowsingResult() = default; 40 41 42 const WebCore::URL& url() const { return m_url; } 41 43 const String& provider() const { return m_provider; } 42 44 bool isPhishing() const { return m_isPhishing; } … … 46 48 47 49 private: 50 WebCore::URL m_url; 48 51 String m_provider; 49 52 bool m_isPhishing { false }; -
trunk/Source/WebKit/UIProcess/WebPageProxy.cpp
r234985 r234998 147 147 #include <WebCore/SerializedCryptoKeyWrap.h> 148 148 #include <WebCore/SharedBuffer.h> 149 #include <WebCore/ShouldSkipSafeBrowsingCheck.h> 149 150 #include <WebCore/ShouldTreatAsContinuingLoad.h> 150 151 #include <WebCore/TextCheckerClient.h> … … 1080 1081 } 1081 1082 1082 void WebPageProxy::loadAlternateHTML(const IPC::DataReference& htmlData, const String& encoding, const WebCore::URL& baseURL, const WebCore::URL& unreachableURL, API::Object* userData )1083 void WebPageProxy::loadAlternateHTML(const IPC::DataReference& htmlData, const String& encoding, const WebCore::URL& baseURL, const WebCore::URL& unreachableURL, API::Object* userData, bool forSafeBrowsing) 1083 1084 { 1084 1085 // When the UIProcess is in the process of handling a failing provisional load, do not attempt to … … 1111 1112 loadParameters.provisionalLoadErrorURLString = m_failingProvisionalLoadURL; 1112 1113 loadParameters.userData = UserData(process().transformObjectsToHandles(userData).get()); 1114 loadParameters.forSafeBrowsing = forSafeBrowsing; 1113 1115 addPlatformLoadParameters(loadParameters); 1114 1116 … … 3969 3971 #endif 3970 3972 3971 void WebPageProxy::decidePolicyForNavigationActionAsync(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&& navigationActionData, const FrameInfoData& frameInfoData, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&& request, WebCore::ResourceResponse&& redirectResponse, const UserData& userData, uint64_t listenerID)3972 { 3973 decidePolicyForNavigationAction(frameID, frameSecurityOrigin, navigationID, WTFMove(navigationActionData), frameInfoData, originatingPageID, originalRequest, WTFMove(request), WTFMove(redirectResponse), userData, PolicyDecisionSender::create([this, protectedThis = makeRef(*this), frameID, listenerID] (auto... args) {3973 void WebPageProxy::decidePolicyForNavigationActionAsync(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&& navigationActionData, const FrameInfoData& frameInfoData, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&& request, WebCore::ResourceResponse&& redirectResponse, const UserData& userData, WebCore::ShouldSkipSafeBrowsingCheck shouldSkipSafeBrowsingCheck, uint64_t listenerID) 3974 { 3975 decidePolicyForNavigationAction(frameID, frameSecurityOrigin, navigationID, WTFMove(navigationActionData), frameInfoData, originatingPageID, originalRequest, WTFMove(request), WTFMove(redirectResponse), userData, shouldSkipSafeBrowsingCheck, PolicyDecisionSender::create([this, protectedThis = makeRef(*this), frameID, listenerID] (auto... args) { 3974 3976 m_process->send(Messages::WebPage::DidReceivePolicyDecision(frameID, listenerID, args...), m_pageID); 3975 3977 })); 3976 3978 } 3977 3979 3978 void WebPageProxy::decidePolicyForNavigationAction(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&& navigationActionData, const FrameInfoData& originatingFrameInfoData, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&& request, WebCore::ResourceResponse&& redirectResponse, const UserData& userData, Ref<PolicyDecisionSender>&& sender)3980 void WebPageProxy::decidePolicyForNavigationAction(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&& navigationActionData, const FrameInfoData& originatingFrameInfoData, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&& request, WebCore::ResourceResponse&& redirectResponse, const UserData& userData, WebCore::ShouldSkipSafeBrowsingCheck shouldSkipSafeBrowsingCheck, Ref<PolicyDecisionSender>&& sender) 3979 3981 { 3980 3982 LOG(Loading, "WebPageProxy::decidePolicyForNavigationAction - Original URL %s, current target URL %s", originalRequest.url().string().utf8().data(), request.url().string().utf8().data()); … … 4053 4055 4054 4056 receivedPolicyDecision(policyAction, navigation.get(), WTFMove(data), WTFMove(sender)); 4055 }, ShouldExpectSafeBrowsingResult::Yes)); 4056 beginSafeBrowsingCheck(request.url(), listener); 4057 }, shouldSkipSafeBrowsingCheck == ShouldSkipSafeBrowsingCheck::Yes ? ShouldExpectSafeBrowsingResult::No : ShouldExpectSafeBrowsingResult::Yes)); 4058 if (shouldSkipSafeBrowsingCheck == ShouldSkipSafeBrowsingCheck::No) 4059 beginSafeBrowsingCheck(request.url(), listener); 4057 4060 4058 4061 API::Navigation* mainFrameNavigation = frame->isMainFrame() ? navigation.get() : nullptr; … … 4082 4085 } 4083 4086 4084 void WebPageProxy::decidePolicyForNavigationActionSync(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&& navigationActionData, const FrameInfoData& frameInfoData, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&& request, WebCore::ResourceResponse&& redirectResponse, const UserData& userData, Messages::WebPageProxy::DecidePolicyForNavigationActionSync::DelayedReply&& reply)4087 void WebPageProxy::decidePolicyForNavigationActionSync(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&& navigationActionData, const FrameInfoData& frameInfoData, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&& request, WebCore::ResourceResponse&& redirectResponse, const UserData& userData, WebCore::ShouldSkipSafeBrowsingCheck shouldSkipSafeBrowsingCheck, Messages::WebPageProxy::DecidePolicyForNavigationActionSync::DelayedReply&& reply) 4085 4088 { 4086 4089 auto sender = PolicyDecisionSender::create(WTFMove(reply)); 4087 4090 4088 decidePolicyForNavigationAction(frameID, frameSecurityOrigin, navigationID, WTFMove(navigationActionData), frameInfoData, originatingPageID, originalRequest, WTFMove(request), WTFMove(redirectResponse), userData, s ender.copyRef());4091 decidePolicyForNavigationAction(frameID, frameSecurityOrigin, navigationID, WTFMove(navigationActionData), frameInfoData, originatingPageID, originalRequest, WTFMove(request), WTFMove(redirectResponse), userData, shouldSkipSafeBrowsingCheck, sender.copyRef()); 4089 4092 4090 4093 // If the client did not respond synchronously, proceed with the load. -
trunk/Source/WebKit/UIProcess/WebPageProxy.h
r234985 r234998 458 458 RefPtr<API::Navigation> loadFile(const String& fileURL, const String& resourceDirectoryURL, API::Object* userData = nullptr); 459 459 RefPtr<API::Navigation> loadData(const IPC::DataReference&, const String& MIMEType, const String& encoding, const String& baseURL, API::Object* userData = nullptr); 460 void loadAlternateHTML(const IPC::DataReference&, const String& encoding, const WebCore::URL& baseURL, const WebCore::URL& unreachableURL, API::Object* userData = nullptr );460 void loadAlternateHTML(const IPC::DataReference&, const String& encoding, const WebCore::URL& baseURL, const WebCore::URL& unreachableURL, API::Object* userData = nullptr, bool forSafeBrowsing = false); 461 461 void loadWebArchiveData(API::Data*, API::Object* userData = nullptr); 462 462 void navigateToPDFLinkWithSimulatedClick(const String& url, WebCore::IntPoint documentPoint, WebCore::IntPoint screenPoint); … … 1426 1426 void didDestroyNavigation(uint64_t navigationID); 1427 1427 1428 void decidePolicyForNavigationAction(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&&, const FrameInfoData&, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&&, WebCore::ResourceResponse&& redirectResponse, const UserData&, Ref<PolicyDecisionSender>&&);1429 void decidePolicyForNavigationActionAsync(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&&, const FrameInfoData&, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&&, WebCore::ResourceResponse&& redirectResponse, const UserData&, uint64_t listenerID);1430 void decidePolicyForNavigationActionSync(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&&, const FrameInfoData&, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&&, WebCore::ResourceResponse&& redirectResponse, const UserData&, Messages::WebPageProxy::DecidePolicyForNavigationActionSync::DelayedReply&&);1428 void decidePolicyForNavigationAction(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&&, const FrameInfoData&, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&&, WebCore::ResourceResponse&& redirectResponse, const UserData&, WebCore::ShouldSkipSafeBrowsingCheck, Ref<PolicyDecisionSender>&&); 1429 void decidePolicyForNavigationActionAsync(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&&, const FrameInfoData&, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&&, WebCore::ResourceResponse&& redirectResponse, const UserData&, WebCore::ShouldSkipSafeBrowsingCheck, uint64_t listenerID); 1430 void decidePolicyForNavigationActionSync(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&&, const FrameInfoData&, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&&, WebCore::ResourceResponse&& redirectResponse, const UserData&, WebCore::ShouldSkipSafeBrowsingCheck, Messages::WebPageProxy::DecidePolicyForNavigationActionSync::DelayedReply&&); 1431 1431 void decidePolicyForNewWindowAction(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, NavigationActionData&&, WebCore::ResourceRequest&&, const String& frameName, uint64_t listenerID, const UserData&); 1432 1432 void decidePolicyForResponse(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, bool canShowMIMEType, uint64_t listenerID, const UserData&); -
trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in
r234375 r234998 107 107 # Policy messages 108 108 DecidePolicyForResponse(uint64_t frameID, struct WebCore::SecurityOriginData frameSecurityOrigin, uint64_t navigationID, WebCore::ResourceResponse response, WebCore::ResourceRequest request, bool canShowMIMEType, uint64_t listenerID, WebKit::UserData userData) 109 DecidePolicyForNavigationActionAsync(uint64_t frameID, struct WebCore::SecurityOriginData frameSecurityOrigin, uint64_t navigationID, struct WebKit::NavigationActionData navigationActionData, struct WebKit::FrameInfoData originatingFrameInfoData, uint64_t originatingPageID, WebCore::ResourceRequest originalRequest, WebCore::ResourceRequest request, WebCore::ResourceResponse redirectResponse, WebKit::UserData userData, uint64_t listenerID)110 DecidePolicyForNavigationActionSync(uint64_t frameID, struct WebCore::SecurityOriginData frameSecurityOrigin, uint64_t navigationID, struct WebKit::NavigationActionData navigationActionData, struct WebKit::FrameInfoData originatingFrameInfoData, uint64_t originatingPageID, WebCore::ResourceRequest originalRequest, WebCore::ResourceRequest request, WebCore::ResourceResponse redirectResponse, WebKit::UserData userData ) -> (enum WebCore::PolicyAction policyAction, uint64_t newNavigationID, WebKit::DownloadID downloadID, std::optional<WebKit::WebsitePoliciesData> websitePolicies) Delayed109 DecidePolicyForNavigationActionAsync(uint64_t frameID, struct WebCore::SecurityOriginData frameSecurityOrigin, uint64_t navigationID, struct WebKit::NavigationActionData navigationActionData, struct WebKit::FrameInfoData originatingFrameInfoData, uint64_t originatingPageID, WebCore::ResourceRequest originalRequest, WebCore::ResourceRequest request, WebCore::ResourceResponse redirectResponse, WebKit::UserData userData, enum WebCore::ShouldSkipSafeBrowsingCheck shouldSkipSafeBrowsingCheck, uint64_t listenerID) 110 DecidePolicyForNavigationActionSync(uint64_t frameID, struct WebCore::SecurityOriginData frameSecurityOrigin, uint64_t navigationID, struct WebKit::NavigationActionData navigationActionData, struct WebKit::FrameInfoData originatingFrameInfoData, uint64_t originatingPageID, WebCore::ResourceRequest originalRequest, WebCore::ResourceRequest request, WebCore::ResourceResponse redirectResponse, WebKit::UserData userData, enum WebCore::ShouldSkipSafeBrowsingCheck shouldSkipSafeBrowsingCheck) -> (enum WebCore::PolicyAction policyAction, uint64_t newNavigationID, WebKit::DownloadID downloadID, std::optional<WebKit::WebsitePoliciesData> websitePolicies) Delayed 111 111 DecidePolicyForNewWindowAction(uint64_t frameID, struct WebCore::SecurityOriginData frameSecurityOrigin, struct WebKit::NavigationActionData navigationActionData, WebCore::ResourceRequest request, String frameName, uint64_t listenerID, WebKit::UserData userData) 112 112 UnableToImplementPolicy(uint64_t frameID, WebCore::ResourceError error, WebKit::UserData userData) -
trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
r234375 r234998 814 814 } 815 815 816 void WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction(const NavigationAction& navigationAction, const ResourceRequest& request, const ResourceResponse& redirectResponse, FormState* formState, PolicyDecisionMode policyDecisionMode, FramePolicyFunction&& function)816 void WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction(const NavigationAction& navigationAction, const ResourceRequest& request, const ResourceResponse& redirectResponse, FormState* formState, PolicyDecisionMode policyDecisionMode, ShouldSkipSafeBrowsingCheck shouldSkipSafeBrowsingCheck, FramePolicyFunction&& function) 817 817 { 818 818 WebPage* webPage = m_frame ? m_frame->page() : nullptr; … … 893 893 std::optional<WebsitePoliciesData> websitePolicies; 894 894 895 if (!webPage->sendSync(Messages::WebPageProxy::DecidePolicyForNavigationActionSync(m_frame->frameID(), SecurityOriginData::fromFrame(coreFrame), documentLoader->navigationID(), navigationActionData, originatingFrameInfoData, originatingPageID, navigationAction.resourceRequest(), request, redirectResponse, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get()) ), Messages::WebPageProxy::DecidePolicyForNavigationActionSync::Reply(policyAction, newNavigationID, downloadID, websitePolicies))) {895 if (!webPage->sendSync(Messages::WebPageProxy::DecidePolicyForNavigationActionSync(m_frame->frameID(), SecurityOriginData::fromFrame(coreFrame), documentLoader->navigationID(), navigationActionData, originatingFrameInfoData, originatingPageID, navigationAction.resourceRequest(), request, redirectResponse, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get()), shouldSkipSafeBrowsingCheck), Messages::WebPageProxy::DecidePolicyForNavigationActionSync::Reply(policyAction, newNavigationID, downloadID, websitePolicies))) { 896 896 m_frame->didReceivePolicyDecision(listenerID, PolicyAction::Ignore, 0, { }, { }); 897 897 return; … … 903 903 904 904 ASSERT(policyDecisionMode == PolicyDecisionMode::Asynchronous); 905 if (!webPage->send(Messages::WebPageProxy::DecidePolicyForNavigationActionAsync(m_frame->frameID(), SecurityOriginData::fromFrame(coreFrame), documentLoader->navigationID(), navigationActionData, originatingFrameInfoData, originatingPageID, navigationAction.resourceRequest(), request, redirectResponse, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get()), listenerID)))905 if (!webPage->send(Messages::WebPageProxy::DecidePolicyForNavigationActionAsync(m_frame->frameID(), SecurityOriginData::fromFrame(coreFrame), documentLoader->navigationID(), navigationActionData, originatingFrameInfoData, originatingPageID, navigationAction.resourceRequest(), request, redirectResponse, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get()), shouldSkipSafeBrowsingCheck, listenerID))) 906 906 m_frame->didReceivePolicyDecision(listenerID, PolicyAction::Ignore, 0, { }, { }); 907 907 } -
trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.h
r233782 r234998 126 126 void dispatchDecidePolicyForResponse(const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, WebCore::FramePolicyFunction&&) final; 127 127 void dispatchDecidePolicyForNewWindowAction(const WebCore::NavigationAction&, const WebCore::ResourceRequest&, WebCore::FormState*, const String& frameName, WebCore::FramePolicyFunction&&) final; 128 void dispatchDecidePolicyForNavigationAction(const WebCore::NavigationAction&, const WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse, WebCore::FormState*, WebCore::PolicyDecisionMode, WebCore:: FramePolicyFunction&&) final;128 void dispatchDecidePolicyForNavigationAction(const WebCore::NavigationAction&, const WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse, WebCore::FormState*, WebCore::PolicyDecisionMode, WebCore::ShouldSkipSafeBrowsingCheck, WebCore::FramePolicyFunction&&) final; 129 129 void cancelPolicyCheck() final; 130 130 -
trunk/Source/WebKitLegacy/mac/ChangeLog
r234995 r234998 1 2018-08-17 Alex Christensen <achristensen@webkit.org> 2 3 Add some plumbing for safe browsing 4 https://bugs.webkit.org/show_bug.cgi?id=188709 5 6 Reviewed by Tim Horton. 7 8 * WebCoreSupport/WebFrameLoaderClient.h: 9 * WebCoreSupport/WebFrameLoaderClient.mm: 10 (WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): 11 1 12 2018-08-16 Ryosuke Niwa <rniwa@webkit.org> 2 13 -
trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.h
r232814 r234998 129 129 void dispatchDecidePolicyForResponse(const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, WebCore::FramePolicyFunction&&) final; 130 130 void dispatchDecidePolicyForNewWindowAction(const WebCore::NavigationAction&, const WebCore::ResourceRequest&, WebCore::FormState*, const WTF::String& frameName, WebCore::FramePolicyFunction&&) final; 131 void dispatchDecidePolicyForNavigationAction(const WebCore::NavigationAction&, const WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse, WebCore::FormState*, WebCore::PolicyDecisionMode, WebCore:: FramePolicyFunction&&) final;131 void dispatchDecidePolicyForNavigationAction(const WebCore::NavigationAction&, const WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse, WebCore::FormState*, WebCore::PolicyDecisionMode, WebCore::ShouldSkipSafeBrowsingCheck, WebCore::FramePolicyFunction&&) final; 132 132 void cancelPolicyCheck() final; 133 133 -
trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm
r234808 r234998 902 902 } 903 903 904 void WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction(const NavigationAction& action, const ResourceRequest& request, const ResourceResponse&, FormState* formState, PolicyDecisionMode, FramePolicyFunction&& function)904 void WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction(const NavigationAction& action, const ResourceRequest& request, const ResourceResponse&, FormState* formState, PolicyDecisionMode, WebCore::ShouldSkipSafeBrowsingCheck, FramePolicyFunction&& function) 905 905 { 906 906 WebView *webView = getWebView(m_webFrame.get()); -
trunk/Source/WebKitLegacy/win/ChangeLog
r234501 r234998 1 2018-08-17 Alex Christensen <achristensen@webkit.org> 2 3 Add some plumbing for safe browsing 4 https://bugs.webkit.org/show_bug.cgi?id=188709 5 6 Reviewed by Tim Horton. 7 8 * WebCoreSupport/WebFrameLoaderClient.cpp: 9 (WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): 10 * WebCoreSupport/WebFrameLoaderClient.h: 11 1 12 2018-08-02 David Fenton <david_fenton@apple.com> 2 13 -
trunk/Source/WebKitLegacy/win/WebCoreSupport/WebFrameLoaderClient.cpp
r232814 r234998 566 566 } 567 567 568 void WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction(const NavigationAction& action, const ResourceRequest& request, const ResourceResponse&, FormState* formState, WebCore::PolicyDecisionMode, FramePolicyFunction&& function)568 void WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction(const NavigationAction& action, const ResourceRequest& request, const ResourceResponse&, FormState* formState, WebCore::PolicyDecisionMode, WebCore::ShouldSkipSafeBrowsingCheck, FramePolicyFunction&& function) 569 569 { 570 570 WebView* webView = m_webFrame->webView(); -
trunk/Source/WebKitLegacy/win/WebCoreSupport/WebFrameLoaderClient.h
r232814 r234998 103 103 void dispatchDecidePolicyForResponse(const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, WebCore::FramePolicyFunction&&) override; 104 104 void dispatchDecidePolicyForNewWindowAction(const WebCore::NavigationAction&, const WebCore::ResourceRequest&, WebCore::FormState*, const WTF::String& frameName, WebCore::FramePolicyFunction&&) override; 105 void dispatchDecidePolicyForNavigationAction(const WebCore::NavigationAction&, const WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse, WebCore::FormState*, WebCore::PolicyDecisionMode, WebCore:: FramePolicyFunction&&) override;105 void dispatchDecidePolicyForNavigationAction(const WebCore::NavigationAction&, const WebCore::ResourceRequest&, const WebCore::ResourceResponse& redirectResponse, WebCore::FormState*, WebCore::PolicyDecisionMode, WebCore::ShouldSkipSafeBrowsingCheck, WebCore::FramePolicyFunction&&) override; 106 106 void cancelPolicyCheck() override; 107 107
Note: See TracChangeset
for help on using the changeset viewer.