diff -r 000000000000 -r 6474c204b198 browser/devtools/scratchpad/test/browser_scratchpad_unsaved.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browser/devtools/scratchpad/test/browser_scratchpad_unsaved.js Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,121 @@ +/* vim: set ts=2 et sw=2 tw=80: */ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ +/* Bug 669612 */ + +// only finish() when correct number of tests are done +const expected = 4; +var count = 0; +function done() +{ + if (++count == expected) { + finish(); + } +} + +var ScratchpadManager = Scratchpad.ScratchpadManager; + + +function test() +{ + waitForExplicitFinish(); + + testListeners(); + testRestoreNotFromFile(); + testRestoreFromFileSaved(); + testRestoreFromFileUnsaved(); + + gBrowser.selectedTab = gBrowser.addTab(); + content.location = "data:text/html,
test star* UI for unsaved file changes"; +} + +function testListeners() +{ + openScratchpad(function(aWin, aScratchpad) { + aScratchpad.setText("new text"); + ok(isStar(aWin), "show star if scratchpad text changes"); + + aScratchpad.dirty = false; + ok(!isStar(aWin), "no star before changing text"); + + aScratchpad.setFilename("foo.js"); + aScratchpad.setText("new text2"); + ok(isStar(aWin), "shows star if scratchpad text changes"); + + aScratchpad.dirty = false; + ok(!isStar(aWin), "no star if scratchpad was just saved"); + + aScratchpad.setText("new text3"); + ok(isStar(aWin), "shows star if scratchpad has more changes"); + + aScratchpad.undo(); + ok(!isStar(aWin), "no star if scratchpad undo to save point"); + + aScratchpad.undo(); + ok(isStar(aWin), "star if scratchpad undo past save point"); + + aWin.close(); + done(); + }, {noFocus: true}); +} + +function testRestoreNotFromFile() +{ + let session = [{ + text: "test1", + executionContext: 1 + }]; + + let [win] = ScratchpadManager.restoreSession(session); + openScratchpad(function(aWin, aScratchpad) { + aScratchpad.setText("new text"); + ok(isStar(win), "show star if restored scratchpad isn't from a file"); + + win.close(); + done(); + }, {window: win, noFocus: true}); +} + +function testRestoreFromFileSaved() +{ + let session = [{ + filename: "test.js", + text: "test1", + executionContext: 1, + saved: true + }]; + + let [win] = ScratchpadManager.restoreSession(session); + openScratchpad(function(aWin, aScratchpad) { + ok(!isStar(win), "no star before changing text in scratchpad restored from file"); + + aScratchpad.setText("new text"); + ok(isStar(win), "star when text changed from scratchpad restored from file"); + + win.close(); + done(); + }, {window: win, noFocus: true}); +} + +function testRestoreFromFileUnsaved() +{ + let session = [{ + filename: "test.js", + text: "test1", + executionContext: 1, + saved: false + }]; + + let [win] = ScratchpadManager.restoreSession(session); + openScratchpad(function() { + ok(isStar(win), "star with scratchpad restored with unsaved text"); + + win.close(); + done(); + }, {window: win, noFocus: true}); +} + +function isStar(win) +{ + return win.document.title.match(/^\*[^\*]/); +}