Index: third_party/WebKit/Source/devtools/front_end/components/RemoteObjectPreviewFormatter.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/components/RemoteObjectPreviewFormatter.js b/third_party/WebKit/Source/devtools/front_end/components/RemoteObjectPreviewFormatter.js |
index 30cb1a700ee91cca76392ab33f5162e37f90aa55..8266ac35ff4630a2c876aaf51b6610579a4786f6 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/components/RemoteObjectPreviewFormatter.js |
+++ b/third_party/WebKit/Source/devtools/front_end/components/RemoteObjectPreviewFormatter.js |
@@ -21,27 +21,43 @@ Components.RemoteObjectPreviewFormatter = class { |
/** |
* @param {!Element} parentElement |
* @param {!Protocol.Runtime.ObjectPreview} preview |
+ * @param {boolean} isEntry |
*/ |
- appendObjectPreview(parentElement, preview) { |
+ appendObjectPreview(parentElement, preview, isEntry) { |
+ const previewExperimentEnabled = Runtime.experiments.isEnabled('objectPreviews'); |
var description = preview.description; |
- if (preview.type !== 'object' || preview.subtype === 'null') { |
+ if (preview.type !== 'object' || preview.subtype === 'null' || (previewExperimentEnabled && isEntry)) { |
parentElement.appendChild(this.renderPropertyPreview(preview.type, preview.subtype, description)); |
return; |
} |
- if (description && preview.subtype !== 'array') |
- parentElement.createTextChildren(description, ' '); |
+ const isArrayOrTypedArray = preview.subtype === 'array' || preview.subtype === 'typedarray'; |
+ if (description) { |
+ if (previewExperimentEnabled) { |
+ // Hide the description for plain objects and plain arrays. |
+ const plainObjectDescription = 'Object'; |
+ const size = SDK.RemoteObject.arrayLength(preview) || SDK.RemoteObject.mapOrSetEntriesCount(preview); |
+ var text = preview.subtype === 'typedarray' ? SDK.RemoteObject.arrayNameFromDescription(description) : ''; |
+ if (isArrayOrTypedArray) |
+ text += size > 1 ? ('(' + size + ')') : ''; |
+ else |
+ text = description === plainObjectDescription ? '' : description; |
+ if (text.length > 0) |
+ parentElement.createChild('span', 'object-description').textContent = text + ' '; |
+ } else if (preview.subtype !== 'array') { |
+ parentElement.createTextChildren(description, ' '); |
+ } |
+ } |
- var isArray = preview.subtype === 'array' || preview.subtype === 'typedarray'; |
- parentElement.createTextChild(isArray ? '[' : '{'); |
+ parentElement.createTextChild(isArrayOrTypedArray ? '[' : '{'); |
if (preview.entries) |
this._appendEntriesPreview(parentElement, preview); |
- else if (isArray) |
+ else if (isArrayOrTypedArray) |
this._appendArrayPropertiesPreview(parentElement, preview); |
else |
this._appendObjectPropertiesPreview(parentElement, preview); |
if (preview.overflow) |
parentElement.createChild('span').textContent = '\u2026'; |
- parentElement.createTextChild(isArray ? ']' : '}'); |
+ parentElement.createTextChild(isArrayOrTypedArray ? ']' : '}'); |
} |
/** |
@@ -164,10 +180,10 @@ Components.RemoteObjectPreviewFormatter = class { |
var entry = preview.entries[i]; |
if (entry.key) { |
- this.appendObjectPreview(parentElement, entry.key); |
+ this.appendObjectPreview(parentElement, entry.key, true /* isEntry */); |
parentElement.createTextChild(' => '); |
} |
- this.appendObjectPreview(parentElement, entry.value); |
+ this.appendObjectPreview(parentElement, entry.value, true /* isEntry */); |
} |
} |