Skip to content

Commit

Permalink
[Navigation] Dispatch NavigateEvent on same-document navigations
Browse files Browse the repository at this point in the history
https://bugs.webkit.org/show_bug.cgi?id=265401

Reviewed by Alex Christensen.

- Partial implementation intercept/finish/scroll/abort in NavigateEvent.
- Implement a large part of the dispatching of Traversal and Push/Reload/Replace events.
- The FrameLoader dispatches the events in the case of same-document loads.
- Gate NavigateEvent.hasUAVisualTransition behind the setting for it.

* LayoutTests/TestExpectations:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/commit-behavior/multiple-intercept-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/cross-window/click-samedocument-crossorigin-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/cross-window/click-samedocument-crossorigin-sameorigindomain.sub-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/cross-window/click-samedocument-sameorigin-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/cross-window/location-samedocument-crossorigin-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/cross-window/location-samedocument-crossorigin-sameorigindomain.sub-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/cross-window/location-samedocument-sameorigin-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/cross-window/open-samedocument-crossorigin-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/cross-window/open-samedocument-crossorigin-sameorigindomain.sub-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/cross-window/open-samedocument-sameorigin-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/cross-window/submit-samedocument-crossorigin-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/cross-window/submit-samedocument-crossorigin-sameorigindomain.sub-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/cross-window/submit-samedocument-sameorigin-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/intercept-after-dispatch-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/intercept-canceled-event-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/intercept-handler-null-or-undefined-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/navigate-anchor-fragment-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/navigate-anchor-userInitiated-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/navigate-form-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/navigate-form-get-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/navigate-form-userInitiated-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/navigate-history-back-after-fragment-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/navigate-history-back-noop-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/navigate-history-go-0-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/navigate-iframe-location-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/navigate-location-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/navigate-meta-refresh-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/navigate-navigation-back-same-document-in-iframe-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/navigate-navigation-navigate-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/navigate-svg-anchor-fragment-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/navigate-window-open-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/navigate-window-open-self-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/same-url-replace-cross-document-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigate-event/same-url-replace-same-document-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/navigate-history-push-not-loaded-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/navigate-same-document-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/navigation-api/scroll-behavior/manual-scroll-after-resolve-expected.txt:
* Source/WebCore/loader/FrameLoader.cpp:
(WebCore::determineNavigationType):
(WebCore::FrameLoader::loadInSameDocument):
* Source/WebCore/page/NavigateEvent.cpp:
(WebCore::NavigateEvent::NavigateEvent):
(WebCore::NavigateEvent::create):
(WebCore::NavigateEvent::sharedChecks):
(WebCore::NavigateEvent::intercept):
(WebCore::NavigateEvent::scroll):
(WebCore::NavigateEvent::finish):
* Source/WebCore/page/NavigateEvent.h:
* Source/WebCore/page/Navigation.cpp:
(WebCore::Navigation::currentEntry const):
(WebCore::Navigation::updateCurrentEntry):
(WebCore::Navigation::hasEntriesAndEventsDisabled const):
(WebCore::Navigation::updateForNavigation):
(WebCore::documentCanHaveURLRewritten):
(WebCore::Navigation::innerDispatchNavigateEvent):
(WebCore::Navigation::dispatchTraversalNavigateEvent):
(WebCore::Navigation::dispatchPushReplaceReloadNavigateEvent):
(WebCore::Navigation::dispatchDownloadNavigateEvent):
(WebCore::determineNavigationType): Deleted.
* Source/WebCore/page/Navigation.h:
* Source/WebCore/page/NavigationTransition.h:

Canonical link: https://commits.webkit.org/276522@main
  • Loading branch information
