Commit a75b2c8f authored by jochen's avatar jochen Committed by Commit bot

Add the data parameter back to the access check callback

BUG=none
R=verwaest@chromium.org
LOG=n

Review URL: https://codereview.chromium.org/1653423002

Cr-Commit-Position: refs/heads/master@{#33699}
parent db47a31f
......@@ -4325,8 +4325,10 @@ enum AccessType {
* object.
*/
typedef bool (*AccessCheckCallback)(Local<Context> accessing_context,
Local<Object> accessed_object);
Local<Object> accessed_object,
Local<Value> data);
typedef bool (*DeprecatedAccessCheckCallback)(Local<Context> accessing_context,
Local<Object> accessed_object);
/**
* Returns true if cross-context access should be allowed to the named
......@@ -4756,6 +4758,10 @@ class V8_EXPORT ObjectTemplate : public Template {
*/
void SetAccessCheckCallback(AccessCheckCallback callback,
Local<Value> data = Local<Value>());
V8_DEPRECATE_SOON(
"Use SetAccessCheckCallback with new AccessCheckCallback signature.",
void SetAccessCheckCallback(DeprecatedAccessCheckCallback callback,
Local<Value> data = Local<Value>()));
V8_DEPRECATED(
"Use SetAccessCheckCallback instead",
......
......@@ -1450,6 +1450,10 @@ void ObjectTemplate::SetAccessCheckCallback(AccessCheckCallback callback,
cons->set_needs_access_check(true);
}
void ObjectTemplate::SetAccessCheckCallback(
DeprecatedAccessCheckCallback callback, Local<Value> data) {
SetAccessCheckCallback(reinterpret_cast<AccessCheckCallback>(callback), data);
}
void ObjectTemplate::SetAccessCheckCallbacks(
NamedSecurityCallback named_callback,
......
......@@ -843,7 +843,7 @@ bool Isolate::MayAccess(Handle<Context> accessing_context,
VMState<EXTERNAL> state(this);
if (callback) {
return callback(v8::Utils::ToLocal(accessing_context),
v8::Utils::ToLocal(receiver));
v8::Utils::ToLocal(receiver), v8::Utils::ToLocal(data));
}
Handle<Object> key = factory()->undefined_value();
return named_callback(v8::Utils::ToLocal(receiver), v8::Utils::ToLocal(key),
......
......@@ -686,9 +686,9 @@ THREADED_TEST(Regress433458) {
static bool security_check_value = false;
static bool SecurityTestCallback(Local<v8::Context> accessing_context,
Local<v8::Object> accessed_object) {
Local<v8::Object> accessed_object,
Local<v8::Value> data) {
return security_check_value;
}
......
......@@ -1879,9 +1879,9 @@ THREADED_TEST(IndexedInterceptorWithNoSetter) {
ExpectString(code, "PASSED");
}
static bool AccessAlwaysBlocked(Local<v8::Context> accessing_context,
Local<v8::Object> accessed_object) {
Local<v8::Object> accessed_object,
Local<v8::Value> data) {
return false;
}
......@@ -3475,9 +3475,9 @@ struct AccessCheckData {
AccessCheckData* g_access_check_data = nullptr;
bool SimpleAccessChecker(Local<v8::Context> accessing_context,
Local<v8::Object> access_object) {
Local<v8::Object> access_object,
Local<v8::Value> data) {
g_access_check_data->count++;
return g_access_check_data->result;
}
......
......@@ -8939,7 +8939,8 @@ TEST(TryCatchFinallyStoresMessageUsingTryCatchHandler) {
// For use within the TestSecurityHandler() test.
static bool g_security_callback_result = false;
static bool SecurityTestCallback(Local<v8::Context> accessing_context,
Local<v8::Object> accessed_object) {
Local<v8::Object> accessed_object,
Local<v8::Value> data) {
printf("a\n");
return g_security_callback_result;
}
......@@ -9137,7 +9138,8 @@ THREADED_TEST(SecurityChecksForPrototypeChain) {
static bool security_check_with_gc_called;
static bool SecurityTestCallbackWithGC(Local<v8::Context> accessing_context,
Local<v8::Object> accessed_object) {
Local<v8::Object> accessed_object,
Local<v8::Value> data) {
CcTest::heap()->CollectAllGarbage();
security_check_with_gc_called = true;
return true;
......@@ -9624,7 +9626,8 @@ TEST(DetachedAccesses) {
static bool allowed_access = false;
static bool AccessBlocker(Local<v8::Context> accessing_context,
Local<v8::Object> accessed_object) {
Local<v8::Object> accessed_object,
Local<v8::Value> data) {
v8::Local<v8::Context> context = CcTest::isolate()->GetCurrentContext();
return context->Global()->Equals(context, accessed_object).FromJust() ||
allowed_access;
......@@ -9918,9 +9921,9 @@ TEST(AccessControlES5) {
CHECK_EQ(42, g_echo_value); // Make sure we didn't call the setter.
}
static bool AccessAlwaysBlocked(Local<v8::Context> accessing_context,
Local<v8::Object> global) {
Local<v8::Object> global,
Local<v8::Value> data) {
i::PrintF("Access blocked.\n");
return false;
}
......@@ -10064,7 +10067,8 @@ THREADED_TEST(CrossDomainAccessors) {
static int access_count = 0;
static bool AccessCounter(Local<v8::Context> accessing_context,
Local<v8::Object> accessed_object) {
Local<v8::Object> accessed_object,
Local<v8::Value> data) {
access_count++;
return true;
}
......@@ -23888,16 +23892,16 @@ TEST(SealHandleScopeNested) {
static bool access_was_called = false;
static bool AccessAlwaysAllowedWithFlag(Local<v8::Context> accessing_context,
Local<v8::Object> accessed_object) {
Local<v8::Object> accessed_object,
Local<v8::Value> data) {
access_was_called = true;
return true;
}
static bool AccessAlwaysBlockedWithFlag(Local<v8::Context> accessing_context,
Local<v8::Object> accessed_object) {
Local<v8::Object> accessed_object,
Local<v8::Value> data) {
access_was_called = true;
return false;
}
......
......@@ -1026,9 +1026,9 @@ TEST(UseCountObjectGetNotifier) {
CHECK_EQ(1, use_counts[v8::Isolate::kObjectObserve]);
}
static bool NamedAccessCheckAlwaysAllow(Local<v8::Context> accessing_context,
Local<v8::Object> accessed_object) {
Local<v8::Object> accessed_object,
Local<v8::Value> data) {
return true;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment