mozilla

Compare Revisions

Updating extensions for Firefox 4

Change Revisions

Revision 66752:

Revision 66752 by Sheppy on

Revision 66753:

Revision 66753 by Sheppy on

Title:
Updating extensions for Firefox 4
Updating extensions for Firefox 4
Slug:
Extensions/Updating_extensions_for_Firefox_4
Extensions/Updating_extensions_for_Firefox_4
Tags:
Extensions, Add-ons, "Firefox 4", "Gecko 2.0"
Extensions, Add-ons, "Firefox 4", "Gecko 2.0"
Content:

Revision 66752
Revision 66753
nn16    <h3>
17      The status bar
18    </h3>
nn22    <h3>
23      Toolbars
24    </h3>
25    <h4>
26      Toolbar button icons
27    </h4>
28    <p>
29      The sizes of toolbar button icons have changed:
30    </p>
31    <dl>
32      <dt>
33        Windows
34      </dt>
35      <dd>
36        On Windows, toolbar button icons are 18x18 pixels. They h
 >ave a simple style and look the same for both Aero and non-Aero t
 >hemes.
37      </dd>
38      <dt>
39        Mac OS&nbsp;X
40      </dt>
41      <dd>
42        On Mac OS&nbsp;X, icons are 20x20 pixels. The use a simpl
 >e style, as before, but now the icons don't include the surroundi
 >ng button style, which makes them more consistent with other plat
 >forms and more compatible with future changes to button styling.
43      </dd>
44      <dt>
45        Linux
46      </dt>
47      <dd>
48        Icons are 24x24 pixels; the theme is based largely on Gno
 >me icons.
49      </dd>
50    </dl>
51    <p>
52      The sizes of icons on both Windows and Mac OS&nbsp;X have c
 >hanged; only Linux icons have not changed since Firefox 3.6. You'
 >ll need to create new icons for Firefox 4 to avoid having them sc
 >aled, possibly ugly. You can use the <a href="/en/Chrome_Registra
 >tion#appversion" title="en/Chrome Registration#appversion"><code>
 >appversion</code> flag</a> in the <a href="/en/Chrome_Registratio
 >n" title="en/Chrome Registration">chrome manifest file</a> to use
 > different icon sets in different versions of Firefox.