TingPing committed Mar 22, 2024
1 parent 1b69ad8 commit b3b7f85
Show file tree
Hide file tree
Showing 43 changed files with 384 additions and 144 deletions.
8 changes: 3 additions & 5 deletions LayoutTests/TestExpectations
Expand Up @@ -6858,6 +6858,7 @@ imported/w3c/web-platform-tests/navigation-api/commit-behavior/after-transition-
imported/w3c/web-platform-tests/navigation-api/navigate-event/navigate-destination-getState-back-forward.html [ Pass ]
imported/w3c/web-platform-tests/navigation-api/navigate-event/navigate-history-back-noop.html [ Pass ]
imported/w3c/web-platform-tests/navigation-api/navigate-event/navigate-navigation-back-same-document-in-iframe.html [ Pass ]
imported/w3c/web-platform-tests/navigation-api/currententrychange-event/navigation-navigate-same-doc.html [ Skip ]
imported/w3c/web-platform-tests/navigation-api/navigate-event/navigate-to-javascript.html [ Pass ]
imported/w3c/web-platform-tests/navigation-api/navigate-event/navigatesuccess-cross-document.html [ Pass ]
imported/w3c/web-platform-tests/navigation-api/navigate-event/replaceState-in-unload-then-remove-iframe.html [ Pass ]
Expand All @@ -6869,6 +6870,8 @@ imported/w3c/web-platform-tests/navigation-api/navigate-event/cross-window/open-
imported/w3c/web-platform-tests/navigation-api/navigate-event/cross-window/submit-crossdocument-crossorigin.html [ Pass ]
imported/w3c/web-platform-tests/navigation-api/navigation-history-entry/entries-across-origins.html [ Pass ]
imported/w3c/web-platform-tests/navigation-api/navigation-history-entry/entries-after-blank-navigation-from-cross-origin.html [ Pass ]
imported/w3c/web-platform-tests/navigation-api/navigate-event/intercept-canceled-event.html [ Pass ]
imported/w3c/web-platform-tests/navigation-api/navigate-event/intercept-after-dispatch.html [ Pass ]
imported/w3c/web-platform-tests/navigation-api/navigation-history-entry/entries-array-equality.html [ Pass ]
imported/w3c/web-platform-tests/navigation-api/navigation-history-entry/entries-in-new-srcdoc-iframe.html [ Pass ]
imported/w3c/web-platform-tests/navigation-api/navigation-history-entry/key-id-location-reload-intercept.html [ Pass ]
Expand All @@ -6877,7 +6880,6 @@ imported/w3c/web-platform-tests/navigation-api/navigation-history-entry/opaque-o
imported/w3c/web-platform-tests/navigation-api/navigation-history-entry/sameDocument-after-navigate.html [ Pass ]
imported/w3c/web-platform-tests/navigation-api/navigation-history-entry/key-id-location-replace-cross-origin.html [ Pass ]
imported/w3c/web-platform-tests/navigation-api/navigation-methods/navigate-from-initial-about-blank-gc.html [ Pass ]
imported/w3c/web-platform-tests/navigation-api/navigation-methods/navigate-intercept-history-state.html [ Pass ]
imported/w3c/web-platform-tests/navigation-api/navigation-methods/navigate-relative-url.html [ Pass ]
imported/w3c/web-platform-tests/navigation-api/navigation-methods/return-value/back-forward-out-of-bounds.html [ Pass ]
imported/w3c/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-push-initial-about-blank.html [ Pass ]
Expand All @@ -6888,13 +6890,9 @@ imported/w3c/web-platform-tests/navigation-api/navigation-methods/return-value/b
imported/w3c/web-platform-tests/navigation-api/navigation-methods/return-value/back-forward-initial-about-blank.html [ Pass ]
imported/w3c/web-platform-tests/navigation-api/navigation-methods/return-value/navigate-invalid-url.html [ Pass ]
imported/w3c/web-platform-tests/navigation-api/navigation-methods/reload-base-url.html [ Pass ]
imported/w3c/web-platform-tests/navigation-api/navigation-methods/sandboxing-navigate-parent.html [ Pass ]
imported/w3c/web-platform-tests/navigation-api/navigation-methods/sandboxing-navigate-sibling.html [ Pass ]
imported/w3c/web-platform-tests/navigation-api/ordering-and-transition/transition-cross-document.html [ Skip ]
imported/w3c/web-platform-tests/navigation-api/scroll-behavior/manual-basic.html [ Pass ]
imported/w3c/web-platform-tests/navigation-api/scroll-behavior/manual-immediate-scroll.html [ Pass ]
imported/w3c/web-platform-tests/navigation-api/scroll-behavior/scroll-on-synthetic-event.html [ Pass ]
imported/w3c/web-platform-tests/navigation-api/scroll-behavior/scroll-without-intercept.html [ Pass ]
imported/w3c/web-platform-tests/navigation-api/updateCurrentEntry-method/same-document-away-and-back-location-api.html [ Skip ]
imported/w3c/web-platform-tests/navigation-api/updateCurrentEntry-method/cross-document-away-and-back.html [ Skip ]
imported/w3c/web-platform-tests/navigation-api/updateCurrentEntry-method/cross-document-location-api.html [ Skip ]
Expand Down
@@ -1,10 +1,10 @@

