forked from mirrors/gecko-dev
Backed out changeset 0c01a98f4fd5 (bug 1412456) Backed out changeset 27077db47231 (bug 1412456) Backed out changeset f35ec2a884f8 (bug 1412456) Backed out changeset 602b30ac3c69 (bug 1412456) Backed out changeset b1ff1050c589 (bug 1412456) Backed out changeset f100d953f9eb (bug 1412456) Backed out changeset d85af60fe259 (bug 1412456) Backed out changeset 736f38486832 (bug 1412456) Backed out changeset 13a637602dc2 (bug 1412456)
133 lines
4.1 KiB
JavaScript
133 lines
4.1 KiB
JavaScript
/* 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 751744 */
|
|
|
|
// Reference to the Scratchpad object.
|
|
var gScratchpad;
|
|
|
|
// Reference to the temporary nsIFiles.
|
|
var gFile;
|
|
|
|
// Temporary file name.
|
|
var gFileName = "testFileForBug751744.tmp";
|
|
|
|
|
|
// Content for the temporary file.
|
|
var gFileContent = "/* this file is already saved */\n" +
|
|
"function foo() { alert('bar') }";
|
|
var gLength = gFileContent.length;
|
|
|
|
// Reference to the menu entry.
|
|
var menu;
|
|
|
|
function startTest()
|
|
{
|
|
gScratchpad = gScratchpadWindow.Scratchpad;
|
|
menu = gScratchpadWindow.document.getElementById("sp-cmd-revert");
|
|
createAndLoadTemporaryFile();
|
|
}
|
|
|
|
function testAfterSaved() {
|
|
// Check if the revert menu is disabled as the file is at saved state.
|
|
ok(menu.hasAttribute("disabled"), "The revert menu entry is disabled.");
|
|
|
|
// chancging the text in the file
|
|
gScratchpad.setText(gScratchpad.getText() + "\nfoo();");
|
|
// Checking the text got changed
|
|
is(gScratchpad.getText(), gFileContent + "\nfoo();",
|
|
"The text changed the first time.");
|
|
|
|
// Revert menu now should be enabled.
|
|
ok(!menu.hasAttribute("disabled"),
|
|
"The revert menu entry is enabled after changing text first time");
|
|
|
|
// reverting back to last saved state.
|
|
gScratchpad.revertFile(testAfterRevert);
|
|
}
|
|
|
|
function testAfterRevert() {
|
|
// Check if the file's text got reverted
|
|
is(gScratchpad.getText(), gFileContent,
|
|
"The text reverted back to original text.");
|
|
// The revert menu should be disabled again.
|
|
ok(menu.hasAttribute("disabled"),
|
|
"The revert menu entry is disabled after reverting.");
|
|
|
|
// chancging the text in the file again
|
|
gScratchpad.setText(gScratchpad.getText() + "\nalert(foo.toSource());");
|
|
// Saving the file.
|
|
gScratchpad.saveFile(testAfterSecondSave);
|
|
}
|
|
|
|
function testAfterSecondSave() {
|
|
// revert menu entry should be disabled.
|
|
ok(menu.hasAttribute("disabled"),
|
|
"The revert menu entry is disabled after saving.");
|
|
|
|
// changing the text.
|
|
gScratchpad.setText(gScratchpad.getText() + "\nfoo();");
|
|
|
|
// revert menu entry should get enabled yet again.
|
|
ok(!menu.hasAttribute("disabled"),
|
|
"The revert menu entry is enabled after changing text third time");
|
|
|
|
// reverting back to last saved state.
|
|
gScratchpad.revertFile(testAfterSecondRevert);
|
|
}
|
|
|
|
function testAfterSecondRevert() {
|
|
// Check if the file's text got reverted
|
|
is(gScratchpad.getText(), gFileContent + "\nalert(foo.toSource());",
|
|
"The text reverted back to the changed saved text.");
|
|
// The revert menu should be disabled again.
|
|
ok(menu.hasAttribute("disabled"),
|
|
"Revert menu entry is disabled after reverting to changed saved state.");
|
|
gFile.remove(false);
|
|
gFile = gScratchpad = menu = null;
|
|
finish();
|
|
}
|
|
|
|
function createAndLoadTemporaryFile()
|
|
{
|
|
// Create a temporary file.
|
|
gFile = FileUtils.getFile("TmpD", [gFileName]);
|
|
gFile.createUnique(Ci.nsIFile.NORMAL_FILE_TYPE, 0o666);
|
|
|
|
// Write the temporary file.
|
|
let fout = Cc["@mozilla.org/network/file-output-stream;1"].
|
|
createInstance(Ci.nsIFileOutputStream);
|
|
fout.init(gFile.QueryInterface(Ci.nsIFile), 0x02 | 0x08 | 0x20,
|
|
0o644, fout.DEFER_OPEN);
|
|
|
|
let converter = Cc["@mozilla.org/intl/scriptableunicodeconverter"].
|
|
createInstance(Ci.nsIScriptableUnicodeConverter);
|
|
converter.charset = "UTF-8";
|
|
let fileContentStream = converter.convertToInputStream(gFileContent);
|
|
|
|
NetUtil.asyncCopy(fileContentStream, fout, tempFileSaved);
|
|
}
|
|
|
|
function tempFileSaved(aStatus)
|
|
{
|
|
ok(Components.isSuccessCode(aStatus),
|
|
"the temporary file was saved successfully");
|
|
|
|
// Import the file into Scratchpad.
|
|
gScratchpad.setFilename(gFile.path);
|
|
gScratchpad.importFromFile(gFile.QueryInterface(Ci.nsIFile), true,
|
|
testAfterSaved);
|
|
}
|
|
|
|
function test()
|
|
{
|
|
waitForExplicitFinish();
|
|
|
|
gBrowser.selectedTab = BrowserTestUtils.addTab(gBrowser);
|
|
gBrowser.selectedBrowser.addEventListener("load", function () {
|
|
openScratchpad(startTest);
|
|
}, {capture: true, once: true});
|
|
|
|
content.location = "data:text/html,<p>test reverting to last saved state of" +
|
|
" a file </p>";
|
|
}
|