53    </p>
54    <h4>
55      Creating toolbars
56    </h4>
57    <p>
58      If your add-on creates a new toolbar using an overlay, your
 > toolbar may not show up. This happens when your {{ xulelem("tool
 >box") }} element overlay is a child of the {{ xulelem("window") }
 >} element instead of a direct child of the overlay element. Move 
 >the toolbox out of the window element to fix this problem.
59    </p>
60    <h3>
61      The Firefox application menu
62    </h3>
63    <p>
64      On Windows, the menu bar is now hidden by default. Instead,
 > there's a single button that opens a simplified Firefox applicat
 >ion menu. This menu includes the most used menu features, which m
 >akes the application easier to use. The menu bar can still be acc
 >essed by pressing the Alt key.
65    </p>
66    <p>
67      If your add-on is discoverable only through the menu bar, y
 >ou'll want to overlay the application menu as well. There isn't a
 > specific place to put extension menu items, so you should take a
 > look at the menu and select the right place for your particular 
 >extension.
68    </p>
69    <h3>
70      Tabs
71    </h3>
72    <p>
73      A number of changes were made to the {{ xulelem("tabbrowser
 >") }}&nbsp;element to help support app tabs and Panoramas, as wel
 >l as to make the tab bar into a standard toolbar. Other changes t
 >hat may break existing extensions include:
74    </p>
75    <ul>
76      <li>The <code>TabClose</code>, <code>TabSelect</code>, and 
 ><code>TabOpen</code> events no longer bubble up to the {{ XULElem
 >("tabbrowser") }} element (<code>gBrowser</code>). Event listener
 >s for those events should be added to <code>gBrowser.tabContainer
 ></code> rather than to <code>gBrowser</code> directly.
77      </li>
78      <li>The tab context menu is no longer an anonymous child of
 > the {{ XULElem("tabbrowser") }}. It can therefore be overlaid di
 >rectly with <a href="/en/XUL_Overlays" title="en/XUL Overlays">XU
 >L overlays</a>. It can also be accessed more directly in JavaScri
 >pt via <code>gBrowser.tabContextMenu</code>. See <a class=" exter
 >nal" href="http://www.gavinsharp.com/blog/2010/03/31/accessingmod
 >ifying-the-firefox-tab-context-menu-from-extensions/" title="http
 >://www.gavinsharp.com/blog/2010/03/31/accessingmodifying-the-fire
 >fox-tab-context-menu-from-extensions/">this blog post</a> for mor
 >e details.
79      </li>
80    </ul>
nn86    </p>
87    <h2>
88      The Add-on Manager
89    </h2>
90    <p>
91      The overhauled Add-on Manager is implemented as a tab inste
 >ad of in a separate window. Among the changes that affect your br
 >owser from a user experience perspective is that your add-on's ic
 >on can be 64x64 pixels now instead of 32x32. While 32x32 pixel ic
 >ons still work, obviously your add-on will look better if it prov
 >ides a 64x64 pixel icon instead. Fortunately, 64x64 icons are bac
 >kward compatible and scale down well, so you can just switch inst
 >ead of needing both sizes.
92    </p>
93    <p>
94      In addition, the back-end of the Add-on Manager was redesig
 >ned. The {{ interface("nsIExtensionManager") }} interface is gone
 >, as is the old RDF-based storage it used. Add-on metadata is now
 > stored in an SQLite database, and the Add-on Manager is now a <a
 > href="/en/JavaScript_code_modules" title="https://developer.mozi
 >lla.org/en/JavaScript_code_modules">JavaScript code module</a> ca
 >lled <a href="/en/Addons/Add-on_Manager/AddonManager" title="en/A
 >ddons/Add-on Manager/AddonManager">AddonManager</a>.
95    </p>
96    <p>
97      A key difference with the new API is that requesting add-on
 > metadata is now asynchronous instead of synchronous; this applie
 >s to add-ons using FUEL&nbsp;as well, so all add-ons that request
 > metadata about add-ons will need to be updated.
98    </p>
99    <h2>
100      Threading
101    </h2>
102    <p>
103      You can no longer pass JavaScript objects between threads. 
 >This renders the Thread Manager mostly useless for add-on develop
 >ers, unfortunately, and there aren't at this time many alternativ
 >es. It's possible that in the future the <a href="/en/DOM/ChromeW
 >orker" title="en/DOM/ChromeWorker"><code>ChromeWorker</code></a> 
 >will be improved to fill the void.
104    </p>
105    <h2>
106      Network redirects
107    </h2>
108    <p>
109      The API&nbsp;for handling network redirects has been change
 >d to be asynchronous; any add-ons registering in the "net-channel
 >-event-sinks"&nbsp;category will need to be updated to use <a hre
 >f="/en/XPCOM_Interface_Reference/nsIChannelEventSink#asyncOnChann
 >elRedirect()" title="en/XPCOM Interface Reference/nsIChannelEvent
 >Sink#asyncOnChannelRedirect()">the new API</a>.
tt173    <h2>
174      Development and testing tips
175    </h2>
176    <h3>
177      Caching
178    </h3>
179    <p>
180      Because Firefox now caches code and other resources more ag
 >gressively, you'll want to be sure to purge the caches when you s
 >tart up Firefox 4. Otherwise you may be testing obsolete pieces o
 >f your add-on. To do this, run Firefox with the <code>-purgecache
 >s</code> command line option.
181    </p>
182    <h3>
183      The Profile Manager
184    </h3>
185    <p>
186      The old Profile Manager tool will be getting removed from F
 >irefox 4, although it hasn't been yet. This tool hasn't been upda
 >ted for a long time and is missing features. On top of that, its 
 >presence is slowing down application startup.
187    </p>
188    <p>
189      When it's removed, a suitable replacement will be made avai
 >lable. You can track progress of the development of that tool in 
 >{{ bug("539524") }}. This new tool will be independent of the bro
 >wser itself, and more robust than the old Profile Manager. It's p
 >ossible this may not be finished until after Firefox 4; in the me
 >antime, if you need the Profile Manager's features, you can start
 > up Firefox 3.6 to use its Profile Manager.
190    </p>
191    <h3>
192      Installing extensions globally
193    </h3>
194    <p>
195      The <code>-install-global-extension</code> and <code>-insta
 >ll-global-theme</code> command line options have been removed. Ha
 >ndling global installation has always been complicated, and discu
 >ssions are in progress as to how to address the subject going for
 >ward. In the meantime, see <a href="/en/Installing_extensions" ti
 >tle="en/Installing extensions">Installing extensions</a> for info
 >rmation on ways to automatically install add-ons.
196    </p>

Back to History