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

Side by Side Diff: test/mjsunit/harmony/proxies-get.js

Issue 1492923002: [proxies] do not leak private symbols to proxy traps (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: More tests + cleanup fix Created 5 years 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 unified diff | Download patch
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 // Flags: --harmony-proxies 5 // Flags: --harmony-proxies --harmony-reflect --allow-natives-syntax
6 6
7 (function testBasicFunctionality() { 7 (function testBasicFunctionality() {
8 var target = { 8 var target = {
9 target_one: 1, 9 target_one: 1,
10 property: "value" 10 property: "value"
11 }; 11 };
12 12
13 var handler = {handler:1}; 13 var handler = {handler:1};
14 14
15 var proxy = new Proxy(target, handler); 15 var proxy = new Proxy(target, handler);
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
86 // target for which the handler will return a value. 86 // target for which the handler will return a value.
87 Object.defineProperty(target, "key3", { 87 Object.defineProperty(target, "key3", {
88 configurable: false, 88 configurable: false,
89 set: function() { } 89 set: function() { }
90 }); 90 });
91 assertEquals("value", proxy.property); 91 assertEquals("value", proxy.property);
92 assertThrows(function(){ proxy.key }, TypeError); 92 assertThrows(function(){ proxy.key }, TypeError);
93 assertEquals("value", proxy.key2); 93 assertEquals("value", proxy.key2);
94 assertThrows(function(){ proxy.key3 }, TypeError); 94 assertThrows(function(){ proxy.key3 }, TypeError);
95 })(); 95 })();
96
97 (function testGetPrivateSymbol() {
98 var symbol = %CreatePrivateSymbol("secret");
99 var O = { [symbol]: "value" };
100 var proxy = new Proxy(O, { get(t, name) { assertUnreachable(); }});
101 assertEquals(undefined, proxy[symbol]);
102 assertEquals(undefined, Reflect.get(proxy, symbol));
103 assertEquals("value", O[symbol]);
104 assertEquals("value", Reflect.get(O, symbol));
105 })();
106
107 (function testGetInternalIterators() {
108 var log = [];
109 assertThrows(function() {
neis 2015/12/03 12:01:24 Can you move the assertThrows down to the line tha
110 var array = [1,2,3,4,5]
111 var origIt = array[Symbol.iterator]();
112 var it = new Proxy(origIt, {
113 get(t, name) {
114 log.push(`[[Get]](iterator, ${String(name)})`);
115 return Reflect.get(t, name);
116 },
117 set(t, name, val) {
118 log.push(`[[Set]](iterator, ${String(name)}, ${String(val)})`);
119 return Reflect.set(t, name, val);
120 }
121 });
122
123 for (var v of it) log.push(v);
124 }, TypeError);
125 assertEquals([
126 "[[Get]](iterator, Symbol(Symbol.iterator))",
127 "[[Get]](iterator, next)"
128 ], log);
129 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698