Closed Bug 1706445 Opened 3 years ago Closed 3 years ago

Remove the "SessionStore:update" and "SessionStore:flush" messages for SHIP

Categories

(Firefox :: Session Restore, task, P2)

task

Tracking

()

RESOLVED FIXED
91 Branch
Fission Milestone M7a
Tracking Status
firefox91 --- fixed

People

(Reporter: u608768, Assigned: u608768)

References

Details

Attachments

(7 files, 1 obsolete file)

These are used to send frame data to the parent.

With SHIP, the update messages don't actually have any useful information except for the flushID (to know which TabStateFlusher promise to resolve) and the isFinal bit (for cleanup after a frame is unloaded), but it shouldn't be too hard to get that information into SessionStore in other ways.

Assignee: nobody → afarre
Severity: -- → S3
Status: NEW → ASSIGNED
Priority: -- → P2
Blocks: 1703692
Blocks: 1707970
Assignee: afarre → kmadan

Latest patch has 1 try-only permafail (browser_formdata_cc.js) and 2 try-only intermittents (browser_sessionHistory.js, browser_formdata.js). Looking forward to debugging those next week.

Still need to update the uses of "SessionStore:update" in talos.

For TabStateFlusher.flush() calls:
We now just resolve the TabStateFlusher.flush() promise immediately after the
native nsFrameLoader::RequestTabStateFlush promise resolves. This is fine
because SessionStore will have seen all tab state updates by this point. The
non-SHIP code still waits for the ContentSessionStore round trip.

For the final "SessionStore:update" (sent by the frame script on unload):
This still piggybacks on the somewhat-flaky tab state flush triggered by
nsFrameLoader::StartDestroy. To ensure we're only cleaning up SessionStore
state after we've received updates from all frames in the tree, SessionStore
tracks the number of isFinal updates it receives and only proceeds when
appropriate.

This also stops loading the content-sessionStore.js frame script for SHIP.

Updates some test helpers to use the "SSTabStateFinalUpdate" event instead of
the isFinal "SessionStore:update" frame script message, and skips a frame script
OOM test for Fission.

Depends on D115929

Attachment #9223437 - Attachment is obsolete: true

This will make it easier to handle isFinal updates.

Depends on D116144

Depends on D116145

Depends on D116146

Attachment #9223438 - Attachment description: Bug 1706445 - Replace usages of "SessionStore:update" in tests, r?nika → Bug 1706445 - Fix test helpers that use "SessionStore:update", r?nika

We'll stop loading content-sessionStore.js for Fission in D116147.

Depends on D115930

Attachment #9224465 - Attachment description: Bug 1706445 - Move ContentSessionStore.jsm to intermittently_loaded_scripts, r?gijs → Bug 1706445 - Update test to reflect that ContentSessionStore.jsm is only loaded without Fission, r?gijs
Attachment #9224465 - Attachment description: Bug 1706445 - Update test to reflect that ContentSessionStore.jsm is only loaded without Fission, r?gijs → Bug 1706445 - Only expect ContentSessionStore.jsm to load without Fission, r?gijs
Pushed by kmadan@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/279ab2402566
Stop using "SessionStore:flush" for SHIP, r=nika
https://hg.mozilla.org/integration/autoland/rev/6b8520fb2bba
Merge the two TabState.update() paths, r=nika
https://hg.mozilla.org/integration/autoland/rev/6b4440c599e1
Handle `isFinal` updates through native code, r=nika
https://hg.mozilla.org/integration/autoland/rev/4e393ab22e60
Stop loading content-sessionStore.js for SHIP, r=nika
https://hg.mozilla.org/integration/autoland/rev/bf1815778af2
Fix test helpers that use "SessionStore:update", r=nika,perftest-reviewers,sparky
https://hg.mozilla.org/integration/autoland/rev/b607c8868333
Only expect ContentSessionStore.jsm to load without Fission, r=Gijs
Regressions: 1713975
See Also: → 1714225
Depends on: 1789043
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: