Bug 1224504 - Selecting the rule view panel should refresh the panel content. r=jdescottes

That's what the code intended to do, but it was checking an unexisting property.
This patch fixes that and adds a test to make sure changes are synced in the rule
view when editing properties in the layout view.
Move getRuleViewRuleEditor from inspector/rules/test/head to inspector/test/head in order to use
it in computed test folder. Remove the duplicated function in inspector/shared/test/head.

MozReview-Commit-ID: JbE4ppheSZC

--HG--
extra : transplant_source : %DDO%ED%10%C4%C1s%06%22D%D4%82%13%3F%1A%F0%E8%9D%F9%7B
This commit is contained in:
Nicolas Chevobbe 2016-06-20 18:20:08 +02:00
Родитель 2afc94cd98
Коммит 213fc9c79b
6 изменённых файлов: 63 добавлений и 35 удалений

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

@ -20,6 +20,7 @@ support-files =
[browser_layout_editablemodel_stylerules.js]
[browser_layout_guides.js]
[browser_layout_rotate-labels-on-sides.js]
[browser_layout_sync.js]
[browser_layout_tooltips.js]
[browser_layout_update-after-navigation.js]
[browser_layout_update-after-reload.js]

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

@ -0,0 +1,44 @@
/* 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";
// Test editing box model syncs with the rule view.
const TEST_URI = "<p>hello</p>";
add_task(function* () {
yield addTab("data:text/html," + encodeURIComponent(TEST_URI));
let {inspector, view} = yield openLayoutView();
info("When a property is edited, it should sync in the rule view");
yield selectNode("p", inspector);
info("Modify padding-bottom in layout view");
let span = view.doc.querySelector(".layout-padding.layout-bottom > span");
EventUtils.synthesizeMouseAtCenter(span, {}, view.doc.defaultView);
let editor = view.doc.querySelector(".styleinspector-propertyeditor");
EventUtils.synthesizeKey("7", {}, view.doc.defaultView);
yield waitForUpdate(inspector);
is(editor.value, "7", "Should have the right value in the editor.");
EventUtils.synthesizeKey("VK_RETURN", {}, view.doc.defaultView);
let onRuleViewRefreshed = once(inspector, "rule-view-refreshed");
let onRuleViewSelected = once(inspector.sidebar, "ruleview-selected");
info("Select the rule view and check that the property was synced there");
let ruleView = selectRuleView(inspector);
info("Wait for the rule view to be selected");
yield onRuleViewSelected;
info("Wait for the rule view to be refreshed");
yield onRuleViewRefreshed;
ok(true, "The rule view was refreshed");
let ruleEditor = getRuleViewRuleEditor(ruleView, 0);
let textProp = ruleEditor.rule.textProps[0];
is(textProp.value, "7px", "The property has the right value");
});

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

@ -1652,7 +1652,7 @@ RuleViewTool.prototype = {
},
onPanelSelected: function () {
if (this.inspector.selection.nodeFront === this.view.viewedElement) {
if (this.inspector.selection.nodeFront === this.view._viewedElement) {
this.refresh();
} else {
this.onSelected();

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

@ -489,23 +489,6 @@ function getRuleViewLinkTextByIndex(view, index) {
return link.querySelector(".ruleview-rule-source-label").value;
}
/**
* Get the rule editor from the rule-view given its index
*
* @param {CssRuleView} view
* The instance of the rule-view panel
* @param {Number} childrenIndex
* The children index of the element to get
* @param {Number} nodeIndex
* The child node index of the element to get
* @return {DOMNode} The rule editor if any at this index
*/
function getRuleViewRuleEditor(view, childrenIndex, nodeIndex) {
return nodeIndex !== undefined ?
view.element.children[childrenIndex].childNodes[nodeIndex]._ruleEditor :
view.element.children[childrenIndex]._ruleEditor;
}
/**
* Simulate adding a new property in an existing rule in the rule-view.
*

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

@ -424,23 +424,6 @@ function getRuleViewLinkTextByIndex(view, index) {
return link.querySelector(".ruleview-rule-source-label").value;
}
/**
* Get the rule editor from the rule-view given its index
*
* @param {CssRuleView} view
* The instance of the rule-view panel
* @param {Number} childrenIndex
* The children index of the element to get
* @param {Number} nodeIndex
* The child node index of the element to get
* @return {DOMNode} The rule editor if any at this index
*/
function getRuleViewRuleEditor(view, childrenIndex, nodeIndex) {
return nodeIndex !== undefined ?
view.element.children[childrenIndex].childNodes[nodeIndex]._ruleEditor :
view.element.children[childrenIndex]._ruleEditor;
}
/**
* Click on a rule-view's close brace to focus a new property name editor
*

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

@ -826,3 +826,20 @@ function openContextMenuAndGetAllItems(inspector, options) {
return allItems;
}
/**
* Get the rule editor from the rule-view given its index
*
* @param {CssRuleView} view
* The instance of the rule-view panel
* @param {Number} childrenIndex
* The children index of the element to get
* @param {Number} nodeIndex
* The child node index of the element to get
* @return {DOMNode} The rule editor if any at this index
*/
function getRuleViewRuleEditor(view, childrenIndex, nodeIndex) {
return nodeIndex !== undefined ?
view.element.children[childrenIndex].childNodes[nodeIndex]._ruleEditor :
view.element.children[childrenIndex]._ruleEditor;
}