Compare Revisions

Creating Reusable Modules

Change Revisions

Revision 527601:

Revision 527601 by tomica on

Revision 558807:

Revision 558807 by wbamberg on

Title:
Creating Reusable Modules
Creating Reusable Modules
Slug:
Mozilla/Add-ons/SDK/Tutorials/Creating_reusable_modules
Mozilla/Add-ons/SDK/Tutorials/Creating_reusable_modules
Content:

Revision 527601
Revision 558807
n11      With the SDK you don't have to keep all your add-on in a sin11      With the SDK you don't have to keep all your add-on in a si
>ngle "main.js" file. You can split your code into separate module>ngle "main.js" file. You can split your code into separate module
>s with clearly defined interfaces between them. You then import a>s with clearly defined interfaces between them. You then import a
>nd use these modules from other parts of your add-on using the <c>nd use these modules from other parts of your add-on using the <c
>ode>require()</code> statement, in exactly that same way that you>ode>require()</code> statement, in exactly that same way that you
> import core SDK modules like <a href="/en-US/Add-ons/SDK/High-Le> import core SDK modules like <a href="/en-US/Add-ons/SDK/High-Le
>vel_APIs/widget"><code>widget</code></a> or <a href="/en-US/Add-o>vel_APIs/page_mod"><code>page-mod</code></a> or <a href="/en-US/A
>ns/SDK/High-Level_APIs/panel"><code>panel</code></a>.>dd-ons/SDK/High-Level_APIs/panel"><code>panel</code></a>.
n20      In this tutorial we'll do exactly that with a module that en20      In this tutorial we'll do exactly that with a module that c
>xposes the geolocation API in Firefox.>alculate file hashes.
n23      Using Geolocation in an Add-onn23      A hasing add-on
tt25    <p>
26      A hash function takes a string of bytes of any length, and 
 >produces a short, fixed length string of bytes as output. It's a 
 >useful way to create a "fingerprint" that can be used to identify
 > a file. MD5 is a commonly used hash function: although it's no l
 >onger considered secure, it works fine outside a security context
 >.
27    </p>
28    <p>
29      Here we'll write an add-on that lets the user select a file
 > on disk and calculates its hash. For both these operations we'll
 > use <a href="/en-US/docs/Mozilla/Tech/XPCOM">XPCOM</a> interface
 >s.
30    </p>
31    <h3>
32      File picker
33    </h3>
34    <p>
35      To let the user select a file we'll use nsIFilePicker. The 
 ><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFi
 >lePicker">documentation for that interface</a> includes an exampl
 >e which we can adapt like this:
36    </p>
37    <pre class="brush: js">
38var {Cc, Ci} = require("chrome");
39 
40function promptForFile() {
41  const nsIFilePicker = Ci.nsIFilePicker;
42 
43  var fp = Cc["@mozilla.org/filepicker;1"]
44           .createInstance(nsIFilePicker);
45 
46  var window = require("sdk/window/utils").getMostRecentBrowserWi
 >ndow();
47  fp.init(window, "Select a file", nsIFilePicker.modeOpen);
48  fp.appendFilters(nsIFilePicker.filterAll | nsIFilePicker.filter
 >Text);
49 
50  var rv = fp.show();
51  if (rv == nsIFilePicker.returnOK || rv == nsIFilePicker.returnR
 >eplace) {
52    var file = fp.file;
53    // Get the path as string. Note that you usually won't
54    // need to work with the string paths.
55    var path = fp.file.path;
56    // work with returned nsILocalFile...
57  }
58  return path;
59}
60</pre>
61    <h3>
62      Hash function
63    </h3>
64    <p>
65      Firefox has built-in support for hash functions, exposed vi
 >a the nsICryptoHash XPCOM interface, and the <a href="/en-US/docs
 >/XPCOM_Interface_Reference/nsICryptoHash">documentation page for 
 >that interface</a> includes an example of calculating an MD5 hash
 > of a file's contents, give
66    </p>

Back to History