diff options
Diffstat (limited to 'deps/v8/test/cctest/test-api-accessors.cc')
-rw-r--r-- | deps/v8/test/cctest/test-api-accessors.cc | 118 |
1 files changed, 90 insertions, 28 deletions
diff --git a/deps/v8/test/cctest/test-api-accessors.cc b/deps/v8/test/cctest/test-api-accessors.cc index 8c2f92d665..5f82d78711 100644 --- a/deps/v8/test/cctest/test-api-accessors.cc +++ b/deps/v8/test/cctest/test-api-accessors.cc @@ -287,21 +287,30 @@ TEST(AccessorSetHasNoSideEffect) { v8::Local<v8::Object> obj = templ->NewInstance(env.local()).ToLocalChecked(); CHECK(env->Global()->Set(env.local(), v8_str("obj"), obj).FromJust()); obj->SetAccessor(context, v8_str("foo"), Getter).ToChecked(); - CHECK(v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo"), true).IsEmpty()); + CHECK(v8::debug::EvaluateGlobal( + isolate, v8_str("obj.foo"), + v8::debug::EvaluateGlobalMode::kDisableBreaksAndThrowOnSideEffect) + .IsEmpty()); obj->SetAccessor(context, v8_str("foo"), Getter, nullptr, v8::MaybeLocal<v8::Value>(), v8::AccessControl::DEFAULT, v8::PropertyAttribute::None, v8::SideEffectType::kHasNoSideEffect) .ToChecked(); - v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo"), true).ToLocalChecked(); + v8::debug::EvaluateGlobal( + isolate, v8_str("obj.foo"), + v8::debug::EvaluateGlobalMode::kDisableBreaksAndThrowOnSideEffect) + .ToLocalChecked(); // Check that setter is not whitelisted. v8::TryCatch try_catch(isolate); - CHECK(v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo = 1"), true) + CHECK(v8::debug::EvaluateGlobal( + isolate, v8_str("obj.foo = 1"), + v8::debug::EvaluateGlobalMode::kDisableBreaksAndThrowOnSideEffect) .IsEmpty()); CHECK(try_catch.HasCaught()); - CHECK_NE(1, v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo"), false) + CHECK_NE(1, v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo"), + v8::debug::EvaluateGlobalMode::kDefault) .ToLocalChecked() ->Int32Value(env.local()) .FromJust()); @@ -323,12 +332,16 @@ TEST(SetAccessorSetSideEffectReceiverCheck1) { v8::SideEffectType::kHasNoSideEffect, v8::SideEffectType::kHasSideEffectToReceiver) .ToChecked(); - CHECK(v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo"), true) + CHECK(v8::debug::EvaluateGlobal( + isolate, v8_str("obj.foo"), + v8::debug::EvaluateGlobalMode::kDisableBreaksAndThrowOnSideEffect) .ToLocalChecked() ->Equals(env.local(), v8_str("return value")) .FromJust()); v8::TryCatch try_catch(isolate); - CHECK(v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo = 1"), true) + CHECK(v8::debug::EvaluateGlobal( + isolate, v8_str("obj.foo = 1"), + v8::debug::EvaluateGlobalMode::kDisableBreaksAndThrowOnSideEffect) .IsEmpty()); CHECK(try_catch.HasCaught()); CHECK_EQ(0, set_accessor_call_count); @@ -357,11 +370,15 @@ TEST(SetAccessorSetSideEffectReceiverCheck2) { ->Set(env.local(), v8_str("f"), templ->GetFunction(env.local()).ToLocalChecked()) .FromJust()); - CHECK(v8::debug::EvaluateGlobal(isolate, v8_str("new f().bar"), true) + CHECK(v8::debug::EvaluateGlobal( + isolate, v8_str("new f().bar"), + v8::debug::EvaluateGlobalMode::kDisableBreaksAndThrowOnSideEffect) .ToLocalChecked() ->Equals(env.local(), v8_str("return value")) .FromJust()); - v8::debug::EvaluateGlobal(isolate, v8_str("new f().bar = 1"), true) + v8::debug::EvaluateGlobal( + isolate, v8_str("new f().bar = 1"), + v8::debug::EvaluateGlobalMode::kDisableBreaksAndThrowOnSideEffect) .ToLocalChecked(); CHECK_EQ(1, set_accessor_call_count); } @@ -377,20 +394,29 @@ TEST(AccessorSetNativeDataPropertyHasNoSideEffect) { v8::Local<v8::Object> obj = templ->NewInstance(env.local()).ToLocalChecked(); CHECK(env->Global()->Set(env.local(), v8_str("obj"), obj).FromJust()); obj->SetNativeDataProperty(context, v8_str("foo"), Getter).ToChecked(); - CHECK(v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo"), true).IsEmpty()); + CHECK(v8::debug::EvaluateGlobal( + isolate, v8_str("obj.foo"), + v8::debug::EvaluateGlobalMode::kDisableBreaksAndThrowOnSideEffect) + .IsEmpty()); obj->SetNativeDataProperty( context, v8_str("foo"), Getter, nullptr, v8::Local<v8::Value>(), v8::PropertyAttribute::None, v8::SideEffectType::kHasNoSideEffect) .ToChecked(); - v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo"), true).ToLocalChecked(); + v8::debug::EvaluateGlobal( + isolate, v8_str("obj.foo"), + v8::debug::EvaluateGlobalMode::kDisableBreaksAndThrowOnSideEffect) + .ToLocalChecked(); // Check that setter is not whitelisted. v8::TryCatch try_catch(isolate); - CHECK(v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo = 1"), true) + CHECK(v8::debug::EvaluateGlobal( + isolate, v8_str("obj.foo = 1"), + v8::debug::EvaluateGlobalMode::kDisableBreaksAndThrowOnSideEffect) .IsEmpty()); CHECK(try_catch.HasCaught()); - CHECK_NE(1, v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo"), false) + CHECK_NE(1, v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo"), + v8::debug::EvaluateGlobalMode::kDefault) .ToLocalChecked() ->Int32Value(env.local()) .FromJust()); @@ -407,20 +433,29 @@ TEST(AccessorSetLazyDataPropertyHasNoSideEffect) { v8::Local<v8::Object> obj = templ->NewInstance(env.local()).ToLocalChecked(); CHECK(env->Global()->Set(env.local(), v8_str("obj"), obj).FromJust()); obj->SetLazyDataProperty(context, v8_str("foo"), Getter).ToChecked(); - CHECK(v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo"), true).IsEmpty()); + CHECK(v8::debug::EvaluateGlobal( + isolate, v8_str("obj.foo"), + v8::debug::EvaluateGlobalMode::kDisableBreaksAndThrowOnSideEffect) + .IsEmpty()); obj->SetLazyDataProperty(context, v8_str("foo"), Getter, v8::Local<v8::Value>(), v8::PropertyAttribute::None, v8::SideEffectType::kHasNoSideEffect) .ToChecked(); - v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo"), true).ToLocalChecked(); + v8::debug::EvaluateGlobal( + isolate, v8_str("obj.foo"), + v8::debug::EvaluateGlobalMode::kDisableBreaksAndThrowOnSideEffect) + .ToLocalChecked(); // Check that setter is not whitelisted. v8::TryCatch try_catch(isolate); - CHECK(v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo = 1"), true) + CHECK(v8::debug::EvaluateGlobal( + isolate, v8_str("obj.foo = 1"), + v8::debug::EvaluateGlobalMode::kDisableBreaksAndThrowOnSideEffect) .IsEmpty()); CHECK(try_catch.HasCaught()); - CHECK_NE(1, v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo"), false) + CHECK_NE(1, v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo"), + v8::debug::EvaluateGlobalMode::kDefault) .ToLocalChecked() ->Int32Value(env.local()) .FromJust()); @@ -440,15 +475,24 @@ TEST(ObjectTemplateSetAccessorHasNoSideEffect) { v8::Local<v8::Object> obj = templ->NewInstance(env.local()).ToLocalChecked(); CHECK(env->Global()->Set(env.local(), v8_str("obj"), obj).FromJust()); - CHECK(v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo"), true).IsEmpty()); - v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo2"), true).ToLocalChecked(); + CHECK(v8::debug::EvaluateGlobal( + isolate, v8_str("obj.foo"), + v8::debug::EvaluateGlobalMode::kDisableBreaksAndThrowOnSideEffect) + .IsEmpty()); + v8::debug::EvaluateGlobal( + isolate, v8_str("obj.foo2"), + v8::debug::EvaluateGlobalMode::kDisableBreaksAndThrowOnSideEffect) + .ToLocalChecked(); // Check that setter is not whitelisted. v8::TryCatch try_catch(isolate); - CHECK(v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo2 = 1"), true) + CHECK(v8::debug::EvaluateGlobal( + isolate, v8_str("obj.foo2 = 1"), + v8::debug::EvaluateGlobalMode::kDisableBreaksAndThrowOnSideEffect) .IsEmpty()); CHECK(try_catch.HasCaught()); - CHECK_NE(1, v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo2"), false) + CHECK_NE(1, v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo2"), + v8::debug::EvaluateGlobalMode::kDefault) .ToLocalChecked() ->Int32Value(env.local()) .FromJust()); @@ -468,15 +512,24 @@ TEST(ObjectTemplateSetNativePropertyHasNoSideEffect) { v8::Local<v8::Object> obj = templ->NewInstance(env.local()).ToLocalChecked(); CHECK(env->Global()->Set(env.local(), v8_str("obj"), obj).FromJust()); - CHECK(v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo"), true).IsEmpty()); - v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo2"), true).ToLocalChecked(); + CHECK(v8::debug::EvaluateGlobal( + isolate, v8_str("obj.foo"), + v8::debug::EvaluateGlobalMode::kDisableBreaksAndThrowOnSideEffect) + .IsEmpty()); + v8::debug::EvaluateGlobal( + isolate, v8_str("obj.foo2"), + v8::debug::EvaluateGlobalMode::kDisableBreaksAndThrowOnSideEffect) + .ToLocalChecked(); // Check that setter is not whitelisted. v8::TryCatch try_catch(isolate); - CHECK(v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo2 = 1"), true) + CHECK(v8::debug::EvaluateGlobal( + isolate, v8_str("obj.foo2 = 1"), + v8::debug::EvaluateGlobalMode::kDisableBreaksAndThrowOnSideEffect) .IsEmpty()); CHECK(try_catch.HasCaught()); - CHECK_NE(1, v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo2"), false) + CHECK_NE(1, v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo2"), + v8::debug::EvaluateGlobalMode::kDefault) .ToLocalChecked() ->Int32Value(env.local()) .FromJust()); @@ -495,15 +548,24 @@ TEST(ObjectTemplateSetLazyPropertyHasNoSideEffect) { v8::Local<v8::Object> obj = templ->NewInstance(env.local()).ToLocalChecked(); CHECK(env->Global()->Set(env.local(), v8_str("obj"), obj).FromJust()); - CHECK(v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo"), true).IsEmpty()); - v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo2"), true).ToLocalChecked(); + CHECK(v8::debug::EvaluateGlobal( + isolate, v8_str("obj.foo"), + v8::debug::EvaluateGlobalMode::kDisableBreaksAndThrowOnSideEffect) + .IsEmpty()); + v8::debug::EvaluateGlobal( + isolate, v8_str("obj.foo2"), + v8::debug::EvaluateGlobalMode::kDisableBreaksAndThrowOnSideEffect) + .ToLocalChecked(); // Check that setter is not whitelisted. v8::TryCatch try_catch(isolate); - CHECK(v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo2 = 1"), true) + CHECK(v8::debug::EvaluateGlobal( + isolate, v8_str("obj.foo2 = 1"), + v8::debug::EvaluateGlobalMode::kDisableBreaksAndThrowOnSideEffect) .IsEmpty()); CHECK(try_catch.HasCaught()); - CHECK_NE(1, v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo2"), false) + CHECK_NE(1, v8::debug::EvaluateGlobal(isolate, v8_str("obj.foo2"), + v8::debug::EvaluateGlobalMode::kDefault) .ToLocalChecked() ->Int32Value(env.local()) .FromJust()); |