summaryrefslogtreecommitdiffstats
path: root/devtools/client/scratchpad/test/browser_scratchpad_open.js
diff options
context:
space:
mode:
Diffstat (limited to 'devtools/client/scratchpad/test/browser_scratchpad_open.js')
-rw-r--r--devtools/client/scratchpad/test/browser_scratchpad_open.js101
1 files changed, 101 insertions, 0 deletions
diff --git a/devtools/client/scratchpad/test/browser_scratchpad_open.js b/devtools/client/scratchpad/test/browser_scratchpad_open.js
new file mode 100644
index 000000000..ec55f0101
--- /dev/null
+++ b/devtools/client/scratchpad/test/browser_scratchpad_open.js
@@ -0,0 +1,101 @@
+/* vim: set ts=2 et sw=2 tw=80: */
+/* Any copyright is dedicated to the Public Domain.
+ http://creativecommons.org/publicdomain/zero/1.0/ */
+
+// only finish() when correct number of tests are done
+const expected = 4;
+var count = 0;
+var lastUniqueName = null;
+
+function done()
+{
+ if (++count == expected) {
+ finish();
+ }
+}
+
+function test()
+{
+ waitForExplicitFinish();
+ testOpen();
+ testOpenWithState();
+ testOpenInvalidState();
+ testOpenTestFile();
+}
+
+function testUniqueName(name)
+{
+ ok(name, "Scratchpad has a uniqueName");
+
+ if (lastUniqueName === null) {
+ lastUniqueName = name;
+ return;
+ }
+
+ ok(name !== lastUniqueName,
+ "Unique name for this instance differs from the last one.");
+}
+
+function testOpen()
+{
+ openScratchpad(function (win) {
+ is(win.Scratchpad.filename, undefined, "Default filename is undefined");
+ isnot(win.Scratchpad.getText(), null, "Default text should not be null");
+ is(win.Scratchpad.executionContext, win.SCRATCHPAD_CONTEXT_CONTENT,
+ "Default execution context is content");
+ testUniqueName(win.Scratchpad.uniqueName);
+
+ win.close();
+ done();
+ }, {noFocus: true});
+}
+
+function testOpenWithState()
+{
+ let state = {
+ filename: "testfile",
+ executionContext: 2,
+ text: "test text"
+ };
+
+ openScratchpad(function (win) {
+ is(win.Scratchpad.filename, state.filename, "Filename loaded from state");
+ is(win.Scratchpad.executionContext, state.executionContext, "Execution context loaded from state");
+ is(win.Scratchpad.getText(), state.text, "Content loaded from state");
+ testUniqueName(win.Scratchpad.uniqueName);
+
+ win.close();
+ done();
+ }, {state: state, noFocus: true});
+}
+
+function testOpenInvalidState()
+{
+ let win = openScratchpad(null, {state: 7});
+ ok(!win, "no scratchpad opened if state is not an object");
+ done();
+}
+
+function testOpenTestFile()
+{
+ let win = openScratchpad(function (win) {
+ ok(win, "scratchpad opened for file open");
+ try {
+ win.Scratchpad.importFromFile(
+ "http://example.com/browser/devtools/client/scratchpad/test/NS_ERROR_ILLEGAL_INPUT.txt",
+ "silent",
+ function (aStatus, content) {
+ let nb = win.document.querySelector("#scratchpad-notificationbox");
+ is(nb.querySelectorAll("notification").length, 1, "There is just one notification");
+ let cn = nb.currentNotification;
+ is(cn.priority, nb.PRIORITY_WARNING_HIGH, "notification priority is correct");
+ is(cn.value, "file-import-convert-failed", "notification value is corrent");
+ is(cn.type, "warning", "notification type is correct");
+ done();
+ });
+ ok(true, "importFromFile does not cause exception");
+ } catch (exception) {
+ ok(false, "importFromFile causes exception " + DevToolsUtils.safeErrorString(exception));
+ }
+ }, {noFocus: true});
+}