Open Bug 1647550 Opened 5 years ago Updated 3 years ago

[meta] Control Document loads entirely from the parent process

Categories

(Core :: DOM: Navigation, task, P3)

task

Tracking

()

Fission Milestone Future

People

(Reporter: mattwoodrow, Unassigned)

References

(Depends on 3 open bugs, Blocks 1 open bug)

Details

(Keywords: meta)

The current state is that document load requests from firefox get sent down to the current content process (regardless of URI), which creates DocumentChannel and handles switching the load to the desired process.

We also speculatively create a DocumentLoadListener in the parent process in parallel (bug 1602318) to get the network load started earlier (and to prove that we have all the information needed in the parent process).

The goal is to move to only starting the DocumentLoadListener in the parent, and not notifying the previous content process at all (until and if we decide to load the response as a Document in that process).

The biggest blocker for this is that the docshell records session history for the active load, and so we need session history in the parent process.

Depends on: 1647554
Depends on: 1647557

(In reply to Matt Woodrow (:mattwoodrow) from comment #0)

The biggest blocker for this is that the docshell records session history for the active load, and so we need session history in the parent process.

Just to expand on this a bit, there are GeckoView unit tests that start a load, and then immediately try to reload it.

If the load is handled in the parent process, but the reload is sent down to the content process docshell, it then fails since there's no Document and no active load there. I think we need all types of navigation to be handled in the same place to keep ordering guarantees.

This is probably pretty impossible to trigger via user interaction in desktop Firefox (since it has a combined stop/reload button), but we have code in docshell specifically to try get this case right. I'm not sure about what happens if you try go back/forward while an existing load is in progress, but that might have the same problem.

If we have session-history in the parent, then we can start history navigations in the parent too (reload, but also forward/back etc) and this should fix our ordering issues.

Fission beta blocking

Fission Milestone: --- → M7
Severity: -- → N/A
Priority: -- → P3
Depends on: 1672589
Fission Milestone: M7 → MVP
Depends on: fission-history-m6b
No longer depends on: fission-history
Assignee: nobody → agakhokidze

Moving from Fission MVP to Future because this is a big project and all the dependencies are already in Fission Future.

Fission Milestone: MVP → Future
Depends on: 1720958
Depends on: 1721217
Depends on: 1746524
No longer depends on: 1721217
Assignee: agakhokidze → nobody
Depends on: 1766034
You need to log in before you can comment on or make changes to this bug.