FAIL after-transition + after-transition assert_equals: expected "#1" but got ""
FAIL after-transition + (not provided) assert_equals: expected "#2" but got ""
FAIL after-transition + immediate assert_equals: expected true but got false
FAIL immediate + after-transition assert_equals: expected "#4" but got ""
FAIL immediate + (not provided) assert_equals: expected true but got false
FAIL immediate + immediate assert_equals: expected true but got false
FAIL (not provided) + after-transition assert_equals: expected "#7" but got ""
FAIL (not provided) + immediate assert_equals: expected true but got false
FAIL after-transition + after-transition assert_equals: expected false but got true
FAIL after-transition + (not provided) assert_equals: expected false but got true
PASS after-transition + immediate
FAIL immediate + after-transition assert_equals: expected false but got true
PASS immediate + (not provided)
PASS immediate + immediate
FAIL (not provided) + after-transition assert_equals: expected false but got true
PASS (not provided) + immediate

@@ -1,6 +1,4 @@


Harness Error (TIMEOUT), message = null

TIMEOUT clicking on an <a> element that navigates same-document targeting a cross-origin window Test timed out
FAIL clicking on an <a> element that navigates same-document targeting a cross-origin window assert_true: destination.sameDocument expected true got false

@@ -1,6 +1,4 @@


Harness Error (TIMEOUT), message = null

TIMEOUT clicking on an <a> element that navigates same-document targeting a same-origin-domain (but cross-origin) window Test timed out
FAIL clicking on an <a> element that navigates same-document targeting a same-origin-domain (but cross-origin) window assert_true: destination.sameDocument expected true got false

@@ -1,6 +1,4 @@
Click me

Harness Error (TIMEOUT), message = null

TIMEOUT clicking on an <a> element that navigates same-document targeting a same-origin window Test timed out
FAIL clicking on an <a> element that navigates same-document targeting a same-origin window assert_true: destination.sameDocument expected true got false

@@ -1,6 +1,4 @@


Harness Error (TIMEOUT), message = null

TIMEOUT using location.href to navigate same-document targeting a cross-origin window Test timed out
FAIL using location.href to navigate same-document targeting a cross-origin window assert_true: destination.sameDocument expected true got false

@@ -1,6 +1,4 @@


Harness Error (TIMEOUT), message = null

TIMEOUT using location.href to navigate same-document targeting a same-origin-domain (but cross-origin) window Test timed out
FAIL using location.href to navigate same-document targeting a same-origin-domain (but cross-origin) window assert_true: destination.sameDocument expected true got false

@@ -1,6 +1,4 @@


Harness Error (TIMEOUT), message = null

TIMEOUT using location.href to navigate same-document targeting a same-origin window Test timed out
FAIL using location.href to navigate same-document targeting a same-origin window assert_true: destination.sameDocument expected true got false

@@ -1,6 +1,4 @@


Harness Error (TIMEOUT), message = null

TIMEOUT using window.open() to navigate same-document targeting a cross-origin window Test timed out
FAIL using window.open() to navigate same-document targeting a cross-origin window assert_true: destination.sameDocument expected true got false

@@ -1,6 +1,4 @@


Harness Error (TIMEOUT), message = null

TIMEOUT using window.open() to navigate same-document targeting a same-origin-domain (but cross-origin) window Test timed out
FAIL using window.open() to navigate same-document targeting a same-origin-domain (but cross-origin) window assert_true: destination.sameDocument expected true got false

@@ -1,6 +1,4 @@


Harness Error (TIMEOUT), message = null

TIMEOUT using window.open() to navigate same-document targeting a same-origin window Test timed out
FAIL using window.open() to navigate same-document targeting a same-origin window assert_true: destination.sameDocument expected true got false

@@ -1,6 +1,4 @@


Harness Error (TIMEOUT), message = null

TIMEOUT submitting a <form> element that navigates same-document targeting a cross-origin window Test timed out
FAIL submitting a <form> element that navigates same-document targeting a cross-origin window assert_true: destination.sameDocument expected true got false

@@ -1,6 +1,4 @@


Harness Error (TIMEOUT), message = null

TIMEOUT submitting a <form> element that navigates cross-document targeting a same-origin-domain (but cross-origin) window Test timed out
FAIL submitting a <form> element that navigates cross-document targeting a same-origin-domain (but cross-origin) window assert_true: destination.sameDocument expected true got false

@@ -1,6 +1,4 @@


Harness Error (TIMEOUT), message = null

