Commit Graph

658 Commits

Author SHA1 Message Date
Anny Gakhokidze
33a3d37016 Bug 1692749 - Skip superfluous about:blank load when duplicating a tab, r=kashav,extension-reviewers,kmag
When we duplicate a tab, we don't need to have about:blank load in it, because
we are going to use restore mechanism to copy data into the new tab. If we
don't skip the superfluous load, the restoring process might race with the
loading of about:blank, and sometimes we might try to destroy the
WindowGlobalChild actor just as SessionStore is trying to restore docshell
capabilities for that tab resulting in a rejected promise in _restoreHistory
and `_restoreHistoryComplete` not getting called.

Differential Revision: https://phabricator.services.mozilla.com/D119313
2021-07-08 22:31:52 +00:00
Marian-Vasile Laza
f6e8cad90d Backed out changeset 41171ae56f5e (bug 1692749) for causing bc failures on browser_searchMode_sessionStore.js. CLOSED TREE 2021-07-08 02:37:31 +03:00
Anny Gakhokidze
fc48a089ea Bug 1692749 - Skip superfluous about:blank load when duplicating a tab, r=kashav,extension-reviewers,kmag
When we duplicate a tab, we don't need to have about:blank load in it, because
we are going to use restore mechanism to copy data into the new tab. If we
don't skip the superfluous load, the restoring process might race with the
loading of about:blank, and sometimes we might try to destroy the
WindowGlobalChild actor just as SessionStore is trying to restore docshell
capabilities for that tab resulting in a rejected promise in _restoreHistory
and `_restoreHistoryComplete` not getting called.

Differential Revision: https://phabricator.services.mozilla.com/D119313
2021-07-07 22:08:46 +00:00
Kashav Madan
3b6f8b305d Bug 1703692 - Update SessionStore and TabState{,Cache} functions to take a permanentKey, r=nika
Differential Revision: https://phabricator.services.mozilla.com/D118541
2021-06-26 20:25:29 +00:00
Kashav Madan
a1f3331643 Bug 1703692 - Store the latest embedder's permanent key on CanonicalBrowsingContext, r=nika,mccr8
And include it in Session Store flushes to avoid dropping updates in case the
browser is unavailable.

Differential Revision: https://phabricator.services.mozilla.com/D118385
2021-06-26 20:25:29 +00:00
Dorel Luca
c293dee662 Backed out 3 changesets (bug 1703692) for Browser-chrome failures in browser/components/sessionstore/test/browser_broadcast.js. CLOSED TREE
Backed out changeset fe5703d7b580 (bug 1703692)
Backed out changeset eec4a4138ca7 (bug 1703692)
Backed out changeset 6745b363a745 (bug 1703692)
2021-06-26 10:09:23 +03:00
Kashav Madan
d3a7f8a79a Bug 1703692 - Update SessionStore and TabState{,Cache} functions to take a permanentKey, r=nika
Differential Revision: https://phabricator.services.mozilla.com/D118541
2021-06-26 05:49:12 +00:00
Kashav Madan
bb26572412 Bug 1703692 - Store the latest embedder's permanent key on CanonicalBrowsingContext, r=nika,mccr8
And include it in Session Store flushes to avoid dropping updates in case the
browser is unavailable.

Differential Revision: https://phabricator.services.mozilla.com/D118385
2021-06-26 05:49:12 +00:00
Iulian Moraru
6f300817be Backed out 3 changesets (bug 1703692) for causing bc failures on multiple files.
Backed out changeset a199dfd8ce8d (bug 1703692)
Backed out changeset 599a0a99ded9 (bug 1703692)
Backed out changeset 14fe807e6be4 (bug 1703692)
2021-06-25 00:43:23 +03:00
Kashav Madan
7728d0686d Bug 1703692 - Update SessionStore and TabState{,Cache} functions to take a permanentKey, r=nika
Differential Revision: https://phabricator.services.mozilla.com/D118541
2021-06-24 20:26:14 +00:00
Kashav Madan
bc90a488f7 Bug 1703692 - Store the latest embedder's permanent key on CanonicalBrowsingContext, r=nika,mccr8
And include it in Session Store flushes to avoid dropping updates in case the
browser is unavailable.

Differential Revision: https://phabricator.services.mozilla.com/D118385
2021-06-24 20:26:13 +00:00
Kashav Madan
61b1f1a622 Bug 1696815 - Wait for the _restoreHistory() promise before firing SSTabRestored, r=annyG
Differential Revision: https://phabricator.services.mozilla.com/D118501
2021-06-23 16:15:51 +00:00
Kashav Madan
0795de2ffe Bug 1696815 - Handle browser.loadURI() calls that happen before the browser is fully restored, r=annyG,nika,zombie
Differential Revision: https://phabricator.services.mozilla.com/D118101
2021-06-23 16:15:51 +00:00
Alexandru Michis
8d8a297193 Backed out 2 changesets (bug 1696815) for causing bc failures in browser_ext_tabs_discard_reversed.js
CLOSED TREE

