Základy prostředí Mozilly

Standardní distribuce Mozilly má několik částí, které zhruba odpovídají adresářové struktuře z kořenového adresáře instalace mozilly (dále %MOZILLA%). Zde bude řeč hlavně o komponentách (%MOZILLA%/components dále jako %COMPONENTS%) a chrome (%MOZILLA%/chrome dále jako %CHROME%). Komponenty jsou samostatné kusy kódu, obvykle přeložené do DLL, které využívají Gecko. Dále viz sekci XPCOM.

Chrome

Chrome je část okna aplikace (prohlížeče), která leží mimo plochu, na které se zobrazuje obsah HTML stránky (content area). Jde tedy např. o toolbary, menu bary, progress bary atd.

Jsou čtyři části chrome a každá má jiného správce (provider):

  • skin provider spravuje soubory určující vzhled chrome – typicky CSS, obrázky
  • content provider spravuje struktury GUI komponent chrome (obsah menu, toolbaru, ...) – typicky XUL
  • platform provider rozlišuje platformu (co do vzhledu i struktury)
  • localization provider spravuje všechny textové řetězce, které se v chrome vyskytují (např. texty menu, popisky ikon, ...)

Správci chrome můžou být uloženy lokálně, ale lze je také dynamicky nahrávat třeba z webového serveru (downloadable chrome). To umožňuje měnit vzhled chrome (a tedy celého browseru) podle serveru, ke kterému je klientský prohlížeč připojen.

V pojmenovávání se používá následující konvence:

Pokud máme typ oknafoo, pak "Foo" jewindow_type_name (tj. textový indentifikátor, který se zapisuje do registračního souboru a také název balíku), foo.xul je inicializační soubor GUI, foo.css je hlavní CSS soubor a fooSkin.jar, fooContent.jar, fooPlatform.jar, fooLocale.jar jsou archivy souborů jednotlivých správců.

Chrome registry

Chrome registry je obdoba windows registrů. Je to databáze (tabulka) na straně klienta, která poskytuje mapování mezi Gecko-embedded aplikací a použitým souborem správců. Protože je Gecko platformně nezávislé, je i tato DB abstraktní vůči OS a jeho registrům.

Každý správce musí mít unikátní název, v tabulce je pak odkaz na jeho hlavní (popisný) soubor (buď jako lokální cesta, nebo URL adresa na JAR archiv se správci).

Chrome registry jsou uloženy v souboru %CHROME%/chrome.rdf nebo %CHROME%/registry.rdf, který se generuje při startu Mozilly z textového souboru %CHROME%/installed-chrome.txt.

Řádek souboru %CHROME%/installed-chrome.txt má tvar: typ_balíčku,jak_instalovat,typ_URL,URL_balíčku – s následujícím významem:

  • typ_balíčku: content, skin nebo locale
  • jak_instalovat: install (k Mozille) nebo profile</t> (balíčky typu <tt>skin nebo locale lze instalovat do user profile adresáře)
  • typ_URL: URL (mozilla) nebo path (nativní)
  • URL_balíčku: cesta k balíčku, musí končit znakem '/', resource:/ označuje kořenový adresář Mozilly (tj. %MOZILLA%)

Pokud je balíček zapakován v JAR souboru, tak je URL ve tvaru: cesta_k_balíčku/jméno_balíčku.jar!/cesta_v_balíčku.

Soubor %CHROME%/installed-chrome.txt se v praxi needituje ručně, ale mění se při instalaci komponenty pomocí JavaScriptového instalačního systému XPInstall.

Chrome URL

Na GUI soubory se neodkazuje pomocí nativního (na OS závislého) zápisu cesty, ale pomocí chrome URL. To má základní tvar: chrome://WindowTypeName/ProviderName/název_souboru, přičemž nativní adresa je: %chrome%/WindowTypeName/ProviderName/WindowTypeName/název_souboru.

Při startu aplikace z browseru stačí do pole URL adresy zadat chrome://WindowTypeName/content, cesta k defaultnímu XUL souboru aplikace se pak vyhledá v registrech.

RDF

RDF je XML-based formát pro uložení informací. Není spravován organizací Mozilla.org, ale konsorciem W3C. V Mozille se pomocí něj definuje, které soubory (.xul, .css) použít a jak. Každý registrovaný adresář s GUI soubory musí obsahovat popisný soubor contents.rdf.

XPConnect a JavaScript

XPConnect je technologie umožňující jednoduchou interakci mezi JavaScriptem a XPCOM komponentami. JavaScript je základní jazyk, který se používá k odchytávání všech událostí vzniklých při interakci uživatele s GUI, jako je např. výběr položky menu, kliknutí na tlačítko apod., a následné volání XPCOM komponenty přes rozhraní definované XPIDLem (XPIDL - Cross-Platform Interface Definition Language).

Schopnosti JavaScriptu jsou poměrně rozsáhlé (např. i přístup k souborům apod.) a na spoustu operací zřejmě stačí samotný, ale pro náročnější úkony (přístup k databázím, ...) je třeba použít mocnější jazyky jako C++ nebo Java.

Informace o původním dokumentu

  • Autor: Jan Ditrich

Štítky a přispěvatelé do dokumentace

Přispěvatelé této stránky: SphinxKnight, Pawell, Majda
Poslední aktualizace od: SphinxKnight,