Bug 705731 - Create InspectorUI.notifications.DESTROYED notification; r=prouget

This commit is contained in:
Rob Campbell 2011-12-07 10:38:41 -04:00
parent 1233f9665e
commit a90de11c0b
2 changed files with 15 additions and 4 deletions

View File

@ -80,6 +80,9 @@ const INSPECTOR_NOTIFICATIONS = {
// Fires once the Inspector is closed.
CLOSED: "inspector-closed",
// Fires once the Inspector is destroyed. Not fired on tab switch.
DESTROYED: "inspector-destroyed",
// Fires when the Inspector is reopened after tab-switch.
STATE_RESTORED: "inspector-state-restored",
@ -1046,6 +1049,8 @@ InspectorUI.prototype = {
return;
}
let winId = new String(this.winID); // retain this to notify observers.
this.closing = true;
this.toolbar.hidden = true;
@ -1104,6 +1109,8 @@ InspectorUI.prototype = {
delete this.stylePanel;
delete this.toolbar;
Services.obs.notifyObservers(null, INSPECTOR_NOTIFICATIONS.CLOSED, null);
if (!aKeepStore)
Services.obs.notifyObservers(null, INSPECTOR_NOTIFICATIONS.DESTROYED, winId);
},
/**

View File

@ -39,6 +39,7 @@
let doc;
let salutation;
let closing;
let winId;
function createDocument()
{
@ -182,11 +183,12 @@ function inspectNodesFromContextTestWhileOpen()
function inspectNodesFromContextTestHighlight()
{
winId = InspectorUI.winID;
Services.obs.removeObserver(inspectNodesFromContextTestHighlight, InspectorUI.INSPECTOR_NOTIFICATIONS.HIGHLIGHTING);
Services.obs.addObserver(finishInspectorTests, InspectorUI.INSPECTOR_NOTIFICATIONS.CLOSED, false);
Services.obs.addObserver(finishInspectorTests, InspectorUI.INSPECTOR_NOTIFICATIONS.DESTROYED, false);
is(InspectorUI.selection, closing, "InspectorUI.selection is header");
executeSoon(function() {
InspectorUI.closeInspectorUI(true);
InspectorUI.closeInspectorUI();
});
}
@ -196,11 +198,12 @@ function inspectNodesFromContextTestTrap()
ok(false, "Inspector UI has been opened again. We Should Not Be Here!");
}
function finishInspectorTests()
function finishInspectorTests(subject, topic, aWinIdString)
{
Services.obs.removeObserver(finishInspectorTests,
InspectorUI.INSPECTOR_NOTIFICATIONS.CLOSED);
InspectorUI.INSPECTOR_NOTIFICATIONS.DESTROYED);
is(parseInt(aWinIdString), winId, "winId of destroyed Inspector matches");
ok(!InspectorUI.highlighter, "Highlighter is gone");
ok(!InspectorUI.treePanel, "Inspector Tree Panel is closed");
ok(!InspectorUI.inspecting, "Inspector is not inspecting");
@ -211,6 +214,7 @@ function finishInspectorTests()
is(InspectorUI.sidebarDeck.children.length, 0, "No items in the Sidebar deck");
ok(!InspectorUI.toolbar, "toolbar is hidden");
Services.obs.removeObserver(inspectNodesFromContextTestTrap, InspectorUI.INSPECTOR_NOTIFICATIONS.OPENED);
gBrowser.removeCurrentTab();
finish();
}