TIMEOUT submitting a <form> element that navigates same-document targeting a same-origin window Test timed out
FAIL submitting a <form> element that navigates same-document targeting a same-origin window assert_true: destination.sameDocument expected true got false

@@ -1,6 +1,4 @@


Harness Error (TIMEOUT), message = null

TIMEOUT event.intercept() throws if used after the dispatch phase Test timed out
PASS event.intercept() throws if used after the dispatch phase

@@ -1,4 +1,4 @@


FAIL event.intercept() throws if used on a canceled event assert_true: expected true got false
PASS event.intercept() throws if used on a canceled event

@@ -1,6 +1,6 @@

Harness Error (TIMEOUT), message = null

TIMEOUT event.intercept() should throw if the handler is null Test timed out
PASS event.intercept() should throw if the handler is null
TIMEOUT event.intercept() should not throw if the handler is explicit undefined Test timed out

@@ -1,5 +1,3 @@

Harness Error (TIMEOUT), message = null

TIMEOUT Fragment <a> click fires navigate event Test timed out
FAIL Fragment <a> click fires navigate event assert_true: expected true got false

@@ -1,6 +1,4 @@
Click me

Harness Error (TIMEOUT), message = null

TIMEOUT Fragment <a> click fires navigate event Test timed out
FAIL Fragment <a> click fires navigate event assert_true: expected true got false

@@ -1,3 +1,3 @@

PASS navigate event destination.getState() on back/forward navigation
FAIL navigate event destination.getState() on back/forward navigation assert_equals: expected "traverse" but got "push"

@@ -1,3 +1,3 @@
FAIL: Timed out waiting for notifyDone to be called

{"error": {"code": 404, "message": ""}}
FAIL <form> submission fires navigate event assert_equals: expected "replace" but got "push"

@@ -1,3 +1,3 @@
FAIL: Timed out waiting for notifyDone to be called

FAIL <form> submission with GET method fires navigate event but with formData null assert_equals: expected "replace" but got "push"

@@ -1,3 +1,4 @@
FAIL: Timed out waiting for notifyDone to be called

{"error": {"code": 404, "message": ""}}

FAIL <form> submission fires navigate event assert_true: expected true got false

@@ -1,3 +1,3 @@

FAIL history.back() fires the navigate event and sets hashChange when reversing a fragment navigation null is not an object (evaluating 'navigation.currentEntry.index')
FAIL history.back() fires the navigate event and sets hashChange when reversing a fragment navigation assert_equals: expected "traverse" but got "push"

@@ -1,6 +1,4 @@


Harness Error (TIMEOUT), message = null

TIMEOUT history.go(0) fires the navigate event Test timed out
FAIL history.go(0) fires the navigate event assert_equals: expected "reload" but got "push"

@@ -1,6 +1,4 @@


Harness Error (TIMEOUT), message = null

TIMEOUT location API on another window fires navigate event in the target window only Test timed out
FAIL location API on another window fires navigate event in the target window only assert_true: expected true got false

@@ -1,5 +1,3 @@

Harness Error (TIMEOUT), message = null

TIMEOUT location API fires navigate event Test timed out
FAIL location API fires navigate event assert_equals: expected "replace" but got "push"

@@ -1,6 +1,4 @@


Harness Error (TIMEOUT), message = null

TIMEOUT <meta> refresh fires navigate event Test timed out
FAIL <meta> refresh fires navigate event assert_false: expected false got true

@@ -1,5 +1,3 @@

Harness Error (TIMEOUT), message = null

TIMEOUT navigate event for navigation.navigate() Test timed out
FAIL navigate event for navigation.navigate() assert_equals: expected "replace" but got "push"

@@ -1,5 +1,3 @@

Harness Error (TIMEOUT), message = null

TIMEOUT <svg:a> click fires navigate event Test timed out
FAIL <svg:a> click fires navigate event assert_true: expected true got false

@@ -1,6 +1,4 @@


Harness Error (TIMEOUT), message = null

TIMEOUT window.open() fires navigate event in target window but not source Test timed out
FAIL window.open() fires navigate event in target window but not source assert_true: expected true got false

@@ -1,5 +1,3 @@

Harness Error (TIMEOUT), message = null

TIMEOUT window.open() fires navigate event when targeting self Test timed out
FAIL window.open() fires navigate event when targeting self assert_true: expected true got false

@@ -1,3 +1,3 @@

