Commit bd219a76 authored by yangguo's avatar yangguo Committed by Commit bot

Add extras test for calling into runtime.

The alternative of passing an object template at context creation is
unfeasible because we need a context to instantiate the template.
At the time we create the context from snapshot or bootstrap from
scratch, we would already need that template instance, leading to a
chicken-and-egg problem.

This is an alternative that is simpler and less intrusive.

R=domenic@chromium.org, jochen@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28938}
parent 135f5e68
......@@ -21445,21 +21445,35 @@ TEST(StrongObjectDelete) {
}
static void ExtrasExportsTestRuntimeFunction(
const v8::FunctionCallbackInfo<v8::Value>& args) {
CHECK_EQ(3, args[0]->Int32Value());
args.GetReturnValue().Set(v8_num(7));
}
TEST(ExtrasExportsObject) {
v8::Isolate* isolate = CcTest::isolate();
v8::HandleScope handle_scope(isolate);
LocalContext env;
// standalone.gypi ensures we include the test-extra.js file, which should
// add the testExtraShouldReturnFive export
// export the tested functions.
v8::Local<v8::Object> exports = env->GetExtrasExportsObject();
auto func =
exports->Get(v8_str("testExtraShouldReturnFive")).As<v8::Function>();
auto undefined = v8::Undefined(isolate);
auto result = func->Call(undefined, 0, {}).As<v8::Number>();
CHECK(result->Value() == 5.0);
CHECK_EQ(5, result->Int32Value());
v8::Handle<v8::FunctionTemplate> runtimeFunction =
v8::FunctionTemplate::New(isolate, ExtrasExportsTestRuntimeFunction);
exports->Set(v8_str("runtime"), runtimeFunction->GetFunction());
func =
exports->Get(v8_str("testExtraShouldCallToRuntime")).As<v8::Function>();
result = func->Call(undefined, 0, {}).As<v8::Number>();
CHECK_EQ(7, result->Int32Value());
}
......
......@@ -7,4 +7,8 @@
exports.testExtraShouldReturnFive = function () {
return 5;
};
exports.testExtraShouldCallToRuntime = function() {
return exports.runtime(3);
};
})
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