Search completed in 1.80 seconds.
Firefox addons developer guide - Archive of obsolete content
there should be some introductory text on the table of contents page at https://developer.mozilla.org/en/firefox_
addons_developer_guide obviously there are a number of fixme items in the content that need dealing with, but those are already known.
... each chapter should be tagged appropriately, based on content, and every chapter should include the tag "firefox
addons developer guide".
... the stuff about installing the dom inspector (https://developer.mozilla.org/en/firefox_
addons_developer_guide/let%27s_build_a_firefox_extension#install_the_dom_inspector) is not accurate for firefox 3 or later, since it's no longer included in the firefox installer and must be downloaded from amo.
... for example, here: https://developer.mozilla.org/en/firefox_
addons_developer_guide/let's_build_a_firefox_extension#init_method the text of the paragraph should begin "the <code>init()</code> method is as shown...".
Event reference
mozswipegesture
addons specific a touch point is swiped across the touch surface.
... mozmagnifygesturestart
addons specific two touch points start to move away from each other.
... mozmagnifygestureupdate
addons specific two touch points move away from each other (after a mozmagnifygesturestart).
...And 38 more matches
AddonManager
callback) void install
addonsfromwebpage(in string mimetype, in nsidomwindow source, in nsiuri uri, in addoninstall installs[]) void addinstalllistener(in installlistener listener) void removeinstalllistener(in installlistener listener) promise?
... getall
addons(in addonlistcallback?
...get
addonsbyids(in string ids[], in addonlistcallback?
...And 15 more matches
jpm - Archive of obsolete content
once you have built an xpi file, you can distribute your add-on by submitting it to
addons.mozilla.org.
... jpm sign --api-key ${jwt_issuer} --api-secret ${jwt_secret} this submits an xpi it to the
addons.mozilla.org signing api, then downloads a signed xpi to the working directory if it passes validation.
... to get values for --api-key and --api-secret, you will need to create api credentials on
addons.mozilla.org.
...And 7 more matches
Add-on Repository
the add-on repository is responsible for finding available add-ons; it provides an interface for interacting with the
addons.mozilla.org (amo) site.
...the api also offers two ways to search for and retrieve an array of addon instances: retrieverecommended
addons(), which returns a list of recommended add-ons, and search
addons(), which performs a search of the repository.
... to import the add-on repository code module, use: components.utils.import("resource://gre/modules/addonrepository.jsm"); method overview string getrecommendedurl() string getsearchurl(in string searchterms) void cancelsearch() void retrieverecommended
addons(in integer maxresults, in searchcallback callback) void search
addons(in string searchterms, in integer maxresults, in searchcallback callback) properties property type description homepageurl string the url of the repository site's home page.
...And 4 more matches
cfx - Archive of obsolete content
internal options --
addons=
addons paths of add-ons to install, comma-separated.
...
addons may be specified as a full path or as a path relative to the current directory.
... internal options --
addons=
addons paths of add-ons to install, comma-separated.
...And 3 more matches
Index - Archive of obsolete content
241 firefox
addons developer guide the original document is in japanese and distributed via the xuldev.org website.
...this is done, for example, by the about:
addons page.
... 257 firefox
addons developer guide add-ons, extensions, firefox, guide the firefox add-ons developer guide was contributed by the mozilla japan community; it covers how to go about building firefox extensions using xpcom and xul.
...And 3 more matches
Index
this signing process takes place through
addons.mozilla.org (amo), whether you choose to distribute your add-on through amo or to do it yourself.
... 678 make money from browser extensions guide, monetization, webextensions, distribution while users can download browser extensions for firefox free of cost from
addons.mozilla.org (amo), this doesn’t mean you can’t make money from browser extensions, and to a more limited extent themes.
... 679 promoting your extension or theme add-ons, extensions, promotion, themes, webextensions, distribution so you’ve written a great extension, but only a few people have found and installed it from
addons.mozilla.org—despite your efforts to create an appealing listing.
...And 3 more matches
Interfacing with the Add-on Repository
to make the service work for the time being, you can use code like this when your extension starts up: var prefsservice = components.classes["@mozilla.org/preferences-service;1"] .getservice(components.interfaces.nsiprefservice); var prefbranch = prefsservice.getbranch("extensions."); var recurl = ""; try { recurl = prefbranch.getcharpref("get
addons.recommended.url"); } catch(e) { recurl = ""; } if (recurl == "") { prefbranch.setcharpref("get
addons.recommended.url", "https://services.
addons.mozilla.org/%locale%/%app%/api/%api_version%/list/recommended/all/%max_results%/%os%/%version%?src=firefox"); prefsservice.savepreffile(null); } this fetches the value of the extensions.get
addons.recommended.url preference, an...
... starting a request to start a search of the repository, you can use either of the following methods: search
addons() queries the add-on repository for add-ons matching given search criteria.
... retrieverecommended
addons() retrieves a list of recommended add-ons, as determined by the amo site administrators.
...And 3 more matches
Components.utils.cloneInto
example this add-on script creates an object, clones it into the content window and makes it a property of the content window global: // add-on script var
addonscriptobject = {"greeting" : "hello from add-on"}; contentwindow.
addonscriptobject = cloneinto(
addonscriptobject, contentwindow); scripts running in the page can now access the object: // page script button.addeventlistener("click", function() { console.log(window.
addonscriptobject.greeting); // "hello from add-on" }, false); of course, you don't have to assign the clone to the window itself...
...: you can assign it to some other object in the target scope: contentwindow.foo.
addonscriptobject = cloneinto(
addonscriptobject, contentwindow); you can also pass it into a function defined in the page script.
... suppose the page script defines a function like this: // page script function foo(greeting) { console.log("they said: " + greeting.message); } the add-on script can define an object, clone it, and pass it into this function: // add-on script var
addonscriptobject = {"message" : "hello from add-on"}; contentwindow.foo(cloneinto(
addonscriptobject, contentwindow)); // "they said: hello from add-on" cloning objects that have functions if the object to be cloned contains functions, you must pass the {clonefunctions:true} flag or you'll get an error.
...And 2 more matches
Install Manifests - Archive of obsolete content
for add-ons hosted on
addons.mozilla.org - mozilla's update website may repackage your add-on and correct or reject malformed version strings.
...if this property is specified, in the about:
addons extensions list, the about...
... examples <em:updateurl>https://www.example.com/update.cgi?id=%item_id%&version=%item_version%</em:updateurl> <em:updateurl>https://www.example.com/extension/windows.rdf</em:updateurl> for add-ons hosted on
addons.mozilla.org: you may not specify an updateurl property.
... by default, mozilla applications using the add-on manager (such as firefox and thunderbird) will send update requests to
addons.mozilla.org using the default web service.
Index of archived content - Archive of obsolete content
ion without security issues downloading json and javascript in extensions enhanced extension installation extension etiquette extension library extension packaging extension samples extension theming guidelines extension versioning, update and compatibility extensions support in seamonkey 2 firefox
addons developer guide hiding browser chrome hotfix extension how to convert an overlay extension to restartless inline options install manifests installing extensions and themes from web pages interaction between privileged and non-privileged pages jetpack processes legacy add-ons legacy exte...
... nativewindow contextmenus doorhanger menu toast notifications.jsm pageactions.jsm prompt.jsm runtimepermissions.jsm snackbars.jsm sound.jsm tab
addons developer guide code snippets creating a user interface firefox hub walkthrough initialization and cleanup prerequisites walkthrough webextensions for firefox for android listening to events in firefox extensions migrating from internal linkage to frozen linkage ...
... migrating raw components to add-ons multiple item extension packaging offering a context menu for form controls overlay extensions firefox
addons developer guide appendix: what you should know about open-source software licenses chapter 1: introduction to extensions chapter 2: technologies used in developing extensions chapter 3: introduction to xul—how to build a more intuitive ui chapter 4: using xpcom—implementing advanced processes chapter 5: let's build a firefox extension chapter 6: firefox extensions and xul applications license and authors ...
...n tutorial (draft) security best practices in extensions session store api setting up an extension development environment signing an xpi signing an extension supporting search suggestions in search plugins tabbed browser techniques promises updating
addons broken by private browsing changes using dependent libraries in extension components using the stylesheet service bookmarks.export() bookmarks.import() adding preferences to an extension an interview with douglas bowman of wired news archived mozilla and build documentation activex con...
Mozprofile - Archive of obsolete content
in addition to creating profiles, mozprofile can install
addons and set preferences.
...command line usage mozprofile may be used to create profiles, set preferences in profiles, or install
addons into profiles.
...installing
addons addons may be installed individually or from a manifest.
... example: from mozprofile import firefoxprofile # create new profile to pass to mozmill/mozrunner profile = firefoxprofile(
addons=["adblock.xpi"]) setting preferences preferences can be set in several ways: using the api: you can pass preferences in to the profile class's constructor: obj = firefoxprofile(preferences=[("accessibility.typeaheadfind.flashbar", 0)]) using a json blob file: mozprofile --preferences myprefs.json using a .ini file: mozprofile --preferences myprefs.ini via the command line: mozprofile --pref key:value --pref key:value [...] when setting preferences from an .ini file or the --pref switch, the value will be interpolated as an integer or a boolean (true/false) if possible.
nsIBlocklistPrompt
1.0 66 introduced gecko 2.0 inherits from: nsisupports last changed in gecko 2.0 (firefox 4 / thunderbird 3.3 / seamonkey 2.1) method overview void prompt([array, size_is(acount)] in nsivariant a
addons, [optional] in pruint32 acount); methods prompt() prompt the user about newly blocked
addons.
... the prompt is then responsible for soft-blocking any
addons that need to be afterwards.
... void prompt( [array, size_is(acount)] in nsivariant a
addons, in pruint32 acount optional ); parameters a
addons an array of
addons and plugins that are blocked.
...me - the plugin or extension name version - the version of the extension or plugin icon - the plugin or extension icon disable - can be used by the nsiblocklistprompt to allows users to decide whether a soft-blocked add-on should be disabled blocked - true if the item is hard-blocked, false otherwise item - the nsiplugintag or addon object acount optional the number of
addons.
Testing the Add-on SDK - Archive of obsolete content
cfx test
addons --filter <addon_folder_name>: a suite of tests which run add-ons, which are themseleves tests.
... with gulp installed, and after installing the addon-sdk's npm dependencies, we can run the latter three test suites mentioned for cfx with jpm using the following commands: gulp test:examples --filter <addon_example_folder_name> gulp test:
addons --filter <addon_folder_name> gulp test:modules --filter <file_name>:<test_name> or run all of the tests with gulp test.
... with mach there are two commands: ./mach mochitest -f jetpack-addon <optional_addon_path>: this runs the test add-ons mentioned for cfx test
addons and gulp test:
addons with the older sdk/loader/cuddlefish used with cfx.
Creating annotations - Archive of obsolete content
activate the annotator by clicking the widget and load a page: the screenshot below uses http://blog.mozilla.com/
addons/2011/02/04/ overview-amo-review-process/.
... you should see the highlight appearing when you move the mouse over certain elements: click on the highlight and you should see something like this in the console output: info: show info: http://blog.mozilla.com/
addons/2011/02/04/overview-amo-review-process/, post-2249,when you submit a new add-on, you will have to choose between 2 review tracks: full review and preliminary review.
...you should see a panel with a text area for a note: enter the note and press the return key: you should see console output like this: info: http://blog.mozilla.com/
addons/2011/02/04/overview-amo-review-process/, post-2249,when you submit a new add-on, you will have to choose between 2 review tracks: full review and preliminary review.
Creating a spell check dictionary add-on
<?xml version="1.0"?> <rdf xmlns="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:em="http://www.mozilla.org/2004/em-rdf#"> <description about="urn:mozilla:install-manifest"> <em:id>locale-code@dictionaries.
addons.mozilla.org</em:id> <em:version>version number</em:version> <em:type>64</em:type> <em:unpack>true</em:unpack> <em:name>name</em:name> <!-- other install.rdf metadata such as em:localized, em:description, em:creator, em:developer, em:translator, em:contributor or em:homepageurl --> <!-- firefox --> <em:targetapplication> <description> ...
...a-b7eb-24ecf4f6b63a}</em:id> <em:minversion>2.15a1</em:minversion> <em:maxversion>2.49</em:maxversion> </description> </em:targetapplication> </description> </rdf> there are some rules about how you should adapt the install.rdf file: if you are creating a new dictionary add-on, we recommend that the em:id consists of your locale code followed by @dictionaries.
addons.mozilla.org, but if there is more than one dictionary for your language (for example the german "old spelling" versus "new spelling" dictionaries), you may need to choose another id, that follows the rules of em:id.
...after a successful test, you can upload your add-on to
addons.mozilla.org and ask for it to be included in the dictionaries & language packs page.
Performance
store heavyweight state once per process bad: // addon.js var main = new my
addonservice(); main.onchange(statechange); function statechange() { services.mm.broadcastasyncmessage("my-addon:update-configuration", {newconfig: main.serialize()}) } // framescript.js var maincopy; function onupdate(message) { maincopy = my
addonservice.deserialize(message.data.newconfig); } addmessagelistener("my-addon:update-configuration", onupdate) // maincopy used by other functions ...
... better: // addon.js var main = new my
addonservice(); main.onchange(statechange); function statechange() { services.ppmm.broadcastasyncmessage("my-addon:update-configuration", {newconfig: main.serialize()}) } // processmodule.jsm const exported_symbols = ['getmaincopy']; var maincopy; services.cpmm.addmessagelistener("my-addon:update-configuration", function(message) { maincopy = message.data.newconfig; }) funtion getmaincopy() { return maincopy; } // framescript.js components.utils.import("resource://my-addon/processmodule.jsm") // getmaincopy() used by other func...
... delaying the script registration until the session is restored my provide some middle ground for some
addons.
Creating localizable web applications
see examples of the
addons.mozillaorg code at /
addons/trunk/site/app/config/language.php and /
addons/trunk/site/app/config/language.inc.php.
...bad: <?= _("<a href=\"https://
addons.mozilla.org/firefox/downloads/latest/10900\" class=\"get-personas\" id=\"download\"><span>get personas for firefox - free</span>");?><span class="arrow"></span></a> snippet 2.
... good: <a href="https://
addons.mozilla.org/firefox/downloads/latest/10900" class="get-personas" id="download"> <span><?= _("get personas for firefox - free");?></span><span class="arrow"></span> </a> snippet 3.
amIWebInstaller
1.0 66 introduced gecko 2.0 inherits from: nsisupports last changed in gecko 8.0 (firefox 8.0 / thunderbird 8.0 / seamonkey 2.5) method overview boolean install
addonsfromwebpage(in astring amimetype, in nsidomwindow awindow, in nsiuri areferer, [array, size_is(ainstallcount)] in wstring auris, [array, size_is(ainstallcount)] in wstring ahashes, [array, size_is(ainstallcount)] in wstring anames, [array, size_is(ainstallcount)] in wstring aicons, [optional] in amiinstallcallback acallback, [optional] in pruint32 ainstallcount); boolean isinstallenabled(in astring amimetype, in nsiuri areferer); note: prior ...
... methods install
addonsfromwebpage() installs an array of add-ons at the request of a webpage.
... boolean install
addonsfromwebpage( in astring amimetype, in nsidomwindow awindow, in nsiuri areferer, [array, size_is(ainstallcount)] in wstring auris, [array, size_is(ainstallcount)] in wstring ahashes, [array, size_is(ainstallcount)] in wstring anames, [array, size_is(ainstallcount)] in wstring aicons, in amiinstallcallback acallback, optional in pruint32 ainstallcount optional ); parameters amimetype the mimetype for the add-ons.
nsIIOService
for loads that are not related to any document, such as loads coming from
addons or internal browser features, use null here.
... for loads that are not related to any document, such as loads coming from
addons or internal browser features, use null here.
...for loads that are not related to any document, such as loads coming from
addons or internal browser features, use null here.
cfx to jpm - Archive of obsolete content
for example:
addons.mozilla.org uses it to distinguish between new add-ons and updates to existing add-ons, and the simple-storage module uses it to figure out which stored data belongs to which add-on.
... permanently removed options jpm has dropped support for: --extra-packages --use-config --package-path --pkgdir --no-strip-xpi --harness-option --manifest-overload --output-file --templatedir --keydir --profiledir --overload-modules --static-args --app --no-run --
addons --e10s --logfile --dependencies --force-mobile --test-runner-pkg instead of --profiledir and --overload-modules, use --profile and --overload.
Getting Started (jpm) - Archive of obsolete content
you can distribute xpi files yourself or publish them to https://
addons.mozilla.org so other users can download and install them.
... to distribute your add-on, submit the xpi file to
addons.mozilla.org or run jpm sign if you wish to distribute the add-on on your own server.
Developing add-ons - Archive of obsolete content
this includes information about
addons.mozilla.org, mozilla's add-on distribution web site.
...
addons.mozilla.org (amo) api developers' guide the amo developers' guide describes how to use the amo api to fetch information about add-ons from the
addons.mozilla.org site.
The Essentials of an Extension - Archive of obsolete content
label="&xulschoolhello.hello.label;" accesskey="&xulschoolhello.helloitem.accesskey;" oncommand="xulschoolchrome.browseroverlay.sayhello(event);" /> </menupopup> </menu> </menubar> <vbox id="appmenusecondarypane"> <menu id="xulschoolhello-hello-menu-2" label="&xulschoolhello.hello.label;" accesskey="&xulschoolhello.hellomenu.accesskey;" insertafter="appmenu_
addons"> <menupopup> <menuitem id="xulschoolhello-hello-menu-item-2" label="&xulschoolhello.hello.label;" accesskey="&xulschoolhello.helloitem.accesskey;" oncommand="xulschoolchrome.browseroverlay.sayhello(event);" /> </menupopup> </menu> </vbox> this is the code that adds the hello world menu to the browser window.
...that's the purpose of the attribute: insertafter="appmenu_
addons" appmenu_
addons is the id of the menu element that corresponds to the add-ons menu item in the main menu.
Promises - Archive of obsolete content
value: key => { return new promise(accept => this.addonmanager[method](key, addon => accept(callback(addon)))); } }); }, }; for (let method of ["getaddonbyid", "getaddonbysyncguid"]) aom._replacemethod(method, addon => aom.addon(addon)); for (let method of ["getall
addons", "get
addonsbyids", "get
addonsbytypes", "get
addonswithoperationsbytypes"]) aom._replacemethod(method,
addons =>
addons.map(aom.addon)); aom._replacemethod("getinstallsbytypes", installs => installs); components.utils.import("resource://gre/modules/addonmanager.jsm", aom); example usage: task.spawn(function* () { // get an ext...
... for (let extension of yield aom.get
addonsbytypes(["extension"])) extension.userdisabled = true; }); json file storage this helper simplifies the use of json data storage files with asynchronous io.
XUL accessibility tool - Archive of obsolete content
future versions of the extension will be available from
addons.mozilla.org.
... add the tool into the
addons.mozilla.org review process go through the most useful/popular extensions with tool and fix a11y issues add checker to tinderbox so that bugs are caught at checkin time some or all of this work could be done through grants, and a likely person to oversee the grant deliverables and milestones would be mark finkle.
Application Update - Archive of obsolete content
pref("app.update.showinstalledui", false); // 0 = suppress prompting for incompatibilities if there are updates available // to newer versions of installed
addons that resolve them.
... // 1 = suppress prompting for incompatibilities only if there are versioninfo // updates available to installed
addons that resolve them, not newer // versions.
2006-10-20 - Archive of obsolete content
christopher would not like to learn how to create a build of firefox with custom extensions and not have those extensions appear in the
addons window.
...he can be contacted via: email: preed@mozilla.com irc: preed on irc.mozilla.org phone: 650.903.0800 x256 uploading language packs to amo on october 17th benjamin smedberg brought the following to the attention of the localizers and the build team: that he is planning to upload the firefox 2 language packages currently located at http://releases.mozilla.org/pub/mozi...rc3/win32/xpi/ to
addons.mozilla.org in the next few days.
Extentsions FAQ - Archive of obsolete content
option #3 install status buttons 1.0 <https://
addons.mozilla.org/firefox/1272/> "lets you put toolbar buttons at either end of the status-bar.
... these are called "grippies" <https://
addons.mozilla.org/firefox/2242/> this extension brings grippies back to firefox (and thunderbird!) is there any way to write a regular extension that returns a "dummy" object when an instance of "@mozilla.org/helperapplauncherdialog;1" is created?
2006-10-20 - Archive of obsolete content
summary: mozilla.dev.l10n - october 20, 2006 announcements sign-off for zh-tw firefox 2 sign-off for zh-tw firefox 2 sign off of chinese simplified firefox 2.0 sign off of simplified chinese firefox 2 attention dictionary providers, or: warning, amo sucks there was at amo (
addons.mozilla.org), which has been being fixed.
... uploading language packs to amo benjamin smedberg is ready to upload languange packs from here to
addons.mozilla.org.
Building a Theme - Archive of obsolete content
using
addons.mozilla.org mozilla add-ons is a distribution site where you can host your theme for free.
... visit https://
addons.mozilla.org/developers/ to create an account and begin distributing your themes!
Add-ons
you’ll find: overview of the firefox extension features tools and processes for developing and testing how to publish your extension on
addons.mozilla.org or distribute it yourself how to manage your published extension an enterprise guide for developing and using extensions how to develop themes for firefox firefox developer communities extensions for firefox for android in 2020, mozilla will release a new firefox for android experience.
... publishing add-ons
addons.mozilla.org, commonly known as "amo," is mozilla's official site for developers to list add-ons, and for users to discover them.
Firefox and the "about" protocol
here is a complete list of urls in the about: pseudo protocol: about: page description about:about provides an overview of all about: pages available for your current firefox version about:
addons add-ons manager about:buildconfig displays the configuration and platform used to build firefox about:cache displays information about the memory, disk, and appcache about:checkerboard switches to the checkerboarding measurement page, which allows to detect checkerboarding issues about:config provides a way to inspect and change firefox preferenc...
...attempts to navigate through window.location will throw — error: access to 'about:
addons' from script denied.
ChromeWorker
addons must use absolute urls to load their workers, and those urls have to be using a chrome:// or resource:// protocol (file:// is not accepted).
...
addons that wish to use file:// urls must first register a resource replacement path, using code like this: var fileuri = services.io.newfileuri(file); services.io.getprotocolhandler('resource').
Add-on Manager
for example: components.utils.import("resource://gre/modules/addonmanager.jsm"); addonmanager.getall
addons(function(a
addons) { // here a
addons is an array of addon objects }); // this code will execute before the code inside the callback notifications about changes to installed add-ons are dispatched to any registered addonlisteners.
...e://gre/modules/addonmanager.jsm"); let addonids = addonmanager.getstartupchanges(addonmanager.startup_change_disabled); if (addonids.length > 0) { // addonids is now an array of the add-on ids that have been disabled alert("note: " + addonids.length + " add-ons have been disabled."); } open add-on manager tab the add-on manager tab can be opened programatically with the function browseropen
addonsmgr which is available on chrome window of "navigator:browser" type.
Reporting a Performance Problem
these
addons might be using the extension api in ways that were not meant to.
... you can see which of these
addons are causing problems by adding the "moz-extension" filter.
Index
360 nsiblocklistprompt interfaces, interfaces:scriptable, xpcom, xpcom interface reference prompt the user about newly blocked
addons.
... the prompt is then responsible for soft-blocking any
addons that need to be afterwards.
XPIDL
when a change to an interface made by an xpidl developer requires that third-party binary
addons be recompiled, we say that it affects binary compatibility.
... when a change to an interface made by an xpidl developer requires that third-party binary
addons change their source code, we say that it affects source compatibility.
Index
82 building a thunderbird extension 9: distributing extensions, thunderbird the
addons.mozilla.org site is a distribution site where you can host your extension for free.
...(version 3.0b3pre was the first build to include steel.) 105 modify folder pane display missing, thunderbird see https://
addons.mozilla.org/thu...er-categories/ for an example.
Building a Thunderbird extension 1: introduction
nd overlays) xul (the xml user interface language that is used to modify the thunderbird user interface) adding javascript (explains how to add some simple javascript to your thunderbird extension) installing locally (enabling the extension on your local thunderbird instance) packaging (making a distribution package that contains the extension) distributing (from your own site or from http://
addons.mozilla.org/) this tutorial is compatible with thunderbird versions 2,3 and 5.
... documentation thunderbird extensions (documentation overview) firefox
addons developer guide (many topics are applicable to thunderbird) mozilla cross-reference source code browser ("comm-central" contains the thunderbird code repository) community the thunderbird development community has a mailing list with an extensive searchable archive with an extensive searchable archive.
Zombie compartments
js-compartment([system principal], 0x7f10f1250000) compartment(atoms) js-compartment(about:home) js-compartment(about:blank) compartment([system principal], resource://gre/modules/
addons/xpiprovider.jsm) when looking at user compartments there are a couple of things to be aware of.
...(please note that you may need to close the about:
addons ui before changes are made).
about:debugging (before Firefox 68) - Firefox Developer Tools
whether or not system add-ons appear in the list on this page depends on the setting of the devtools.aboutdebugging.showsystem
addons preference.
... if you change files that stay loaded the whole time, like background scripts, then you can pick up changes you've made by disabling and then re-enabling the add-on in the about:
addons page.
Large-Allocation - HTTP
some legacy
addons can prevent firefox from using this new, faster, multiprocess architecture.
... if you have one of these
addons installed, then we will continue to use the old single process architecuture for compatibility, and cannot handle the large-allocation header.
Program ID - Archive of obsolete content
for example:
addons.mozilla.org uses it to distinguish between new add-ons and updates to existing add-ons, and the simple-storage module uses it to figure out which stored data belongs to which add-on.
page-mod - Archive of obsolete content
efine the documents to which the page-mod will not be applied, even if their urls match the include option: var pagemod = require("sdk/page-mod"); var modscript = 'console.log("matches");'; pagemod.pagemod({ include: "*.mozilla.org", exclude: "*.developer.mozilla.org", contentscript: modscript }); var tabs = require("sdk/tabs"); tabs.open("mozilla.org"); // matches tabs.open("
addons.mozilla.org"); // matches tabs.open("developer.mozilla.org"); // no match pagemod a page-mod object.
dev/panel - Archive of obsolete content
r receiving messages from the panel document pass the other messageport to the panel document in the ports argument to postmessage // main.js // require the sdk modules const { panel } = require("dev/panel"); const { tool } = require("dev/toolbox"); const { class } = require("sdk/core/heritage"); const { messagechannel } = require("sdk/messaging"); const channel = new messagechannel(); const
addonside = channel.port1; const panelside = channel.port2; // messages from the panel arrive here
addonside.onmessage = function(event) { console.log(event.data); } const mypanel = class({ extends: panel, label: "my panel", tooltip: "my new devtool's panel", icon: "./my-icon.png", url: "./my-panel.html", onready: function() { // send a port to the panel document this.postmessage...
Extension Versioning, Update and Compatibility - Archive of obsolete content
in the install.rdf of the already installed add-on updateurl must be specified in one of the following ways: the updateurl uses https, or there is no updateurl at all (which defaults to
addons.mozilla.org which is https) the updateurl uses http and the updatekey entry is specified which will be used to verify the data in the update manifest.
Chapter 1: Introduction to Extensions - Archive of obsolete content
this lowers the threshold both to using and to developing extensions; that fact, combined with firefox's rapidly growing popularity, has created a positive feedback loop, with the number of extension users and extension developers growing explosively—there are now more than 7000 extensions and themes published at the firefox add-ons site (https://
addons.mozilla.org).
Chapter 5: Let's build a Firefox extension - Archive of obsolete content
you can learn more about chromebug and download it at http://getfirebug.com/wiki/index.php/chromebug_user_guide you may also find this extension to be valuable: extension developer https://
addons.mozilla.org/firefox/addon/7434 developing extensions: what you need to know let’s delve into chrome, something you’ll need to know about in order to develop extensions.
Setting up an extension development environment - Archive of obsolete content
application (firefox and thunderbird) venkman, a javascript debugger (firefox version, thunderbird version) thunderbird developer tools, enables debugging thunderbird remotely using using firefox developer tools extension developer's extension a suite of tools for extension development (firefox) extension test an add-on which makes it easier to detect problems which will lead to rejection by
addons.mozilla.org console² enhanced javascript console (firefox version, thunderbird version) javascript command for writing/testing javascript on firefox windows inspect context open dom inspector at this node from inspect on context menu.
disablechrome - Archive of obsolete content
this is used to hide chrome when showing in-browser ui such as the about:
addons page, and causes the toolbars to be hidden, with only the tab strip (and, if currently displayed, the add-on bar) left showing.
Toolbars - Archive of obsolete content
mailing list newsgroup rss feed #extdev irc channel mozillazine forum about:
addons newsletter mozilla's web-tech blog mozdev project owners planet mozilla other community links...
iframe - Archive of obsolete content
warning: when used in chrome-privileged documents (either html or xul) such as firefox
addons, the contents of the frame may have the same permissions as firefox itself.
window - Archive of obsolete content
this is used to hide chrome when showing in-browser ui such as the about:
addons page, and causes the toolbars to be hidden, with only the tab strip (and, if currently displayed, the add-on bar) left showing.
2006-11-3 - Archive of obsolete content
revisiting mozillatranslator bugs in bugzilla revisiting mozillatranslator bugs in bugzilla dictionary packages there are some dictionaries at http://dictionaries.mozdev.org/installation.html which are not at https://
addons.mozilla.org/en/dictionaries.
Community - Extensions
mozillazine extensions & themes forum #extdev channel on moznet irc network — extension development questions #
addons channel on moznet irc network — questions about http://
addons.mozilla.org mozdev project owners mailing list mozillazine knowledge base allyourideas — ideas for extensions ((really needs a unique captcha)) babelzilla — a community for developers and translators of extension for mozilla applications ...
Mozilla splash page - Learn web development
the following subsections detail what you need to do: preparing images using your favourite image editor, create 400px wide and 120px wide versions of: firefox_logo-only_rgb.png firefox-
addons.jpg mozilla-dinosaur-head.png call them something sensible, e.g.
Getting started with Ember - Learn web development
app = new emberapp(defaults, { // add options here }); add the following lines underneath it before saving the file: app.import('node_modules/todomvc-common/base.css'); app.import('node_modules/todomvc-app-css/index.css'); for more information on what ember-cli-build.js does, and for other ways in which you can customize your build / pipeline, the ember guides have a page on
addons and dependencies.
Lightweight themes
lightweight themes are sometimes referred to as "background themes" or, (on
addons.mozilla.org) as just "themes".
Theme concepts
these resources are then packed in a zip for publication on
addons.mozilla.org (amo) or for self-distribution.
Benchmarking
in about:
addons > plugins, set shockwave flash to "never activate".
Message manager overview
this can be useful for
addons to register categories, observers and components in child processes.
Addon
screenshots read only
addonscreenshot[] an array of
addonscreenshot objects containing urls of preview images for the add-on.
Index
22 localizing extension metadata on
addons.mozilla.org add-ons, extensions, internationalization, localization amo supports localized metadata for each extension.
Translation phase
addons.mozilla.org (amo) a portal for all users interested in finding add-ons for their local mozilla applications.
Creating localizable web content
per-locale customizations check if there are alternative links for localized pages (e.g., links to mdn,
addons.mozilla.org, or other external resources, are there translated equivalents we can use).
Setting up the infrastructure
copy the shell scripts from /
addons/trunk/site/app/locale/ to your locale directory: extract-po.sh will be used to extract all english strings from your application's directories specified in source_dirs, merge the resulting template (*.pot) file with the existing (already containing translations) messages.po files for each locale (if they exist) and merge the new messages.po files to messages.mo files.
Fonts for Mozilla 2.0's MathML engine
mathml font selection with css you can get these fonts from the mathml-fonts add-on ; the xpi is just a zip archive that you can fetch and extract for example with the following command: wget https://
addons.mozilla.org/firefox/downloads/latest/367848/addon-367848-latest.xpi -o mathml-fonts.zip; \ unzip mathml-fonts.zip -d mathml-fonts then copy the mathml-fonts/resource/ directory somewhere on your web site and ensure that the woff files are served with the correct mime type.
Gecko Profiler FAQ
how do we find performance regressions caused by third-party and system
addons, especially ones that only show up after extended uptime?
about:memory
├───40,214,384 b (04.17%) -- add-ons │ ├──21,184,320 b (02.20%) ++ {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}/js-non-window/zones/zone(0x100496800)/compartment([system principal], jar:file:///users/njn/library/application%20support/firefox/profiles/puna0zr8.new/extensions/%7bd10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d%7d.xpi!/bootstrap.js (from: resource://gre/modules/
addons/xpiprovider.jsm:4307)) │ ├──11,583,312 b (01.20%) ++ jid1-xufzosoflzsoxg@jetpack/js-non-window/zones/zone(0x100496800) │ ├───5,574,608 b (00.58%) -- {59c81df5-4b7a-477b-912d-4e0fdf64e5f2} │ │ ├──5,529,280 b (00.57%) -- window-objects │ │ │ ├──4,175,584 b (00.43%) ++ top(chrome://chatzilla/content/chatzilla.xul, id=4293) │ │ │ └─�...
Performance
related topics javascript, xpcom, developing mozilla, extensions,
addons ...
Leak Monitor
obtain the extension on amo (
addons.mozilla.org) view more information on leak monitor on david baron's page ...
Statistics API
json api
addons can obtain the complete data in json format via an observer.
Generating GUIDs
if all else fails, using extensionname@yourusername.
addons.mozilla.org should be fine; no one will care.
Components.utils.Sandbox
addons creating sandboxes whose expected lifetime is tied to that of a content window object will want to use samezoneas instead.
Setting HTTP request headers
by not advertising to all sites what extensions are installed this improves both privacy (this makes it harder to track a user known by his set of plugins,
addons and extensions) and security (some plugins,
addons and extensions may be known to have flaws by attackers).
Theme Packaging
see the install.rdf reference for more information: em:id em:version em:type em:targetapplication em:name em:internalname optional install.rdf properties em:description em:creator em:contributor em:homepageurl em:updateurl note that if your theme will be made available on the https://
addons.mozilla.org website, it may not include an updateurl.
ctypes.open
if the addon is an unpacked addon, such as bootstrap or add-on sdk
addons, the jar path must be used.
Element.innerHTML - Web APIs
for example, if you use innerhtml in a browser extension and submit the extension to
addons.mozilla.org, it will not pass the automated review process.
How to check the security state of an XMLHTTPRequest over SSL - Web APIs
rt(err); } } function test(url) { var req = cc["@mozilla.org/xmlextras/xmlhttprequest;1"].createinstance(); req.open('get', url, true); req.addeventlistener("error", function(e) { var error = createtcperrorfromfailedxhr(req); dumpsecurityinfo(req, error); }, false); req.onload = function(e) { dumpsecurityinfo(req); }; req.send(); } then test("https://
addons.mozilla.org"); produced the following output in my console: connection status: succeeded security info: security state: secure common name (cn) =
addons.mozilla.org organisation = mozilla corporation issuer = verisign, inc.
OpenSearch description format
for example: <url type="application/opensearchdescription+xml" rel="self" template="https://example.com/mysearchdescription.xml" /> note: at this time,
addons.mozilla.org (amo) doesn't support automatic updating of opensearch plugins.