Upload
nikolasco
View
1.599
Download
3
Tags:
Embed Size (px)
DESCRIPTION
These are the slides for my fine minute overview of Firefox add-ons.
Citation preview
4 Types of Add-Ons
Themes
StylesheetsImages
LocalesTranslated strings
Plug-insNative code
ExtensionsNew or modified UI ElementsNew or modified behaviors
4 Types of Add-Ons
ThemesStylesheets
ImagesLocales
Translated stringsPlug-ins
Native codeExtensions
New or modified UI ElementsNew or modified behaviors
4 Types of Add-Ons
ThemesStylesheetsImages
LocalesTranslated strings
Plug-insNative code
ExtensionsNew or modified UI ElementsNew or modified behaviors
4 Types of Add-Ons
ThemesStylesheetsImages
Locales
Translated stringsPlug-ins
Native codeExtensions
New or modified UI ElementsNew or modified behaviors
4 Types of Add-Ons
ThemesStylesheetsImages
LocalesTranslated strings
Plug-insNative code
ExtensionsNew or modified UI ElementsNew or modified behaviors
4 Types of Add-Ons
ThemesStylesheetsImages
LocalesTranslated strings
Plug-ins
Native codeExtensions
New or modified UI ElementsNew or modified behaviors
4 Types of Add-Ons
ThemesStylesheetsImages
LocalesTranslated strings
Plug-insNative code
ExtensionsNew or modified UI ElementsNew or modified behaviors
4 Types of Add-Ons
ThemesStylesheetsImages
LocalesTranslated strings
Plug-insNative code
Extensions
New or modified UI ElementsNew or modified behaviors
4 Types of Add-Ons
ThemesStylesheetsImages
LocalesTranslated strings
Plug-insNative code
ExtensionsNew or modified UI Elements
New or modified behaviors
4 Types of Add-Ons
ThemesStylesheetsImages
LocalesTranslated strings
Plug-insNative code
ExtensionsNew or modified UI ElementsNew or modified behaviors
Add-ons Consist Of...
ZIP file
with .xpi extension
Add-ons Consist Of...
ZIP filewith .xpi extension
install.rdf
Identifier
<em:id>e4a8a97b-f2ed-450b-b12d-ee082ba24781</em:id><em:id>[email protected]</em:id>
Products can be installed in<em:targetApplication><Description><em:id>...
Min and Max Versions<em:minVersion>2.0</em:minVersion><em:maxVersion>2.0.*</em:maxVersion>
TypeOther metadata
install.rdf
Identifier<em:id>e4a8a97b-f2ed-450b-b12d-ee082ba24781</em:id>
<em:id>[email protected]</em:id>Products can be installed in
<em:targetApplication><Description><em:id>...Min and Max Versions
<em:minVersion>2.0</em:minVersion><em:maxVersion>2.0.*</em:maxVersion>
TypeOther metadata
install.rdf
Identifier<em:id>e4a8a97b-f2ed-450b-b12d-ee082ba24781</em:id><em:id>[email protected]</em:id>
Products can be installed in<em:targetApplication><Description><em:id>...
Min and Max Versions<em:minVersion>2.0</em:minVersion><em:maxVersion>2.0.*</em:maxVersion>
TypeOther metadata
install.rdf
Identifier<em:id>e4a8a97b-f2ed-450b-b12d-ee082ba24781</em:id><em:id>[email protected]</em:id>
Products can be installed in
<em:targetApplication><Description><em:id>...Min and Max Versions
<em:minVersion>2.0</em:minVersion><em:maxVersion>2.0.*</em:maxVersion>
TypeOther metadata
install.rdf
Identifier<em:id>e4a8a97b-f2ed-450b-b12d-ee082ba24781</em:id><em:id>[email protected]</em:id>
Products can be installed in<em:targetApplication><Description><em:id>...
Min and Max Versions<em:minVersion>2.0</em:minVersion><em:maxVersion>2.0.*</em:maxVersion>
TypeOther metadata
install.rdf
Identifier<em:id>e4a8a97b-f2ed-450b-b12d-ee082ba24781</em:id><em:id>[email protected]</em:id>
Products can be installed in<em:targetApplication><Description><em:id>...
Min and Max Versions
<em:minVersion>2.0</em:minVersion><em:maxVersion>2.0.*</em:maxVersion>
TypeOther metadata
install.rdf
Identifier<em:id>e4a8a97b-f2ed-450b-b12d-ee082ba24781</em:id><em:id>[email protected]</em:id>
Products can be installed in<em:targetApplication><Description><em:id>...
Min and Max Versions<em:minVersion>2.0</em:minVersion><em:maxVersion>2.0.*</em:maxVersion>
TypeOther metadata
install.rdf
Identifier<em:id>e4a8a97b-f2ed-450b-b12d-ee082ba24781</em:id><em:id>[email protected]</em:id>
Products can be installed in<em:targetApplication><Description><em:id>...
Min and Max Versions<em:minVersion>2.0</em:minVersion><em:maxVersion>2.0.*</em:maxVersion>
Type
Other metadata
install.rdf
Identifier<em:id>e4a8a97b-f2ed-450b-b12d-ee082ba24781</em:id><em:id>[email protected]</em:id>
Products can be installed in<em:targetApplication><Description><em:id>...
Min and Max Versions<em:minVersion>2.0</em:minVersion><em:maxVersion>2.0.*</em:maxVersion>
TypeOther metadata
chrome.manifest
Paths
chrome/contentTo chrome URLs
chrome:///superduper/content
chrome.manifest
Pathschrome/content
To chrome URLschrome:///superduper/content
chrome.manifest
Pathschrome/content
To chrome URLs
chrome:///superduper/content
chrome.manifest
Pathschrome/content
To chrome URLschrome:///superduper/content
Three Types of Chrome
Content
.xul
.jsSkin
.css
.pngLocale
.properties
.dtd
Three Types of Chrome
Content.xul
.jsSkin
.css
.pngLocale
.properties
.dtd
Three Types of Chrome
Content.xul.js
Skin.css.png
Locale.properties.dtd
Three Types of Chrome
Content.xul.js
Skin
.css
.pngLocale
.properties
.dtd
Three Types of Chrome
Content.xul.js
Skin.css
.pngLocale
.properties
.dtd
Three Types of Chrome
Content.xul.js
Skin.css.png
Locale.properties.dtd
Three Types of Chrome
Content.xul.js
Skin.css.png
Locale
.properties
.dtd
Three Types of Chrome
Content.xul.js
Skin.css.png
Locale.properties
.dtd
Three Types of Chrome
Content.xul.js
Skin.css.png
Locale.properties.dtd
For Skin...
chrome.manifest can have multiple entries
skin superduper default chrome/skin/default/skin superduper somepretty chrome/skin/somepretty/
maps one to...chrome://superduper/theme
For Skin...
chrome.manifest can have multiple entriesskin superduper default chrome/skin/default/
skin superduper somepretty chrome/skin/somepretty/maps one to...
chrome://superduper/theme
For Skin...
chrome.manifest can have multiple entriesskin superduper default chrome/skin/default/skin superduper somepretty chrome/skin/somepretty/
maps one to...chrome://superduper/theme
For Skin...
chrome.manifest can have multiple entriesskin superduper default chrome/skin/default/skin superduper somepretty chrome/skin/somepretty/
maps one to...
chrome://superduper/theme
For Skin...
chrome.manifest can have multiple entriesskin superduper default chrome/skin/default/skin superduper somepretty chrome/skin/somepretty/
maps one to...chrome://superduper/theme
For Locale...
chrome.manifest can have multiple entries
locale superduper en-US chrome/locale/en-US/locale superduper en-UK chrome/locale/en-UK/
maps one to...chrome://superduper/locale
For Locale...
chrome.manifest can have multiple entrieslocale superduper en-US chrome/locale/en-US/
locale superduper en-UK chrome/locale/en-UK/maps one to...
chrome://superduper/locale
For Locale...
chrome.manifest can have multiple entrieslocale superduper en-US chrome/locale/en-US/locale superduper en-UK chrome/locale/en-UK/
maps one to...chrome://superduper/locale
For Locale...
chrome.manifest can have multiple entrieslocale superduper en-US chrome/locale/en-US/locale superduper en-UK chrome/locale/en-UK/
maps one to...
chrome://superduper/locale
For Locale...
chrome.manifest can have multiple entrieslocale superduper en-US chrome/locale/en-US/locale superduper en-UK chrome/locale/en-UK/
maps one to...chrome://superduper/locale
.properties and .dtd
Both are key-value
.propertiesgreetz.0=Huzzah!used by JSbundle.getString("greetz")
.dtd<!ENTITY manage.label.grpIncluded "Included Pages">used by XML-things (HTML, XUL, etc.)&manage.label.grpIncluded;
.properties and .dtd
Both are key-value.properties
greetz.0=Huzzah!used by JSbundle.getString("greetz")
.dtd<!ENTITY manage.label.grpIncluded "Included Pages">used by XML-things (HTML, XUL, etc.)&manage.label.grpIncluded;
.properties and .dtd
Both are key-value.properties
greetz.0=Huzzah!
used by JSbundle.getString("greetz")
.dtd<!ENTITY manage.label.grpIncluded "Included Pages">used by XML-things (HTML, XUL, etc.)&manage.label.grpIncluded;
.properties and .dtd
Both are key-value.properties
greetz.0=Huzzah!used by JS
bundle.getString("greetz").dtd
<!ENTITY manage.label.grpIncluded "Included Pages">used by XML-things (HTML, XUL, etc.)&manage.label.grpIncluded;
.properties and .dtd
Both are key-value.properties
greetz.0=Huzzah!used by JSbundle.getString("greetz")
.dtd<!ENTITY manage.label.grpIncluded "Included Pages">used by XML-things (HTML, XUL, etc.)&manage.label.grpIncluded;
.properties and .dtd
Both are key-value.properties
greetz.0=Huzzah!used by JSbundle.getString("greetz")
.dtd
<!ENTITY manage.label.grpIncluded "Included Pages">used by XML-things (HTML, XUL, etc.)&manage.label.grpIncluded;
.properties and .dtd
Both are key-value.properties
greetz.0=Huzzah!used by JSbundle.getString("greetz")
.dtd<!ENTITY manage.label.grpIncluded "Included Pages">
used by XML-things (HTML, XUL, etc.)&manage.label.grpIncluded;
.properties and .dtd
Both are key-value.properties
greetz.0=Huzzah!used by JSbundle.getString("greetz")
.dtd<!ENTITY manage.label.grpIncluded "Included Pages">used by XML-things (HTML, XUL, etc.)
&manage.label.grpIncluded;
.properties and .dtd
Both are key-value.properties
greetz.0=Huzzah!used by JSbundle.getString("greetz")
.dtd<!ENTITY manage.label.grpIncluded "Included Pages">used by XML-things (HTML, XUL, etc.)&manage.label.grpIncluded;
XUL
XML for UIs
<hbox><button label="push me" /></hbox>
XUL
XML for UIs<hbox><button label="push me" /></hbox>
3 Types of XUL Documents
Window
DialogOverlay
3 Types of XUL Documents
WindowDialog
Overlay
3 Types of XUL Documents
WindowDialogOverlay
Overlays
Use id Attribute
<window>...<menu id="foo"><menuitem label="Hey" /><overlay>...<menu id="foo"><menuitem label="whoa" /><window>...<menu id="foo"><menuitem label="Hey"/><menuitem label="whoa" />
Overlays
Use id Attribute<window>...<menu id="foo"><menuitem label="Hey" />
<overlay>...<menu id="foo"><menuitem label="whoa" /><window>...<menu id="foo"><menuitem label="Hey"/><menuitem label="whoa" />
Overlays
Use id Attribute<window>...<menu id="foo"><menuitem label="Hey" /><overlay>...<menu id="foo"><menuitem label="whoa" />
<window>...<menu id="foo"><menuitem label="Hey"/><menuitem label="whoa" />
Overlays
Use id Attribute<window>...<menu id="foo"><menuitem label="Hey" /><overlay>...<menu id="foo"><menuitem label="whoa" /><window>...<menu id="foo"><menuitem label="Hey"/><menuitem label="whoa" />
What to Overlay?
chrome.manifest maps
overlay chrome://browser/content/browser.xulchrome://superduper/content/browser.xul
What to Overlay?
chrome.manifest mapsoverlay chrome://browser/content/browser.xulchrome://superduper/content/browser.xul
XPCOM
Inter-language
C++JSPython
Cross-PlatformWindows 9x to 7OS 10.0 to 10.6Linux, etc.
Object and Exception System
XPCOM
Inter-languageC++
JSPython
Cross-PlatformWindows 9x to 7OS 10.0 to 10.6Linux, etc.
Object and Exception System
XPCOM
Inter-languageC++JS
PythonCross-Platform
Windows 9x to 7OS 10.0 to 10.6Linux, etc.
Object and Exception System
XPCOM
Inter-languageC++JSPython
Cross-PlatformWindows 9x to 7OS 10.0 to 10.6Linux, etc.
Object and Exception System
XPCOM
Inter-languageC++JSPython
Cross-Platform
Windows 9x to 7OS 10.0 to 10.6Linux, etc.
Object and Exception System
XPCOM
Inter-languageC++JSPython
Cross-PlatformWindows 9x to 7
OS 10.0 to 10.6Linux, etc.
Object and Exception System
XPCOM
Inter-languageC++JSPython
Cross-PlatformWindows 9x to 7OS 10.0 to 10.6
Linux, etc.
Object and Exception System
XPCOM
Inter-languageC++JSPython
Cross-PlatformWindows 9x to 7OS 10.0 to 10.6Linux, etc.
Object and Exception System
XPCOM
Inter-languageC++JSPython
Cross-PlatformWindows 9x to 7OS 10.0 to 10.6Linux, etc.
Object and Exception System
Components.classes
Classes
@mozilla.org/process/util;1.createInstance(interf)
[email protected]/network/io-service;1.getService()
Components.classes
[email protected]/process/util;1
.createInstance(interf)Services
@mozilla.org/network/io-service;1.getService()
Components.classes
[email protected]/process/util;1.createInstance(interf)
[email protected]/network/io-service;1.getService()
Components.classes
[email protected]/process/util;1.createInstance(interf)
Services
@mozilla.org/network/io-service;1.getService()
Components.classes
[email protected]/process/util;1.createInstance(interf)
[email protected]/network/io-service;1
.getService()
Components.classes
[email protected]/process/util;1.createInstance(interf)
[email protected]/network/io-service;1.getService()
Components.interfaces
Interface definitions
attributesmethods
nsIFileleafNameisDirectory()
Components.interfaces
Interface definitionsattributes
methodsnsIFile
leafNameisDirectory()
Components.interfaces
Interface definitionsattributesmethods
nsIFileleafNameisDirectory()
Components.interfaces
Interface definitionsattributesmethods
nsIFile
leafNameisDirectory()
Components.interfaces
Interface definitionsattributesmethods
nsIFileleafName
isDirectory()
Components.interfaces
Interface definitionsattributesmethods
nsIFileleafNameisDirectory()
Where to Start?
Inspect
DOM InspectorChromebugChrome ListXPCOM Viewer
Read CodeMXR
Where to Start?
InspectDOM Inspector
ChromebugChrome ListXPCOM Viewer
Read CodeMXR
Where to Start?
InspectDOM InspectorChromebug
Chrome ListXPCOM Viewer
Read CodeMXR
Where to Start?
InspectDOM InspectorChromebugChrome List
XPCOM ViewerRead Code
MXR
Where to Start?
InspectDOM InspectorChromebugChrome ListXPCOM Viewer
Read CodeMXR
Where to Start?
InspectDOM InspectorChromebugChrome ListXPCOM Viewer
Read Code
MXR
Where to Start?
InspectDOM InspectorChromebugChrome ListXPCOM Viewer
Read CodeMXR