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

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

Issue 2712513002: DevTools: extract ObjectUI module from Components (Closed)
Patch Set: fix build.gn Created 3 years, 10 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/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
deleted file mode 100644
index 8266ac35ff4630a2c876aaf51b6610579a4786f6..0000000000000000000000000000000000000000
--- a/third_party/WebKit/Source/devtools/front_end/components/RemoteObjectPreviewFormatter.js
+++ /dev/null
@@ -1,250 +0,0 @@
-// Copyright (c) 2015 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-/**
- * @unrestricted
- */
-Components.RemoteObjectPreviewFormatter = class {
- /**
- * @param {!Protocol.Runtime.PropertyPreview} a
- * @param {!Protocol.Runtime.PropertyPreview} b
- * @return {number}
- */
- static _objectPropertyComparator(a, b) {
- if (a.type !== 'function' && b.type === 'function')
- return -1;
- if (a.type === 'function' && b.type !== 'function')
- return 1;
- return 0;
- }
-
- /**
- * @param {!Element} parentElement
- * @param {!Protocol.Runtime.ObjectPreview} preview
- * @param {boolean} isEntry
- */
- appendObjectPreview(parentElement, preview, isEntry) {
- const previewExperimentEnabled = Runtime.experiments.isEnabled('objectPreviews');
- var description = preview.description;
- if (preview.type !== 'object' || preview.subtype === 'null' || (previewExperimentEnabled && isEntry)) {
- parentElement.appendChild(this.renderPropertyPreview(preview.type, preview.subtype, description));
- return;
- }
- 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, ' ');
- }
- }
-
- parentElement.createTextChild(isArrayOrTypedArray ? '[' : '{');
- if (preview.entries)
- this._appendEntriesPreview(parentElement, preview);
- else if (isArrayOrTypedArray)
- this._appendArrayPropertiesPreview(parentElement, preview);
- else
- this._appendObjectPropertiesPreview(parentElement, preview);
- if (preview.overflow)
- parentElement.createChild('span').textContent = '\u2026';
- parentElement.createTextChild(isArrayOrTypedArray ? ']' : '}');
- }
-
- /**
- * @param {string} description
- * @return {string}
- */
- _abbreviateFullQualifiedClassName(description) {
- var abbreviatedDescription = description.split('.');
- for (var i = 0; i < abbreviatedDescription.length - 1; ++i)
- abbreviatedDescription[i] = abbreviatedDescription[i].trimMiddle(3);
- return abbreviatedDescription.join('.');
- }
-
- /**
- * @param {!Element} parentElement
- * @param {!Protocol.Runtime.ObjectPreview} preview
- */
- _appendObjectPropertiesPreview(parentElement, preview) {
- var properties = preview.properties.filter(p => p.type !== 'accessor')
- .stableSort(Components.RemoteObjectPreviewFormatter._objectPropertyComparator);
- 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 indexProperties = preview.properties.filter(p => toArrayIndex(p.name) !== -1).stableSort(arrayEntryComparator);
- var otherProperties = preview.properties.filter(p => toArrayIndex(p.name) === -1)
- .stableSort(Components.RemoteObjectPreviewFormatter._objectPropertyComparator);
-
- /**
- * @param {!Protocol.Runtime.PropertyPreview} a
- * @param {!Protocol.Runtime.PropertyPreview} b
- * @return {number}
- */
- function arrayEntryComparator(a, b) {
- return toArrayIndex(a.name) - toArrayIndex(b.name);
- }
-
- /**
- * @param {string} name
- * @return {number}
- */
- function toArrayIndex(name) {
- var index = name >>> 0;
- if (String(index) === name && index < arrayLength)
- return index;
- return -1;
- }
-
- // Gaps can be shown when all properties are guaranteed to be in the preview.
- var canShowGaps = !preview.overflow;
- var lastNonEmptyArrayIndex = -1;
- var elementsAdded = false;
- for (var i = 0; i < indexProperties.length; ++i) {
- if (elementsAdded)
- parentElement.createTextChild(', ');
-
- var property = indexProperties[i];
- var index = toArrayIndex(property.name);
- if (canShowGaps && index - lastNonEmptyArrayIndex > 1) {
- appendUndefined(index);
- parentElement.createTextChild(', ');
- }
- if (!canShowGaps && i !== index) {
- parentElement.appendChild(this._renderDisplayName(property.name));
- parentElement.createTextChild(': ');
- }
- parentElement.appendChild(this._renderPropertyPreviewOrAccessor([property]));
- lastNonEmptyArrayIndex = index;
- elementsAdded = true;
- }
-
- if (canShowGaps && arrayLength - lastNonEmptyArrayIndex > 1) {
- if (elementsAdded)
- parentElement.createTextChild(', ');
- appendUndefined(arrayLength);
- }
-
- for (var i = 0; i < otherProperties.length; ++i) {
- if (elementsAdded)
- parentElement.createTextChild(', ');
-
- var property = otherProperties[i];
- parentElement.appendChild(this._renderDisplayName(property.name));
- parentElement.createTextChild(': ');
- parentElement.appendChild(this._renderPropertyPreviewOrAccessor([property]));
- elementsAdded = true;
- }
-
- /**
- * @param {number} index
- */
- function appendUndefined(index) {
- var span = parentElement.createChild('span', 'object-value-undefined');
- span.textContent = Common.UIString('undefined × %d', index - lastNonEmptyArrayIndex - 1);
- elementsAdded = true;
- }
- }
-
- /**
- * @param {!Element} parentElement
- * @param {!Protocol.Runtime.ObjectPreview} preview
- */
- _appendEntriesPreview(parentElement, preview) {
- for (var i = 0; i < preview.entries.length; ++i) {
- if (i > 0)
- parentElement.createTextChild(', ');
-
- var entry = preview.entries[i];
- if (entry.key) {
- this.appendObjectPreview(parentElement, entry.key, true /* isEntry */);
- parentElement.createTextChild(' => ');
- }
- this.appendObjectPreview(parentElement, entry.value, true /* isEntry */);
- }
- }
-
- /**
- * @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;
- }
-
- /**
- * @param {!Array.<!Protocol.Runtime.PropertyPreview>} propertyPath
- * @return {!Element}
- */
- _renderPropertyPreviewOrAccessor(propertyPath) {
- var property = propertyPath.peekLast();
- return this.renderPropertyPreview(property.type, /** @type {string} */ (property.subtype), property.value);
- }
-
- /**
- * @param {string} type
- * @param {string=} subtype
- * @param {string=} description
- * @return {!Element}
- */
- renderPropertyPreview(type, subtype, description) {
- var span = createElementWithClass('span', 'object-value-' + (subtype || type));
- description = description || '';
-
- if (type === 'accessor') {
- span.textContent = '(...)';
- span.title = Common.UIString('The property is computed with a getter');
- return span;
- }
-
- if (type === 'function') {
- span.textContent = 'function';
- return span;
- }
-
- if (type === 'object' && subtype === 'node' && description) {
- Components.DOMPresentationUtils.createSpansForNodeTitle(span, description);
- return span;
- }
-
- if (type === 'string') {
- span.createTextChildren('"', description.replace(/\n/g, '\u21B5'), '"');
- return span;
- }
-
- if (type === 'object' && !subtype) {
- span.textContent = this._abbreviateFullQualifiedClassName(description);
- span.title = description;
- return span;
- }
-
- span.textContent = description;
- return span;
- }
-};

Powered by Google App Engine
This is Rietveld 408576698