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

Unified Diff: third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-getProperties.js

Issue 2954093003: [DevTools] Migrate inspector-protocol/runtime tests to new harness (Closed)
Patch Set: fail: Created 3 years, 6 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/LayoutTests/inspector-protocol/runtime/runtime-getProperties.js
diff --git a/third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-getProperties.js b/third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-getProperties.js
new file mode 100644
index 0000000000000000000000000000000000000000..bde1a362820e152298a06abcafce6e12589fd701
--- /dev/null
+++ b/third_party/WebKit/LayoutTests/inspector-protocol/runtime/runtime-getProperties.js
@@ -0,0 +1,88 @@
+(async function(testRunner) {
+ let {page, session, dp} = await testRunner.startBlank(``);
+
+ // A helper function that dumps object properties and internal properties in sorted order.
+ function logGetPropertiesResult(title, protocolResult) {
+ function hasGetterSetter(property, fieldName) {
+ var v = property[fieldName];
+ if (!v)
+ return false;
+ return v.type !== 'undefined';
+ }
+
+ testRunner.log('Properties of ' + title);
+ var propertyArray = protocolResult.result;
+ propertyArray.sort(NamedThingComparator);
+ for (var p of propertyArray) {
+ var v = p.value;
+ var own = p.isOwn ? 'own' : 'inherited';
+ if (v) {
+ testRunner.log(' ' + p.name + ' ' + own + ' ' + v.type + ' ' + v.value);
+ } else {
+ testRunner.log(' ' + p.name + ' ' + own + ' no value' +
+ (hasGetterSetter(p, 'get') ? ', getter' : '') + (hasGetterSetter(p, 'set') ? ', setter' : ''));
+ }
+ }
+ var internalPropertyArray = protocolResult.internalProperties;
+ if (internalPropertyArray) {
+ testRunner.log('Internal properties');
+ internalPropertyArray.sort(NamedThingComparator);
+ for (var p of internalPropertyArray) {
+ var v = p.value;
+ testRunner.log(' ' + p.name + ' ' + v.type + ' ' + v.value);
+ }
+ }
+
+ function NamedThingComparator(o1, o2) {
+ return o1.name === o2.name ? 0 : (o1.name < o2.name ? -1 : 1);
+ }
+ }
+
+ async function testExpression(title, expression, ownProperties, accessorPropertiesOnly) {
+ var response = await dp.Runtime.evaluate({expression});
+ var id = response.result.result.objectId;
+ response = await dp.Runtime.getProperties({objectId: id, ownProperties, accessorPropertiesOnly});
+ logGetPropertiesResult(title, response.result);
+ }
+
+ // 'Object5' section -- check properties of '5' wrapped as object (has an internal property).
+ // Create an wrapper object with additional property.
+ await testExpression(
+ 'Object(5)',
+ `(function(){var r = Object(5); r.foo = 'cat';return r;})()`,
+ true);
+
+ // 'Not own' section -- check all properties of the object, including ones from it prototype chain.
+ // Create an wrapper object with additional property.
+ await testExpression(
+ 'Not own properties',
+ `({ a: 2, set b(_) {}, get b() {return 5;}, __proto__: { a: 3, c: 4, get d() {return 6;} }})`,
+ false);
+
+ // 'Accessors only' section -- check only accessor properties of the object.
+ // Create an wrapper object with additional property.
+ await testExpression(
+ 'Accessor only properties',
+ `({ a: 2, set b(_) {}, get b() {return 5;}, c: 'c', set d(_){} })`,
+ true,
+ true);
+
+ // 'Array' section -- check properties of an array.
+ await testExpression(
+ 'array',
+ `['red', 'green', 'blue']`,
+ true);
+
+ // 'Bound' section -- check properties of a bound function (has a bunch of internal properties).
+ await testExpression(
+ 'Bound function',
+ `Number.bind({}, 5)`,
+ true);
+
+ await testExpression(
+ 'Event with user defined property',
+ `var e = document.createEvent('Event'); Object.defineProperty(e, 'eventPhase', { get: function() { return 239; } })`,
+ true);
+
+ testRunner.completeTest();
+})

Powered by Google App Engine
This is Rietveld 408576698