From 2f23ac8d4c7f085103d82fa449e633a352f33b6f Mon Sep 17 00:00:00 2001 From: Sinduja Ramaraj Date: Tue, 11 Jun 2013 08:28:00 +0300 Subject: [PATCH] Bug 840247 - Entering the Inspector from the Web Console should show the and tag expanded. r=jwalker --- browser/devtools/inspector/inspector-panel.js | 41 +++++++++++++------ ...inspector_bug_672902_keyboard_shortcuts.js | 18 ++------ .../test/browser_inspector_markup_edit.js | 9 +--- .../browser_inspector_markup_navigation.js | 4 +- .../test/browser_ruleview_focus.js | 4 +- 5 files changed, 36 insertions(+), 40 deletions(-) diff --git a/browser/devtools/inspector/inspector-panel.js b/browser/devtools/inspector/inspector-panel.js index 79cba301ea36..e402285d35ea 100644 --- a/browser/devtools/inspector/inspector-panel.js +++ b/browser/devtools/inspector/inspector-panel.js @@ -122,17 +122,19 @@ InspectorPanel.prototype = { // All the components are initialized. Let's select a node. if (this.target.isLocalTab) { - let root = this.browser.contentDocument.documentElement; - this._selection.setNode(root); + this._selection.setNode( + this._getDefaultNodeForSelection(this.browser.contentDocument)); } else if (this.target.window) { - let root = this.target.window.document.documentElement; - this._selection.setNode(root); + this._selection.setNode( + this._getDefaultNodeForSelection(this.target.window.document)); } if (this.highlighter) { this.highlighter.unlock(); } + this.markup.expandNode(this.selection.node); + this.emit("ready"); deferred.resolve(this); }.bind(this)); @@ -143,6 +145,16 @@ InspectorPanel.prototype = { return deferred.promise; }, + /** + * Select node for default selection + */ + _getDefaultNodeForSelection : function(document) { + // if available set body node as default selected node + // else set documentElement + var defaultNode = document.body || document.documentElement; + return defaultNode; + }, + /** * Selection object (read only) */ @@ -253,21 +265,26 @@ InspectorPanel.prototype = { this.selection.setNode(null); this._destroyMarkup(); this.isDirty = false; - let self = this; - function onDOMReady() { + let onDOMReady = function() { newWindow.removeEventListener("DOMContentLoaded", onDOMReady, true); - if (self._destroyed) { + if (this._destroyed) { return; } - if (!self.selection.node) { - self.selection.setNode(newWindow.document.documentElement, "navigateaway"); + if (!this.selection.node) { + let defaultNode = this._getDefaultNodeForSelection(newWindow.document); + this.selection.setNode(defaultNode, "navigateaway"); } - self._initMarkup(); - self.setupSearchBox(); - } + this._initMarkup(); + + this.once("markuploaded", () => { + this.markup.expandNode(this.selection.node); + }); + + this.setupSearchBox(); + }.bind(this); if (newWindow.document.readyState == "loading") { newWindow.addEventListener("DOMContentLoaded", onDOMReady, true); diff --git a/browser/devtools/inspector/test/browser_inspector_bug_672902_keyboard_shortcuts.js b/browser/devtools/inspector/test/browser_inspector_bug_672902_keyboard_shortcuts.js index f61ab3805e22..79ba64580ffb 100644 --- a/browser/devtools/inspector/test/browser_inspector_bug_672902_keyboard_shortcuts.js +++ b/browser/devtools/inspector/test/browser_inspector_bug_672902_keyboard_shortcuts.js @@ -35,28 +35,16 @@ function test() inspector = aInspector; executeSoon(function() { - inspector.selection.once("new-node", highlightBodyNode); + inspector.selection.once("new-node", highlightHeaderNode); // Test that navigating around without a selected node gets us to the - // body element. - node = doc.querySelector("body"); + // head element. + node = doc.querySelector("h1"); let bc = inspector.breadcrumbs; bc.nodeHierarchy[bc.currentIndex].button.focus(); EventUtils.synthesizeKey("VK_RIGHT", { }); }); } - function highlightBodyNode() - { - is(inspector.selection.node, node, "selected body element"); - - executeSoon(function() { - inspector.selection.once("new-node", highlightHeaderNode); - // Test that moving to the child works. - node = doc.querySelector("h1"); - EventUtils.synthesizeKey("VK_RIGHT", { }); - }); - } - function highlightHeaderNode() { is(inspector.selection.node, node, "selected h1 element"); diff --git a/browser/devtools/markupview/test/browser_inspector_markup_edit.js b/browser/devtools/markupview/test/browser_inspector_markup_edit.js index 24e66d98dbc9..89af699149ea 100644 --- a/browser/devtools/markupview/test/browser_inspector_markup_edit.js +++ b/browser/devtools/markupview/test/browser_inspector_markup_edit.js @@ -255,14 +255,7 @@ function test() { var target = TargetFactory.forTab(gBrowser.selectedTab); gDevTools.showToolbox(target, "inspector").then(function(toolbox) { inspector = toolbox.getCurrentPanel(); - runTests(); - }); - } - - function runTests() { - inspector.selection.once("new-node", startTests); - executeSoon(function() { - inspector.selection.setNode(doc.body); + startTests(); }); } diff --git a/browser/devtools/markupview/test/browser_inspector_markup_navigation.js b/browser/devtools/markupview/test/browser_inspector_markup_navigation.js index aff374d9e889..e36d3aa60f76 100644 --- a/browser/devtools/markupview/test/browser_inspector_markup_navigation.js +++ b/browser/devtools/markupview/test/browser_inspector_markup_navigation.js @@ -10,10 +10,10 @@ function test() { let doc; let keySequences = [ - ["right", "html"], + ["pageup", "*doctype*"], + ["down", "html"], ["down", "head"], ["down", "body"], - ["right", "body"], ["down", "node0"], ["right", "node0"], ["down", "node1"], diff --git a/browser/devtools/styleinspector/test/browser_ruleview_focus.js b/browser/devtools/styleinspector/test/browser_ruleview_focus.js index 189e07a39577..da45169ae8cf 100644 --- a/browser/devtools/styleinspector/test/browser_ruleview_focus.js +++ b/browser/devtools/styleinspector/test/browser_ruleview_focus.js @@ -18,10 +18,8 @@ function openRuleView() // Highlight a node. let node = content.document.getElementsByTagName("h1")[0]; - inspector.selection.once("new-node", testFocus); - inspector.sidebar.once("ruleview-ready", - () => inspector.selection.setNode(doc.body)); + inspector.sidebar.once("ruleview-ready", testFocus); }); }