Permalink
Browse files

merge development to stabilization

  • Loading branch information...
2 parents 4cd0c39 + 3b08b3b commit 48839700cc5ad883660f84ac683444ae54f348cf @mykmelez mykmelez committed Sep 13, 2011
Showing with 2,145 additions and 1,381 deletions.
  1. +5 −1 .gitignore
  2. +1 −1 bin/cfx
  3. +1 −1 bin/cfx.bat
  4. 0 {static-files/md/dev-guide → doc/dev-guide-source}/addon-development/about.md
  5. 0 {static-files/md/dev-guide → doc/dev-guide-source}/addon-development/annotator/annotator.md
  6. +2 −2 {static-files/md/dev-guide → doc/dev-guide-source}/addon-development/annotator/creating.md
  7. +2 −2 {static-files/md/dev-guide → doc/dev-guide-source}/addon-development/annotator/displaying.md
  8. +1 −1 {static-files/md/dev-guide → doc/dev-guide-source}/addon-development/annotator/overview.md
  9. +1 −1 {static-files/md/dev-guide → doc/dev-guide-source}/addon-development/annotator/storing.md
  10. +3 −3 {static-files/md/dev-guide → doc/dev-guide-source}/addon-development/annotator/widget.md
  11. 0 {static-files/md/dev-guide → doc/dev-guide-source}/addon-development/api-idioms.md
  12. 0 {static-files/md/dev-guide → doc/dev-guide-source}/addon-development/api-intro.md
  13. +7 −7 {static-files/md/dev-guide → doc/dev-guide-source}/addon-development/api-modules.md
  14. +56 −40 {static-files/md/dev-guide → doc/dev-guide-source}/addon-development/cfx-tool.md
  15. +2 −2 {static-files/md/dev-guide → doc/dev-guide-source}/addon-development/commonjs.md
  16. 0 {static-files/md/dev-guide → doc/dev-guide-source}/addon-development/console.md
  17. +175 −0 doc/dev-guide-source/addon-development/content-scripts/access.md
  18. +60 −0 doc/dev-guide-source/addon-development/content-scripts/loading.md
  19. +67 −0 doc/dev-guide-source/addon-development/content-scripts/reddit-example.md
  20. +179 −0 doc/dev-guide-source/addon-development/content-scripts/using-port.md
  21. +136 −0 doc/dev-guide-source/addon-development/content-scripts/using-postmessage.md
  22. 0 {static-files/md/dev-guide → doc/dev-guide-source}/addon-development/events.md
  23. 0 {static-files/md/dev-guide → doc/dev-guide-source}/addon-development/getting-started.md
  24. 0 {static-files/md/dev-guide → doc/dev-guide-source}/addon-development/guides.md
  25. 0 {static-files/md/dev-guide → doc/dev-guide-source}/addon-development/implementing-reusable-module.md
  26. +2 −2 {static-files/md/dev-guide → doc/dev-guide-source}/addon-development/implementing-simple-addon.md
  27. +1 −1 {static-files/md/dev-guide → doc/dev-guide-source}/addon-development/installation.md
  28. 0 {static-files/md/dev-guide → doc/dev-guide-source}/addon-development/module-search.md
  29. 0 {static-files/md/dev-guide → doc/dev-guide-source}/addon-development/package-spec.md
  30. 0 {static-files/md/dev-guide → doc/dev-guide-source}/addon-development/program-id.md
  31. 0 {static-files/md/dev-guide → doc/dev-guide-source}/addon-development/reference.md
  32. 0 {static-files/md/dev-guide → doc/dev-guide-source}/addon-development/troubleshooting.md
  33. 0 {static-files/md/dev-guide → doc/dev-guide-source}/addon-development/tutorials.md
  34. +1 −1 {static-files/md/dev-guide → doc/dev-guide-source}/addon-development/two-types-of-scripts.md
  35. +87 −0 doc/dev-guide-source/addon-development/web-content.md
  36. 0 {static-files/md/dev-guide → doc/dev-guide-source}/appendices/credits.md
  37. 0 {static-files/md/dev-guide → doc/dev-guide-source}/appendices/glossary.md
  38. 0 {static-files/md/dev-guide → doc/dev-guide-source}/module-development/about.md
  39. 0 {static-files/md/dev-guide → doc/dev-guide-source}/module-development/best-practices.md
  40. 0 {static-files/md/dev-guide → doc/dev-guide-source}/module-development/chrome.md
  41. +1 −1 {static-files/md/dev-guide → doc/dev-guide-source}/module-development/e10s.md
  42. 0 {static-files/md/dev-guide → doc/dev-guide-source}/module-development/globals.md
  43. 0 {static-files/md/dev-guide → doc/dev-guide-source}/module-development/guides.md
  44. 0 {static-files/md/dev-guide → doc/dev-guide-source}/module-development/reference.md
  45. 0 {static-files/md/dev-guide → doc/dev-guide-source}/module-development/tutorials.md
  46. 0 {static-files/md/dev-guide → doc/dev-guide-source}/module-development/xpi.md
  47. 0 {static-files/md/dev-guide → doc/dev-guide-source}/welcome.md
  48. +23 −16 { → doc}/static-files/base.html
  49. 0 { → doc}/static-files/css/api-reference.css
  50. 0 { → doc}/static-files/css/base.css
  51. 0 { → doc}/static-files/css/footer.css
  52. 0 { → doc}/static-files/css/header.css
  53. 0 { → doc}/static-files/css/sdk-docs.css
  54. 0 { → doc}/static-files/js/jquery.js
  55. +0 −24 { → doc}/static-files/js/main.js
  56. +175 −0 doc/static-files/md/dev-guide/addon-development/content-scripts/access.md
  57. +60 −0 doc/static-files/md/dev-guide/addon-development/content-scripts/loading.md
  58. +67 −0 doc/static-files/md/dev-guide/addon-development/content-scripts/reddit-example.md
  59. +179 −0 doc/static-files/md/dev-guide/addon-development/content-scripts/using-port.md
  60. +136 −0 doc/static-files/md/dev-guide/addon-development/content-scripts/using-postmessage.md
  61. BIN { → doc}/static-files/media/annotator/annotation-list.png
  62. BIN { → doc}/static-files/media/annotator/annotation-panel.png
  63. BIN { → doc}/static-files/media/annotator/annotator-design.png
  64. BIN { → doc}/static-files/media/annotator/editor-panel.png
  65. BIN { → doc}/static-files/media/annotator/highlight.png
  66. BIN { → doc}/static-files/media/annotator/matcher.png
  67. BIN { → doc}/static-files/media/annotator/pencil-off.png
  68. BIN { → doc}/static-files/media/annotator/pencil-on.png
  69. BIN { → doc}/static-files/media/annotator/widget-icon.png
  70. BIN { → doc}/static-files/media/bg-footer.png
  71. BIN { → doc}/static-files/media/bg-header.png
  72. BIN { → doc}/static-files/media/commonjs-modules.jpg
  73. BIN { → doc}/static-files/media/commonjs-translator.jpg
  74. BIN { → doc}/static-files/media/content-scripting-events.png
  75. BIN { → doc}/static-files/media/content-scripting-overview.png
  76. BIN { → doc}/static-files/media/favicon.png
  77. BIN { → doc}/static-files/media/firefox-32.png
  78. BIN { → doc}/static-files/media/firefox-logo.png
  79. BIN { → doc}/static-files/media/footer-logo-med.png
  80. BIN { → doc}/static-files/media/mozilla-tab.png
  81. BIN { → doc}/static-files/media/multiple-workers.jpg
  82. BIN { → doc}/static-files/media/screenshots/default-panel-osx.png
  83. BIN { → doc}/static-files/media/screenshots/default-panel-ubuntu.png
  84. BIN { → doc}/static-files/media/screenshots/default-panel-windows.png
  85. BIN { → doc}/static-files/media/screenshots/modules/context-menu-image-osx.png
  86. BIN { → doc}/static-files/media/screenshots/modules/notification-growl-osx.png
  87. BIN { → doc}/static-files/media/screenshots/modules/panel-tabs-osx.png
  88. BIN { → doc}/static-files/media/screenshots/modules/widget-content-osx.png
  89. BIN { → doc}/static-files/media/screenshots/modules/widget-icon-osx.png
  90. BIN { → doc}/static-files/media/screenshots/modules/widget-panel-osx.png
  91. BIN { → doc}/static-files/media/screenshots/translator/context-menu-osx.png
  92. BIN { → doc}/static-files/media/screenshots/translator/translated-osx.png
  93. BIN doc/static-files/media/screenshots/widget-panel-clock.png
  94. BIN { → doc}/static-files/media/twitter-widget.png
  95. 0 { → doc}/static-files/syntaxhighlighter/MIT-LICENSE
  96. 0 { → doc}/static-files/syntaxhighlighter/scripts/shBrushCss.js
  97. 0 { → doc}/static-files/syntaxhighlighter/scripts/shBrushJScript.js
  98. 0 { → doc}/static-files/syntaxhighlighter/scripts/shBrushXml.js
  99. 0 { → doc}/static-files/syntaxhighlighter/scripts/shCore.js
  100. 0 { → doc}/static-files/syntaxhighlighter/styles/shCore.css
  101. 0 { → doc}/static-files/syntaxhighlighter/styles/shThemeDefault.css
  102. +2 −2 packages/addon-kit/docs/context-menu.md
  103. +2 −2 packages/addon-kit/docs/page-mod.md
  104. +4 −4 packages/addon-kit/docs/page-worker.md
  105. +7 −7 packages/addon-kit/docs/panel.md
  106. +31 −1 packages/addon-kit/docs/request.md
  107. +13 −1 packages/addon-kit/docs/self.md
  108. +5 −0 packages/addon-kit/docs/tabs.md
  109. +11 −11 packages/addon-kit/docs/widget.md
  110. +1 −1 packages/addon-kit/lib/context-menu.js
  111. +1 −1 packages/addon-kit/lib/page-mod.js
  112. +1 −1 packages/addon-kit/lib/tabs.js
  113. +7 −1 packages/addon-kit/tests/test-private-browsing.js
  114. +33 −0 packages/addon-kit/tests/test-tabs.js
  115. +2 −2 packages/api-utils/docs/content/worker.md
  116. +30 −0 packages/api-utils/docs/unit-test.md
  117. +5 −0 packages/api-utils/lib/content/content-proxy.js
  118. +1 −1 packages/api-utils/lib/content/symbiont.js
  119. +18 −9 packages/api-utils/lib/content/worker.js
  120. +0 −2 packages/api-utils/lib/cuddlefish.js
  121. +1 −1 packages/api-utils/lib/e10s.js
  122. +3 −5 packages/api-utils/lib/preferences-service.js
  123. +12 −3 packages/api-utils/lib/securable-module.js
  124. +2 −0 packages/api-utils/lib/self-maker.js
  125. +7 −1 packages/api-utils/lib/tabs/tab.js
  126. +2 −2 packages/api-utils/lib/unit-test-finder.js
  127. +2 −2 packages/api-utils/lib/windows/tabs.js
  128. +4 −1 packages/api-utils/tests/test-content-proxy.js
  129. +21 −11 packages/api-utils/tests/test-content-worker.js
  130. +1 −1 packages/api-utils/tests/test-preferences-service.js
  131. +25 −0 packages/api-utils/tests/test-require.js
  132. +11 −1 packages/api-utils/tests/test-self.js
  133. +24 −69 python-lib/cuddlefish/__init__.py
  134. +1 −1 python-lib/cuddlefish/app-extension/install.rdf
  135. 0 python-lib/cuddlefish/docs/__init__.py
  136. 0 python-lib/cuddlefish/{ → docs}/apiparser.py
  137. 0 python-lib/cuddlefish/{ → docs}/apirenderer.py
  138. +224 −0 python-lib/cuddlefish/docs/generate.py
  139. +3 −3 python-lib/cuddlefish/{ → docs}/webdocs.py
  140. +39 −40 python-lib/cuddlefish/manifest.py
  141. +0 −463 python-lib/cuddlefish/server.py
  142. +1 −1 python-lib/cuddlefish/tests/__init__.py
  143. 0 python-lib/cuddlefish/tests/static-files/{static-files/md/dev-guide → doc/dev-guide-source}/no_h1.md
  144. 0 ...n-lib/cuddlefish/tests/static-files/{static-files/md/dev-guide → doc/dev-guide-source}/welcome.md
  145. 0 python-lib/cuddlefish/tests/static-files/{ → doc}/static-files/base.html
  146. 0 python-lib/cuddlefish/tests/static-files/{ → doc}/static-files/index.html
  147. +1 −0 python-lib/cuddlefish/tests/static-files/doc/status.md5
  148. +1 −1 python-lib/cuddlefish/tests/test_apiparser.py
  149. +2 −2 python-lib/cuddlefish/tests/test_apirenderer.py
  150. +87 −0 python-lib/cuddlefish/tests/test_generate.py
  151. +22 −6 python-lib/cuddlefish/tests/test_manifest.py
  152. +0 −71 python-lib/cuddlefish/tests/test_server.py
  153. +18 −0 python-lib/cuddlefish/tests/test_util.py
  154. +3 −3 python-lib/cuddlefish/tests/test_webdocs.py
  155. +19 −0 python-lib/cuddlefish/util.py
  156. +5 −18 python-lib/cuddlefish/xpi.py
  157. +0 −523 static-files/md/dev-guide/addon-development/web-content.md
