It’s been a while since I wrote my last blog post – Introducing Oxide. I’ve been quite busy since, so I thought that I should take this opportunity to provide a quick update on progress.
Our overall aim is to have the webapps container using Oxide in Ubuntu 14.04, and we’re also hoping to be able to transition the Ubuntu browser quite soon as well.
Summary of progress
A lot has changed since my last post:
- runs independently of X11
- supports accelerated compositing on both Mir and X11
- has been running on several devices with Ubuntu Touch – Nexus 4 (mako), Nexus 7 (grouper) and Galaxy Nexus (maguro)
- has a navigation history API (WebView.navigationHistory)
- has a WebPreferences API (WebView.preferences)
- is DPI aware
- has input method support, and the onscreen keyboard works on Ubuntu Touch
- has support for touch events and gestures (pinch-to-zoom and fling works)
- supports third-party cookie blocking
- has a mechanism for intercepting and modifying outgoing HTTP requests, which can be used for redirecting URL’s or modifying headers (such as User-Agent)
- has a mechanism for intercepting accesses to navigator.userAgent which allows applications to customize this on a per-frame and per-domain basis (more on this and the above point in another blog post)
In addition to this, I also have the following features in my review queue:
- Support for JS dialogs (alert, confirm etc)
- File picker support
- Cursor change support
- API for exposing favicons
- API for delivering console messages to embedders
Oxide also runs WebGL and plays video quite well on both the desktop and the device.
Here is a list of things we need to tackle quite urgently:
- Land Oxide in to the archive
- Bug 1259219 (Expose onNavigationRequested-like mechanism) needs implementing for the webapps container
- Bug 1267543 (Crash when visiting a page that requests geolocation) needs fixing
And then, there are some other major tasks which are still important but not complete blockers at the moment:
- Geolocation support (requires permission request API and an API key for Google’s geolocation service. Eventually, this should use the Ubuntu location service)
- Device access permission request API (for microphone and webcam)
- Support window.open() and HTML anchor ‘target=”_blank”‘
- Add a fullscreen API – the mobile version of Youtube requires this to play videos
- We need to join Chromium’s release train with the creation of beta and release branches
I also need to clear my review queue
For a more complete list of remaining work, please see the list of open bugs.
Builds of Oxide are currently uploaded fairly regularly to the Phablet Team PPA. Feel free to download it, play around with the API and report bugs. Sorry, there’s no documentation yet, so you will need to look at the source code or ask me questions about how it works for now. It is quite easy to use though.
The PPA also contains a build of webbrowser-app that uses Oxide instead of QtWebkit. You can try this out, but if you do, you should be aware of the following caveats:
- It does replace the current webbrowser-app, which uses QtWebkit
- Whilst it’s ok for basic browsing, testing and bug reporting, there is still major functionality missing that means you probably don’t want to use it for day-to-day browsing just yet.
If you want to help make Oxide (and our web browser) awesome, please take a look at the list of currently open bugs. If you see anything that you’d like to work on, feel free to come and talk to me on IRC (I’m “chrisccoulson” on irc.freenode.net), and I’ll be glad to help out.
For all the hard work from everyone who has contributed or contributing to Oxide so far: Olivier Tilloy, Alexandre Abreu, Jamie Strandboge, Justin McPherson and Maxim Ermilov.
Also, thanks to Bill Filler, David Barth and Pat McGowan for keeping everybody focused.
And to Parameswaran Sivatharman for his tireless efforts on Continuous Integration.
I’m really excited about this