Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(133)

Unified Diff: third_party/WebKit/Source/devtools/front_end/elements/ComputedStyleWidget.js

Issue 1530353003: DevTools: jump from computed style to styles sidebar pane. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebaseline Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/devtools/front_end/elements/ComputedStyleWidget.js
diff --git a/third_party/WebKit/Source/devtools/front_end/elements/ComputedStyleWidget.js b/third_party/WebKit/Source/devtools/front_end/elements/ComputedStyleWidget.js
index 8e46526b8c8d2c6ffb165cf0bb52b4f96a218287..9aab9a7af2baada11ac0f46ee94050c7ade43c06 100644
--- a/third_party/WebKit/Source/devtools/front_end/elements/ComputedStyleWidget.js
+++ b/third_party/WebKit/Source/devtools/front_end/elements/ComputedStyleWidget.js
@@ -29,11 +29,12 @@
/**
* @constructor
+ * @extends {WebInspector.ThrottledWidget}
* @param {!WebInspector.StylesSidebarPane} stylesSidebarPane
* @param {!WebInspector.SharedSidebarModel} sharedModel
- * @extends {WebInspector.ThrottledWidget}
+ * @param {function(!WebInspector.CSSProperty)} revealCallback
*/
-WebInspector.ComputedStyleWidget = function(stylesSidebarPane, sharedModel)
+WebInspector.ComputedStyleWidget = function(stylesSidebarPane, sharedModel, revealCallback)
{
WebInspector.ThrottledWidget.call(this);
this.element.classList.add("computed-style-sidebar-pane");
@@ -63,6 +64,7 @@ WebInspector.ComputedStyleWidget = function(stylesSidebarPane, sharedModel)
this._stylesSidebarPane = stylesSidebarPane;
this._linkifier = new WebInspector.Linkifier(new WebInspector.Linkifier.DefaultCSSFormatter());
+ this._revealCallback = revealCallback;
/**
* @param {?RegExp} regex
@@ -78,11 +80,12 @@ WebInspector.ComputedStyleWidget = function(stylesSidebarPane, sharedModel)
/**
* @param {!WebInspector.StylesSidebarPane} stylesSidebarPane
* @param {!WebInspector.SharedSidebarModel} sharedModel
+ * @param {function(!WebInspector.CSSProperty)} revealCallback
* @return {!WebInspector.ElementsSidebarViewWrapperPane}
*/
-WebInspector.ComputedStyleWidget.createSidebarWrapper = function(stylesSidebarPane, sharedModel)
+WebInspector.ComputedStyleWidget.createSidebarWrapper = function(stylesSidebarPane, sharedModel, revealCallback)
{
- var widget = new WebInspector.ComputedStyleWidget(stylesSidebarPane, sharedModel);
+ var widget = new WebInspector.ComputedStyleWidget(stylesSidebarPane, sharedModel, revealCallback);
return new WebInspector.ElementsSidebarViewWrapperPane(WebInspector.UIString("Computed Style"), widget)
}
@@ -185,10 +188,12 @@ WebInspector.ComputedStyleWidget.prototype = {
var trace = propertyTraces.get(propertyName);
if (trace) {
- this._renderPropertyTrace(cssModel, matchedStyles, nodeStyle.node, treeElement, trace);
+ var activeProperty = this._renderPropertyTrace(cssModel, matchedStyles, nodeStyle.node, treeElement, trace);
treeElement.listItemElement.addEventListener("mousedown", consumeEvent, false);
treeElement.listItemElement.addEventListener("dblclick", consumeEvent, false);
treeElement.listItemElement.addEventListener("click", handleClick.bind(null, treeElement), false);
+ var gotoSourceElement = propertyValueElement.createChild("div", "goto-source-icon");
+ gotoSourceElement.addEventListener("click", this._navigateToSource.bind(this, activeProperty));
}
}
@@ -222,24 +227,45 @@ WebInspector.ComputedStyleWidget.prototype = {
},
/**
+ * @param {!WebInspector.CSSProperty} cssProperty
+ * @param {!Event} event
+ */
+ _navigateToSource: function(cssProperty, event)
+ {
+ if (this._revealCallback)
+ this._revealCallback.call(null, cssProperty);
+ event.consume(true);
+ },
+
+ /**
* @param {!WebInspector.CSSStyleModel} cssModel
* @param {!WebInspector.CSSStyleModel.MatchedStyleResult} matchedStyles
* @param {!WebInspector.DOMNode} node
* @param {!TreeElement} rootTreeElement
* @param {!Array<!WebInspector.CSSProperty>} tracedProperties
+ * @return {!WebInspector.CSSProperty}
*/
_renderPropertyTrace: function(cssModel, matchedStyles, node, rootTreeElement, tracedProperties)
{
+ var activeProperty = null;
for (var property of tracedProperties) {
var trace = createElement("div");
trace.classList.add("property-trace");
if (matchedStyles.propertyState(property) === WebInspector.CSSStyleModel.MatchedStyleResult.PropertyState.Overloaded)
trace.classList.add("property-trace-inactive");
+ else
+ activeProperty = property;
var renderer = new WebInspector.StylesSidebarPropertyRenderer(null, node, property.name, /** @type {string} */(property.value));
renderer.setColorHandler(this._processColor.bind(this));
var valueElement = renderer.renderValue();
valueElement.classList.add("property-trace-value");
+ valueElement.addEventListener("click", this._navigateToSource.bind(this, property), false);
+ var gotoSourceElement = createElement("div");
+ gotoSourceElement.classList.add("goto-source-icon");
+ gotoSourceElement.addEventListener("click", this._navigateToSource.bind(this, property));
+ valueElement.insertBefore(gotoSourceElement, valueElement.firstChild);
+
trace.appendChild(valueElement);
var rule = property.ownerStyle.parentRule;
@@ -257,6 +283,7 @@ WebInspector.ComputedStyleWidget.prototype = {
traceTreeElement.selectable = false;
rootTreeElement.appendChild(traceTreeElement);
}
+ return /** @type {!WebInspector.CSSProperty} */(activeProperty);
},
/**

Powered by Google App Engine
This is Rietveld 408576698