Index: test/mjsunit/es6/global-proto-proxy.js |
diff --git a/test/mjsunit/es6/global-proto-proxy.js b/test/mjsunit/es6/global-proto-proxy.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a28ddc9ff3617865f5e132ca2f5f90b568e29414 |
--- /dev/null |
+++ b/test/mjsunit/es6/global-proto-proxy.js |
@@ -0,0 +1,64 @@ |
+// Copyright 2011 the V8 project authors. All rights reserved. |
+// Redistribution and use in source and binary forms, with or without |
+// modification, are permitted provided that the following conditions are |
+// met: |
+// |
+// * Redistributions of source code must retain the above copyright |
+// notice, this list of conditions and the following disclaimer. |
+// * Redistributions in binary form must reproduce the above |
+// copyright notice, this list of conditions and the following |
+// disclaimer in the documentation and/or other materials provided |
+// with the distribution. |
+// * Neither the name of Google Inc. nor the names of its |
+// contributors may be used to endorse or promote products derived |
+// from this software without specific prior written permission. |
+// |
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
caitp
2017/02/03 22:41:31
The license header can be shrunk down to just
```
|
+ |
+var global = this; |
+;(function () { |
+ var calledDelete = false; |
+ var calledGet = false; |
+ var calledHas = false; |
+ var calledSet = false; |
+ var target = {}; |
+ var assertEquals = global.assertEquals; |
+ var proxy = new Proxy(target, { |
+ has(target, property) { |
+ calledHas = true; |
+ return Reflect.has(target, property); |
+ }, |
+ get(target, property, receiver) { |
+ calledGet = true; |
+ return Reflect.get(target, property, receiver); |
+ }, |
+ set(targer, property, value, receiver) { |
+ calledSet = true; |
+ return Reflect.set(target, property, value, receiver); |
+ }, |
+ delete(target, property, receiver) { |
+ calledDelete = true; |
+ return Reflect.delete(target, property, receiver); |
+ } |
+ }); |
+ Object.setPrototypeOf(global, proxy); |
caitp
2017/02/03 22:41:31
Shouldn't this throw due to https://github.com/hey
|
+ getGlobal; |
+ assertEquals(true, calledGet); |
caitp
2017/02/03 22:41:31
Nit: assertTrue() is usually recommended over asse
|
+ makeGlobal = 2; |
+ assertEquals(true, calledSet); |
+ "findGlobal" in global; |
+ assertEquals(true, calledHas); |
+ var deletedOwn = delete makeGlobal; |
+ assertEquals(true, deletedOwn); |
+ assertEquals(void 0, makeGlobal); |
+})(); |