Bug 1506032: Wait for documentUnload and newRoot events are fired. r=pbro

Differential Revision: https://phabricator.services.mozilla.com/D33749

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Daisuke Akatsuka 2019-06-05 10:12:34 +00:00
Родитель d5b5784233
Коммит 002c2ce79d
2 изменённых файлов: 30 добавлений и 7 удалений

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

@ -147,7 +147,6 @@ run-if = e10s
[browser_toolbox_view_source_03.js]
[browser_toolbox_view_source_04.js]
[browser_toolbox_window_reload_target.js]
skip-if = true # bug 1522720, Bug 1506032
[browser_toolbox_window_shortcuts.js]
[browser_toolbox_window_title_changes.js]
[browser_toolbox_window_title_frame_select.js]

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

@ -85,14 +85,38 @@ function testReload(shortcut, toolbox, toolID) {
const mm = gBrowser.selectedBrowser.messageManager;
return new Promise(resolve => {
// The inspector needs some special care.
const toolUpdated = toolID === "inspector"
? toolbox.getPanel("inspector").once("new-root")
: Promise.resolve();
const observer = {
_isDocumentUnloaded: false,
_isNewRooted: false,
onMutation(mutations) {
for (const { type } of mutations) {
if (type === "documentUnload") {
this._isDocumentUnloaded = true;
} else if (type === "newRoot") {
this._isNewRooted = true;
}
}
},
isReady() {
return this._isDocumentUnloaded && this._isNewRooted;
},
};
const complete = () => {
if (toolbox.walker) {
observer.onMutation = observer.onMutation.bind(observer);
toolbox.walker.on("mutations", observer.onMutation);
} else {
observer.isReady = () => true;
}
const complete = async () => {
mm.removeMessageListener("devtools:test:load", complete);
toolUpdated.then(resolve);
// Wait for the documentUnload and newRoot were fired.
await waitUntil(() => observer.isReady());
if (toolbox.walker) {
toolbox.walker.off("mutations", observer.onMutation);
}
resolve();
};
mm.addMessageListener("devtools:test:load", complete);