| Index: test/cctest/test-api.cc
|
| diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc
|
| index 03968871f389bac54139c1041851de87d98bf5d7..1433b7bed6b86a6a1a664818e34bb47c786618de 100644
|
| --- a/test/cctest/test-api.cc
|
| +++ b/test/cctest/test-api.cc
|
| @@ -21424,164 +21424,6 @@
|
| }
|
|
|
|
|
| -static bool access_was_called = false;
|
| -
|
| -
|
| -static bool AccessAlwaysAllowedWithFlag(Local<v8::Object> global,
|
| - Local<Value> name, v8::AccessType type,
|
| - Local<Value> data) {
|
| - access_was_called = true;
|
| - return true;
|
| -}
|
| -
|
| -
|
| -static bool AccessAlwaysBlockedWithFlag(Local<v8::Object> global,
|
| - Local<Value> name, v8::AccessType type,
|
| - Local<Value> data) {
|
| - access_was_called = true;
|
| - return false;
|
| -}
|
| -
|
| -
|
| -TEST(StrongModeAccessCheckAllowed) {
|
| - i::FLAG_strong_mode = true;
|
| - v8::Isolate* isolate = CcTest::isolate();
|
| - v8::HandleScope handle_scope(isolate);
|
| - v8::Handle<Value> value;
|
| - access_was_called = false;
|
| -
|
| - v8::Handle<v8::ObjectTemplate> obj_template =
|
| - v8::ObjectTemplate::New(isolate);
|
| -
|
| - obj_template->Set(v8_str("x"), v8::Integer::New(isolate, 42));
|
| - obj_template->SetAccessCheckCallbacks(AccessAlwaysAllowedWithFlag, NULL);
|
| -
|
| - // Create an environment
|
| - v8::Local<Context> context0 = Context::New(isolate, NULL, obj_template);
|
| - context0->Enter();
|
| - v8::Handle<v8::Object> global0 = context0->Global();
|
| - global0->Set(v8_str("object"), obj_template->NewInstance());
|
| - {
|
| - v8::TryCatch try_catch(isolate);
|
| - value = CompileRun("'use strong'; object.x");
|
| - CHECK(!try_catch.HasCaught());
|
| - CHECK(!access_was_called);
|
| - CHECK_EQ(42, value->Int32Value());
|
| - }
|
| - {
|
| - v8::TryCatch try_catch(isolate);
|
| - value = CompileRun("'use strong'; object.foo");
|
| - CHECK(try_catch.HasCaught());
|
| - CHECK(!access_was_called);
|
| - }
|
| - {
|
| - v8::TryCatch try_catch(isolate);
|
| - value = CompileRun("'use strong'; object[10]");
|
| - CHECK(try_catch.HasCaught());
|
| - CHECK(!access_was_called);
|
| - }
|
| -
|
| - // Create an environment
|
| - v8::Local<Context> context1 = Context::New(isolate);
|
| - context1->Enter();
|
| - v8::Handle<v8::Object> global1 = context1->Global();
|
| - global1->Set(v8_str("object"), obj_template->NewInstance());
|
| - {
|
| - v8::TryCatch try_catch(isolate);
|
| - value = CompileRun("'use strong'; object.x");
|
| - CHECK(!try_catch.HasCaught());
|
| - CHECK(access_was_called);
|
| - CHECK_EQ(42, value->Int32Value());
|
| - }
|
| - access_was_called = false;
|
| - {
|
| - v8::TryCatch try_catch(isolate);
|
| - value = CompileRun("'use strong'; object.foo");
|
| - CHECK(try_catch.HasCaught());
|
| - CHECK(access_was_called);
|
| - }
|
| - access_was_called = false;
|
| - {
|
| - v8::TryCatch try_catch(isolate);
|
| - value = CompileRun("'use strong'; object[10]");
|
| - CHECK(try_catch.HasCaught());
|
| - CHECK(access_was_called);
|
| - }
|
| -
|
| - context1->Exit();
|
| - context0->Exit();
|
| -}
|
| -
|
| -
|
| -TEST(StrongModeAccessCheckBlocked) {
|
| - i::FLAG_strong_mode = true;
|
| - v8::Isolate* isolate = CcTest::isolate();
|
| - v8::HandleScope handle_scope(isolate);
|
| - v8::Handle<Value> value;
|
| - access_was_called = false;
|
| -
|
| - v8::Handle<v8::ObjectTemplate> obj_template =
|
| - v8::ObjectTemplate::New(isolate);
|
| -
|
| - obj_template->Set(v8_str("x"), v8::Integer::New(isolate, 42));
|
| - obj_template->SetAccessCheckCallbacks(AccessAlwaysBlockedWithFlag, NULL);
|
| -
|
| - // Create an environment
|
| - v8::Local<Context> context0 = Context::New(isolate, NULL, obj_template);
|
| - context0->Enter();
|
| - v8::Handle<v8::Object> global0 = context0->Global();
|
| - global0->Set(v8_str("object"), obj_template->NewInstance());
|
| - {
|
| - v8::TryCatch try_catch(isolate);
|
| - value = CompileRun("'use strong'; object.x");
|
| - CHECK(!try_catch.HasCaught());
|
| - CHECK(!access_was_called);
|
| - CHECK_EQ(42, value->Int32Value());
|
| - }
|
| - {
|
| - v8::TryCatch try_catch(isolate);
|
| - value = CompileRun("'use strong'; object.foo");
|
| - CHECK(try_catch.HasCaught());
|
| - CHECK(!access_was_called);
|
| - }
|
| - {
|
| - v8::TryCatch try_catch(isolate);
|
| - value = CompileRun("'use strong'; object[10]");
|
| - CHECK(try_catch.HasCaught());
|
| - CHECK(!access_was_called);
|
| - }
|
| -
|
| - // Create an environment
|
| - v8::Local<Context> context1 = Context::New(isolate);
|
| - context1->Enter();
|
| - v8::Handle<v8::Object> global1 = context1->Global();
|
| - global1->Set(v8_str("object"), obj_template->NewInstance());
|
| - {
|
| - v8::TryCatch try_catch(isolate);
|
| - value = CompileRun("'use strong'; object.x");
|
| - CHECK(try_catch.HasCaught());
|
| - CHECK(access_was_called);
|
| - }
|
| - access_was_called = false;
|
| - {
|
| - v8::TryCatch try_catch(isolate);
|
| - value = CompileRun("'use strong'; object.foo");
|
| - CHECK(try_catch.HasCaught());
|
| - CHECK(access_was_called);
|
| - }
|
| - access_was_called = false;
|
| - {
|
| - v8::TryCatch try_catch(isolate);
|
| - value = CompileRun("'use strong'; object[10]");
|
| - CHECK(try_catch.HasCaught());
|
| - CHECK(access_was_called);
|
| - }
|
| -
|
| - context1->Exit();
|
| - context0->Exit();
|
| -}
|
| -
|
| -
|
| TEST(StrongModeArityCallFromApi) {
|
| i::FLAG_strong_mode = true;
|
| LocalContext env;
|
|
|