Chromium Code Reviews| Index: test/cctest/test-api.cc |
| =================================================================== |
| --- test/cctest/test-api.cc (revision 6782) |
| +++ test/cctest/test-api.cc (working copy) |
| @@ -5617,6 +5617,38 @@ |
| } |
| +// This is a regression test for issue 1154. |
| +TEST(AccessControlObjectKeys) { |
| + v8::HandleScope handle_scope; |
| + v8::Handle<v8::ObjectTemplate> global_template = v8::ObjectTemplate::New(); |
| + |
| + global_template->SetAccessCheckCallbacks(NamedAccessBlocker, |
| + IndexedAccessBlocker); |
| + |
| + // Add an accessor that is not accessible by cross-domain JS code. |
| + global_template->SetAccessor(v8_str("blocked_prop"), |
| + UnreachableGetter, UnreachableSetter, |
| + v8::Handle<Value>(), |
| + v8::DEFAULT); |
| + |
| + // Create an environment |
| + v8::Persistent<Context> context0 = Context::New(NULL, global_template); |
| + context0->Enter(); |
| + |
| + v8::Handle<v8::Object> global0 = context0->Global(); |
| + |
| + v8::HandleScope scope1; |
|
Mads Ager (chromium)
2011/02/15 08:56:10
No need for this since you have the handle scope a
Rico
2011/02/15 09:00:52
Done.
|
| + |
| + v8::Persistent<Context> context1 = Context::New(); |
| + context1->Enter(); |
| + |
| + v8::Handle<v8::Object> global1 = context1->Global(); |
| + global1->Set(v8_str("other"), global0); |
| + |
| + ExpectTrue("Object.keys(other).indexOf('blocked_prop')==-1"); |
|
Mads Ager (chromium)
2011/02/15 08:56:10
Spaces around '=='.
Rico
2011/02/15 09:00:52
Done.
|
| +} |
| + |
| + |
| static bool GetOwnPropertyNamesNamedBlocker(Local<v8::Object> global, |
| Local<Value> name, |
| v8::AccessType type, |