firefox add-ons

Post on 12-May-2015

1.599 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

DESCRIPTION

These are the slides for my fine minute overview of Firefox add-ons.

TRANSCRIPT

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>zotero@chnm.gmu.edu</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>zotero@chnm.gmu.edu</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>zotero@chnm.gmu.edu</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>zotero@chnm.gmu.edu</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>zotero@chnm.gmu.edu</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>zotero@chnm.gmu.edu</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>zotero@chnm.gmu.edu</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>zotero@chnm.gmu.edu</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>zotero@chnm.gmu.edu</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)

Services@mozilla.org/network/io-service;1.getService()

Components.classes

Classes@mozilla.org/process/util;1

.createInstance(interf)Services

@mozilla.org/network/io-service;1.getService()

Components.classes

Classes@mozilla.org/process/util;1.createInstance(interf)

Services@mozilla.org/network/io-service;1.getService()

Components.classes

Classes@mozilla.org/process/util;1.createInstance(interf)

Services

@mozilla.org/network/io-service;1.getService()

Components.classes

Classes@mozilla.org/process/util;1.createInstance(interf)

Services@mozilla.org/network/io-service;1

.getService()

Components.classes

Classes@mozilla.org/process/util;1.createInstance(interf)

Services@mozilla.org/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

top related