Changeset 238218 in webkit
- Timestamp:
- Nov 14, 2018 7:35:37 PM (5 years ago)
- Location:
- trunk
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r238215 r238218 1 2018-11-14 Chris Dumez <cdumez@apple.com> 2 3 WebKit.DecidePolicyForNavigationActionForHyperlinkThatRedirects API fails when PSON is enabled 4 https://bugs.webkit.org/show_bug.cgi?id=191640 5 6 Reviewed by Alex Christensen. 7 8 The issue was that when process-swapping on a redirect, the parameters provided by the new 9 WebContent process for navigationActionData / originatingFrameInfoData / frameSecurityOrigin 10 are not correct because it does not have sufficient information (it does not know a swap 11 happened). 12 13 To address the issue, we now store the navigationActionData / originatingFrameInfoData / 14 frameSecurityOrigin on the Navigation object whenever decidePolicyForNavigationAction is 15 called. If the decidePolicyForNavigationAction is for a redirect, use the ones we stored 16 on the Navigation object instead of the ones provided by the WebContent process. In case 17 of redirect, those do not change anyway. 18 19 This fixes all WebKit.DecidePolicyForNavigationAction* tests with PSON enabled. 20 21 * UIProcess/API/APINavigation.h: 22 (API::Navigation::currentRequestIsRedirect const): 23 (API::Navigation::wasUserInitiated const): 24 (API::Navigation::shouldForceDownload const): 25 (API::Navigation::treatAsSameOriginNavigation const): 26 (API::Navigation::hasOpenedFrames const): 27 (API::Navigation::openedViaWindowOpenWithOpener const): 28 (API::Navigation::opener const): 29 (API::Navigation::requesterOrigin const): 30 (API::Navigation::lockHistory const): 31 (API::Navigation::lockBackForwardList const): 32 (API::Navigation::clientRedirectSourceForHistory const): 33 (API::Navigation::setLastNavigationAction): 34 (API::Navigation::lastNavigationAction const): 35 (API::Navigation::setOriginatingFrameInfo): 36 (API::Navigation::originatingFrameInfo const): 37 (API::Navigation::setDestinationFrameSecurityOrigin): 38 (API::Navigation::destinationFrameSecurityOrigin const): 39 * UIProcess/WebPageProxy.cpp: 40 (WebKit::WebPageProxy::decidePolicyForNavigationActionAsync): 41 (WebKit::WebPageProxy::decidePolicyForNavigationAction): 42 (WebKit::WebPageProxy::decidePolicyForNavigationActionSync): 43 * UIProcess/WebPageProxy.h: 44 1 45 2018-11-14 Chris Dumez <cdumez@apple.com> 2 46 -
trunk/Source/WebKit/UIProcess/API/APINavigation.h
r238179 r238218 28 28 #include "APIObject.h" 29 29 #include "DataReference.h" 30 #include "FrameInfoData.h" 31 #include "NavigationActionData.h" 30 32 #include "WebBackForwardListItem.h" 31 33 #include <WebCore/Process.h> … … 94 96 std::optional<WebCore::ProcessIdentifier> currentRequestProcessIdentifier() const { return m_currentRequestProcessIdentifier; } 95 97 96 void setCurrentRequestIsRedirect(bool isRedirect) { m_isRedirect = isRedirect; } 97 bool currentRequestIsRedirect() const { return m_isRedirect; } 98 bool currentRequestIsRedirect() const { return m_lastNavigationAction.isRedirect; } 98 99 99 100 void setTargetItem(WebKit::WebBackForwardListItem& item) { m_targetItem = &item; } … … 105 106 Vector<WebCore::URL> takeRedirectChain() { return WTFMove(m_redirectChain); } 106 107 107 void setWasUserInitiated(bool value) { m_wasUserInitiated = value; } 108 bool wasUserInitiated() const { return m_wasUserInitiated; } 108 bool wasUserInitiated() const { return !!m_lastNavigationAction.userGestureTokenIdentifier; } 109 109 110 void setShouldForceDownload(bool value) { m_shouldForceDownload = value; } 111 bool shouldForceDownload() const { return m_shouldForceDownload; } 110 bool shouldForceDownload() const 111 { 112 #if USE(SYSTEM_PREVIEW) 113 return !m_lastNavigationAction.downloadAttribute.isNull() || currentRequest().isSystemPreview(); 114 #else 115 return !m_lastNavigationAction.downloadAttribute.isNull(); 116 #endif 117 } 112 118 113 void setTreatAsSameOriginNavigation(bool value) { m_treatAsSameOriginNavigation = value; } 114 bool treatAsSameOriginNavigation() const { return m_treatAsSameOriginNavigation; } 119 bool treatAsSameOriginNavigation() const { return m_lastNavigationAction.treatAsSameOriginNavigation; } 120 bool hasOpenedFrames() const { return m_lastNavigationAction.hasOpenedFrames; } 121 bool openedViaWindowOpenWithOpener() const { return m_lastNavigationAction.openedViaWindowOpenWithOpener; } 122 const std::optional<std::pair<uint64_t, uint64_t>>& opener() const { return m_lastNavigationAction.opener; } 123 const WebCore::SecurityOriginData& requesterOrigin() const { return m_lastNavigationAction.requesterOrigin; } 115 124 116 void setHasOpenedFrames(bool value) { m_hasOpenedFrames = value; }117 bool hasOpenedFrames() const { return m_hasOpenedFrames; }125 WebCore::LockHistory lockHistory() const { return m_lastNavigationAction.lockHistory; } 126 WebCore::LockBackForwardList lockBackForwardList() const { return m_lastNavigationAction.lockBackForwardList; } 118 127 119 bool openedViaWindowOpenWithOpener() const { return m_openedViaWindowOpenWithOpener; } 120 void setOpenedViaWindowOpenWithOpener() { m_openedViaWindowOpenWithOpener = true; } 128 WTF::String clientRedirectSourceForHistory() const { return m_lastNavigationAction.clientRedirectSourceForHistory; } 121 129 122 void set Opener(const std::optional<std::pair<uint64_t, uint64_t>>& opener) { m_opener = opener; }123 const std::optional<std::pair<uint64_t, uint64_t>>& opener() const { return m_opener; }130 void setLastNavigationAction(const WebKit::NavigationActionData& navigationAction) { m_lastNavigationAction = navigationAction; } 131 const WebKit::NavigationActionData& lastNavigationAction() const { return m_lastNavigationAction; } 124 132 125 void set RequesterOrigin(const WebCore::SecurityOriginData& origin) { m_requesterOrigin = origin; }126 const Web Core::SecurityOriginData& requesterOrigin() const { return m_requesterOrigin; }133 void setOriginatingFrameInfo(const WebKit::FrameInfoData& frameInfo) { m_originatingFrameInfo = frameInfo; } 134 const WebKit::FrameInfoData& originatingFrameInfo() const { return m_originatingFrameInfo; } 127 135 128 void setLockHistory(WebCore::LockHistory lockHistory) { m_lockHistory = lockHistory; } 129 WebCore::LockHistory lockHistory() const { return m_lockHistory; } 130 131 void setLockBackForwardList(WebCore::LockBackForwardList lockBackForwardList) { m_lockBackForwardList = lockBackForwardList; } 132 WebCore::LockBackForwardList lockBackForwardList() const { return m_lockBackForwardList; } 133 134 void setClientRedirectSourceForHistory(const WTF::String& clientRedirectSourceForHistory) { m_clientRedirectSourceForHistory = clientRedirectSourceForHistory; } 135 WTF::String clientRedirectSourceForHistory() const { return m_clientRedirectSourceForHistory; } 136 void setDestinationFrameSecurityOrigin(const WebCore::SecurityOriginData& origin) { m_destinationFrameSecurityOrigin = origin; } 137 const WebCore::SecurityOriginData& destinationFrameSecurityOrigin() const { return m_destinationFrameSecurityOrigin; } 136 138 137 139 #if !LOG_DISABLED … … 152 154 std::optional<WebCore::ProcessIdentifier> m_currentRequestProcessIdentifier; 153 155 Vector<WebCore::URL> m_redirectChain; 154 bool m_wasUserInitiated { true };155 bool m_shouldForceDownload { false };156 bool m_isRedirect { false };157 156 158 157 RefPtr<WebKit::WebBackForwardListItem> m_targetItem; 159 158 RefPtr<WebKit::WebBackForwardListItem> m_fromItem; 160 159 std::optional<WebCore::FrameLoadType> m_backForwardFrameLoadType; 161 bool m_treatAsSameOriginNavigation { false };162 bool m_hasOpenedFrames { false };163 bool m_openedViaWindowOpenWithOpener { false };164 std::optional<std::pair<uint64_t, uint64_t>> m_opener;165 WebCore::SecurityOriginData m_requesterOrigin;166 WebCore::LockHistory m_lockHistory;167 WebCore::LockBackForwardList m_lockBackForwardList;168 WTF::String m_clientRedirectSourceForHistory;169 160 std::unique_ptr<SubstituteData> m_substituteData; 161 WebKit::NavigationActionData m_lastNavigationAction; 162 WebKit::FrameInfoData m_originatingFrameInfo; 163 WebCore::SecurityOriginData m_destinationFrameSecurityOrigin; 170 164 }; 171 165 -
trunk/Source/WebKit/UIProcess/WebPageProxy.cpp
r238193 r238218 4159 4159 #endif 4160 4160 4161 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, IPC::FormDataReference&& requestBody, WebCore::ResourceResponse&& redirectResponse, const UserData& userData, WebCore::ShouldSkipSafeBrowsingCheck shouldSkipSafeBrowsingCheck, uint64_t listenerID)4161 void WebPageProxy::decidePolicyForNavigationActionAsync(uint64_t frameID, WebCore::SecurityOriginData&& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&& navigationActionData, FrameInfoData&& frameInfoData, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&& request, IPC::FormDataReference&& requestBody, WebCore::ResourceResponse&& redirectResponse, const UserData& userData, WebCore::ShouldSkipSafeBrowsingCheck shouldSkipSafeBrowsingCheck, uint64_t listenerID) 4162 4162 { 4163 4163 auto* frame = m_process->webFrame(frameID); 4164 4164 MESSAGE_CHECK(frame); 4165 4165 4166 decidePolicyForNavigationAction(*frame, frameSecurityOrigin, navigationID, WTFMove(navigationActionData), frameInfoData, originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(redirectResponse), userData, shouldSkipSafeBrowsingCheck, PolicyDecisionSender::create([this, protectedThis = makeRef(*this), frameID, listenerID] (auto... args) {4166 decidePolicyForNavigationAction(*frame, WTFMove(frameSecurityOrigin), navigationID, WTFMove(navigationActionData), WTFMove(frameInfoData), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(redirectResponse), userData, shouldSkipSafeBrowsingCheck, PolicyDecisionSender::create([this, protectedThis = makeRef(*this), frameID, listenerID] (auto... args) { 4167 4167 m_process->send(Messages::WebPage::DidReceivePolicyDecision(frameID, listenerID, args...), m_pageID); 4168 4168 })); 4169 4169 } 4170 4170 4171 void WebPageProxy::decidePolicyForNavigationAction(WebFrameProxy& frame, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&& navigationActionData, const FrameInfoData& originatingFrameInfoData, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&& request, IPC::FormDataReference&& requestBody, WebCore::ResourceResponse&& redirectResponse, const UserData& userData, WebCore::ShouldSkipSafeBrowsingCheck shouldSkipSafeBrowsingCheck, Ref<PolicyDecisionSender>&& sender)4171 void WebPageProxy::decidePolicyForNavigationAction(WebFrameProxy& frame, WebCore::SecurityOriginData&& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&& navigationActionData, FrameInfoData&& originatingFrameInfoData, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&& request, IPC::FormDataReference&& requestBody, WebCore::ResourceResponse&& redirectResponse, const UserData& userData, WebCore::ShouldSkipSafeBrowsingCheck shouldSkipSafeBrowsingCheck, Ref<PolicyDecisionSender>&& sender) 4172 4172 { 4173 4173 LOG(Loading, "WebPageProxy::decidePolicyForNavigationAction - Original URL %s, current target URL %s", originalRequest.url().string().utf8().data(), request.url().string().utf8().data()); … … 4190 4190 if (navigationID) 4191 4191 navigation = m_navigationState->navigation(navigationID); 4192 4193 // When process-swapping on a redirect, the navigationActionData / originatingFrameInfoData / frameSecurityOrigin provided by the fresh new WebProcess are inaccurate since 4194 // the new process does not have sufficient information. To address the issue, we restore the information we stored on the NavigationAction during the original request 4195 // policy decision. 4196 if (navigationActionData.isRedirect && navigation) { 4197 navigationActionData = navigation->lastNavigationAction(); 4198 navigationActionData.isRedirect = true; 4199 originatingFrameInfoData = navigation->originatingFrameInfo(); 4200 frameSecurityOrigin = navigation->destinationFrameSecurityOrigin(); 4201 } 4192 4202 4193 4203 if (auto targetBackForwardItemIdentifier = navigationActionData.targetBackForwardItemIdentifier) { … … 4204 4214 4205 4215 uint64_t newNavigationID = navigation->navigationID(); 4206 navigation->setWasUserInitiated(!!navigationActionData.userGestureTokenIdentifier);4207 #if USE(SYSTEM_PREVIEW)4208 navigation->setShouldForceDownload(!navigationActionData.downloadAttribute.isNull() || request.isSystemPreview());4209 #else4210 navigation->setShouldForceDownload(!navigationActionData.downloadAttribute.isNull());4211 #endif4212 4216 navigation->setCurrentRequest(ResourceRequest(request), m_process->coreProcessIdentifier()); 4213 navigation->setCurrentRequestIsRedirect(navigationActionData.isRedirect); 4214 navigation->setTreatAsSameOriginNavigation(navigationActionData.treatAsSameOriginNavigation); 4215 navigation->setHasOpenedFrames(navigationActionData.hasOpenedFrames); 4216 if (navigationActionData.openedViaWindowOpenWithOpener) 4217 navigation->setOpenedViaWindowOpenWithOpener(); 4218 navigation->setOpener(navigationActionData.opener); 4219 navigation->setRequesterOrigin(navigationActionData.requesterOrigin); 4220 navigation->setLockHistory(navigationActionData.lockHistory); 4221 navigation->setLockBackForwardList(navigationActionData.lockBackForwardList); 4222 navigation->setClientRedirectSourceForHistory(navigationActionData.clientRedirectSourceForHistory); 4217 navigation->setLastNavigationAction(navigationActionData); 4218 navigation->setOriginatingFrameInfo(originatingFrameInfoData); 4219 navigation->setDestinationFrameSecurityOrigin(frameSecurityOrigin); 4223 4220 4224 4221 #if ENABLE(CONTENT_FILTERING) … … 4294 4291 } 4295 4292 4296 void WebPageProxy::decidePolicyForNavigationActionSync(uint64_t frameID, bool isMainFrame, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&& navigationActionData, const FrameInfoData& frameInfoData, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&& request, IPC::FormDataReference&& requestBody, WebCore::ResourceResponse&& redirectResponse, const UserData& userData, WebCore::ShouldSkipSafeBrowsingCheck shouldSkipSafeBrowsingCheck, Messages::WebPageProxy::DecidePolicyForNavigationActionSync::DelayedReply&& reply)4293 void WebPageProxy::decidePolicyForNavigationActionSync(uint64_t frameID, bool isMainFrame, WebCore::SecurityOriginData&& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&& navigationActionData, FrameInfoData&& frameInfoData, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&& request, IPC::FormDataReference&& requestBody, WebCore::ResourceResponse&& redirectResponse, const UserData& userData, WebCore::ShouldSkipSafeBrowsingCheck shouldSkipSafeBrowsingCheck, Messages::WebPageProxy::DecidePolicyForNavigationActionSync::DelayedReply&& reply) 4297 4294 { 4298 4295 auto sender = PolicyDecisionSender::create(WTFMove(reply)); … … 4310 4307 } 4311 4308 4312 decidePolicyForNavigationAction(*frame, frameSecurityOrigin, navigationID, WTFMove(navigationActionData), frameInfoData, originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(redirectResponse), userData, shouldSkipSafeBrowsingCheck, sender.copyRef());4309 decidePolicyForNavigationAction(*frame, WTFMove(frameSecurityOrigin), navigationID, WTFMove(navigationActionData), WTFMove(frameInfoData), originatingPageID, originalRequest, WTFMove(request), WTFMove(requestBody), WTFMove(redirectResponse), userData, shouldSkipSafeBrowsingCheck, sender.copyRef()); 4313 4310 4314 4311 // If the client did not respond synchronously, proceed with the load. -
trunk/Source/WebKit/UIProcess/WebPageProxy.h
r238193 r238218 1468 1468 void didDestroyNavigation(uint64_t navigationID); 1469 1469 1470 void decidePolicyForNavigationAction(WebFrameProxy&, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&&, const FrameInfoData&, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&&, IPC::FormDataReference&& requestBody, WebCore::ResourceResponse&& redirectResponse, const UserData&, WebCore::ShouldSkipSafeBrowsingCheck, Ref<PolicyDecisionSender>&&);1471 void decidePolicyForNavigationActionAsync(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&&, const FrameInfoData&, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&&, IPC::FormDataReference&& requestBody, WebCore::ResourceResponse&& redirectResponse, const UserData&, WebCore::ShouldSkipSafeBrowsingCheck, uint64_t listenerID);1472 void decidePolicyForNavigationActionSync(uint64_t frameID, bool isMainFrame, const WebCore::SecurityOriginData& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&&, const FrameInfoData&, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&&, IPC::FormDataReference&& requestBody, WebCore::ResourceResponse&& redirectResponse, const UserData&, WebCore::ShouldSkipSafeBrowsingCheck, Messages::WebPageProxy::DecidePolicyForNavigationActionSync::DelayedReply&&);1470 void decidePolicyForNavigationAction(WebFrameProxy&, WebCore::SecurityOriginData&& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&&, FrameInfoData&&, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&&, IPC::FormDataReference&& requestBody, WebCore::ResourceResponse&& redirectResponse, const UserData&, WebCore::ShouldSkipSafeBrowsingCheck, Ref<PolicyDecisionSender>&&); 1471 void decidePolicyForNavigationActionAsync(uint64_t frameID, WebCore::SecurityOriginData&& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&&, FrameInfoData&&, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&&, IPC::FormDataReference&& requestBody, WebCore::ResourceResponse&& redirectResponse, const UserData&, WebCore::ShouldSkipSafeBrowsingCheck, uint64_t listenerID); 1472 void decidePolicyForNavigationActionSync(uint64_t frameID, bool isMainFrame, WebCore::SecurityOriginData&& frameSecurityOrigin, uint64_t navigationID, NavigationActionData&&, FrameInfoData&&, uint64_t originatingPageID, const WebCore::ResourceRequest& originalRequest, WebCore::ResourceRequest&&, IPC::FormDataReference&& requestBody, WebCore::ResourceResponse&& redirectResponse, const UserData&, WebCore::ShouldSkipSafeBrowsingCheck, Messages::WebPageProxy::DecidePolicyForNavigationActionSync::DelayedReply&&); 1473 1473 void decidePolicyForNewWindowAction(uint64_t frameID, const WebCore::SecurityOriginData& frameSecurityOrigin, NavigationActionData&&, WebCore::ResourceRequest&&, const String& frameName, uint64_t listenerID, const UserData&); 1474 1474 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/Tools/ChangeLog
r238216 r238218 1 2018-11-14 Chris Dumez <cdumez@apple.com> 2 3 WebKit.DecidePolicyForNavigationActionForHyperlinkThatRedirects API fails when PSON is enabled 4 https://bugs.webkit.org/show_bug.cgi?id=191640 5 6 Reviewed by Alex Christensen. 7 8 Add API test coverage. 9 10 * TestWebKitAPI/Tests/WebKitCocoa/DecidePolicyForNavigationAction.mm: 11 (runDecidePolicyForNavigationActionForHyperlinkThatRedirects): 12 (TEST): 13 1 14 2018-11-14 Chris Dumez <cdumez@apple.com> 2 15 -
trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/DecidePolicyForNavigationAction.mm
r230919 r238218 31 31 #import "TestProtocol.h" 32 32 #import <WebKit/WKNavigationActionPrivate.h> 33 #import <WebKit/WKProcessPoolPrivate.h> 34 #import <WebKit/_WKProcessPoolConfiguration.h> 33 35 #import <wtf/RetainPtr.h> 34 36 #import <wtf/mac/AppKitCompatibilityDeclarations.h> … … 432 434 } 433 435 434 TEST(WebKit, DecidePolicyForNavigationActionForHyperlinkThatRedirects) 435 { 436 auto webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600)]); 436 enum class ShouldEnableProcessSwap { No, Yes }; 437 static void runDecidePolicyForNavigationActionForHyperlinkThatRedirects(ShouldEnableProcessSwap shouldEnableProcessSwap) 438 { 439 auto processPoolConfiguration = adoptNS([[_WKProcessPoolConfiguration alloc] init]); 440 processPoolConfiguration.get().processSwapsOnNavigation = shouldEnableProcessSwap == ShouldEnableProcessSwap::Yes ? YES : NO; 441 auto processPool = adoptNS([[WKProcessPool alloc] _initWithConfiguration:processPoolConfiguration.get()]); 442 443 auto webViewConfiguration = adoptNS([[WKWebViewConfiguration alloc] init]); 444 [webViewConfiguration setProcessPool:processPool.get()]; 445 446 auto webView = adoptNS([[WKWebView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) configuration:webViewConfiguration.get()]); 437 447 438 448 auto window = adoptNS([[NSWindow alloc] initWithContentRect:[webView frame] styleMask:NSWindowStyleMaskBorderless backing:NSBackingStoreBuffered defer:YES]); … … 480 490 newWebView = nullptr; 481 491 action = nullptr; 492 } 493 494 TEST(WebKit, DecidePolicyForNavigationActionForHyperlinkThatRedirectsWithoutPSON) 495 { 496 runDecidePolicyForNavigationActionForHyperlinkThatRedirects(ShouldEnableProcessSwap::No); 497 } 498 499 TEST(WebKit, DecidePolicyForNavigationActionForHyperlinkThatRedirectsWithPSON) 500 { 501 runDecidePolicyForNavigationActionForHyperlinkThatRedirects(ShouldEnableProcessSwap::Yes); 482 502 } 483 503
Note: See TracChangeset
for help on using the changeset viewer.