Backed out changeset b52bf621dbe4 (bug 1696815)
Backed out changeset ca4535b8d3aa (bug 1696815)
2021-06-23 02:09:45 +03:00
Kashav Madan
df28ff8395 Bug 1696815 - Wait for the _restoreHistory() promise before firing SSTabRestored, r=annyG
Differential Revision: https://phabricator.services.mozilla.com/D118501
2021-06-22 19:58:42 +00:00
Kashav Madan
d6c17ef6fa Bug 1696815 - Handle browser.loadURI() calls that happen before the browser is fully restored, r=annyG,nika,zombie
Differential Revision: https://phabricator.services.mozilla.com/D118101
2021-06-22 19:58:42 +00:00
Kashav Madan
9778a93dc8 Bug 1716444 - Don't do final tab state flush for replaced contexts, r=farre,annyG
If we're destroying the frame loader of a replaced browsing context we'll end up
firing browser-shutdown-tabstate-updated for a tab that wasn't actually closed.

This results in us cleaning up Session Store state earlier than expected, which
means we drop future updates to SessionStoreInternal._closedTabs.

Fixes browser_sessionHistory.js, browser_async_remove_tab.js, and possibly
browser_491168.js for SHIP+BFCache.

Differential Revision: https://phabricator.services.mozilla.com/D117944
2021-06-16 14:05:53 +00:00
Andreas Farre
b9e6293b00 Bug 1705689 - Don't update the tab state if the browsing context has been replaced. r=kashav
Differential Revision: https://phabricator.services.mozilla.com/D117266
2021-06-14 13:48:49 +00:00
Anny Gakhokidze
f50e5a2271 Bug 1709136 - Part 1: Remove the explicit remoteness switch that happens during the restore process, r=nika,kashav
Differential Revision: https://phabricator.services.mozilla.com/D116209
2021-06-11 20:12:10 +00:00
Kashav Madan
8e1b580c53 Bug 1715264 - Cleanup how Session Store collects SessionHistory, r=farre
This does a few things:

1. Removes the `aImmediately` flag from the RequestSHistoryUpdate path, and
   moves that responsibility to SessionStore
1. Simplifies how and when SessionStore calls SessionHistory.collectFromParent()
1. Attempts to clean-up SessionStore's SHistoryListener (again)

Differential Revision: https://phabricator.services.mozilla.com/D117230
2021-06-10 14:30:59 +00:00
Andreas Farre
7f00bb04af Bug 1710004 - Part 3: Restore session storage from the parent process. r=kashav,asuth
Depends on D116007

Differential Revision: https://phabricator.services.mozilla.com/D116213
2021-06-08 13:42:33 +00:00
Kashav Madan
fd8c06b448 Bug 1706445 - Stop loading content-sessionStore.js for SHIP, r=nika
Differential Revision: https://phabricator.services.mozilla.com/D116147
2021-06-01 20:06:47 +00:00
Kashav Madan
3ea6f755ce Bug 1706445 - Handle isFinal updates through native code, r=nika
Replaces the `isFinal` bit with a "browser-shutdown-tabstate-updated" observer
notification, which is fired after all frames in the document are flushed.

Differential Revision: https://phabricator.services.mozilla.com/D116146
2021-06-01 20:06:47 +00:00
Kashav Madan
b37ae426cb Bug 1706445 - Merge the two TabState.update() paths, r=nika
This will make it easier to handle isFinal updates.

Differential Revision: https://phabricator.services.mozilla.com/D116145
2021-06-01 20:06:47 +00:00
Anny Gakhokidze
f97d657a0f Bug 1703326 - Stop relying on ContentSessionStore for SessionStore:crashedTabRevived, r=kashav
Differential Revision: https://phabricator.services.mozilla.com/D113425
2021-05-12 19:33:47 +00:00
Kashav Madan
eac70e8972 Bug 1702055 - Ensure SSTabRestoring is only fired once per browser, r=nika
A previous patch made it so we'd fire this after the full restore finished, but
some consumers expect this event prior to the completion of the load.

Differential Revision: https://phabricator.services.mozilla.com/D114001
2021-05-03 18:16:41 +00:00
Kashav Madan
3bfc3cb594 Bug 1702055 - Move the "restore DocShell state" process out of ContentSessionStore, r=nika
This also makes it so that we will never fire SSTabRestored without first having
sent the associated SSTabRestoring event.

