Permalink
Show file tree
Hide file tree
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Browse files
Ignore history items added by JS without user interaction when naviga…
…tion back/forward via the WKWebView API https://bugs.webkit.org/show_bug.cgi?id=241885 <rdar://94838657> Reviewed by Geoffrey Garen. Ignore history items added by JS without user interaction when navigation back/forward via the WKWebView API. This is a behavior similar to the intervention made in Chrome (https://bugs.chromium.org/p/chromium/issues/detail?id=907167) to prevent websites from hijacking the back/forward list. When an history item is added by JS via history.pushState() and without a user gesture, we now set a flag on that HistoryItem to remember this. Later on, when calling [WKWebView goBack] or [WKWebView goForward], we will skip the history item that have this flag set. This behavior occurs behind a linked-on-after check to reduce the compatibility risk. Also, navigations via other means (e.g. via JavaScript) are not impacted and will ignore this new flag. * Source/WTF/wtf/cocoa/RuntimeApplicationChecksCocoa.h: * Source/WebCore/history/HistoryItem.h: (WebCore::HistoryItem::setWasCreatedByJSWithoutUserInteraction): (WebCore::HistoryItem::wasCreatedByJSWithoutUserInteraction const): * Source/WebCore/loader/HistoryController.cpp: (WebCore::FrameLoader::HistoryController::pushState): * Source/WebKit/Shared/SessionState.cpp: (WebKit::PageState::encode const): (WebKit::PageState::decode): * Source/WebKit/Shared/SessionState.h: * Source/WebKit/Shared/WebBackForwardListItem.h: (WebKit::WebBackForwardListItem::wasCreatedByJSWithoutUserInteraction const): * Source/WebKit/UIProcess/WebPageProxy.cpp: (WebKit::itemSkippingBackForwardItemsAddedByJSWithoutUserGesture): (WebKit::WebPageProxy::goForward): (WebKit::WebPageProxy::goBack): * Source/WebKit/WebProcess/WebCoreSupport/SessionStateConversion.cpp: (WebKit::toBackForwardListItemState): * Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: * Tools/TestWebKitAPI/Tests/WebKit/WKBackForwardList.mm: (TEST): * Tools/TestWebKitAPI/cocoa/TestNavigationDelegate.h: * Tools/TestWebKitAPI/cocoa/TestNavigationDelegate.mm: (-[TestNavigationDelegate _webView:navigation:didSameDocumentNavigation:]): (-[TestNavigationDelegate waitForDidFinishNavigationOrSameDocumentNavigation]): (-[WKWebView _test_waitForDidFinishNavigationOrSameDocumentNavigation]): Canonical link: https://commits.webkit.org/251783@main git-svn-id: https://svn.webkit.org/repository/webkit/trunk@295778 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- Loading branch information
Showing
12 changed files
with
189 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters