Bug 1044600 - in-content preferences: empty dialogs after pressing backspace or the Back button, r=gijs

This commit is contained in:
Jared Wein 2015-02-02 16:00:00 +00:00
parent c63dcc684f
commit 368a880f33
2 changed files with 23 additions and 1 deletions

View File

@ -37,6 +37,12 @@ let gSubDialog = {
// Wait for the stylesheets injected during DOMContentLoaded to load before showing the dialog
// otherwise there is a flicker of the stylesheet applying.
this._frame.addEventListener("load", this._onLoad.bind(this));
chromeBrowser.addEventListener("unload", function(aEvent) {
if (aEvent.target.location.href != "about:blank") {
this.close();
}
}.bind(this), true);
},
uninit: function() {

View File

@ -76,7 +76,7 @@ let gTests = [{
dialog.document.documentElement.cancelDialog();
let closingEvent = yield closingPromise;
ise(closingEvent.detail.button, "cancel", "closing event should indicate button was 'accept'");
ise(closingEvent.detail.button, "cancel", "closing event should indicate button was 'cancel'");
yield deferredClose.promise;
ise(rv.acceptCount, 0, "return value should NOT have been updated");
@ -118,6 +118,22 @@ let gTests = [{
ise(rv.acceptCount, 0, "return value should NOT have been updated");
},
},
{
desc: "Check that 'back' navigation will close the dialog",
run: function* () {
let rv = { acceptCount: 0 };
let deferredClose = Promise.defer();
let dialogPromise = openAndLoadSubDialog(gDialogURL, null, rv,
(aEvent) => dialogClosingCallback(deferredClose, aEvent));
let dialog = yield dialogPromise;
info("cancelling the dialog");
content.gSubDialog._frame.goBack();
yield deferredClose.promise;
ise(rv.acceptCount, 0, "return value should NOT have been updated");
},
},
{
desc: "Hitting escape in the dialog",
run: function* () {