Firefox/Kinto

From MozillaWiki
< Firefox
Revision as of 09:12, 13 April 2016 by Leplatrem (talk | contribs) (import release instructions)
Jump to navigation Jump to search

Kinto Integration in Firefox

Key features

  • Data synchronization
  • Data integrity/signing
  • Offline persistence
  • Admin panel UI

Use Cases

  • Certificates blocklist (OneCRL)
  • Addons/Plugins/Gfx blocklist
  • storage.sync API (Web Extensions)

Upgrade client libraries

Two client libraries are embedded in Firefox:

  • `Kinto/kinto-client.js`: for direct interactions with the Kinto HTTP API
  • `Kinto/kinto.js`: for offline persistence in internal SQLite

Generate bundles

The libraries are developed independently on Github, using NPM packages. With the help of Babel and browsersify, a bundle is generated for Firefox with the minimum transpilation possible (eg. CommonJS require, ES7 decorators).

kinto.js

From kinto.js repo, generate the `moz-kinto-offline-client.js` file:

   $ npm run dist-fx

And overwrite it in the Firefox code base:

   $ cp dist/moz-kinto-offline-client.js ../mozilla-central/services/common/kinto-offline-client.js

kinto-client.js

From kinto-client.js repo, generate the `moz-kinto-http-client.js` file:

   $ npm run dist-fx

And overwrite it in the Firefox code base:

    $ cp dist/moz-kinto-http-client.js ../mozilla-central/services/common/kinto-http-client.js

Run the tests

First, follow the instructions to build Firefox.

For JavaScript updates only, have a look at Artifacts Builds, trading bandwidth for compilation time.

   $ ./mach build faster
   $ ./mach xpcshell-test services/common/tests/unit/test_kinto.js
   $ ./mach xpcshell-test services/common/tests/unit/test_storage_adapter.js

Or all tests related to Kinto:

   $ ./mach xpcshell-test services/common/tests/unit/*into*


TDD mode

Using *inotify*, we will detect a file change in the `dist/` folder and run a series of commands to execute the tests automatically.

First, install `inotify-tools`:

   sudo apt-get install inotify-tools

Then start an infinite loop with `inotify-wait`:

   while true; do
       # Wait for a change
       inotifywait -q -e create,modify,delete -r ~/Code/Mozilla/kinto.js/dist
       # Execute these commands
       cp ~/Code/Mozilla/kinto.js/dist/moz-kinto-offline-client.js services/common/kinto-offline-client.js
       ./mach xpcshell-test services/common/tests/unit/test_storage_adapter.js
       ./mach xpcshell-test services/common/tests/unit/test_kinto.js          
   done

Source: Antoine Cezar

Submit patch

> Patch are contributed to kinto.js and kinto-client.js, which are first released on NPM.

    • DO NOT** land files that are not tagged officially on upstream repositories.

Become a contributor =

Configure SSH key for hg:

   Host hg.mozilla.org
     User user@server.com
     IdentityFile ~/.ssh/contrib_moz

Run integration tests: «Try»

See https://wiki.mozilla.org/ReleaseEngineering/TryServer

Or use a *gecko-dev* fork from Github, and with install [moz git tools](https://github.com/mozilla/moz-git-tools)

   git push-to-try -t --rev master..HEAD ~/hg/mozilla-central/ -b do -p linux,linux64,macosx64,win32,win64 -u xpcshell -t none

Submit for review

   # Commit with link to Bugzilla
   hg commit -m "Bug XXXXX - Upgrade <lib> to X.Y.Z"
   
   # Submit to MozReview
   hg push review
   
   # Keep a bookmark of your branch to address review.
   hg bookmark bug-XXXXX
   
   # Go back to «master»
   hg update central