v8/test/inspector/runtime/runtime-get-properties-and-accessor.js
Alexey Kozyatinskiy ea04c6671a [inspector] do not call native accessor in Rumtime.getProperties
In current implementation Object.getOwnPropertyDescriptor calls native
getter. It can produce side effects. We can avoid calling it.
DevTools frontend will show clickable dots and on click returns value.
This CL does not affect Blink and only affect several Node.js
properties, e.g. process.title.

R=yangguo@chromium.org

Bug: v8:6945
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_chromium_rel_ng
Change-Id: I5764c779ceed4d50832edf68b2b4c6ee2c2dd65c
Reviewed-on: https://chromium-review.googlesource.com/754223
Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#49152}
2017-11-06 17:45:46 +00:00

30 lines
1.1 KiB
JavaScript

// Copyright 2017 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
let {session, contextGroup, Protocol} =
InspectorTest.start('Runtime.getProperties for objects with accessor');
(async function test() {
let {result:{result:{objectId}}} = await Protocol.Runtime.evaluate({
expression: 'inspector.createObjectWithAccessor(\'title\', true)'
});
let {result:{result}} = await Protocol.Runtime.getProperties({
objectId,
ownProperties: true
});
InspectorTest.log('title property with getter and setter:');
InspectorTest.logMessage(result.find(property => property.name === 'title'));
({result:{result:{objectId}}} = await Protocol.Runtime.evaluate({
expression: 'inspector.createObjectWithAccessor(\'title\', false)'
}));
({result:{result}} = await Protocol.Runtime.getProperties({
objectId,
ownProperties: true
}));
InspectorTest.log('title property with getter only:');
InspectorTest.logMessage(result.find(property => property.name === 'title'));
InspectorTest.completeTest();
})()