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

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

Issue 2527773002: DevTools: separate array formatter from object formatter (Closed)
Patch Set: ac Created 4 years 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 | « no previous file | 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/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 a3e780d336f72591d36fa8cde1676b598cad1bba..1fc9f74bbb4cc8793bd489b207c2b906132e84b8 100644
--- a/third_party/WebKit/Source/devtools/front_end/components/RemoteObjectPreviewFormatter.js
+++ b/third_party/WebKit/Source/devtools/front_end/components/RemoteObjectPreviewFormatter.js
@@ -15,14 +15,22 @@ Components.RemoteObjectPreviewFormatter = class {
parentElement.appendChild(this.renderPropertyPreview(preview.type, preview.subtype, description));
return;
}
- if (description && preview.subtype !== 'array' && preview.subtype !== 'typedarray') {
+ var isArray = preview.subtype === 'array' || preview.subtype === 'typedarray';
+ if (description && !isArray) {
var text = preview.subtype ? description : this._abbreviateFullQualifiedClassName(description);
parentElement.createTextChildren(text, ' ');
}
+
+ parentElement.createTextChild(isArray ? '[' : '{');
if (preview.entries)
this._appendEntriesPreview(parentElement, preview);
+ else if (isArray)
+ this._appendArrayPropertiesPreview(parentElement, preview);
else
- this._appendPropertiesPreview(parentElement, preview);
+ this._appendObjectPropertiesPreview(parentElement, preview);
+ if (preview.overflow)
+ parentElement.createChild('span').textContent = '\u2026';
+ parentElement.createTextChild(isArray ? ']' : '}');
}
/**
@@ -40,14 +48,8 @@ Components.RemoteObjectPreviewFormatter = class {
* @param {!Element} parentElement
* @param {!Protocol.Runtime.ObjectPreview} preview
*/
- _appendPropertiesPreview(parentElement, preview) {
- var isArray = preview.subtype === 'array' || preview.subtype === 'typedarray';
- var arrayLength = SDK.RemoteObject.arrayLength(preview);
- var properties = preview.properties;
- if (isArray)
- properties = properties.slice().stableSort(compareIndexesFirst);
- else
- properties = properties.slice().stableSort(compareFunctionsLast);
+ _appendObjectPropertiesPreview(parentElement, preview) {
+ var properties = preview.properties.slice().stableSort(compareFunctionsLast);
/**
* @param {!Protocol.Runtime.PropertyPreview} a
@@ -61,6 +63,26 @@ Components.RemoteObjectPreviewFormatter = class {
return 0;
}
+ for (var i = 0; i < properties.length; ++i) {
+ if (i > 0)
+ parentElement.createTextChild(', ');
+
+ var property = properties[i];
+ parentElement.appendChild(this._renderDisplayName(property.name));
+ parentElement.createTextChild(': ');
+ parentElement.appendChild(this._renderPropertyPreviewOrAccessor([property]));
+ }
+ }
+
+ /**
+ * @param {!Element} parentElement
+ * @param {!Protocol.Runtime.ObjectPreview} preview
+ */
+ _appendArrayPropertiesPreview(parentElement, preview) {
+ var arrayLength = SDK.RemoteObject.arrayLength(preview);
+ var properties = preview.properties;
+ properties = properties.slice().stableSort(compareIndexesFirst);
+
/**
* @param {!Protocol.Runtime.PropertyPreview} a
* @param {!Protocol.Runtime.PropertyPreview} b
@@ -84,26 +106,17 @@ Components.RemoteObjectPreviewFormatter = class {
return -1;
}
- parentElement.createTextChild(isArray ? '[' : '{');
for (var i = 0; i < properties.length; ++i) {
if (i > 0)
parentElement.createTextChild(', ');
var property = properties[i];
- var name = property.name;
- if (!isArray || name !== String(i) || i >= arrayLength) {
- if (/^\s|\s$|^$|\n/.test(name))
- parentElement.createChild('span', 'name').createTextChildren('"', name.replace(/\n/g, '\u21B5'), '"');
- else
- parentElement.createChild('span', 'name').textContent = name;
+ if (property.name !== String(i) || i >= arrayLength) {
+ parentElement.appendChild(this._renderDisplayName(property.name));
parentElement.createTextChild(': ');
}
-
parentElement.appendChild(this._renderPropertyPreviewOrAccessor([property]));
}
- if (preview.overflow)
- parentElement.createChild('span').textContent = '\u2026';
- parentElement.createTextChild(isArray ? ']' : '}');
}
/**
@@ -111,7 +124,6 @@ Components.RemoteObjectPreviewFormatter = class {
* @param {!Protocol.Runtime.ObjectPreview} preview
*/
_appendEntriesPreview(parentElement, preview) {
- parentElement.createTextChild('{');
for (var i = 0; i < preview.entries.length; ++i) {
if (i > 0)
parentElement.createTextChild(', ');
@@ -123,9 +135,17 @@ Components.RemoteObjectPreviewFormatter = class {
}
this.appendObjectPreview(parentElement, entry.value);
}
- if (preview.overflow)
- parentElement.createChild('span').textContent = '\u2026';
- parentElement.createTextChild('}');
+ }
+
+ /**
+ * @param {string} name
+ * @return {!Element}
+ */
+ _renderDisplayName(name) {
+ var result = createElementWithClass('span', 'name');
+ var needsQuotes = /^\s|\s$|^$|\n/.test(name);
+ result.textContent = needsQuotes ? '"' + name.replace(/\n/g, '\u21B5') + '"' : name;
+ return result;
}
/**
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698