FAIL navigate() with history: 'push' in a document that has not yet had its load event promise_test: Unhandled rejection with value: object "TypeError: null is not an object (evaluating 'navigation.currentEntry.index')"
PASS navigate() with history: 'push' in a document that has not yet had its load event

@@ -1,4 +1,4 @@

FAIL navigate() navigates same-document and fires onnavigate (async) assert_equals: expected "#d" but got ""
FAIL navigate() navigates same-document and fires onnavigate (sync) assert_equals: expected "#d" but got ""
FAIL navigate() navigates same-document and fires onnavigate (async) assert_true: expected true got false
PASS navigate() navigates same-document and fires onnavigate (sync)

@@ -1,3 +1,3 @@

FAIL navigate() promises assert_array_equals: lengths differ, expected array ["committed", "finished"] length 2, got ["todo"] length 1
FAIL navigate() promises assert_equals: expected object "[object NavigationHistoryEntry]" but got object "[object NavigationHistoryEntry]"

@@ -1,3 +1,3 @@

FAIL scroll: scroll() should throw after a navigation finished promise fulfills assert_not_equals: got disallowed value 0
FAIL scroll: scroll() should throw after a navigation finished promise fulfills assert_throws_dom: function "() => navigate_event.scroll()" threw object "TypeError: undefined is not an object (evaluating 'navigate_event.scroll')" that is not a DOMException InvalidStateError: property "code" is equal to undefined, expected 11

41 changes: 39 additions & 2 deletions Source/WebCore/loader/FrameLoader.cpp
Expand Up @@ -94,6 +94,7 @@
#include "MemoryRelease.h"
#include "Navigation.h"
#include "NavigationDisabler.h"
#include "NavigationNavigationType.h"
#include "NavigationScheduler.h"
#include "Node.h"
#include "OriginAccessPatterns.h"
Expand Down Expand Up @@ -1232,6 +1233,31 @@ void FrameLoader::setFirstPartyForCookies(const URL& url)
}
}

static NavigationNavigationType determineNavigationType(FrameLoadType frameLoadType, bool isNewNavigation)
{
if (isNewNavigation)
return NavigationNavigationType::Push;

switch (frameLoadType) {
case FrameLoadType::Standard:
return NavigationNavigationType::Push;
case FrameLoadType::Back:
case FrameLoadType::Forward:
case FrameLoadType::IndexedBackForward:
return NavigationNavigationType::Traverse;
case FrameLoadType::Reload:
case FrameLoadType::ReloadFromOrigin:
case FrameLoadType::ReloadExpiredOnly:
case FrameLoadType::Same:
return NavigationNavigationType::Reload;
case FrameLoadType::RedirectWithLockedBackForwardList:
case FrameLoadType::Replace:
return NavigationNavigationType::Replace;
};
RELEASE_ASSERT_NOT_REACHED();
return NavigationNavigationType::Push;
}

// This does the same kind of work that didOpenURL does, except it relies on the fact
// that a higher level already checked that the URLs match and the scrolling is the right thing to do.
void FrameLoader::loadInSameDocument(URL url, RefPtr<SerializedScriptValue> stateObject, const SecurityOrigin* requesterOrigin, bool isNewNavigation)
Expand Down Expand Up @@ -1275,8 +1301,19 @@ void FrameLoader::loadInSameDocument(URL url, RefPtr<SerializedScriptValue> stat

if (document->settings().navigationAPIEnabled() && !url.isAboutBlank()) {
if (RefPtr domWindow = document->domWindow()) {
if (RefPtr currentItem = checkedHistory()->currentItem())
domWindow->protectedNavigation()->updateForNavigation(currentItem.releaseNonNull(), policyChecker().loadType());
auto navigationType = determineNavigationType(policyChecker().loadType(), isNewNavigation);

// FIXME: This is likely not the ideal location for the navigate event and should happen earlier.
if (navigationType != NavigationNavigationType::Traverse)
domWindow->protectedNavigation()->dispatchPushReplaceReloadNavigateEvent(url, navigationType, equalIgnoringFragmentIdentifier(url, oldURL));

if (RefPtr currentItem = checkedHistory()->currentItem()) {
// FIXME: Properly handle result of navigate event.
if (navigationType == NavigationNavigationType::Traverse)
domWindow->protectedNavigation()->dispatchTraversalNavigateEvent(*currentItem);

domWindow->protectedNavigation()->updateForNavigation(*currentItem, navigationType);
}
}
}

Expand Down

0 comments on commit b3b7f85

Please sign in to comment.