Differential Revision: https://phabricator.services.mozilla.com/D110335
2021-05-03 18:16:41 +00:00
Kashav Madan
e583ecfaab Bug 1702055 - Include the SessionStore epoch in "SessionStore:flush" messages, r=nika
With the removal of the SessionStore:RestoreDocShellState message, the epoch
will no longer be updated otherwise, so we should include it in the Flush
message to ensure that messages are not being dropped.

Differential Revision: https://phabricator.services.mozilla.com/D110334
2021-05-03 18:16:40 +00:00
Kashav Madan
556162f994 Bug 1702055 - Replace CallRestoreTabContentComplete with a Promise, r=nika
This should help avoid message ordering issues in the next patches. To ensure
that we're not firing events too early, we now do a "full" restore even if we
don't have form or scroll data, including for about:blank URIs.

This also moves all restore state on the CanonicalBrowsingContext into a
separate `mRestoreState` struct.

Differential Revision: https://phabricator.services.mozilla.com/D110333
2021-05-03 18:16:40 +00:00
Butkovits Atila
80c415a4fc Backed out 4 changesets (bug 1702055) for causing failures on /browser_UsageTelemetry_private_and_restore.js. CLOSED TREE
Backed out changeset af21e2d8324e (bug 1702055)
Backed out changeset ff67df9befe5 (bug 1702055)
Backed out changeset b5f0638dcbc4 (bug 1702055)
Backed out changeset bffaa2c203b3 (bug 1702055)
2021-04-28 04:42:09 +03:00
Kashav Madan
ed25699760 Bug 1702055 - Only call setInitialTabTitle() if the label hasn't yet been set, r=nika
With the new "restore docshell state" codepath, we may be calling
updateTabLabelAndIcon() later than we did before, which means we may have
already set the tab label (in tabbrowser.init()), and it's incorrect to override
that label value with the session history entry's title.

Differential Revision: https://phabricator.services.mozilla.com/D111456
2021-04-27 19:54:58 +00:00
Kashav Madan
5032f65750 Bug 1702055 - Move the "restore DocShell state" process out of ContentSessionStore.jsm, r=nika
This also makes it so that we will never fire SSTabRestored without first having
sent the associated SSTabRestoring event.

Differential Revision: https://phabricator.services.mozilla.com/D110335
2021-04-27 19:54:57 +00:00
Kashav Madan
f163b81676 Bug 1702055 - Ensure that ContentSessionStore's epoch is updated for tab flushes, r=nika
With the removal of the SessionStore:RestoreDocShellState message, the epoch
will no longer be updated otherwise, so we should include it in the Flush
message to ensure that messages are not being dropped.

Differential Revision: https://phabricator.services.mozilla.com/D110334
2021-04-27 19:54:57 +00:00
Kashav Madan
079d321f9d Bug 1702055 - Replace CallRestoreTabContentComplete with a Promise, r=nika
This should help avoid message ordering issues in the next patches. To ensure
that we're not firing events too early, we now do a "full" restore even if we
don't have form or scroll data, including for about:blank URIs.

This also moves all restore state on the CanonicalBrowsingContext into a
separate `mRestoreState` struct.

Differential Revision: https://phabricator.services.mozilla.com/D110333
2021-04-27 19:54:56 +00:00
Kashav Madan
e7ef1c3516 Bug 1705547 - Null check the SessionHistory object before attempting to collect, r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D112290
2021-04-16 12:02:17 +00:00
Kashav Madan
e520e16620 Bug 1700963 - Stop relying on the "SessionStore:addSHistoryListener" message, r=nika
We now create the listener after receiving a "browsing-context-did-set-embedder"
and destroy it after receiving "browsing-context-discarded".

Differential Revision: https://phabricator.services.mozilla.com/D110337
2021-04-14 23:36:10 +00:00
Kashav Madan
afd185bd3b Bug 1700963 - Clean up SessionStore's SHistoryListener, r=nika
This does a few things:

1. Gets rid of the listener's `_sHistoryChanges` property, which is possible
   because _sHistoryChanges == false <-> _fromIdx == kNoIndex.
2. Simplifies the code that interacts with SHistoryListener in
   UpdateSessionStoreFromTablistener, and attempts to make that function a
   little more readable.
3. Ensures we're only doing the SessionHistory bit of
   UpdateSessionStoreFromTablistener for toplevel frames, and if SHIP is
   enabled.

