summaryrefslogtreecommitdiff
path: root/deps/v8/test/inspector/inspector-test.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/inspector/inspector-test.cc')
-rw-r--r--deps/v8/test/inspector/inspector-test.cc45
1 files changed, 38 insertions, 7 deletions
diff --git a/deps/v8/test/inspector/inspector-test.cc b/deps/v8/test/inspector/inspector-test.cc
index 56c7431af6..04a23df528 100644
--- a/deps/v8/test/inspector/inspector-test.cc
+++ b/deps/v8/test/inspector/inspector-test.cc
@@ -175,7 +175,8 @@ class SendMessageToBackendTask : public TaskRunner::Task {
v8::internal::Vector<uint16_t> message_;
};
-void RunAsyncTask(TaskRunner* task_runner, const char* task_name,
+void RunAsyncTask(TaskRunner* task_runner,
+ const v8_inspector::StringView& task_name,
TaskRunner::Task* task) {
class AsyncTask : public TaskRunner::Task {
public:
@@ -193,10 +194,7 @@ void RunAsyncTask(TaskRunner* task_runner, const char* task_name,
DISALLOW_COPY_AND_ASSIGN(AsyncTask);
};
- task_runner->data()->AsyncTaskScheduled(
- v8_inspector::StringView(reinterpret_cast<const uint8_t*>(task_name),
- strlen(task_name)),
- task, false);
+ task_runner->data()->AsyncTaskScheduled(task_name, task, false);
task_runner->Append(new AsyncTask(task));
}
@@ -626,13 +624,16 @@ class SetTimeoutExtension : public IsolateData::SetupGlobalTask {
v8::Local<v8::Context> context = isolate->GetCurrentContext();
IsolateData* data = IsolateData::FromContext(context);
int context_group_id = data->GetContextGroupId(context);
+ const char* task_name = "setTimeout";
+ v8_inspector::StringView task_name_view(
+ reinterpret_cast<const uint8_t*>(task_name), strlen(task_name));
if (args[0]->IsFunction()) {
- RunAsyncTask(data->task_runner(), "setTimeout",
+ RunAsyncTask(data->task_runner(), task_name_view,
new SetTimeoutTask(context_group_id, isolate,
v8::Local<v8::Function>::Cast(args[0])));
} else {
RunAsyncTask(
- data->task_runner(), "setTimeout",
+ data->task_runner(), task_name_view,
new ExecuteStringTask(
context_group_id, ToVector(args[0].As<v8::String>()),
v8::String::Empty(isolate), v8::Integer::New(isolate, 0),
@@ -703,6 +704,9 @@ class InspectorExtension : public IsolateData::SetupGlobalTask {
ToV8String(isolate, "externalAsyncTaskFinished"),
v8::FunctionTemplate::New(
isolate, &InspectorExtension::ExternalAsyncTaskFinished));
+ inspector->Set(ToV8String(isolate, "scheduleWithAsyncStack"),
+ v8::FunctionTemplate::New(
+ isolate, &InspectorExtension::ScheduleWithAsyncStack));
global->Set(ToV8String(isolate, "inspector"), inspector);
}
@@ -926,6 +930,33 @@ class InspectorExtension : public IsolateData::SetupGlobalTask {
args[0].As<v8::ArrayBuffer>()->GetContents().Data());
data->ExternalAsyncTaskFinished(*id);
}
+
+ static void ScheduleWithAsyncStack(
+ const v8::FunctionCallbackInfo<v8::Value>& args) {
+ if (args.Length() != 3 || !args[0]->IsFunction() || !args[1]->IsString() ||
+ !args[2]->IsBoolean()) {
+ fprintf(stderr,
+ "Internal error: scheduleWithAsyncStack(function, "
+ "'task-name', with_empty_stack).");
+ Exit();
+ }
+ v8::Isolate* isolate = args.GetIsolate();
+ v8::Local<v8::Context> context = isolate->GetCurrentContext();
+ IsolateData* data = IsolateData::FromContext(context);
+ int context_group_id = data->GetContextGroupId(context);
+ bool with_empty_stack = args[2].As<v8::Boolean>()->Value();
+ if (with_empty_stack) context->Exit();
+
+ v8::internal::Vector<uint16_t> task_name =
+ ToVector(args[1].As<v8::String>());
+ v8_inspector::StringView task_name_view(task_name.start(),
+ task_name.length());
+
+ RunAsyncTask(data->task_runner(), task_name_view,
+ new SetTimeoutTask(context_group_id, isolate,
+ v8::Local<v8::Function>::Cast(args[0])));
+ if (with_empty_stack) context->Enter();
+ }
};
} // namespace