Tvorba univerzálních doplňků

Workshop

Tomáš Zelina

Michal Stanke

Firefox čeká velká změna

Za 9 dní vychází Firefox 57

Kompletní změna UI

Nové prvky vykreslovacího jádra napsané v Rustu

Větší důraz na paralelizaci

Ukončení podpory doplňků napsaných v XULu

Historie vývoje doplňků

Firefox 1.0

XUL

XML UI Language

:[zul]:

XML UI Language

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>

<window id="vbox example" title="Example 3...."
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  <vbox>
    <button id="yes1" label="Yes"/>
    <button id="no1" label="No"/>
    <button id="maybe1" label="Maybe"/>
  </vbox>
</window>

XML UI Language

V XULu je napsána většina UI Firefoxu

chrome://browser/content/browser.xul

XUL nemá API

XPCOM

Binární moduly

Závislost na platformě

Historie vývoje doplňků

2008

Modernější

Jednodušší - pouze HTML, JS a manifest

Počítá s více procesy

Chrome API

Historie vývoje doplňků

2015

WebExtensions

Inspirovaný Chrome API

Podporované od poloviny 2016

Velká část API je kompatibilní s Chromem

Kompatibilita s budoucími verzemi Firefoxu

WebExtensions

Snaha o standardizaci u W3C

WebExtensions

Největší nevýhoda WebExtensions

Mají omezené možnosti zásahu do prohlížeče

Největší výhoda WebExtensions

Mají omezené možnosti zásahu do prohlížeče

Jak mohou WebExtensions zasahovat do UI

Kompatibilita mezi browsery

Questions?