[webkit-changes] [WebKit/WebKit] 76a11d: [Navigation] Dispatch NavigateEvent on reload
Rob Buis
noreply at github.com
Fri Sep 13 01:16:28 PDT 2024
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: 76a11dfefffc787445970c5150db31e82cca32de
https://github.com/WebKit/WebKit/commit/76a11dfefffc787445970c5150db31e82cca32de
Author: Rob Buis <rbuis at igalia.com>
Date: 2024-09-13 (Fri, 13 Sep 2024)
Changed paths:
M LayoutTests/TestExpectations
M LayoutTests/imported/w3c/web-platform-tests/navigation-api/currententrychange-event/navigation-reload-intercept-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/navigate-destination-getState-reload-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-history-entry/key-id-location-reload-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/reload-info-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/reload-no-args-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/reload-state-and-info-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/reload-state-undefined-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/return-value/reload-detach-in-onnavigate-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/return-value/reload-intercept-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/return-value/reload-intercept-rejected-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/return-value/reload-preventDefault-expected.txt
R LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/return-value/reload-rejection-order-unload-unserializablestate-expected.txt
M LayoutTests/imported/w3c/web-platform-tests/navigation-api/per-entry-events/dispose-same-document-reload-with-intercept-expected.txt
M Source/WebCore/loader/DocumentWriter.cpp
M Source/WebCore/loader/FrameLoader.cpp
M Source/WebCore/loader/FrameLoader.h
M Source/WebCore/page/Navigation.cpp
M Source/WebCore/page/Navigation.h
M Source/WebCore/page/NavigationHistoryEntry.cpp
M Source/WebCore/page/NavigationHistoryEntry.h
Log Message:
-----------
[Navigation] Dispatch NavigateEvent on reload
https://bugs.webkit.org/show_bug.cgi?id=273688
Reviewed by Alex Christensen.
Various kinds of reloads, such as navigation.reload() and location.reload() need to dispatch the NavigateEvent [1]. Since a reload triggered
by browser UI (i.e. clicking the reload button on the crome UI) should not dispatch the NavigateEvent, put the logic in FrameLoader::loadFrameRequest
and not in FrameLoader::reload. And for the same reason, make Navigation::reload go through FrameLoader::changeLocation and thus FrameLoader::loadFrameRequest.
This PR also introduces logic to deal with a reload causing an existing window, and matching navigation, to be discarded in favour of a new window and navigation
combination, in that case we have to copy over the navigation entries from the previous Navigation instance.
[1] https://html.spec.whatwg.org/multipage/browsing-the-web.html#reloading-and-traversing:fire-a-push/replace/reload-navigate-event
* LayoutTests/TestExpectations:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/currententrychange-event/navigation-reload-intercept-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/navigate-destination-getState-reload-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-history-entry/key-id-location-reload-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/reload-info-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/reload-no-args-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/reload-state-and-info-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/reload-state-undefined-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/return-value/reload-detach-in-onnavigate-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/return-value/reload-intercept-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/return-value/reload-intercept-rejected-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/return-value/reload-preventDefault-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/return-value/reload-rejection-order-unload-unserializablestate-expected.txt: Removed.
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/per-entry-events/dispose-same-document-reload-with-intercept-expected.txt:
* Source/WebCore/loader/DocumentWriter.cpp:
(WebCore::DocumentWriter::begin):
* Source/WebCore/loader/FrameLoader.cpp:
(WebCore::FrameLoader::didBeginDocument):
(WebCore::FrameLoader::loadFrameRequest):
(WebCore::FrameLoader::loadURL):
(WebCore::FrameLoader::loadPostRequest):
(WebCore::FrameLoader::dispatchNavigateEvent):
(WebCore::FrameLoader::updateNavigationAPIEntries): Deleted.
* Source/WebCore/loader/FrameLoader.h:
* Source/WebCore/page/Navigation.cpp:
(WebCore::Navigation::initializeForNewWindow):
(WebCore::Navigation::reload):
(WebCore::Navigation::notifyCommittedToEntry):
(WebCore::Navigation::abortOngoingNavigation):
(WebCore::Navigation::innerDispatchNavigateEvent):
(WebCore::Navigation::initializeEntries): Deleted.
* Source/WebCore/page/Navigation.h:
* Source/WebCore/page/NavigationHistoryEntry.cpp:
(WebCore::NavigationHistoryEntry::NavigationHistoryEntry):
(WebCore::NavigationHistoryEntry::create):
(WebCore::NavigationHistoryEntry::getState const):
(WebCore::NavigationHistoryEntry::setState):
* Source/WebCore/page/NavigationHistoryEntry.h:
Canonical link: https://commits.webkit.org/283604@main
To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications
More information about the webkit-changes
mailing list