Differential Revision: https://phabricator.services.mozilla.com/D110336
2021-04-14 23:36:10 +00:00
Dorel Luca
2cbd35f354 Backed out 3 changesets (bug 1700963) for Browser-chrome failures in docshell/test/browser/browser_bug1309900_crossProcessHistoryNavigation.js. CLOSED TREE
Backed out changeset cda35e554327 (bug 1700963)
Backed out changeset fbafd75b06d3 (bug 1700963)
Backed out changeset 8b922e4f612b (bug 1700963)
2021-04-14 23:26:05 +03:00
Kashav Madan
e672ad7710 Bug 1700963 - Stop relying on the "SessionStore:addSHistoryListener" message, r=nika
We now create the listener after receiving a "browsing-context-did-set-embedder"
and destroy it after receiving "browsing-context-discarded".

Differential Revision: https://phabricator.services.mozilla.com/D110337
2021-04-14 18:53:06 +00:00
Kashav Madan
e8bc18afcf Bug 1700963 - Clean up SessionStore's SHistoryListener, r=nika
This cleans up the SHistoryListener class and does a few things:

1. Gets rid of the listener's `_sHistoryChanges` property, which is possible
   because _sHistoryChanges == false <-> _fromIdx == kNoIndex.
2. Simplifies the code that interacts with SHistoryListener in
   UpdateSessionStoreFromTablistener, and attempts to make that function a
   little more readable.
3. Ensures we're only doing the SessionHistory bit of
   UpdateSessionStoreFromTablistener for toplevel frames.

Differential Revision: https://phabricator.services.mozilla.com/D110336
2021-04-14 18:53:05 +00:00
Emma Malysz
a5a8f40979 Bug 1692176, add restore previous session to history panel r=jaws
Differential Revision: https://phabricator.services.mozilla.com/D110178
2021-03-31 16:22:52 +00:00
Rob Wu
878b74f39d Bug 1698192 - Use correct currentURI during swapping of lazy browsers r=dao
Re-order calls in SessionStore.jsm to invoke the side-effect-free logic
before triggering observable events.

Clear (likely) stale value of the cached currentURI when lazy browsers
are swapped.

And while I was at it, I also fixed a bug that caused a lazy browser to
eagerly be unlazified because the unneeded mute() call on a lazy browser
unlazifies it (discovered when I added complete test coverage for this
change).

Differential Revision: https://phabricator.services.mozilla.com/D108260
2021-03-26 19:51:15 +00:00
Andreas Farre
2d0871a066 Bug 1572084 - Part 2: Make Session Store data collection work with fission. r=nika
Instead of collecting data from the entire tree of documents, we
collect data per document. The collected data is sent to the
corresponding parent window context and is applied incrementally to
the tab state cache.

Differential Revision: https://phabricator.services.mozilla.com/D107814
2021-03-26 08:59:33 +00:00
Bogdan Tara
6ed704c1ea Backed out 3 changesets (bug 1572084) for WindowGlobalParent.cpp related failures CLOSED TREE
Backed out changeset d42a68132e7e (bug 1572084)
Backed out changeset 4d5a5ac074e6 (bug 1572084)
Backed out changeset 5aa59e106a42 (bug 1572084)
2021-03-25 18:56:02 +02:00
Andreas Farre
e8713aa001 Bug 1572084 - Part 2: Make Session Store data collection work with fission. r=nika
Instead of collecting data from the entire tree of documents, we
collect data per document. The collected data is sent to the
corresponding parent window context and is applied incrementally to
the tab state cache.

Differential Revision: https://phabricator.services.mozilla.com/D107814
2021-03-25 15:36:38 +00:00
Kashav Madan
b912b90222 Bug 1597499 - Make Session Restore work in Fission, r=nika
Differential Revision: https://phabricator.services.mozilla.com/D107883
2021-03-23 18:01:21 +00:00
smolnar
ede838631a Backed out 4 changesets (bug 1597499) for causing Fission crashes (bug 1699349). a=backout
Backed out changeset 0df7b8660446 (bug 1597499)
Backed out changeset d015ba9097c5 (bug 1597499)
Backed out changeset e84054ccadb0 (bug 1597499)
Backed out changeset 12762a25c4fa (bug 1597499)
2021-03-18 11:29:08 +02:00
Kashav Madan
ad57811557 Bug 1597499 - Make Session Restore work in Fission, r=nika
Differential Revision: https://phabricator.services.mozilla.com/D107883
2021-03-17 16:43:05 +00:00
Paul Bone
b1e1ee5aed Bug 1697738 - Some refactoring in SessionStore.jsm r=nika
* Remove lastKnownURI from SHistoryListener
 * Remove some dead code
 * Move some code out of a condition

Differential Revision: https://phabricator.services.mozilla.com/D107974
2021-03-15 02:08:41 +00:00
Paul Bone
bb4e53396b Bug 1691135 - pt 1. SHistoryListeners track browser ID as it is constant r=nika
Differential Revision: https://phabricator.services.mozilla.com/D106841
2021-03-12 01:16:15 +00:00