Index: test/inspector/runtime/get-properties-on-proxy.js |
diff --git a/test/inspector/runtime/get-properties-on-proxy.js b/test/inspector/runtime/get-properties-on-proxy.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b435c5aa3ca53bf1faf65c037684137870adb1dc |
--- /dev/null |
+++ b/test/inspector/runtime/get-properties-on-proxy.js |
@@ -0,0 +1,101 @@ |
+// Copyright 2016 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. |
+ |
+print("Check that while Runtime.getProperties call on proxy object no user defined trap will be executed."); |
+ |
+InspectorTest.evaluateInPage(` |
+var self = this; |
+function testFunction() |
+{ |
+ self.counter = 0; |
+ var handler = { |
+ get: function(target, name){ |
+ self.counter++; |
+ return Reflect.get.apply(this, arguments); |
+ }, |
+ set: function(target, name){ |
+ self.counter++; |
+ return Reflect.set.apply(this, arguments); |
+ }, |
+ getPrototypeOf: function(target) { |
+ self.counter++; |
+ return Reflect.getPrototypeOf.apply(this, arguments); |
+ }, |
+ setPrototypeOf: function(target) { |
+ self.counter++; |
+ return Reflect.setPrototypeOf.apply(this, arguments); |
+ }, |
+ isExtensible: function(target) { |
+ self.counter++; |
+ return Reflect.isExtensible.apply(this, arguments); |
+ }, |
+ isExtensible: function(target) { |
+ self.counter++; |
+ return Reflect.isExtensible.apply(this, arguments); |
+ }, |
+ isExtensible: function(target) { |
+ self.counter++; |
+ return Reflect.isExtensible.apply(this, arguments); |
+ }, |
+ preventExtensions: function() { |
+ self.counter++; |
+ return Reflect.preventExtensions.apply(this, arguments); |
+ }, |
+ getOwnPropertyDescriptor: function() { |
+ self.counter++; |
+ return Reflect.getOwnPropertyDescriptor.apply(this, arguments); |
+ }, |
+ defineProperty: function() { |
+ self.counter++; |
+ return Reflect.defineProperty.apply(this, arguments); |
+ }, |
+ has: function() { |
+ self.counter++; |
+ return Reflect.has.apply(this, arguments); |
+ }, |
+ get: function() { |
+ self.counter++; |
+ return Reflect.get.apply(this, arguments); |
+ }, |
+ set: function() { |
+ self.counter++; |
+ return Reflect.set.apply(this, arguments); |
+ }, |
+ deleteProperty: function() { |
+ self.counter++; |
+ return Reflect.deleteProperty.apply(this, arguments); |
+ }, |
+ ownKeys: function() { |
+ self.counter++; |
+ return Reflect.ownKeys.apply(this, arguments); |
+ }, |
+ apply: function() { |
+ self.counter++; |
+ return Reflect.apply.apply(this, arguments); |
+ }, |
+ construct: function() { |
+ self.counter++; |
+ return Reflect.construct.apply(this, arguments); |
+ } |
+ }; |
+ return new Proxy({ a : 1}, handler); |
+}`); |
+ |
+InspectorTest.sendCommandOrDie("Runtime.evaluate", { expression: "testFunction()"}, requestProperties); |
+ |
+function requestProperties(result) |
+{ |
+ InspectorTest.sendCommandOrDie("Runtime.getProperties", { objectId: result.result.objectId, generatePreview: true }, checkCounter); |
+} |
+ |
+function checkCounter(result) |
+{ |
+ InspectorTest.sendCommandOrDie("Runtime.evaluate", { expression: "self.counter" }, dumpCounter); |
+} |
+ |
+function dumpCounter(result) |
+{ |
+ InspectorTest.logObject(result); |
+ InspectorTest.completeTest(); |
+} |