It's been two months since the last newsletter and there have been quite some accomplishments for Fission.

Fission Milestones M4, M4.1 and M5

Fission M4 milestone aimed to get Mochitests running and successfully passing with Fission enabled. https://arewefissionyet.com/m4/?original shows the fantastic progress that has been made on this goal. We completed our M4 milestone by successfully getting 90% of Mochitests to pass with Fission enabled, in just about a quarter. The remaining tests to be fixed by the core Fission team are at a low enough point that we started working towards the next milestone too. This milestone was made possible because of the support we received from all Firefox teams. The remaining test failures have been moved to an additional milestone (M4.1), so that the teams responsible for those tests continue the drive towards 100% Fission coverage on Mochitests. https://arewefissionyet.com/m4/ shows the burndown graph for M4.1. Some failing tests depend on WindowContext (under construction) and have been identified as such and are not covered in M4/M4.1. To help us get to 100%, take a look at the spreadsheet (https://docs.google.com/spreadsheets/d/1kjp32JTuB4axM3wKx0iIYL2Ado-HcyeBhoY-siGxYAs/)† that tracks the failures and help out where you can.

With M4 done and the remaining Mochitest fixing moved to M4.1, we’re also shifting the focus of the core Fission team to the M5 milestone. The goal of M5 is to make Fission-enabled builds be usable by developers and testers for dogfooding. We’ll be focusing on crashes and broken major functionality.

†: mozilla-internal document, public read-only mirror
<https://docs.google.com/spreadsheets/d/e/2PACX-1vRRmnRUOy-KDDScK8o8Z6aKRaEtXKXb39Yn2OOPXoMgZwcMC3Oce3jgSjI5-jRK0jLS73gQYLkfSTJ_/pubhtml?gid=1560718888&single=true> also available.


DocumentChannel

With Fission, the process that initiates a URI load might not be the same as the one that needs to display the content. Even worse, we frequently don’t know what the final process will be until we’ve finished navigating any HTTP redirects.

To solve this, the originating docshell will now create a DocumentChannel, a protocol-agnostic placeholder channel, rather than a real network channel. DocumentChannel proxies the request into the parent process, where we can wait for all redirects and then make the right decision about where to deliver the final content. This lets us move a lot of logic for how to target a load out of the originating docshell, and into the parent process.

DocumentChannel is now enabled on Nightly for all protocols, with the Fission-specific process selection code disabled. We’re currently working to support handling content that needs to be downloaded directly in the parent.


Parent process owning Session History

Session History is the part of a web engine that supports functions like the back/forward buttons, the History menu item, etc. It contains the state information about the pages that were loaded in a particular window/tab, such as the active scroll position, filled-in form data, and more. In Gecko, the state is currently stored in the child processes where those pages were loaded. With Fission, we're changing the processes in which pages are loaded, so we need to also re-architect how Session History works.

During a browsing session, the user could have navigated to different origins within the same tab, and so the tab’s session history data might apply to pages loaded in different processes. At any given point in time, a page can also contain iframes with data from different origins, which in turn implies session history contains data for all the corresponding processes. In order to not leak cross-origin data, we need to move the session history data to the parent process. We've landed (behind a pref) a major piece of this re-architecting work in M4 that moves most of the session history data to the parent process, while keeping the same underlying API. Because the existing APIs allowed synchronous access to the data, we're now using synchronous IPC messages to get or set the data in the parent process. The next step for this project is to remove the synchronous IPC messages and will require a new set of APIs which are currently being designed.


- The Fission Team.


Previous newsletters:
#1 <https://groups.google.com/d/msg/mozilla.dev.platform/Y_vliuQ_7F0/HOXTc7JYBgAJ> #2 <https://groups.google.com/d/msg/mozilla.dev.platform/sevpJDQwDfg/qlFrsS7uAAAJ> #3 <https://groups.google.com/d/msg/mozilla.dev.platform/-jKocw2bAlw/RLuD9MA9DAAJ>
_______________________________________________
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform

Reply via email to