summaryrefslogtreecommitdiffstats
path: root/addon-sdk/source/examples/reading-data
diff options
context:
space:
mode:
Diffstat (limited to 'addon-sdk/source/examples/reading-data')
-rw-r--r--addon-sdk/source/examples/reading-data/data/mom.pngbin0 -> 4778 bytes
-rw-r--r--addon-sdk/source/examples/reading-data/data/sample.html7
-rw-r--r--addon-sdk/source/examples/reading-data/lib/main.js53
-rw-r--r--addon-sdk/source/examples/reading-data/package.json9
-rw-r--r--addon-sdk/source/examples/reading-data/tests/test-main.js25
5 files changed, 94 insertions, 0 deletions
diff --git a/addon-sdk/source/examples/reading-data/data/mom.png b/addon-sdk/source/examples/reading-data/data/mom.png
new file mode 100644
index 000000000..4ba89a2c1
--- /dev/null
+++ b/addon-sdk/source/examples/reading-data/data/mom.png
Binary files differ
diff --git a/addon-sdk/source/examples/reading-data/data/sample.html b/addon-sdk/source/examples/reading-data/data/sample.html
new file mode 100644
index 000000000..c7c09cb98
--- /dev/null
+++ b/addon-sdk/source/examples/reading-data/data/sample.html
@@ -0,0 +1,7 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<html><body>
+<h1>Hello World</h1>
+</body></html>
diff --git a/addon-sdk/source/examples/reading-data/lib/main.js b/addon-sdk/source/examples/reading-data/lib/main.js
new file mode 100644
index 000000000..468a497b1
--- /dev/null
+++ b/addon-sdk/source/examples/reading-data/lib/main.js
@@ -0,0 +1,53 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+"use strict";
+
+var self = require("sdk/self");
+var { Panel } = require("sdk/panel");
+var { ToggleButton } = require("sdk/ui");
+
+function replaceMom(html) {
+ return html.replace("World", "Mom");
+}
+exports.replaceMom = replaceMom;
+
+exports.main = function(options, callbacks) {
+ console.log("My ID is " + self.id);
+
+ // Load the sample HTML into a string.
+ var helloHTML = self.data.load("sample.html");
+
+ // Let's now modify it...
+ helloHTML = replaceMom(helloHTML);
+
+ // ... and then create a panel that displays it.
+ var myPanel = Panel({
+ contentURL: "data:text/html," + helloHTML,
+ onHide: handleHide
+ });
+
+ // Create a widget that displays the image. We'll attach the panel to it.
+ // When you click the widget, the panel will pop up.
+ var button = ToggleButton({
+ id: "test-widget",
+ label: "Mom",
+ icon: './mom.png',
+ onChange: handleChange
+ });
+
+ // If you run cfx with --static-args='{"quitWhenDone":true}' this program
+ // will automatically quit Firefox when it's done.
+ if (options.staticArgs.quitWhenDone)
+ callbacks.quit();
+}
+
+function handleChange(state) {
+ if (state.checked) {
+ myPanel.show({ position: button });
+ }
+}
+
+function handleHide() {
+ button.state('window', { checked: false });
+}
diff --git a/addon-sdk/source/examples/reading-data/package.json b/addon-sdk/source/examples/reading-data/package.json
new file mode 100644
index 000000000..8bdce6423
--- /dev/null
+++ b/addon-sdk/source/examples/reading-data/package.json
@@ -0,0 +1,9 @@
+{
+ "name": "reading-data",
+ "description": "A demonstration of reading bundled data.",
+ "keywords": [],
+ "author": "Brian Warner",
+ "contributors": [],
+ "license": "MPL-2.0",
+ "id": "reading-data-example@jetpack.mozillalabs.com"
+}
diff --git a/addon-sdk/source/examples/reading-data/tests/test-main.js b/addon-sdk/source/examples/reading-data/tests/test-main.js
new file mode 100644
index 000000000..4e85f49de
--- /dev/null
+++ b/addon-sdk/source/examples/reading-data/tests/test-main.js
@@ -0,0 +1,25 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+"use strict";
+
+var m = require("main");
+var self = require("sdk/self");
+
+exports.testReplace = function(test) {
+ var input = "Hello World";
+ var output = m.replaceMom(input);
+ test.assertEqual(output, "Hello Mom");
+ var callbacks = { quit: function() {} };
+
+ // Make sure it doesn't crash...
+ m.main({ staticArgs: {} }, callbacks);
+};
+
+exports.testID = function(test) {
+ // The ID is randomly generated during tests, so we cannot compare it against
+ // anything in particular. Just assert that it is not empty.
+ test.assert(self.id.length > 0);
+ test.assertEqual(self.data.url("sample.html"),
+ "resource://reading-data-example-at-jetpack-dot-mozillalabs-dot-com/reading-data/data/sample.html");
+};