Commit graph

92 commits

Author SHA1 Message Date
Peter Van der Beken
d383ef7822 Bug 1765951 - Stop storing BC pointer in nsSHistory. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D146205
2022-06-08 05:53:17 +00:00
Peter Van der Beken
0cb68caed4 Bug 1729662 - UNED exam page flickers / reloads infinitely. r=smaug
When we navigate in history to the same entry that we're current at then we
actually do a reload. The problem is in the way we detect whether to do a reload
in the parent process.

If a page does a back and a forward one after the other in a script, then the
parent will calculate the index for the back and tell the child to load the
entry at that index. While the child is processing the load of that entry, the
BC in the parent process still has the same entry as its active entry (until the
child commits the load of the entry over IPC). The parent then processes the
forward, calculates the index for the forward and finds the entry at that index.
This is the same entry that we were at before doing anything, and so the same
entry as the active entry in the BC in the parent process. We used to compare
the entry that we're going to load with the active entry in the BC to determine
whether we're doing a reload, and so in this situation we would assume the
forward navigation was actually doing a reload. The child would reload the page,
and we'd run the script again and we'd end up in a reload loop.

Comparing the offset with 0 to determine whether we're doing a reload fixes this
issue.

Differential Revision: https://phabricator.services.mozilla.com/D126585
2021-10-04 15:01:30 +00:00
Alexandru Michis
bb8b740837 Backed out changeset d25df1c9e0e2 (bug 1729662) for causing wpt failures in overlapping-navigations-and-traversals
CLOSED TREE
2021-09-30 14:31:50 +03:00
Peter Van der Beken
a57818d127 Bug 1729662 - UNED exam page flickers / reloads infinitely. r=smaug
When we navigate in history to the same entry that we're current at then we
actually do a reload. The problem is in the way we detect whether to do a reload
in the parent process.

If a page does a back and a forward one after the other in a script, then the
parent will calculate the index for the back and tell the child to load the
entry at that index. While the child is processing the load of that entry, the
BC in the parent process still has the same entry as its active entry (until the
child commits the load of the entry over IPC). The parent then processes the
forward, calculates the index for the forward and finds the entry at that index.
This is the same entry that we were at before doing anything, and so the same
entry as the active entry in the BC in the parent process. We used to compare
the entry that we're going to load with the active entry in the BC to determine
whether we're doing a reload, and so in this situation we would assume the
forward navigation was actually doing a reload. The child would reload the page,
and we'd run the script again and we'd end up in a reload loop.

Comparing the offset with 0 to determine whether we're doing a reload fixes this
issue.

Differential Revision: https://phabricator.services.mozilla.com/D126585
2021-09-30 07:56:52 +00:00
Olli Pettay
0ca720d7a3 Bug 1725680, requested index should be used only by the nsSHistory (and related code in CanonicalBrowsingContext), r=peterv
Using requestedIndex on the child side is hard, because there are race conditions when a session history load is triggered
and at the same time a non-session history load commits a new active entry.

Differential Revision: https://phabricator.services.mozilla.com/D126619
2021-09-29 13:22:34 +00:00
Iulian Moraru
1bffda0bc3 Backed out changeset a399e91dd5c2 (bug 1729662) for causing wpt failures on cross-document-traversal-cross-document-traversal.html. 2021-09-28 19:14:02 +03:00
Peter Van der Beken
ef6256101a Bug 1729662 - UNED exam page flickers / reloads infinitely. r=smaug
When we navigate in history to the same entry that we're current at then we
actually do a reload. The problem is in the way we detect whether to do a reload
in the parent process.

If a page does a back and a forward one after the other in a script, then the
parent will calculate the index for the back and tell the child to load the
entry at that index. While the child is processing the load of that entry, the
BC in the parent process still has the same entry as its active entry (until the
child commits the load of the entry over IPC). The parent then processes the
forward, calculates the index for the forward and finds the entry at that index.
This is the same entry that we were at before doing anything, and so the same
entry as the active entry in the BC in the parent process. We used to compare
the entry that we're going to load with the active entry in the BC to determine
whether we're doing a reload, and so in this situation we would assume the
forward navigation was actually doing a reload. The child would reload the page,
and we'd run the script again and we'd end up in a reload loop.

Comparing the offset with 0 to determine whether we're doing a reload fixes this
issue.