View
@@ -3,7 +3,11 @@ python-lib/cuddlefish/app-extension/components/jetpack.xpt
testdocs.tgz
jetpack-sdk-docs.tgz
.test_tmp/
-jetpack-sdk-docs/
+doc/dev-guide/
+doc/index.html
+doc/packages/
+doc/status.md5
+
# If you want to add other files here, like *.pyc and *.DS_Store,
# please add them to a global git ignore file.
View
@@ -5,7 +5,7 @@ import sys
# set the cuddlefish "root directory" for this process if it's not already
# set in the environment
-cuddlefish_root = os.path.dirname(os.path.dirname(os.path.abspath(sys.argv[0])))
+cuddlefish_root = os.path.dirname(os.path.dirname(os.path.realpath(sys.argv[0])))
if 'CUDDLEFISH_ROOT' not in os.environ:
os.environ['CUDDLEFISH_ROOT'] = cuddlefish_root
View
@@ -1,3 +1,3 @@
@echo off
-python "%VIRTUAL_ENV%\bin\cfx" %1 %2 %3 %4 %5 %6 %7 %8 %9
+python "%VIRTUAL_ENV%\bin\cfx" %*
@@ -170,7 +170,7 @@ overview-amo-review-process/](http://blog.mozilla.com/addons/2011/02/04/overview
You should see the highlight appearing when you move the mouse over certain elements:
<img class="image-center"
-src="media/annotator/highlight.png" alt="Annotator Highlighting">
+src="static-files/media/annotator/highlight.png" alt="Annotator Highlighting">
Click on the highlight and you should see something like this in the console
output:
@@ -323,7 +323,7 @@ element and click the element when it is highlighted. You should see a panel
with a text area for a note:
<img class="image-center"
-src="media/annotator/editor-panel.png" alt="Annotator Editor Panel">
+src="static-files/media/annotator/editor-panel.png" alt="Annotator Editor Panel">
<br>
Enter the note and press the return key: you should see console output like
@@ -191,13 +191,13 @@ Execute `cfx run` one last time. Activate the annotator and enter an
annotation. You should see a yellow border around the item you annotated:
<img class="image-center"
-src="media/annotator/matcher.png" alt="Annotator Matcher">
+src="static-files/media/annotator/matcher.png" alt="Annotator Matcher">
<br>
When you move your mouse over the item, the annotation should appear:
<img class="image-center"
-src="media/annotator/annotation-panel.png" alt="Annotation Panel">
+src="static-files/media/annotator/annotation-panel.png" alt="Annotation Panel">
<br>
Obviously this add-on isn't complete yet. It could do with more beautiful
@@ -10,7 +10,7 @@ We could represent the basic interactions between the `main` module and the
various content scripts like this:
<img class="image-center"
-src="media/annotator/annotator-design.png" alt="Annotator Design">
+src="static-files/media/annotator/annotator-design.png" alt="Annotator Design">
## User Interface ##
@@ -233,7 +233,7 @@ Firefox. Activate the add-on, add an annotation, and then right-click the
widget. You should see something like this:
<img class="image-center"
-src="media/annotator/annotation-list.png" alt="Annotation List">
+src="static-files/media/annotator/annotation-list.png" alt="Annotation List">
<br>
<span class="aside">
@@ -46,8 +46,8 @@ Save this in your `data/widget` directory as `widget.js`.
You can copy the widget's icons from here:
-<img style="margin-left:40px; margin-right:20px;" src="media/annotator/pencil-on.png" alt="Active Annotator">
-<img style="margin-left:20px; margin-right:20px;" src="media/annotator/pencil-off.png" alt="Inactive Annotator">
+<img style="margin-left:40px; margin-right:20px;" src="static-files/media/annotator/pencil-on.png" alt="Active Annotator">
+<img style="margin-left:20px; margin-right:20px;" src="static-files/media/annotator/pencil-off.png" alt="Inactive Annotator">
(Or make your own if you're feeling creative.) Save them in your `data/widget` directory.
@@ -100,7 +100,7 @@ Now from the `annotator` directory type `cfx run`. You should see the widget
in the add-on bar:
<div align="center">
-<img src="media/annotator/widget-icon.png" alt="Widget Icon">
+<img src="static-files/media/annotator/widget-icon.png" alt="Widget Icon">
</div>
<br>
@@ -22,7 +22,7 @@ You can build or load the content locally or load it from a remote server.
The screenshot below shows a panel whose content is built from the list of
currently open tabs:
-<img class="image-center" src="media/screenshots/modules/panel-tabs-osx.png"
+<img class="image-center" src="static-files/media/screenshots/modules/panel-tabs-osx.png"
alt="List open tabs panel">
<br>
@@ -40,7 +40,7 @@ Widgets are generally used in one of two different contexts:
the time in a selected time zone or the weather. The screenshot below shows a
widget that displays the time in the selected city:
-<img class="image-center" src="media/screenshots/modules/widget-content-osx.png"
+<img class="image-center" src="static-files/media/screenshots/modules/widget-content-osx.png"
alt="Mozilla widget content">
<br>
@@ -49,15 +49,15 @@ interface. For example, a widget might display only an icon, but open a
settings dialog when the user clicks it. The widget below displays only the
Mozilla icon:
-<img class="image-center" src="media/screenshots/modules/widget-icon-osx.png"
+<img class="image-center" src="static-files/media/screenshots/modules/widget-icon-osx.png"
alt="Mozilla widget icon">
<br>
To simplify your code in the latter case, you can assign a panel object to
your widget. Then when the user clicks the widget, the widget will display
the panel anchored to the widget:
-<img class="image-center" src="media/screenshots/modules/widget-panel-osx.png"
+<img class="image-center" src="static-files/media/screenshots/modules/widget-panel-osx.png"
alt="Panel anchored to widget">
<br>
@@ -73,7 +73,7 @@ is selected) or define your own contexts using scripts.
In the screenshot below an add-on has added a new submenu to the context menu
associated with `img` elements:
-<img class="image-center" src="media/screenshots/modules/context-menu-image-osx.png"
+<img class="image-center" src="static-files/media/screenshots/modules/context-menu-image-osx.png"
alt="Context-menu">
<br>
@@ -86,7 +86,7 @@ OS X and Windows, libnotify on Linux), so the notification will look slightly
different on different platforms. On Mac OS X a notification will look
something like this:
-<img class="image-center" src="media/screenshots/modules/notification-growl-osx.png"
+<img class="image-center" src="static-files/media/screenshots/modules/notification-growl-osx.png"
alt="Growl notification">
<br>
@@ -196,4 +196,4 @@ ID](dev-guide/addon-development/program-id.html).
Note that the `self` module is completely different from the global `self`
object accessible to content scripts, which is used by a content script to
-[communicate with the add-on code](dev-guide/addon-development/web-content#content_script_events).
+[communicate with the add-on code](dev-guide/addon-development/content-scripts/using-port.html).
@@ -23,8 +23,24 @@ applicable to a subset of the commands.
### cfx docs ###
-This command launches an HTTP server on the localhost to view web-based
-documentation in a new Firefox window.
+This command displays the documentation for the SDK. The documentation is
+shipped with the SDK in [Markdown](http://daringfireball.net/projects/markdown/)
+format. The first time this command is executed, and any time after the
+Markdown files on disk have changed, `cfx docs` will generate a set of HTML
+pages from them and launch a web browser to display them. If the Markdown files
+haven't changed, `cfx docs` just launches a browser initialized to the set of
+generated pages.
+
+To regenerate the documentation associated with a single file, you can
+specify the file as an argument. For example:
+
+<pre>
+ cfx docs doc/dev-guide-source/addon-development/cfx-tool.md
+</pre>
+
+This command will regenerate only the HTML page you're reading.
+This is useful if you're iteratively editing a single file, and don't want to wait for cfx to
+regenerate the complete documentation tree.
### cfx init ####
Create a new directory, change into it, and run `cfx init`.
@@ -85,6 +101,25 @@ your add-on alongside debuggers like [Firebug](http://getfirebug.com/).
</td>
</tr>
+<tr>
+ <td>
+ <code>--binary-args=CMDARGS</code>
+ </td>
+ <td>
+ <p>Pass <a href="http://kb.mozillazine.org/Command_line_arguments">extra
+ arguments</a> to the binary being executed (for example, Firefox).</p>
+ <p>For example, to pass the
+ <code>-jsconsole</code> argument to Firefox, which will launch the
+ <a href="https://developer.mozilla.org/en/Error_Console">JavaScript
+ Error Console</a>, try the following:</p<>
+ <pre>
+ cfx run --binary-args -jsconsole</pre>
+ <p>To pass multiple arguments, or arguments containing spaces, quote them:</p>
+ <pre>
+ cfx run --binary-args '-url "www.mozilla.org" -jsconsole'</pre>
+ </td>
+</tr>
+
<tr>
<td>
<code>--extra-packages=EXTRA_PACKAGES</code>
@@ -216,25 +251,6 @@ To launch the application, enter the following command:
</td>
</tr>
-<tr>
- <td>
- <code>--binary-args=CMDARGS</code>
- </td>
- <td>
- <p>Pass <a href="http://kb.mozillazine.org/Command_line_arguments">extra
- arguments</a> to the binary being executed (for example, Firefox).</p>
- <p>For example, to pass the
- <code>-jsconsole</code> argument to Firefox, which will launch the
- <a href="https://developer.mozilla.org/en/Error_Console">JavaScript
- Error Console</a>, try the following:</p<>
- <pre>
- cfx run --binary-args -jsconsole</pre>
- <p>To pass multiple arguments, or arguments containing spaces, quote them:</p>
- <pre>
- cfx run --binary-args '-url "www.mozilla.org" -jsconsole'</pre>
- </td>
-</tr>
-
<tr>
<td>
<code>--e10s</code>
@@ -296,6 +312,25 @@ times.
</td>
</tr>
+<tr>
+ <td>
+ <code>--binary-args=CMDARGS</code>
+ </td>
+ <td>
+ <p>Pass <a href="http://kb.mozillazine.org/Command_line_arguments">extra
+ arguments</a> to the binary being executed (for example, Firefox).</p>
+ <p>For example, to pass the
+ <code>-jsconsole</code> argument to Firefox, which will launch the
+ <a href="https://developer.mozilla.org/en/Error_Console">JavaScript
+ Error Console</a>, try the following:</p<>
+ <pre>
+ cfx run --binary-args -jsconsole</pre>
+ <p>To pass multiple arguments, or arguments containing spaces, quote them:</p>
+ <pre>
+ cfx run --binary-args '-url "www.mozilla.org" -jsconsole'</pre>
+ </td>
+</tr>
+
<tr>
<td>
<code>--dependencies</code>
@@ -430,25 +465,6 @@ To launch the application, enter the following command:
</td>
</tr>
-<tr>
- <td>
- <code>--binary-args=CMDARGS</code>
- </td>
- <td>
- <p>Pass <a href="http://kb.mozillazine.org/Command_line_arguments">extra
- arguments</a> to the binary being executed (for example, Firefox).</p>
- <p>For example, to pass the
- <code>-jsconsole</code> argument to Firefox, which will launch the
- <a href="https://developer.mozilla.org/en/Error_Console">JavaScript
- Error Console</a>, try the following:</p<>
- <pre>
- cfx run --binary-args -jsconsole</pre>
- <p>To pass multiple arguments, or arguments containing spaces, quote them:</p>
- <pre>
- cfx run --binary-args '-url "www.mozilla.org" -jsconsole'</pre>
- </td>
-</tr>
-
<tr>
<td>
<code>--e10s</code>
@@ -19,7 +19,7 @@ module wants to make available to other modules
object of another module. Your translator add-on uses `require` to import the
SDK modules it uses.
-![CommonJS modules](media/commonjs-modules.jpg)
+![CommonJS modules](static-files/media/commonjs-modules.jpg)
The SDK
[freezes](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/freeze)
@@ -62,7 +62,7 @@ soon as Firefox has enabled the add-on.
So in terms of CommonJS objects the translator consists of a package that
contains a single module called `main`, and which imports three SDK modules:
-![CommonJS translator](media/commonjs-translator.jpg)
+![CommonJS translator](static-files/media/commonjs-translator.jpg)
Because an add-on is a CommonJS package it's possible to include more than one
module in an add-on, and to make your modules available to any code that want
Oops, something went wrong.

0 comments on commit 4883970

Please sign in to comment.