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

Unified Diff: third_party/WebKit/Source/devtools/front_end/components/ObjectPropertiesSection.js

Issue 2606733003: DevTools: clean up ObjectPropertiesSection.createValueElement (Closed)
Patch Set: actually fix test Created 3 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
« no previous file with comments | « third_party/WebKit/LayoutTests/inspector/extensions/extensions-audits-expected.txt ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/devtools/front_end/components/ObjectPropertiesSection.js
diff --git a/third_party/WebKit/Source/devtools/front_end/components/ObjectPropertiesSection.js b/third_party/WebKit/Source/devtools/front_end/components/ObjectPropertiesSection.js
index c6004774e827151d3e0f9d7e3c6c7be3ff558cfa..21f0f9756b13289e5e1b850ea0b01415ea575242 100644
--- a/third_party/WebKit/Source/devtools/front_end/components/ObjectPropertiesSection.js
+++ b/third_party/WebKit/Source/devtools/front_end/components/ObjectPropertiesSection.js
@@ -137,7 +137,7 @@ Components.ObjectPropertiesSection = class extends UI.TreeOutlineInShadow {
*/
static valueElementForFunctionDescription(description, includePreview, defaultName) {
var valueElement = createElementWithClass('span', 'object-value-function');
- var text = description.replace(/^function [gs]et /, 'function ');
+ var text = description ? description.replace(/^function [gs]et /, 'function ') : '';
defaultName = defaultName || '';
// This set of best-effort regular expressions captures common function descriptions.
@@ -181,6 +181,7 @@ Components.ObjectPropertiesSection = class extends UI.TreeOutlineInShadow {
} else {
addElements('function', text, nameAndArguments(text));
}
+ valueElement.title = description || '';
return valueElement;
/**
@@ -238,84 +239,91 @@ Components.ObjectPropertiesSection = class extends UI.TreeOutlineInShadow {
* @return {!Element}
*/
static createValueElement(value, wasThrown, parentElement, linkifier) {
- var valueElement = createElementWithClass('span', 'value');
+ var valueElement;
var type = value.type;
var subtype = value.subtype;
var description = value.description;
- var prefix;
- var valueText;
- var suffix;
- if (wasThrown) {
- prefix = '[Exception: ';
- valueText = description;
- suffix = ']';
+ if (type === 'object' && subtype === 'internal#location') {
+ var rawLocation = value.debuggerModel().createRawLocationByScriptId(
+ value.value.scriptId, value.value.lineNumber, value.value.columnNumber);
+ if (rawLocation && linkifier)
+ return linkifier.linkifyRawLocation(rawLocation, '');
+ valueElement = createUnknownInternalLocationElement();
} else if (type === 'string' && typeof description === 'string') {
- // Render \n as a nice unicode cr symbol.
- prefix = '"';
- valueText = description.replace(/\n/g, '\u21B5');
- suffix = '"';
- } else if (type !== 'object' || subtype !== 'node') {
- valueText = description;
- }
-
- if (type === 'function') {
+ valueElement = createStringElement();
+ } else if (type === 'function') {
valueElement = Components.ObjectPropertiesSection.valueElementForFunctionDescription(description);
- } else if (type !== 'number' || valueText.indexOf('e') === -1) {
- valueElement.setTextContentTruncatedIfNeeded(valueText || '');
- if (prefix)
- valueElement.insertBefore(createTextNode(prefix), valueElement.firstChild);
- if (suffix)
- valueElement.createTextChild(suffix);
- } else {
- var numberParts = valueText.split('e');
- var mantissa = valueElement.createChild('span', 'object-value-scientific-notation-mantissa');
- mantissa.textContent = numberParts[0];
- var exponent = valueElement.createChild('span', 'object-value-scientific-notation-exponent');
- exponent.textContent = 'e' + numberParts[1];
- valueElement.classList.add('object-value-scientific-notation-number');
+ } else if (type === 'object' && subtype === 'node' && description) {
+ valueElement = createNodeElement();
+ } else if (type === 'number' && description && description.indexOf('e') !== -1) {
+ valueElement = createNumberWithExponentElement();
if (parentElement) // FIXME: do it in the caller.
parentElement.classList.add('hbox');
- }
-
- if (wasThrown)
- valueElement.classList.add('error');
- if (subtype || type)
- valueElement.classList.add('object-value-' + (subtype || type));
-
- if (type === 'object' && subtype === 'node' && description) {
- Components.DOMPresentationUtils.createSpansForNodeTitle(valueElement, description);
- valueElement.addEventListener('click', mouseClick, false);
- valueElement.addEventListener('mousemove', mouseMove, false);
- valueElement.addEventListener('mouseleave', mouseLeave, false);
} else {
+ valueElement = createElementWithClass('span', 'object-value-' + (subtype || type));
+ valueElement.setTextContentTruncatedIfNeeded(description);
valueElement.title = description || '';
}
- if (type === 'object' && subtype === 'internal#location') {
- var rawLocation = value.debuggerModel().createRawLocationByScriptId(
- value.value.scriptId, value.value.lineNumber, value.value.columnNumber);
- if (rawLocation && linkifier)
- return linkifier.linkifyRawLocation(rawLocation, '');
- valueElement.textContent = '<unknown>';
+ if (wasThrown) {
+ var wrapperElement = createElementWithClass('span', 'error value');
+ wrapperElement.createTextChild('[' + Common.UIString('Exception') + ': ');
+ wrapperElement.appendChild(valueElement);
+ wrapperElement.createTextChild(']');
+ return wrapperElement;
}
+ valueElement.classList.add('value');
+ return valueElement;
- function mouseMove() {
- SDK.DOMModel.highlightObjectAsDOMNode(value);
+ /**
+ * @return {!Element}
+ */
+ function createUnknownInternalLocationElement() {
+ var valueElement = createElementWithClass('span');
+ valueElement.textContent = '<' + Common.UIString('unknown') + '>';
+ valueElement.title = description || '';
+ return valueElement;
}
- function mouseLeave() {
- SDK.DOMModel.hideDOMNodeHighlight();
+ /**
+ * @return {!Element}
+ */
+ function createStringElement() {
+ var valueElement = createElementWithClass('span', 'object-value-string');
+ valueElement.createChild('span', 'object-value-string-quote').textContent = '"';
+ valueElement.createTextChild('').setTextContentTruncatedIfNeeded(description.replace(/\n/g, '\u21B5'));
+ valueElement.createChild('span', 'object-value-string-quote').textContent = '"';
+ valueElement.title = description || '';
+ return valueElement;
}
/**
- * @param {!Event} event
+ * @return {!Element}
*/
- function mouseClick(event) {
- Common.Revealer.reveal(value);
- event.consume(true);
+ function createNodeElement() {
+ var valueElement = createElementWithClass('span', 'object-value-node');
+ Components.DOMPresentationUtils.createSpansForNodeTitle(valueElement, /** @type {string} */ (description));
+ valueElement.addEventListener('click', event => {
+ Common.Revealer.reveal(value);
+ event.consume(true);
+ }, false);
+ valueElement.addEventListener('mousemove', () => SDK.DOMModel.highlightObjectAsDOMNode(value), false);
+ valueElement.addEventListener('mouseleave', () => SDK.DOMModel.hideDOMNodeHighlight(), false);
+ return valueElement;
}
- return valueElement;
+ /**
+ * @return {!Element}
+ */
+ function createNumberWithExponentElement() {
+ var valueElement = createElementWithClass('span', 'object-value-number');
+ var numberParts = description.split('e');
+ valueElement.createChild('span', 'object-value-scientific-notation-mantissa').textContent = numberParts[0];
+ valueElement.createChild('span', 'object-value-scientific-notation-exponent').textContent = 'e' + numberParts[1];
+ valueElement.classList.add('object-value-scientific-notation-number');
+ valueElement.title = description || '';
+ return valueElement;
+ }
}
/**
« no previous file with comments | « third_party/WebKit/LayoutTests/inspector/extensions/extensions-audits-expected.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698