Differential Revision: https://phabricator.services.mozilla.com/D126585
2021-09-28 13:25:15 +00:00
Niklas Goegge
b97cd2430b Bug 1708150 - Add user activation flag to reload, goBack and goForward r=ckerschb,Gijs,smaug
Differential Revision: https://phabricator.services.mozilla.com/D110245
2021-04-28 11:26:49 +00:00
Emilio Cobos Álvarez
d1e4e528b2 Bug 1703291 - Update root bc state when the root bc changes in the session history. r=smaug
Otherwise when navigating to a replaced browsing context we might have
an incorrect "is single top-level in history".

Fixes test_window_close.html with Fission+bfcache.

Differential Revision: https://phabricator.services.mozilla.com/D111458
2021-04-10 03:29:36 +00:00
Narcis Beleuzu
a7ec545704 Backed out 2 changesets (bug 1703291) for bc failures on BrowsingContext.cpp . CLOSED TREE
Backed out changeset 4d216ecbacd9 (bug 1703291)
Backed out changeset 51d244d886aa (bug 1703291)
2021-04-10 00:52:54 +03:00
Emilio Cobos Álvarez
85f92a8a49 Bug 1703291 - Update root bc state when the root bc changes in the session history. r=smaug
Otherwise when navigating to a replaced browsing context we might have
an incorrect "is single top-level in history".

Fixes test_window_close.html with Fission+bfcache.

Differential Revision: https://phabricator.services.mozilla.com/D111458
2021-04-09 17:33:50 +00:00
Olli Pettay
dc39236b97 Bug 1699484 - Support Timer based bfcache eviction, r=peterv
The patch makes HistoryTracker rely on SHEntrySharedParentState instead of nsSHEntryShared.
nsSHEntryShared already extends SHEntrySharedParentState.

The test was modified a tiny bit to make it easier to see the results. The test does pass
with SHIP+BFCache.

Depends on D108851

Differential Revision: https://phabricator.services.mozilla.com/D108984
2021-03-21 21:46:26 +00:00
Olli Pettay
85323d2cfb Bug 1692208 - Remove unused nsSHistory::mIsRemote, r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D104824
2021-03-03 12:28:50 +00:00
Olli Pettay
911d46a8b6 Bug 1689601, try to use bfcache for top level pages, r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D105238
2021-03-02 12:13:20 +00:00
Mihai Alexandru Michis
87f481bf9a Backed out 16 changesets (bug 1689601) for causing cpp bustages in nsFrameLoader.
CLOSED TREE

Backed out changeset 6e5523a7210d (bug 1689601)
Backed out changeset 745eaa468c74 (bug 1689601)
Backed out changeset a594bd02b8b6 (bug 1689601)
Backed out changeset 0c5fe977ced6 (bug 1689601)
Backed out changeset 2fca23521891 (bug 1689601)
Backed out changeset 334aeb627855 (bug 1689601)
Backed out changeset 2b2081a15d67 (bug 1689601)
Backed out changeset 307bde43cc96 (bug 1689601)
Backed out changeset 04aadec67ce2 (bug 1689601)
Backed out changeset 701eccb34772 (bug 1689601)
Backed out changeset 278db692aa8b (bug 1689601)
Backed out changeset c261c243a64d (bug 1689601)
Backed out changeset 7e8022e5696a (bug 1689601)
Backed out changeset 6138bfc6c08d (bug 1689601)
Backed out changeset 63295b3a62d0 (bug 1689601)
Backed out changeset 6d02e59ddc51 (bug 1689601)
2021-03-02 13:15:10 +02:00
Olli Pettay
101955fa30 Bug 1689601, try to use bfcache for top level pages, r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D105238
2021-03-02 09:44:12 +00:00
Olli Pettay
affb60b285 Bug 1683751 - Removing iframes should update history.length r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D100274
2021-02-03 00:02:29 +00:00
Peter Van der Beken
daeac0a231 Bug 1683335 - Add logging of the history tree to CanonicalBrowsingContext::SessionHistoryCommit. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D100129
2020-12-18 17:10:11 +00:00
Randell Jesup
904b53869f Bug 1670848: Handling aborting history navigations when others run r=smaug
Handles edge cases around history.go() with one event loop spin

Differential Revision: https://phabricator.services.mozilla.com/D93302
2020-10-23 20:27:50 +00:00
Olli Pettay
219717c7ce Bug 1668026 - Update child process index and length when modifying those in parent process, r=peterv
The patch is utilizing SHistoryChangeNotifier which was added for testing.
CallerWillNotifyHistoryIndexAndLengthChanges is needed to avoid extra index/length updates so that
the child side doesn't get update but have still pending updates in it.

