This is a public service announcement for those people interested in the future of JavaXPCOM. JavaXPCOM has been disabled and will likely to removed from the Mozilla source tree in the future. See Benjamin Smedberg’s newsgroup post for more details.
Please follow up (add comments) to the newsgroup post.
If you’ve developed applications or extensions using the Mozilla platform, you know that there are tons of services and APIs available. We use those same capabilities when building Fennec. However, there are times when the default platform behavior is not desirable on mobile devices. When that happens, we could hack up our own system, or we could re-implement the platform APIs to suit our needs. We try to do the latter.
Here are some APIs that have been reimplemented in Fennec: nsIAlertsService, nsIPromptService, nsIDownloadManagerUI, and window.openDialog(). The primary reason all of these APIs have been reimplemented is that they open new XUL windows. We don’t like doing that in Fennec. Mostly because opening a XUL window is slow. But also because we love having tighter control over the look, feel and behavior of the UI elements.
Services
Since we re-implement the interfaces, nsIAlertsService
, nsIPromptService
and nsIDownloadManagerUI
can be used just as they are on the desktop. The big difference is that none of them open new windows. The UI is embedded into the main window itself. It’s faster to display and easier to control and style the UI elements. In the case of the download manager, it’s designed to be embedded in the main window.
Dialogs
On the other hand, we couldn’t exactly match the way window.openDialog()
worked, so we created a slightly different API: importDialog()
. The big difference is that importDialog()
actually merges the XUL dialog into the main window. It does not open a new XUL window.
importDialog(aSrc, aArguments);
aSrc
: The chrome URL of the XUL dialogaArguments
: A JavaScript object used to pass data to the dialogThe XUL passed to importDialog()
is very similar to XUL passed to window.openDialog()
, with some limitations and caveats:
top level elements are permitted
element, not via the
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4