Bug 801982 - Scratchpad doesn't show confirmation dialog after opening a file; r=harth

This commit is contained in:
Anton Kovalyov 2012-10-18 11:00:33 -07:00
Родитель 29bff0db7a
Коммит 4585798f8e
2 изменённых файлов: 35 добавлений и 20 удалений

Просмотреть файл

@ -676,8 +676,6 @@ var Scratchpad = {
}
if (shouldOpen) {
this._skipClosePrompt = true;
let file;
if (aFile) {
file = aFile;
@ -1313,25 +1311,14 @@ var Scratchpad = {
* there are unsaved changes.
*
* @param nsIDOMEvent aEvent
* @param function aCallback
* Optional function you want to call when file is saved/closed.
* Used mainly for tests.
*/
onClose: function SP_onClose(aEvent)
onClose: function SP_onClose(aEvent, aCallback)
{
if (this._skipClosePrompt) {
return;
}
this.promptSave(function(aShouldClose, aSaved, aStatus) {
let shouldClose = aShouldClose;
if (aSaved && !Components.isSuccessCode(aStatus)) {
shouldClose = false;
}
if (shouldClose) {
this._skipClosePrompt = true;
window.close();
}
}.bind(this));
aEvent.preventDefault();
this.close(aCallback);
},
/**
@ -1350,7 +1337,6 @@ var Scratchpad = {
}
if (shouldClose) {
this._skipClosePrompt = true;
window.close();
}
if (aCallback) {

Просмотреть файл

@ -9,7 +9,7 @@ let NetUtil = tempScope.NetUtil;
let FileUtils = tempScope.FileUtils;
// only finish() when correct number of tests are done
const expected = 5;
const expected = 6;
var count = 0;
function done()
{
@ -69,6 +69,7 @@ function testSavedFile()
function testUnsaved()
{
testUnsavedFileCancel();
testCancelAfterLoad();
testUnsavedFileSave();
testUnsavedFileDontSave();
}
@ -89,6 +90,34 @@ function testUnsavedFileCancel()
}, {noFocus: true});
}
// Test a regression where our confirmation dialog wasn't appearing
// after openFile calls. See bug 801982.
function testCancelAfterLoad()
{
openScratchpad(function(win) {
win.Scratchpad.setRecentFile(gFile);
win.Scratchpad.openFile(0);
win.Scratchpad.editor.dirty = true;
promptButton = win.BUTTON_POSITION_CANCEL;
let EventStub = {
called: false,
preventDefault: function() {
EventStub.called = true;
}
};
win.Scratchpad.onClose(EventStub, function() {
ok(!win.closed, "cancelling dialog shouldn't close scratchpad");
ok(EventStub.called, "aEvent.preventDefault was called");
win.Scratchpad.editor.dirty = false;
win.close();
done();
});
}, {noFocus: true});
}
function testUnsavedFileSave()
{
openScratchpad(function(win) {