Differential Revision: https://phabricator.services.mozilla.com/D91756
2020-10-01 11:13:29 +00:00
Randell Jesup
b1e84fff6c Bug 1621643: Ensure replaceState updates all listeners about the modified state r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D91433
2020-09-28 07:34:03 +00:00
Peter Van der Beken
b14a77101d Bug 1666881 - Make fission.sessionHistoryInParent require a restart when switching. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D91260
2020-09-25 09:03:58 +00:00
Peter Van der Beken
2b10b0874a Bug 1664656 - Support nsIWebNavigation::LOAD_FLAGS_REPLACE_HISTORY with session history in the parent. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D90029
2020-09-20 12:40:33 +00:00
Dorel Luca
594edf3c57 Backed out 3 changesets (bug 1664656, bug 1664655) for multiple failures in checkouts/gecko/docshell/base/nsDocShell.cpp
Backed out changeset ac1e652efeb6 (bug 1664655)
Backed out changeset c8c1abf5f616 (bug 1664656)
Backed out changeset 3c1e9e36a39e (bug 1664656)
2020-09-19 16:38:26 +03:00
Peter Van der Beken
25833b010a Bug 1664656 - Support nsIWebNavigation::LOAD_FLAGS_REPLACE_HISTORY with session history in the parent. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D90029
2020-09-19 12:29:10 +00:00
Andreas Farre
f9f96d23ca Bug 1662410 - Part 1: Fix usage of ChildSHistory.legacySHistory . r=peterv
ChildSHistory.legacySHistory isn't valid for content processes when
session history in the parent is enabled. We try to fix this by either
delegating to the parent by IPC or move the implementation partially
or as a whole to the parent.

Differential Revision: https://phabricator.services.mozilla.com/D89353
2020-09-16 14:51:01 +00:00
Andrea Marchesini
e733096393 Bug 444222 - Update the window.name when doing the navigation, r=smaug,nika
This patch implements the window.name updating in the spec
https://html.spec.whatwg.org/#history-traversal.

Differential Revision: https://phabricator.services.mozilla.com/D81361
2020-09-15 17:51:05 +00:00
Olli Pettay
f908277430 Bug 1660526 - Tweak AddToRootSessionHistory and AddChildSHEntryHelper to make them easier to follow, r=annyG
CLOSED TREE
Differential Revision: https://phabricator.services.mozilla.com/D87895
2020-08-21 20:59:52 +00:00
Bogdan Tara
90b813cb8e Backed out changeset b8753e7cb414 (bug 1660526) for session related asan failures CLOSED TREE 2020-08-22 09:01:40 +03:00
Olli Pettay
13ebfdf441 Bug 1660526 - Tweak AddToRootSessionHistory and AddChildSHEntryHelper to make them easier to follow, r=annyG
Differential Revision: https://phabricator.services.mozilla.com/D87895
2020-08-21 20:59:52 +00:00
Olli Pettay
23d50bfbe9 Bug 1655752 - Move session history to the replacing CanonicalBrowsingContext, r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D85189
2020-08-13 16:33:56 +00:00
Sylvestre Ledru
843f943758 Bug 1519636 - Reformat recent changes to the Google coding style r=andi
# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D85678
2020-08-02 15:29:15 +00:00
Olli Pettay
306b718cb8 Bug 1602115, make it possible to test async history.length handling even when session history lives in the child process, r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D79198
2020-07-16 23:04:18 +00:00
Razvan Maries
4ccaec8564 Backed out 3 changesets (bug 1653123, bug 1602115) for perma failures on test_history_length_during_pageload.html. CLOSED TREE
Backed out changeset 6b3c0f542ef3 (bug 1653123)
Backed out changeset 951c0fd65a00 (bug 1602115)
Backed out changeset 258d0ebd9e34 (bug 1602115)
2020-07-16 23:21:18 +03:00
Olli Pettay
e702898d75 Bug 1602115, make it possible to test async history.length handling even when session history lives in the child process, r=peterv
Differential Revision: https://phabricator.services.mozilla.com/D79198
2020-07-16 19:02:49 +00:00
Peter Van der Beken
60dc2308c9 Bug 1648096 - All calls to nsSHistory::LoadDifferingEntries are infallible, stop returning nsresult. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D80892
2020-06-25 07:53:09 +00:00
Peter Van der Beken
d41eb8ad49 Bug 1648096 - All calls to nsSHistory::InitiateLoad are infallible, stop returning nsresult. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D80891
2020-06-24 16:49:21 +00:00
Peter Van der Beken
2c8f84716d Bug 1570255 - Forward ChildSHistory::Go to the parent. r=smaug
This enables navigating by index in session history go through the
session history in the parent (if enabled with the pref).

