-
Notifications
You must be signed in to change notification settings - Fork 2.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Behaviour of "reload" navigationType in " inner navigate event firing algorithm" algorithm #10621
Comments
cc @domenic |
You omitted the important part of that comment: // In the spec, the URL and history update steps are not called for reloads.
// In our implementation, we call the corresponding function anyway, but
// |type| being a reload type makes it do none of the spec-relevant
// steps. Instead it does stuff like the loading spinner and use counters. Can you state which part of the URL and history update steps are run in Chromium, which the WPTs expect, but are not run in the spec? I cannot find any browsing the code myself. |
Apologies for the omission, I mainly did it because the comment is a bit long, but it was misleading to leave that out. Having said that, the comment may be wrong. This is what happens on navigation-methods/return-value/reload-intercept.html (I set a bt in NotifyAboutTheCommittedToEntry):
I also debugged that the used frame load type is "reload" in the above scenario. WDYT? |
Sorry for losing track of this over the holidays. So the question is, does the current spec have a path from the "inner navigate event firing algorithm" to "notify about the committed-to entry" in the intercepted reload case. I think you are right this is broken. This also came up in #10919.
So yeah, I think for reloads we're definitely missing something. We might also be missing something for same-document traverses; I'm unsure. Did you run into something similar for traverses? It seems like we'll need to add something to the spec that encapsulates the parts of Blink's UpdateForSameDocumentNavigation that get run here. Stepping through the code in a live example would be better, but just trying to run it in my head, for reloads it seems like the relevant parts correspond to the spec's:
@noamr, would you be able to help getting this resolved on the spec side? @rwlbuis, do you still have cycles to review fixes in this area? |
I went through the spec and I think the closest equivalent to what we do in chrome is to extend the condition and call URL and history update steps also for reloads. I don't understand what makes this "not appropriate". |
I think that may be the correct solution, but I think the URL and history update steps are currently not resilient to |
Right, I feel like most of the steps would end up being skipped. E.g. you're not creating a new entry; you're reloading the existing entry. |
OK, so it's two different spec-designs for roughly the same thing. |
I think it has to be case-by-case. If you're skipping most of the steps, then that's a sign separate algorithms would be better. If you're skipping one or two, then branches are reasonable. In this case, I think you'd skip most of the steps, and the common steps are probably just the two I listed in #10621 (comment). |
This performs the subset of the "URL and history update steps" that are applicable to reload navigations, in the "inner `navigate` event firing algorithm". Closes whatwg#10621
OK I went through all the steps a few times, and I think #10989 is what this comes down to. |
What is the issue with the HTML Standard?
In https://html.spec.whatwg.org/multipage/nav-history-apis.html#inner-navigate-event-firing-algorithm step 32.7, only navigationType "push" and "replace" are stated to run "URL and history update steps". However in the chromium implementation, it is also run for "reload" navigationType, and some WPT tests assume this behavior in order for them to pass. Shouldn't this be reflected in the spec?
Relevant commit from chromium's navigate_event.cc:
" // In the spec, the URL and history update steps are not called for reloads.
// In our implementation, we call the corresponding function anyway ."
The text was updated successfully, but these errors were encountered: