mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-01 17:23:59 +00:00
0d3cc17e7f
The previous version was trying to make index handling too generic. But history loads need to update index to the requested index, not to the index of the current entry, because the requested index was already passed to the child process when the history load started. If there are several pending history loads, commit of the first one will update the index based on requested index and send new index to the child. When child side receives the index update, other pending history loads have been already processed. New loads can just clear the requested index, since the child side has PendingSHistoryChange object to update the effective index and length to the correct one and when parent side sends back the current index and length the relevant PendingSHistoryChange object is removed. With this version both testing/web-platform/tests/old-tests/submission/Microsoft/history/history_000.htm and docshell/test/navigation/browser_test_simultaneous_normal_and_history_loads.js pass now even on a debug build. I think there might be a case for the issue happening also without SHIP, but since it is way less asynchronous, triggering that issue is hard. So the patch and test are for SHIP only. Differential Revision: https://phabricator.services.mozilla.com/D116744 |
||
---|---|---|
.. | ||
crashtests | ||
timeline | ||
BaseHistory.cpp | ||
BaseHistory.h | ||
BrowsingContext.cpp | ||
BrowsingContext.h | ||
BrowsingContextGroup.cpp | ||
BrowsingContextGroup.h | ||
BrowsingContextWebProgress.cpp | ||
BrowsingContextWebProgress.h | ||
CanonicalBrowsingContext.cpp | ||
CanonicalBrowsingContext.h | ||
ChildProcessChannelListener.cpp | ||
ChildProcessChannelListener.h | ||
IHistory.h | ||
LoadContext.cpp | ||
LoadContext.h | ||
moz.build | ||
nsAboutRedirector.cpp | ||
nsAboutRedirector.h | ||
nsCTooltipTextProvider.h | ||
nsDocShell.cpp | ||
nsDocShell.h | ||
nsDocShellEditorData.cpp | ||
nsDocShellEditorData.h | ||
nsDocShellEnumerator.cpp | ||
nsDocShellEnumerator.h | ||
nsDocShellLoadState.cpp | ||
nsDocShellLoadState.h | ||
nsDocShellLoadTypes.h | ||
nsDocShellTelemetryUtils.cpp | ||
nsDocShellTelemetryUtils.h | ||
nsDocShellTreeOwner.cpp | ||
nsDocShellTreeOwner.h | ||
nsDSURIContentListener.cpp | ||
nsDSURIContentListener.h | ||
nsIContentViewer.idl | ||
nsIContentViewerEdit.idl | ||
nsIDocShell.idl | ||
nsIDocShellTreeItem.idl | ||
nsIDocShellTreeOwner.idl | ||
nsIDocumentLoaderFactory.idl | ||
nsILoadContext.idl | ||
nsILoadURIDelegate.idl | ||
nsIPrivacyTransitionObserver.idl | ||
nsIReflowObserver.idl | ||
nsIRefreshURI.idl | ||
nsIScrollObserver.h | ||
nsITooltipListener.idl | ||
nsITooltipTextProvider.idl | ||
nsIURIFixup.idl | ||
nsIWebNavigation.idl | ||
nsIWebNavigationInfo.idl | ||
nsIWebPageDescriptor.idl | ||
nsPingListener.cpp | ||
nsPingListener.h | ||
nsRefreshTimer.cpp | ||
nsRefreshTimer.h | ||
nsWebNavigationInfo.cpp | ||
nsWebNavigationInfo.h | ||
SerializedLoadContext.cpp | ||
SerializedLoadContext.h | ||
SyncedContext.h | ||
SyncedContextInlines.h | ||
URIFixup.jsm | ||
WindowContext.cpp | ||
WindowContext.h |