Internet

Sådan vil Google udvide Chrome

Googles browser skal nu kunne udvides ligesom konkurrenternes. Udvidelserne skal også danne platform for applikationer til Googles kommende styresystem til netbooks, hvor programmer kan skrives med HTML, Javascript og CSS.

Google er på vej med den mest efterspurgte funktion, som søgegigantens browser ikke har endnu: udvidelser. Muligheden for at udvide browseren med nye funktioner har gjort konkurrenten Firefox til et hit. Og der gik blot få minutter, fra Google frigav browseren, til brugere indsendte fejlrapporter, som beklagede sig over den manglende mulighed for at skabe udvidelser til Chrome. Firefox' succes med udvidelser skyldes blandt andet, at Mozilla brugte en simpel model, hvor JavaScript sammen med XML-brugerfladesproget XUL anvendes til at skrive udvidelserne med. Google har taget skridtet videre og bruger udelukkende HTML, JavaScript og CSS til jobbet.
På konferencen Google IO løftede firmaet i foråret sløret for, hvordan arkitekturen bag udvidelserne ser ud. Endnu er API'erne ikke færdigdefinerede i forhold til kommende versioner, så der er ingen garanti for, at udvidelser, der skrives nu, er kompatible med den endelige version. Man skal benytte udviklingsudgaven af Chrome til at installere og teste udvidelser med. Denne udgave installeres fra adressen http://www.google.com/chrome/eula.html?extra=devchannel.
Når der udvikles, kan ressourcerne, HTML- og Javascript-filer osv., blot samles i en mappe. Når udvidelsen skal distribueres, skal den først pakkes som en crx-fil, hvor filendelsen står for Chrome Extension. Filformatet er en zippet udgave af mappen med ressourcerne, som er udvidet med en manifest-fil og en digital underskrift i starten af filen. Den digitale underskrift sikrer slutbrugeren, at senere opdateringer kommer fra samme kilde. Der genereres automatisk en vilkårlig privat nøgle til lejligheden.

En udvidelses anatomi

Som sagt tager en udvidelse udgangspunkt i en vilkårlig mappe, som for eksempel C:\Users\Tania\minudvidelse. Mappen skal indeholde en manifest-fil, som i JSON-formatet opremser, hvilke ressourcer udvidelsen indeholder. Manifest-filen er magen til den, som Google benytter til Google Gears-webapplikationer. Vores eksempel ser ud som i eksempel 1. Gem filen som manifest.json i mappen. Filen skal være i utf-8-format, hvilket Windows Notepad kan klare fra og med den version, der følger med Vista.
Filen starter med JSON-feltet 'name', som giver udvidelsen et navn, dernæst et versionsnummer og en beskrivelse, og herefter kommer indholdet i udvidelsen. Chrome giver mulighed for at udvide browserens brugerflade på en række områder, og her benytter vi en 'toolstrip', som er en værktøjslinje. Den er defineret ved en html-fil, toolstrip.html, som kan ses i eksempel 2. Nu kan udvidelsen testes ved at starte Chrome fra en kommandolinje:
chrome.exe --load-extension="C:\Users\Tania\minudvidelse".
Alternativt kan man indsætte parameteren i filhenvisningen til Chrome – det er lidt nemmere.
Så startes udviklerudgaven af Chrome med værktøjslinjen i bunden af vinduet.


[Billede: dump-1-knap.png]

Man kan åbne nye vinduer fra knappen ved at indsætte en onclick-funktion på div-elementet i eksempel 2:  onclick="window.open('hej_verden.html')"– fuldstændig som almindelig HTML og JavaScript. Det nye vindue åbner som et faneblad i Chrome.
Udvidelsen kan nu pakkes til crx-format ved at starte Chrome fra kommandolinjen, ligesom før, med følgende parameter: chrome.exe --pack-extension="C:\Users\Tania\minudvidelse." Det danner i samme mappe crx-filen, som altså er udvidelsen, og den privat-nøgle, som skal benyttes til at underskrive kommende opdateringer med.
Ud over toolstrips kan brugerfladen tilgås som 'page actions', der er en knap, som vises i adresselinjen, ligesom når RSS-ikonet vises ved sider, der har indlejrede RSS-kilder. Ved senere lejlighed vil det også blive muligt at indlejre brugerfladeelementer i fanebladsområdet. Derudover kan såkaldte 'content scripts' manipulere websiderne, ligesom det kendes fra Firefox-udvidelsen Greasemonkey, og man kan afvikle scripts i baggrunden. Lagring af data skal ske igennem de HTML 5-faciliteter, som kan gemme data som nøgle-værdipar og i en database, men disse muligheder er ikke på plads i Chrome endnu. Man kan tilgå eksterne kilder ved hjælp af Ajax-forespørgsler, men URL'erne skal erklæres i manifest-filen.
Der er ingen mulighed for at tilgå det underliggende filsystem. Men ifølge Google vil der senere komme en rettighedsmodel til, som analogt med Android specificerer, hvilke ressourcer og faciliteter en udvidelse har behov for. Så kan slutbrugeren selv tage stilling til, om rettighederne skal gives eller ej. Her kan det måske forventes, at der bliver flere muligheder for at udnytte det omgivende system.
Der er mere information at finde i dokumentet Chrome Extension HOWTO, som nemt kan findes ved at søge på Google, naturligvis. Videoen "Google I/O 2009 - Developing Extensions for Google Chrome" er også god at se. Den kan findes på YouTube.