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

Unified Diff: third_party/WebKit/Source/devtools/front_end/sdk/RemoteObject.js

Issue 2605693003: DevTools: introduce object previews experiment (Closed)
Patch Set: rebase 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
Index: third_party/WebKit/Source/devtools/front_end/sdk/RemoteObject.js
diff --git a/third_party/WebKit/Source/devtools/front_end/sdk/RemoteObject.js b/third_party/WebKit/Source/devtools/front_end/sdk/RemoteObject.js
index efc30fd9f8e8525818f3029c82a653ca3199ec89..591eb5f58564935f72bf16f7f959f8b3c5b0f4b6 100644
--- a/third_party/WebKit/Source/devtools/front_end/sdk/RemoteObject.js
+++ b/third_party/WebKit/Source/devtools/front_end/sdk/RemoteObject.js
@@ -64,6 +64,15 @@ SDK.RemoteObject = class {
}
/**
+ * @param {string} description
+ * @return {string}
+ */
+ static arrayNameFromDescription(description) {
+ return description.replace(SDK.RemoteObject._descriptionLengthParenRegex, '')
+ .replace(SDK.RemoteObject._descriptionLengthSquareRegex, '');
+ }
+
+ /**
* @param {!SDK.RemoteObject|!Protocol.Runtime.RemoteObject|!Protocol.Runtime.ObjectPreview} object
* @return {number}
*/
@@ -72,7 +81,19 @@ SDK.RemoteObject = class {
return 0;
// Array lengths in V8-generated descriptions switched from square brackets to parentheses.
// Both formats are checked in case the front end is dealing with an old version of V8.
- var matches = object.description.match(/\[([0-9]+)\]/) || object.description.match(/\(([0-9]+)\)/);
+ var parenMatches = object.description.match(SDK.RemoteObject._descriptionLengthParenRegex);
+ var squareMatches = object.description.match(SDK.RemoteObject._descriptionLengthSquareRegex);
+ return parenMatches ? parseInt(parenMatches[1], 10) : (squareMatches ? parseInt(squareMatches[1], 10) : 0);
+ }
+
+ /**
+ * @param {!Protocol.Runtime.ObjectPreview} preview
+ * @return {number}
+ */
+ static mapOrSetEntriesCount(preview) {
+ if (preview.subtype !== 'map' && preview.subtype !== 'set')
+ return 0;
+ var matches = preview.description.match(SDK.RemoteObject._descriptionLengthParenRegex);
if (!matches)
return 0;
return parseInt(matches[1], 10);
@@ -119,9 +140,10 @@ SDK.RemoteObject = class {
/**
* @param {!SDK.RemoteObject} object
+ * @param {boolean} generatePreview
* @param {function(?Array.<!SDK.RemoteObjectProperty>, ?Array.<!SDK.RemoteObjectProperty>)} callback
*/
- static loadFromObjectPerProto(object, callback) {
+ static loadFromObjectPerProto(object, generatePreview, callback) {
// Combines 2 asynch calls. Doesn't rely on call-back orders (some calls may be loop-back).
var savedOwnProperties;
var savedAccessorProperties;
@@ -177,8 +199,8 @@ SDK.RemoteObject = class {
processCallback();
}
- object.getAllProperties(true, allAccessorPropertiesCallback);
- object.getOwnProperties(ownPropertiesCallback);
+ object.getAllProperties(true /* accessorPropertiesOnly */, generatePreview, allAccessorPropertiesCallback);
+ object.getOwnProperties(generatePreview, ownPropertiesCallback);
}
/**
@@ -216,16 +238,18 @@ SDK.RemoteObject = class {
}
/**
+ * @param {boolean} generatePreview
* @param {function(?Array.<!SDK.RemoteObjectProperty>, ?Array.<!SDK.RemoteObjectProperty>)} callback
*/
- getOwnProperties(callback) {
+ getOwnProperties(generatePreview, callback) {
throw 'Not implemented';
}
/**
+ * @param {boolean} generatePreview
* @return {!Promise<!{properties: ?Array.<!SDK.RemoteObjectProperty>, internalProperties: ?Array.<!SDK.RemoteObjectProperty>}>}
*/
- getOwnPropertiesPromise() {
+ getOwnPropertiesPromise(generatePreview) {
return new Promise(promiseConstructor.bind(this));
/**
@@ -233,7 +257,7 @@ SDK.RemoteObject = class {
* @this {SDK.RemoteObject}
*/
function promiseConstructor(success) {
- this.getOwnProperties(getOwnPropertiesCallback.bind(null, success));
+ this.getOwnProperties(!!generatePreview, getOwnPropertiesCallback.bind(null, success));
}
/**
@@ -248,17 +272,19 @@ SDK.RemoteObject = class {
/**
* @param {boolean} accessorPropertiesOnly
+ * @param {boolean} generatePreview
* @param {function(?Array<!SDK.RemoteObjectProperty>, ?Array<!SDK.RemoteObjectProperty>)} callback
*/
- getAllProperties(accessorPropertiesOnly, callback) {
+ getAllProperties(accessorPropertiesOnly, generatePreview, callback) {
throw 'Not implemented';
}
/**
* @param {boolean} accessorPropertiesOnly
+ * @param {boolean} generatePreview
* @return {!Promise<!{properties: ?Array<!SDK.RemoteObjectProperty>, internalProperties: ?Array<!SDK.RemoteObjectProperty>}>}
*/
- getAllPropertiesPromise(accessorPropertiesOnly) {
+ getAllPropertiesPromise(accessorPropertiesOnly, generatePreview) {
return new Promise(promiseConstructor.bind(this));
/**
@@ -266,7 +292,7 @@ SDK.RemoteObject = class {
* @this {SDK.RemoteObject}
*/
function promiseConstructor(success) {
- this.getAllProperties(accessorPropertiesOnly, getAllPropertiesCallback.bind(null, success));
+ this.getAllProperties(accessorPropertiesOnly, generatePreview, getAllPropertiesCallback.bind(null, success));
}
/**
@@ -494,19 +520,21 @@ SDK.RemoteObjectImpl = class extends SDK.RemoteObject {
/**
* @override
+ * @param {boolean} generatePreview
* @param {function(?Array.<!SDK.RemoteObjectProperty>, ?Array.<!SDK.RemoteObjectProperty>)} callback
*/
- getOwnProperties(callback) {
- this.doGetProperties(true, false, false, callback);
+ getOwnProperties(generatePreview, callback) {
+ this.doGetProperties(true, false, generatePreview, callback);
}
/**
* @override
* @param {boolean} accessorPropertiesOnly
+ * @param {boolean} generatePreview
* @param {function(?Array.<!SDK.RemoteObjectProperty>, ?Array.<!SDK.RemoteObjectProperty>)} callback
*/
- getAllProperties(accessorPropertiesOnly, callback) {
- this.doGetProperties(false, accessorPropertiesOnly, false, callback);
+ getAllProperties(accessorPropertiesOnly, generatePreview, callback) {
+ this.doGetProperties(false, accessorPropertiesOnly, generatePreview, callback);
}
/**
@@ -1125,18 +1153,20 @@ SDK.LocalJSONObject = class extends SDK.RemoteObject {
/**
* @override
+ * @param {boolean} generatePreview
* @param {function(?Array.<!SDK.RemoteObjectProperty>, ?Array.<!SDK.RemoteObjectProperty>)} callback
*/
- getOwnProperties(callback) {
+ getOwnProperties(generatePreview, callback) {
callback(this._children(), null);
}
/**
* @override
* @param {boolean} accessorPropertiesOnly
+ * @param {boolean} generatePreview
* @param {function(?Array.<!SDK.RemoteObjectProperty>, ?Array.<!SDK.RemoteObjectProperty>)} callback
*/
- getAllProperties(accessorPropertiesOnly, callback) {
+ getAllProperties(accessorPropertiesOnly, generatePreview, callback) {
if (accessorPropertiesOnly)
callback([], null);
else
@@ -1368,7 +1398,7 @@ SDK.RemoteFunction = class {
* @return {!Promise<!SDK.RemoteObject>}
*/
targetFunction() {
- return this._object.getOwnPropertiesPromise().then(targetFunction.bind(this));
+ return this._object.getOwnPropertiesPromise(false /* generatePreview */).then(targetFunction.bind(this));
/**
* @param {!{properties: ?Array<!SDK.RemoteObjectProperty>, internalProperties: ?Array<!SDK.RemoteObjectProperty>}} ownProperties
@@ -1423,3 +1453,15 @@ SDK.RemoteFunction = class {
return this._object;
}
};
+
+/**
+ * @const
+ * @type {!RegExp}
+ */
+SDK.RemoteObject._descriptionLengthParenRegex = /\(([0-9]+)\)/;
+
+/**
+ * @const
+ * @type {!RegExp}
+ */
+SDK.RemoteObject._descriptionLengthSquareRegex = /\[([0-9]+)\]/;

Powered by Google App Engine
This is Rietveld 408576698