Changeset 230721 in webkit
- Timestamp:
- Apr 17, 2018 11:13:49 AM (6 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r230712 r230721 1 2018-04-17 Chris Dumez <cdumez@apple.com> 2 3 REGRESSION (r229831): CMD-clicking an iCloud web app link unexpectedly opens that link in a new tab and the current tab 4 https://bugs.webkit.org/show_bug.cgi?id=184678 5 <rdar://problem/39422122> 6 7 Reviewed by Alex Christensen. 8 9 Add layout test coverage. 10 11 * http/tests/navigation/fragment-navigation-policy-ignore-expected.txt: Added. 12 * http/tests/navigation/fragment-navigation-policy-ignore.html: Added. 13 1 14 2018-04-17 Said Abou-Hallawa <sabouhallawa@apple.com> 2 15 -
trunk/Source/WebCore/ChangeLog
r230716 r230721 1 2018-04-17 Chris Dumez <cdumez@apple.com> 2 3 REGRESSION (r229831): CMD-clicking an iCloud web app link unexpectedly opens that link in a new tab and the current tab 4 https://bugs.webkit.org/show_bug.cgi?id=184678 5 <rdar://problem/39422122> 6 7 Reviewed by Alex Christensen. 8 9 Frament navigations need to happen synchronously for Web-compatibility. Because of this, 10 r225657 added code to make sure that if the client does not make the navigation policy 11 decision synchronously for frament navigations, then we'll stop waiting for the client 12 and proceed with the navigation. However, r229831 make the navigation policy decision 13 IPC decision, meaning that even if the client responds synchronously, it would be 14 asynchronously from WebCore's point of view. As a result, we would always ignore the 15 client's policy decision when doing a fragment navigation. 16 17 This is an issue on iclould.com because the web-app links are fragment URLs. When you 18 CMD+click one of these link, we do the navigation policy check. As a result of this 19 check, Safari responds IGNORE to the policy decision and instead decides to load the 20 link in a new tab (because CMD key is pressed). Due to the bug mentioned above, we 21 would not obey the IGNORE policy decision from Safari and load the link in the current 22 tab, even though Safari would already be loading it in a new tab. 23 24 To address the issue, I reintroduced a synchronous code path for navigation policy 25 decision making, backed by synchronous IPC. This synchronous code path is now used for 26 fragment navigations to restore pre-r229831 behavior. If the client does not answer 27 synchronously, we'll proceed with the navigation anyway, as was happening pre-r229831. 28 29 Test: http/tests/navigation/fragment-navigation-policy-ignore.html 30 31 * loader/EmptyClients.cpp: 32 (WebCore::EmptyFrameLoaderClient::dispatchDecidePolicyForNavigationAction): 33 * loader/EmptyFrameLoaderClient.h: 34 * loader/FrameLoader.cpp: 35 (WebCore::FrameLoader::loadURL): 36 (WebCore::FrameLoader::loadWithDocumentLoader): 37 * loader/FrameLoaderClient.h: 38 * loader/PolicyChecker.cpp: 39 (WebCore::PolicyChecker::checkNavigationPolicy): 40 * loader/PolicyChecker.h: 41 1 42 2018-04-17 Matt Lewis <jlewis3@apple.com> 2 43 -
trunk/Source/WebCore/loader/EmptyClients.cpp
r229979 r230721 437 437 } 438 438 439 void EmptyFrameLoaderClient::dispatchDecidePolicyForNavigationAction(const NavigationAction&, const ResourceRequest&, bool, FormState*, FramePolicyFunction&&)439 void EmptyFrameLoaderClient::dispatchDecidePolicyForNavigationAction(const NavigationAction&, const ResourceRequest&, bool, FormState*, PolicyDecisionMode, FramePolicyFunction&&) 440 440 { 441 441 } -
trunk/Source/WebCore/loader/EmptyFrameLoaderClient.h
r229977 r230721 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&, bool didReceiveRedirectResponse, FormState*, FramePolicyFunction&&) final;98 void dispatchDecidePolicyForNavigationAction(const NavigationAction&, const ResourceRequest&, bool didReceiveRedirectResponse, FormState*, PolicyDecisionMode, FramePolicyFunction&&) final; 99 99 void cancelPolicyCheck() final { } 100 100 -
trunk/Source/WebCore/loader/FrameLoader.cpp
r230711 r230721 1261 1261 } 1262 1262 1263 struct SharedBool : public RefCounted<SharedBool> {1264 bool value { false };1265 };1266 1267 1263 void FrameLoader::loadURL(FrameLoadRequest&& frameLoadRequest, const String& referrer, FrameLoadType newLoadType, Event* event, FormState* formState, CompletionHandler<void()>&& completionHandler) 1268 1264 { … … 1337 1333 policyChecker().stopCheck(); 1338 1334 policyChecker().setLoadType(newLoadType); 1339 auto completionHandlerCalled = adoptRef(*new SharedBool); 1340 policyChecker().checkNavigationPolicy(ResourceRequest(request), false /* didReceiveRedirectResponse */, oldDocumentLoader.get(), formState, [this, protectedFrame = makeRef(m_frame), completionHandlerCalled = completionHandlerCalled.copyRef()] (const ResourceRequest& request, FormState*, ShouldContinue shouldContinue) { 1341 if (!completionHandlerCalled->value) { 1342 completionHandlerCalled->value = true; 1343 continueFragmentScrollAfterNavigationPolicy(request, shouldContinue == ShouldContinue::Yes); 1344 } 1345 }); 1346 if (!completionHandlerCalled->value) { 1347 completionHandlerCalled->value = true; 1348 continueFragmentScrollAfterNavigationPolicy(WTFMove(request), true); 1349 } 1335 policyChecker().checkNavigationPolicy(ResourceRequest(request), false /* didReceiveRedirectResponse */, oldDocumentLoader.get(), formState, [this, protectedFrame = makeRef(m_frame)] (const ResourceRequest& request, FormState*, ShouldContinue shouldContinue) { 1336 continueFragmentScrollAfterNavigationPolicy(request, shouldContinue == ShouldContinue::Yes); 1337 }, PolicyDecisionMode::Synchronous); 1350 1338 return; 1351 1339 } … … 1513 1501 oldDocumentLoader->setLastCheckedRequest(ResourceRequest()); 1514 1502 policyChecker().stopCheck(); 1515 auto completionHandlerCalled = adoptRef(*new SharedBool); 1516 policyChecker().checkNavigationPolicy(ResourceRequest(loader->request()), false /* didReceiveRedirectResponse */, oldDocumentLoader.get(), formState, [this, protectedFrame = makeRef(m_frame), completionHandlerCalled = completionHandlerCalled.copyRef()] (const ResourceRequest& request, FormState*, ShouldContinue shouldContinue) { 1517 if (!completionHandlerCalled->value) { 1518 completionHandlerCalled->value = true; 1519 continueFragmentScrollAfterNavigationPolicy(request, shouldContinue == ShouldContinue::Yes); 1520 } 1521 }); 1522 if (!completionHandlerCalled->value) { 1523 completionHandlerCalled->value = true; 1524 continueFragmentScrollAfterNavigationPolicy(loader->request(), true); 1525 } 1503 policyChecker().checkNavigationPolicy(ResourceRequest(loader->request()), false /* didReceiveRedirectResponse */, oldDocumentLoader.get(), formState, [this, protectedFrame = makeRef(m_frame)] (const ResourceRequest& request, FormState*, ShouldContinue shouldContinue) { 1504 continueFragmentScrollAfterNavigationPolicy(request, shouldContinue == ShouldContinue::Yes); 1505 }, PolicyDecisionMode::Synchronous); 1526 1506 return; 1527 1507 } -
trunk/Source/WebCore/loader/FrameLoaderClient.h
r229977 r230721 103 103 class Widget; 104 104 105 enum class PolicyDecisionMode; 105 106 struct StringWithDirection; 106 107 … … 190 191 virtual void dispatchDecidePolicyForResponse(const ResourceResponse&, const ResourceRequest&, FramePolicyFunction&&) = 0; 191 192 virtual void dispatchDecidePolicyForNewWindowAction(const NavigationAction&, const ResourceRequest&, FormState*, const String& frameName, FramePolicyFunction&&) = 0; 192 virtual void dispatchDecidePolicyForNavigationAction(const NavigationAction&, const ResourceRequest&, bool didReceiveRedirectResponse, FormState*, FramePolicyFunction&&) = 0;193 virtual void dispatchDecidePolicyForNavigationAction(const NavigationAction&, const ResourceRequest&, bool didReceiveRedirectResponse, FormState*, PolicyDecisionMode, FramePolicyFunction&&) = 0; 193 194 virtual void didDecidePolicyForNavigationAction() { } 194 195 virtual void cancelPolicyCheck() = 0; -
trunk/Source/WebCore/loader/PolicyChecker.cpp
r230458 r230721 82 82 } 83 83 84 void PolicyChecker::checkNavigationPolicy(ResourceRequest&& request, bool didReceiveRedirectResponse, DocumentLoader* loader, FormState* formState, NavigationPolicyDecisionFunction&& function )84 void PolicyChecker::checkNavigationPolicy(ResourceRequest&& request, bool didReceiveRedirectResponse, DocumentLoader* loader, FormState* formState, NavigationPolicyDecisionFunction&& function, PolicyDecisionMode policyDecisionMode) 85 85 { 86 86 NavigationAction action = loader->triggeringAction(); … … 150 150 String suggestedFilename = action.downloadAttribute().isEmpty() ? nullAtom() : action.downloadAttribute(); 151 151 ResourceRequest requestCopy = request; 152 m_frame.loader().client().dispatchDecidePolicyForNavigationAction(action, request, didReceiveRedirectResponse, formState, [this, function = WTFMove(function), request = WTFMove(requestCopy), formState = makeRefPtr(formState), suggestedFilename = WTFMove(suggestedFilename)](PolicyAction policyAction) mutable {152 m_frame.loader().client().dispatchDecidePolicyForNavigationAction(action, request, didReceiveRedirectResponse, formState, policyDecisionMode, [this, function = WTFMove(function), request = WTFMove(requestCopy), formState = makeRefPtr(formState), suggestedFilename = WTFMove(suggestedFilename)](PolicyAction policyAction) mutable { 153 153 m_frame.loader().client().didDecidePolicyForNavigationAction(); 154 154 -
trunk/Source/WebCore/loader/PolicyChecker.h
r230458 r230721 57 57 }; 58 58 59 enum class PolicyDecisionMode { Synchronous, Asynchronous }; 60 59 61 using NewWindowPolicyDecisionFunction = CompletionHandler<void(const ResourceRequest&, FormState*, const String& frameName, const NavigationAction&, ShouldContinue)>; 60 62 using NavigationPolicyDecisionFunction = CompletionHandler<void(ResourceRequest&&, FormState*, ShouldContinue)>; … … 66 68 explicit PolicyChecker(Frame&); 67 69 68 void checkNavigationPolicy(ResourceRequest&&, bool didReceiveRedirectResponse, DocumentLoader*, FormState*, NavigationPolicyDecisionFunction&& );70 void checkNavigationPolicy(ResourceRequest&&, bool didReceiveRedirectResponse, DocumentLoader*, FormState*, NavigationPolicyDecisionFunction&&, PolicyDecisionMode = PolicyDecisionMode::Asynchronous); 69 71 void checkNavigationPolicy(ResourceRequest&&, bool didReceiveRedirectResponse, NavigationPolicyDecisionFunction&&); 70 72 void checkNewWindowPolicy(NavigationAction&&, const ResourceRequest&, FormState*, const String& frameName, NewWindowPolicyDecisionFunction&&); -
trunk/Source/WebKit/ChangeLog
r230718 r230721 1 2018-04-17 Chris Dumez <cdumez@apple.com> 2 3 REGRESSION (r229831): CMD-clicking an iCloud web app link unexpectedly opens that link in a new tab and the current tab 4 https://bugs.webkit.org/show_bug.cgi?id=184678 5 <rdar://problem/39422122> 6 7 Reviewed by Alex Christensen. 8 9 Re-introduce synchronous code path which existed pre-r229831 and use it for fragment navigations. 10 11 * UIProcess/WebPageProxy.cpp: 12 (WebKit::WebPageProxy::receivedPolicyDecision): 13 (WebKit::WebPageProxy::decidePolicyForNavigationActionSync): 14 * UIProcess/WebPageProxy.h: 15 * UIProcess/WebPageProxy.messages.in: 16 * WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp: 17 (WebKit::WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): 18 * WebProcess/WebCoreSupport/WebFrameLoaderClient.h: 19 1 20 2018-04-17 Michael Catanzaro <mcatanzaro@igalia.com> 2 21 -
trunk/Source/WebKit/UIProcess/WebPageProxy.cpp
r230640 r230721 2391 2391 } 2392 2392 2393 if (auto syncNavigationActionPolicyReply = WTFMove(m_syncNavigationActionPolicyReply)) { 2394 syncNavigationActionPolicyReply->send(navigation ? navigation->navigationID() : 0, action, downloadID, WTFMove(websitePolicies)); 2395 return; 2396 } 2397 2393 2398 m_process->send(Messages::WebPage::DidReceivePolicyDecision(frame.frameID(), listenerID, action, navigation ? navigation->navigationID() : 0, downloadID, websitePolicies), m_pageID); 2394 2399 } … … 3910 3915 3911 3916 m_shouldSuppressAppLinksInNextNavigationPolicyDecision = false; 3917 } 3918 3919 void WebPageProxy::decidePolicyForNavigationActionSync(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, uint64_t listenerID, const UserData& userData, Ref<Messages::WebPageProxy::DecidePolicyForNavigationActionSync::DelayedReply>&& reply) 3920 { 3921 ASSERT(!m_syncNavigationActionPolicyReply); 3922 m_syncNavigationActionPolicyReply = WTFMove(reply); 3923 3924 decidePolicyForNavigationAction(frameID, frameSecurityOrigin, navigationID, WTFMove(navigationActionData), originatingFrameInfoData, originatingPageID, originalRequest, WTFMove(request), listenerID, userData); 3925 3926 // If the client did not respond synchronously, proceed with the load. 3927 if (auto syncNavigationActionPolicyReply = WTFMove(m_syncNavigationActionPolicyReply)) 3928 syncNavigationActionPolicyReply->send(navigationID, PolicyAction::Use, { }, { }); 3912 3929 } 3913 3930 -
trunk/Source/WebKit/UIProcess/WebPageProxy.h
r230640 r230721 1368 1368 1369 1369 void decidePolicyForNavigationAction(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&&, const FrameInfoData&, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&&, uint64_t listenerID, const UserData&); 1370 void decidePolicyForNavigationActionSync(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&&, const FrameInfoData&, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&&, uint64_t listenerID, const UserData&, Ref<Messages::WebPageProxy::DecidePolicyForNavigationActionSync::DelayedReply>&&); 1370 1371 void decidePolicyForNewWindowAction(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, NavigationActionData&&, WebCore::ResourceRequest&&, const String& frameName, uint64_t listenerID, const UserData&); 1371 1372 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&); … … 1926 1927 bool m_isPerformingDOMPrintOperation { false }; 1927 1928 1929 // Synchronous navigation policy decision. 1930 RefPtr<Messages::WebPageProxy::DecidePolicyForNavigationActionSync::DelayedReply> m_syncNavigationActionPolicyReply; 1931 1928 1932 WebCore::ResourceRequest m_decidePolicyForResponseRequest; 1929 1933 bool m_shouldSuppressAppLinksInNextNavigationPolicyDecision { false }; -
trunk/Source/WebKit/UIProcess/WebPageProxy.messages.in
r230591 r230721 101 101 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) 102 102 DecidePolicyForNavigationAction(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, uint64_t listenerID, WebKit::UserData userData) 103 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, uint64_t listenerID, WebKit::UserData userData) -> (uint64_t newNavigationID, enum WebCore::PolicyAction policyAction, WebKit::DownloadID downloadID, std::optional<WebKit::WebsitePoliciesData> websitePolicies) Delayed 103 104 DecidePolicyForNewWindowAction(uint64_t frameID, struct WebCore::SecurityOriginData frameSecurityOrigin, struct WebKit::NavigationActionData navigationActionData, WebCore::ResourceRequest request, String frameName, uint64_t listenerID, WebKit::UserData userData) 104 105 UnableToImplementPolicy(uint64_t frameID, WebCore::ResourceError error, WebKit::UserData userData) -
trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp
r230489 r230721 816 816 } 817 817 818 void WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction(const NavigationAction& navigationAction, const ResourceRequest& request, bool didReceiveRedirectResponse, FormState* formState, FramePolicyFunction&& function)818 void WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction(const NavigationAction& navigationAction, const ResourceRequest& request, bool didReceiveRedirectResponse, FormState* formState, PolicyDecisionMode policyDecisionMode, FramePolicyFunction&& function) 819 819 { 820 820 WebPage* webPage = m_frame ? m_frame->page() : nullptr; … … 888 888 // Notify the UIProcess. 889 889 Ref<WebFrame> protect(*m_frame); 890 891 if (policyDecisionMode == PolicyDecisionMode::Synchronous) { 892 uint64_t newNavigationID; 893 PolicyAction policyAction; 894 DownloadID downloadID; 895 std::optional<WebsitePoliciesData> websitePolicies; 896 897 if (!webPage->sendSync(Messages::WebPageProxy::DecidePolicyForNavigationActionSync(m_frame->frameID(), SecurityOriginData::fromFrame(coreFrame), documentLoader->navigationID(), navigationActionData, originatingFrameInfoData, originatingFrame && originatingFrame->page() ? originatingFrame->page()->pageID() : 0, navigationAction.resourceRequest(), request, listenerID, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get())), Messages::WebPageProxy::DecidePolicyForNavigationActionSync::Reply(newNavigationID, policyAction, downloadID, websitePolicies))) { 898 m_frame->didReceivePolicyDecision(listenerID, PolicyAction::Ignore, 0, { }, { }); 899 return; 900 } 901 902 m_frame->didReceivePolicyDecision(listenerID, policyAction, 0, downloadID, { }); 903 return; 904 } 905 906 ASSERT(policyDecisionMode == PolicyDecisionMode::Asynchronous); 890 907 if (!webPage->send(Messages::WebPageProxy::DecidePolicyForNavigationAction(m_frame->frameID(), SecurityOriginData::fromFrame(coreFrame), documentLoader->navigationID(), navigationActionData, originatingFrameInfoData, originatingFrame && originatingFrame->page() ? originatingFrame->page()->pageID() : 0, navigationAction.resourceRequest(), request, listenerID, UserData(WebProcess::singleton().transformObjectsToHandles(userData.get()).get())))) 891 908 m_frame->didReceivePolicyDecision(listenerID, PolicyAction::Ignore, 0, { }, { }); -
trunk/Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.h
r229977 r230721 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&, bool didReceiveRedirectResponse, WebCore::FormState*, WebCore:: FramePolicyFunction&&) final;128 void dispatchDecidePolicyForNavigationAction(const WebCore::NavigationAction&, const WebCore::ResourceRequest&, bool didReceiveRedirectResponse, WebCore::FormState*, WebCore::PolicyDecisionMode, WebCore::FramePolicyFunction&&) final; 129 129 void didDecidePolicyForNavigationAction() final; 130 130 void cancelPolicyCheck() final; -
trunk/Source/WebKitLegacy/mac/ChangeLog
r230643 r230721 1 2018-04-17 Chris Dumez <cdumez@apple.com> 2 3 REGRESSION (r229831): CMD-clicking an iCloud web app link unexpectedly opens that link in a new tab and the current tab 4 https://bugs.webkit.org/show_bug.cgi?id=184678 5 <rdar://problem/39422122> 6 7 Reviewed by Alex Christensen. 8 9 Add new parameter to dispatchDecidePolicyForNavigationAction. 10 11 * WebCoreSupport/WebFrameLoaderClient.h: 12 * WebCoreSupport/WebFrameLoaderClient.mm: 13 (WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): 14 1 15 2018-04-13 Chris Dumez <cdumez@apple.com> 2 16 -
trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.h
r229977 r230721 128 128 void dispatchDecidePolicyForResponse(const WebCore::ResourceResponse&, const WebCore::ResourceRequest&, WebCore::FramePolicyFunction&&) final; 129 129 void dispatchDecidePolicyForNewWindowAction(const WebCore::NavigationAction&, const WebCore::ResourceRequest&, WebCore::FormState*, const WTF::String& frameName, WebCore::FramePolicyFunction&&) final; 130 void dispatchDecidePolicyForNavigationAction(const WebCore::NavigationAction&, const WebCore::ResourceRequest&, bool didReceiveRedirectResponse, WebCore::FormState*, WebCore:: FramePolicyFunction&&) final;130 void dispatchDecidePolicyForNavigationAction(const WebCore::NavigationAction&, const WebCore::ResourceRequest&, bool didReceiveRedirectResponse, WebCore::FormState*, WebCore::PolicyDecisionMode, WebCore::FramePolicyFunction&&) final; 131 131 void cancelPolicyCheck() final; 132 132 -
trunk/Source/WebKitLegacy/mac/WebCoreSupport/WebFrameLoaderClient.mm
r230211 r230721 901 901 } 902 902 903 void WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction(const NavigationAction& action, const ResourceRequest& request, bool, FormState* formState, FramePolicyFunction&& function)903 void WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction(const NavigationAction& action, const ResourceRequest& request, bool, FormState* formState, PolicyDecisionMode, FramePolicyFunction&& function) 904 904 { 905 905 WebView *webView = getWebView(m_webFrame.get()); -
trunk/Source/WebKitLegacy/win/ChangeLog
r230632 r230721 1 2018-04-17 Chris Dumez <cdumez@apple.com> 2 3 REGRESSION (r229831): CMD-clicking an iCloud web app link unexpectedly opens that link in a new tab and the current tab 4 https://bugs.webkit.org/show_bug.cgi?id=184678 5 <rdar://problem/39422122> 6 7 Reviewed by Alex Christensen. 8 9 Add new parameter to dispatchDecidePolicyForNavigationAction. 10 11 * WebCoreSupport/WebFrameLoaderClient.cpp: 12 (WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction): 13 * WebCoreSupport/WebFrameLoaderClient.h: 14 1 15 2018-04-12 Antoine Quint <graouts@apple.com> 2 16 -
trunk/Source/WebKitLegacy/win/WebCoreSupport/WebFrameLoaderClient.cpp
r229640 r230721 566 566 } 567 567 568 void WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction(const NavigationAction& action, const ResourceRequest& request, bool, FormState* formState, FramePolicyFunction&& function)568 void WebFrameLoaderClient::dispatchDecidePolicyForNavigationAction(const NavigationAction& action, const ResourceRequest& request, bool, FormState* formState, WebCore::PolicyDecisionMode, WebCore::PolicyDecisionMode, FramePolicyFunction&& function) 569 569 { 570 570 WebView* webView = m_webFrame->webView(); -
trunk/Source/WebKitLegacy/win/WebCoreSupport/WebFrameLoaderClient.h
r228942 r230721 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&, bool didReceiveRedirectResponse, WebCore::FormState*, WebCore:: FramePolicyFunction&&) override;105 void dispatchDecidePolicyForNavigationAction(const WebCore::NavigationAction&, const WebCore::ResourceRequest&, bool didReceiveRedirectResponse, WebCore::FormState*, WebCore::PolicyDecisionMode, WebCore::FramePolicyFunction&&) override; 106 106 void cancelPolicyCheck() override; 107 107
Note: See TracChangeset
for help on using the changeset viewer.