Oxide: using the Chromium Content API in Ubuntu

Registered by Jamie Strandboge on 2013-08-21

https://blueprints.launchpad.net/ubuntu/+spec/client-1303-webkit-maintenance discussed how to support a webkit-based engine in Ubuntu and SDK applications. We have decided to use the Chromium Content API for Canonical-supported applications and the default webview for Ubuntu SDK applications. Oxide (https://launchpad.net/oxide and http://www.chriscoulson.me.uk/blog/?p=196) was started to make the Chromium Content API usable in Ubuntu and includes a preliminary Qt5/QML binding and is now at a point where others can contribute. This session aims to define the work items needed to use Oxide in the SDK, webbrowser and any other Canonical-supported applications that need a webview.

Blueprint information

Status:
Complete
Approver:
Jamie Strandboge
Priority:
Essential
Drafter:
Chris Coulson
Direction:
Approved
Assignee:
Chris Coulson
Definition:
Approved
Series goal:
Accepted for trusty
Implementation:
Implemented
Milestone target:
milestone icon ubuntu-14.04
Started by
Jamie Strandboge on 2013-08-21
Completed by
Jamie Strandboge on 2014-05-07

Sprints

Whiteboard

jdstrand> most work is tracked as bugs in https://bugs.launchpad.net/oxide

Etherpad dump from vUDS-1308 session (http://pad.ubuntu.com/uds-1308-client-1308-oxide):

Agenda:
Review and assign bugs in https://bugs.launchpad.net/oxide
 * HIGH #1214033 Implement navigation API - oSoMoN
 * HIGH #1214034 Implement API for querying SSL status and certificate information - chrisccoulson
 * HIGH #1214035 Dialog integration (with permission) - oSoMoN
 * HIGH #1214037 Permission request handling (with permission) - oSoMoN
 * HIGH #1214041 Embedder <-> content script messaging API - chrisccoulson
 * HIGH #1214049 Support accelarated compositing - chrisccoulson
 * MEDIUM #1214040 Visited link tracking (perhaps with history interface or zeitgeist or U1DB)
 * MEDIUM #1214045 Support overriding the user agent string - chrisccoulson
 * MEDIUM #1214048 Support autocomplete
 * LOW #1214046 Add support for navigator.registerProtocolHandler

Decide on which bugs in https://bugs.launchpad.net/oxide are required for feature parity with QtWebkit
 - the HIGH bugs above

Discuss relationship between oxide and cordova
 - would use oxide like how cordova currently uses qtwebkit. There are several properties for dealing with local files, etc, but basically like webapps/embedded

Discuss additional requirements that haven't already been captured from other stakeholders
- none

Questions
What is the status of using oxide with QML?
 - works. need to build chromium content api. Chris will put up a wiki

dev package for chromium? not really because not intended to be consumable. Likely more work than it is worth.
- Ping Chad if it's interesting. He can extract headers, but can't guarantee they're stable.

does visited link tracking work in qtwebkit?
- TBD

does oxide work with chromium 30? works with latest trunk

how will this work when developing packages?
 - various branches and update in same way as we update chromium (ie, stable, beta, trunk)
 - some churn, but not difficult. mostly around move away from webkit

when is it targeted?
 - 14.04

why do we need a change in the import line at all? Ie, just replace qtwebkit with oxide
 - it would prevent parallel installs of qtwebkit and oxide
 - ties us into an external api, which is what we want to avoid
 - for simple embedders, the api will be very similar

what about working with Digia?
 - we will work with them to the extent we can (ie, working with chromium at a low level), but their model is the qtwebkit model which is a different timescale than ours, with tight qt integration. oxide provides us with the LTS support and flexibility to optimize for webbrowser, webapps, etc

what about existing webapps stuff?
- don't worry for now-- we will look at it and make adjustments/etc as necessary so the transition is smooth

postponed work captured in https://blueprints.launchpad.net/ubuntu/+spec/client-1410-oxide

(?)

Work Items

Work items for ubuntu-13.10:
[chrisccoulson] Embedder <-> content script messaging API: DONE
[chrisccoulson] get oxide into a state where others can contribute: DONE

Work items for ubuntu-13.11:
[chrisccoulson] wiki page on getting started with developing oxide: DONE
[chrisccoulson] figure out mailing list: DONE
[jdstrand] ask QA about CI since full rebuild per commit will be painful: DONE
[osomon] implement navigation API (bug #1214033): DONE
[chrisccoulson] package oxide-qt in a ppa: DONE
[chrisccoulson] Support accelerated compositing (bug #1214049): DONE

Work items for ubuntu-13.12:
[jdstrand] adjust click-review-tools to warn QtWebkit imports and recommend UbuntuWebview: DONE
[abreu-alexandre] Add an API to allow content scripts to bind objects to the main world global object (bug #1221996): POSTPONED
[jdstrand] verify/adjust apparmor-easyprof-ubuntu policy for Oxide: DONE

Work items for ubuntu-14.01:
[chrisccoulson] perform some benchmarks on (at least) armhf, compare to qtwebkit (ie, UbuntuWebview qml) and send to list: DONE
[osomon] dialog integration (bug #1214035): DONE

Work items for ubuntu-14.02:
[chrisccoulson] Migrate from qmake to cmake to get cross-compiling support, etc.: DONE
[chrisccoulson] upload oxide-qt integration to Ubuntu: DONE
[chrisccoulson] enable daily builds: DONE

Work items for ubuntu-14.03:
[abreu-alexandre] Cordova integration (bug #1217439): POSTPONED
[chrisccoulson] fix high and critical oxide bugs tagged with 'application-confinement': POSTPONED
[chrisccoulson] Implement API for querying SSL status and certificate (bug #1214034): POSTPONED
[rsalveti] hook oxide up to platfrom API (bug #1249387): POSTPONED
[osomon] permission request handling (bug #1214037): POSTPONED
[chrisccoulson] Support overriding the user agent string (bug #1214045): DONE
[osomon] work with bzoltan to transition UbuntuWebview out of webbrowser-app to SDK and to use Oxide: POSTPONED

Work items:
[zaspire] Investigate API for delegating navigation decisions to the embedder (bug #1259219): DONE
implement bug #1214040 Visited link tracking (perhaps with history interface or zeitgeist or U1DB): POSTPONED
Support autocomplete (bug #1214048): POSTPONED
Use a localized Accept-Language header (bug #1224707): POSTPONED
Add support for navigator.registerProtocolHandler (bug #1214046): POSTPONED
Stop using QT_USE_NAMESPACE (bug #1219396): POSTPONED
document API: POSTPONED

Dependency tree

* Blueprints in grey have been implemented.