diff options
author | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
---|---|---|
committer | Matt A. Tobin <mattatobin@localhost.localdomain> | 2018-02-02 04:16:08 -0500 |
commit | 5f8de423f190bbb79a62f804151bc24824fa32d8 (patch) | |
tree | 10027f336435511475e392454359edea8e25895d /devtools/client/projecteditor/test/browser_projecteditor_immediate_destroy.js | |
parent | 49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff) | |
download | UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip |
Add m-esr52 at 52.6.0
Diffstat (limited to 'devtools/client/projecteditor/test/browser_projecteditor_immediate_destroy.js')
-rw-r--r-- | devtools/client/projecteditor/test/browser_projecteditor_immediate_destroy.js | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/devtools/client/projecteditor/test/browser_projecteditor_immediate_destroy.js b/devtools/client/projecteditor/test/browser_projecteditor_immediate_destroy.js new file mode 100644 index 000000000..0773be55c --- /dev/null +++ b/devtools/client/projecteditor/test/browser_projecteditor_immediate_destroy.js @@ -0,0 +1,93 @@ +/* vim: set ts=2 et sw=2 tw=80: */ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +// +// Whitelisting this test. +// As part of bug 1077403, the leaking uncaught rejection should be fixed. +// +thisTestLeaksUncaughtRejectionsAndShouldBeFixed("destroy"); +thisTestLeaksUncaughtRejectionsAndShouldBeFixed("TypeError: this.window is null"); + +// Test that projecteditor can be destroyed in various states of loading +// without causing any leaks or exceptions. + +add_task(function* () { + + info("Testing tab closure when projecteditor is in various states"); + let loaderUrl = "chrome://devtools/content/projecteditor/chrome/content/projecteditor-test.xul"; + + yield addTab(loaderUrl).then(() => { + let iframe = content.document.getElementById("projecteditor-iframe"); + ok(iframe, "Tab has placeholder iframe for projecteditor"); + + info("Closing the tab without doing anything"); + gBrowser.removeCurrentTab(); + }); + + yield addTab(loaderUrl).then(() => { + let iframe = content.document.getElementById("projecteditor-iframe"); + ok(iframe, "Tab has placeholder iframe for projecteditor"); + + let projecteditor = ProjectEditor.ProjectEditor(); + ok(projecteditor, "ProjectEditor has been initialized"); + + info("Closing the tab before attempting to load"); + gBrowser.removeCurrentTab(); + }); + + yield addTab(loaderUrl).then(() => { + let iframe = content.document.getElementById("projecteditor-iframe"); + ok(iframe, "Tab has placeholder iframe for projecteditor"); + + let projecteditor = ProjectEditor.ProjectEditor(); + ok(projecteditor, "ProjectEditor has been initialized"); + + projecteditor.load(iframe); + + info("Closing the tab after a load is requested, but before load is finished"); + gBrowser.removeCurrentTab(); + }); + + yield addTab(loaderUrl).then(() => { + let iframe = content.document.getElementById("projecteditor-iframe"); + ok(iframe, "Tab has placeholder iframe for projecteditor"); + + let projecteditor = ProjectEditor.ProjectEditor(); + ok(projecteditor, "ProjectEditor has been initialized"); + + return projecteditor.load(iframe).then(() => { + info("Closing the tab after a load has been requested and finished"); + gBrowser.removeCurrentTab(); + }); + }); + + yield addTab(loaderUrl).then(() => { + let iframe = content.document.getElementById("projecteditor-iframe"); + ok(iframe, "Tab has placeholder iframe for projecteditor"); + + let projecteditor = ProjectEditor.ProjectEditor(iframe); + ok(projecteditor, "ProjectEditor has been initialized"); + + let loadedDone = promise.defer(); + projecteditor.loaded.then(() => { + ok(false, "Loaded has finished after destroy() has been called"); + loadedDone.resolve(); + }, () => { + ok(true, "Loaded has been rejected after destroy() has been called"); + loadedDone.resolve(); + }); + + projecteditor.destroy(); + + return loadedDone.promise.then(() => { + gBrowser.removeCurrentTab(); + }); + }); + + finish(); +}); + + |