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 c767dd5976fca7a8f3fdd253e32f4fae001bcae5..13124125924eeb437ab55b9cf809c7be0ca7ea1f 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/components/ObjectPropertiesSection.js |
+++ b/third_party/WebKit/Source/devtools/front_end/components/ObjectPropertiesSection.js |
@@ -181,6 +181,7 @@ Components.ObjectPropertiesSection = class extends UI.TreeOutlineInShadow { |
} else { |
addElements('function', text, nameAndArguments(text)); |
} |
+ valueElement.title = description || ''; |
return valueElement; |
/** |
@@ -219,15 +220,17 @@ Components.ObjectPropertiesSection = class extends UI.TreeOutlineInShadow { |
* @param {boolean} wasThrown |
* @param {!Element=} parentElement |
* @param {!Components.Linkifier=} linkifier |
+ * @param {boolean=} hidePreview |
* @return {!Element} |
*/ |
- static createValueElementWithCustomSupport(value, wasThrown, parentElement, linkifier) { |
+ static createValueElementWithCustomSupport(value, wasThrown, parentElement, linkifier, hidePreview) { |
if (value.customPreview()) { |
var result = (new Components.CustomPreviewComponent(value)).element; |
result.classList.add('object-properties-section-custom-section'); |
return result; |
} |
- return Components.ObjectPropertiesSection.createValueElement(value, wasThrown, parentElement, linkifier); |
+ return Components.ObjectPropertiesSection.createValueElement( |
+ value, wasThrown, parentElement, linkifier, hidePreview); |
} |
/** |
@@ -235,9 +238,10 @@ Components.ObjectPropertiesSection = class extends UI.TreeOutlineInShadow { |
* @param {boolean} wasThrown |
* @param {!Element=} parentElement |
* @param {!Components.Linkifier=} linkifier |
+ * @param {boolean=} hidePreview |
* @return {!Element} |
*/ |
- static createValueElement(value, wasThrown, parentElement, linkifier) { |
+ static createValueElement(value, wasThrown, parentElement, linkifier, hidePreview) { |
var valueElement; |
var type = value.type; |
var subtype = value.subtype; |
@@ -248,24 +252,25 @@ Components.ObjectPropertiesSection = class extends UI.TreeOutlineInShadow { |
if (rawLocation && linkifier) |
return linkifier.linkifyRawLocation(rawLocation, ''); |
valueElement = createUnknownInternalLocationElement(); |
- valueElement.title = description; |
} else if (type === 'string' && typeof description === 'string') { |
valueElement = createStringElement(); |
- valueElement.title = description; |
} else if (type === 'function') { |
valueElement = Components.ObjectPropertiesSection.valueElementForFunctionDescription(description); |
- valueElement.title = description; |
} else if (type === 'object' && subtype === 'node' && description) { |
valueElement = createNodeElement(); |
} else if (type === 'number' && description && description.indexOf('e') !== -1) { |
valueElement = createNumberWithExponentElement(); |
- valueElement.title = description; |
if (parentElement) // FIXME: do it in the caller. |
parentElement.classList.add('hbox'); |
} else { |
valueElement = createElementWithClass('span', 'object-value-' + (subtype || type)); |
- valueElement.setTextContentTruncatedIfNeeded(description); |
- valueElement.title = description; |
+ valueElement.title = description || ''; |
+ if (Runtime.experiments.isEnabled('objectPreviews') && value.preview && !hidePreview) { |
+ var previewFormatter = new Components.RemoteObjectPreviewFormatter(); |
+ previewFormatter.appendObjectPreview(valueElement, value.preview); |
+ } else { |
+ valueElement.setTextContentTruncatedIfNeeded(description); |
+ } |
} |
if (wasThrown) { |
@@ -284,6 +289,7 @@ Components.ObjectPropertiesSection = class extends UI.TreeOutlineInShadow { |
function createUnknownInternalLocationElement() { |
var valueElement = createElementWithClass('span'); |
valueElement.textContent = '<' + Common.UIString('unknown') + '>'; |
+ valueElement.title = description || ''; |
return valueElement; |
} |
@@ -295,6 +301,7 @@ Components.ObjectPropertiesSection = class extends UI.TreeOutlineInShadow { |
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; |
} |
@@ -309,7 +316,7 @@ Components.ObjectPropertiesSection = class extends UI.TreeOutlineInShadow { |
event.consume(true); |
}, false); |
valueElement.addEventListener('mousemove', () => SDK.DOMModel.highlightObjectAsDOMNode(value), false); |
- valueElement.addEventListener('mouseleave', SDK.DOMModel.hideDOMNodeHighlight, false); |
+ valueElement.addEventListener('mouseleave', () => SDK.DOMModel.hideDOMNodeHighlight(), false); |
return valueElement; |
} |
@@ -322,6 +329,7 @@ Components.ObjectPropertiesSection = class extends UI.TreeOutlineInShadow { |
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; |
} |
} |
@@ -546,10 +554,11 @@ Components.ObjectPropertyTreeElement = class extends UI.TreeElement { |
treeElement, properties, internalProperties, skipProto, targetValue || value, linkifier, emptyPlaceholder); |
} |
+ var generatePreview = Runtime.experiments.isEnabled('objectPreviews'); |
if (flattenProtoChain) |
- value.getAllProperties(false, callback); |
+ value.getAllProperties(false, generatePreview, callback); |
else |
- SDK.RemoteObject.loadFromObjectPerProto(value, callback); |
+ SDK.RemoteObject.loadFromObjectPerProto(value, generatePreview, callback); |
} |
/** |
@@ -781,8 +790,9 @@ Components.ObjectPropertyTreeElement = class extends UI.TreeElement { |
separatorElement.textContent = ': '; |
if (this.property.value) { |
+ var hidePreview = this.property.name === '__proto__'; |
this.valueElement = Components.ObjectPropertiesSection.createValueElementWithCustomSupport( |
- this.property.value, this.property.wasThrown, this.listItemElement, this._linkifier); |
+ this.property.value, this.property.wasThrown, this.listItemElement, this._linkifier, hidePreview); |
this.valueElement.addEventListener('contextmenu', this._contextMenuFired.bind(this, this.property), false); |
} else if (this.property.getter) { |
this.valueElement = Components.ObjectPropertyTreeElement.createRemoteObjectAccessorPropertySpan( |
@@ -1166,7 +1176,8 @@ Components.ArrayGroupingTreeElement = class extends UI.TreeElement { |
function processArrayFragment(arrayFragment, wasThrown) { |
if (!arrayFragment || wasThrown) |
return; |
- arrayFragment.getAllProperties(false, processProperties.bind(this)); |
+ arrayFragment.getAllProperties( |
+ false, Runtime.experiments.isEnabled('objectPreviews'), processProperties.bind(this)); |
} |
/** @this {Components.ArrayGroupingTreeElement} */ |
@@ -1224,7 +1235,7 @@ Components.ArrayGroupingTreeElement = class extends UI.TreeElement { |
function processObjectFragment(arrayFragment, wasThrown) { |
if (!arrayFragment || wasThrown) |
return; |
- arrayFragment.getOwnProperties(processProperties.bind(this)); |
+ arrayFragment.getOwnProperties(Runtime.experiments.isEnabled('objectPreviews'), processProperties.bind(this)); |
} |
/** |