Firefox OS apps architecture
This article explains the internals of how applications are launched and managed in Firefox OS. This information will be useful for Firefox OS platform developers, as well as teams porting the operating system to new hardware. You don't really need this if you are an app developer, but it might still be interesting.
When the user selects an app they'd like to launch, or an app otherwise needs to be launched, the home screen app starts by getting an app reference from the
App API, then calling the
App.launch() method to launch the app.
Gecko receives that request and sends the
mozChromeEvent to the System app with the app's details. The System app handles that event by inserting a new
<iframe> into its DOM tree and loading the app within the new
<iframe>. That frame will be the app's home until it terminates.
Every app requires a manifest that describes the app, and has a particular file hierarchy within its package. For details, see the article App manifest.
The communication between Gecko and Gaia's System app is done via
mozChromeEvents are broadcast from chrome to content and
mozContentEvents are broadcast from content to chrome. This communication is used to control the creation and closure of the trusted UI and to inject the required functions for notifications and other tasks, including telling the System app to start an app.