If the pref is enabled, then ChildSHistory::Go will send an IPC message
to the parent with the index to navigate to. The parent calls the
existing nsSHistory implementation and starts the loads, and
asynchronously returns the index that we actually navigated to. The
child process then uses that result to update the session history
implementation in the child process (this part is temporary, while we
have session history both in parent and in child). We also make the
parent send an updated length to the child process over IPC, so that
history.length always the length for the implementation in the parent.

Differential Revision: https://phabricator.services.mozilla.com/D65330
2020-05-20 09:15:31 +00:00
Peter Van der Beken
1990918ebe Bug 1570255 - Remove sync session history implementation. r=smaug,nika
Differential Revision: https://phabricator.services.mozilla.com/D65326
2020-05-20 09:09:06 +00:00
Peter Van der Beken
ef557497ca Bug 1629866 - Store ChildSHistory on the BrowsingContext. r=nika,smaug
Differential Revision: https://phabricator.services.mozilla.com/D70997
2020-05-19 08:57:44 +00:00
Csoregi Natalia
517e830522 Backed out 4 changesets (bug 1629866, bug 1570255) for assertion failures on DocumentChannelChild.cpp. CLOSED TREE
Backed out changeset 214e4a11be0d (bug 1570255)
Backed out changeset db066dda1bb8 (bug 1570255)
Backed out changeset d9f75d88613e (bug 1570255)
Backed out changeset fe2d4790b73a (bug 1629866)
2020-05-13 18:30:42 +03:00
Peter Van der Beken
c46091ad18 Bug 1570255 - Forward ChildSHistory::Go to the parent. r=smaug
This enables navigating by index in session history go through the
session history in the parent (if enabled with the pref).

If the pref is enabled, then ChildSHistory::Go will send an IPC message
to the parent with the index to navigate to. The parent calls the
existing nsSHistory implementation and starts the loads, and
asynchronously returns the index that we actually navigated to. The
child process then uses that result to update the session history
implementation in the child process (this part is temporary, while we
have session history both in parent and in child). We also make the
parent send an updated length to the child process over IPC, so that
history.length always the length for the implementation in the parent.

Differential Revision: https://phabricator.services.mozilla.com/D65330
2020-05-13 13:47:11 +00:00
Peter Van der Beken
e2a88c491c Bug 1570255 - Remove sync session history implementation. r=smaug,nika
Differential Revision: https://phabricator.services.mozilla.com/D65326
2020-05-13 14:24:55 +00:00
Peter Van der Beken
482735363d Bug 1629866 - Store ChildSHistory on the BrowsingContext. r=nika,smaug
Differential Revision: https://phabricator.services.mozilla.com/D70997
2020-05-13 13:41:16 +00:00
Jonathan Watt
4def60efaf Bug 1634370. Make docshell/ buildable outside of unified-build environment. r=farre
Differential Revision: https://phabricator.services.mozilla.com/D73255
2020-05-04 14:53:34 +00:00
Anny Gakhokidze
5986a2de44 Bug 1546759 - Change nsSHistory::WalkHistoryEntries to walk browsing context tree instead of doc shell tree, r=peterv,nika
WalkHistoryEntries function gets called by nsSHistory::CloneAndReplaceChild
and nsSHistory::SetChildHistoryEntry recursively, so those have to be moved
into the parent process. This eliminates many sync IPC calls.

To facilitate transition to a new session history design,
we are mirroring mOSHE and mLSHE SH entries from docshell to browsing context.
Whenever we update those entries in docshell, we will also update those in BC,
and vice versa.

Differential Revision: https://phabricator.services.mozilla.com/D56201

--HG--
extra : moz-landing-system : lando
2020-03-10 14:28:22 +00:00
Olli Pettay
4ecbebad86 Bug 1609475, history.go(>1) should possibly load several iframes, r=annyG
Differential Revision: https://phabricator.services.mozilla.com/D63726

--HG--
extra : moz-landing-system : lando
2020-02-22 16:44:18 +00:00
Andreea Pavel
3f1905ccdc Backed out changeset 2bd2a22267d6 (bug 1609475) for failing test_sessionhistory.html on a CLOSED TREE 2020-02-22 01:46:26 +02:00
Olli Pettay
72ae1c9ce2 Bug 1609475, history.go(>1) should possibly load several iframes, r=annyG
Differential Revision: https://phabricator.services.mozilla.com/D63726

--HG--
extra : moz-landing-system : lando
2020-02-21 21:55:07 +00:00
Peter Van der Beken
cffb5fec95 Bug 1594938 - Crash in [@ nsSHistory::Reload]. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D53010

--HG--
extra : moz-landing-system : lando
2019-11-15 11:12:54 +00:00