Mobile/Fennec/Extensions/Electrolysis
Fennec 2.0 will move the Electroysis platform. This means that chrome windows (the main application window) and content windows (web content in browser tabs) will be in separate processes. This impacts application and add-on code in a few ways:
- Code in one process will not be able to directly access code in the other process.
- Inter process communication will use a message based system to communicate.
An example will help illustrate the affect of the changes. First, let's look at how code in the application (or add-on overlay) would access the DOM of a web page:
alert(gBrowser.contentDocument.title); // in Firefox alert(Browser.selectedBrowser.contentDocument.title); // in Fennec
This code will break because contentDocument will always return null (or perhaps it will throw an exception). In any case, it just won't work.
Another common use-case is listening for DOM event bubble up from the web content:
gBrowser.addEventListener("DOMLinkAdded", myHandler, true); // in Firefox
Browser.selectedBrowser..addEventListener("DOMLinkAdded", myHandler, true); // in Fennec
This will no longer work. DOM events do not pass across the process boundary.
You might be wondering how in the world any application code or add-on code is supposed to work in the world of multi-process. Mozilla has implemented a few different ways to help get your code working. The most powerful system is the IPC Messaging System. The Messaging System is used to pass messages and JSON data back and forth across the process boundary. The way to access the system is by using the MessageManager object.