WIP: Home Page Customization in Firefox for Android
In Firefox 26, we released a completely revamped version of the Firefox for Android Home screen, creating a centralized place to find all of your stuff. While this is certainly awesome, we’ve been working to make this new home screen customizable and extensible. Our goal is to give users control of what they see on their home screen, including interesting new content provided by add-ons. For the past two months, we’ve been making steady progress laying the ground work for this feature, but last week the team got together in San Francisco to bring all the pieces together for the first time.
Firefox for Android has a native Java UI that’s partially driven by JavaScript logic behind the scenes. To allow JavaScript add-ons to make their own home page panels, we came up with two sets of APIs for storing and displaying data:
- HomeProvider.jsm holds basic data storage APIs, which allow add-ons to save data to specific datasets.
- Home.jsm contains new APIs to add new panels to the home page, including specifying which kinds of views to make in these panels, and which datasets should back those views.
During the first half of our hack week, we agreed on a working first version of these APIs, and we hooked up our native Java UI to HomeProvider data stored from JS. After that, we started to dig into the bugs necessary to flesh out a first version of this feature.
- Chenxia recently landed a new page in settings to allow users to manage their home panels, and she has been working on a patch to allow them to install new panels from this settings page (bug 942878).
- Lucas has been working on a patch series to allow add-ons to auto-install new panels to about:home (bug 964375). He also has patches to add images to dynamic views using the Picasso image loading library (bug 963046).
- Sola (one of our awesome interns), added support for a gallery view layout in dynamic panels (bug 942889).
- Josh (our other awesome intern), is working to support folder views in dynamic panels, similar to our built-in bookmarks panel (bug 942295), and he also added support for handling clicks on these dynamic views (bug 963721).
- Michael has been working on an RSS add-on to demo (and dogfood) these new APIs.
- I’ve also started exploring how add-ons will authenticate users (bug 942281), as well as ways to help them sync data in a battery/storage/network-friendly way (bug 964447).
Many of these patches are still waiting to land, so unfortunately there’s nothing to show in Nightly yet. But stay tuned, exciting things are coming soon!