| Index: test/inspector/inspector-test.cc
|
| diff --git a/test/inspector/inspector-test.cc b/test/inspector/inspector-test.cc
|
| index d556e19bc387d8107ad1f6618128b03431866e0e..401aca077650afa8413274ba82d6920addc57d29 100644
|
| --- a/test/inspector/inspector-test.cc
|
| +++ b/test/inspector/inspector-test.cc
|
| @@ -38,6 +38,13 @@ void Exit() {
|
| Terminate();
|
| }
|
|
|
| +v8::internal::Vector<uint16_t> ToVector(v8::Local<v8::String> str) {
|
| + v8::internal::Vector<uint16_t> buffer =
|
| + v8::internal::Vector<uint16_t>::New(str->Length());
|
| + str->Write(buffer.start(), 0, str->Length());
|
| + return buffer;
|
| +}
|
| +
|
| class UtilsExtension : public v8::Extension {
|
| public:
|
| UtilsExtension()
|
| @@ -45,7 +52,8 @@ class UtilsExtension : public v8::Extension {
|
| "native function print();"
|
| "native function quit();"
|
| "native function setlocale();"
|
| - "native function load();") {}
|
| + "native function load();"
|
| + "native function compileAndRunWithOrigin();") {}
|
| virtual v8::Local<v8::FunctionTemplate> GetNativeFunctionTemplate(
|
| v8::Isolate* isolate, v8::Local<v8::String> name) {
|
| v8::Local<v8::Context> context = isolate->GetCurrentContext();
|
| @@ -72,11 +80,24 @@ class UtilsExtension : public v8::Extension {
|
| .ToLocalChecked())
|
| .FromJust()) {
|
| return v8::FunctionTemplate::New(isolate, UtilsExtension::Load);
|
| + } else if (name->Equals(context, v8::String::NewFromUtf8(
|
| + isolate, "compileAndRunWithOrigin",
|
| + v8::NewStringType::kNormal)
|
| + .ToLocalChecked())
|
| + .FromJust()) {
|
| + return v8::FunctionTemplate::New(isolate,
|
| + UtilsExtension::CompileAndRunWithOrigin);
|
| }
|
| return v8::Local<v8::FunctionTemplate>();
|
| }
|
|
|
| + static void set_backend_task_runner(TaskRunner* runner) {
|
| + backend_runner_ = runner;
|
| + }
|
| +
|
| private:
|
| + static TaskRunner* backend_runner_;
|
| +
|
| static void Print(const v8::FunctionCallbackInfo<v8::Value>& args) {
|
| for (int i = 0; i < args.Length(); i++) {
|
| v8::HandleScope handle_scope(args.GetIsolate());
|
| @@ -143,8 +164,25 @@ class UtilsExtension : public v8::Extension {
|
| v8::Global<v8::Context> context(isolate, isolate->GetCurrentContext());
|
| task.Run(isolate, context);
|
| }
|
| +
|
| + static void CompileAndRunWithOrigin(
|
| + const v8::FunctionCallbackInfo<v8::Value>& args) {
|
| + if (args.Length() != 4 || !args[0]->IsString() || !args[1]->IsString() ||
|
| + !args[2]->IsInt32() || !args[3]->IsInt32()) {
|
| + fprintf(stderr,
|
| + "Internal error: compileAndRunWithOrigin(source, name, line, "
|
| + "column).");
|
| + Exit();
|
| + }
|
| +
|
| + backend_runner_->Append(new ExecuteStringTask(
|
| + ToVector(args[0].As<v8::String>()), args[1].As<v8::String>(),
|
| + args[2].As<v8::Int32>(), args[3].As<v8::Int32>()));
|
| + }
|
| };
|
|
|
| +TaskRunner* UtilsExtension::backend_runner_ = nullptr;
|
| +
|
| class SetTimeoutTask : public TaskRunner::Task {
|
| public:
|
| SetTimeoutTask(v8::Isolate* isolate, v8::Local<v8::Function> function)
|
| @@ -174,13 +212,6 @@ class SetTimeoutTask : public TaskRunner::Task {
|
| v8::Global<v8::Function> function_;
|
| };
|
|
|
| -v8::internal::Vector<uint16_t> ToVector(v8::Local<v8::String> str) {
|
| - v8::internal::Vector<uint16_t> buffer =
|
| - v8::internal::Vector<uint16_t>::New(str->Length());
|
| - str->Write(buffer.start(), 0, str->Length());
|
| - return buffer;
|
| -}
|
| -
|
| class SetTimeoutExtension : public v8::Extension {
|
| public:
|
| SetTimeoutExtension()
|
| @@ -201,13 +232,15 @@ class SetTimeoutExtension : public v8::Extension {
|
| "Internal error: only setTimeout(function, 0) is supported.");
|
| Exit();
|
| }
|
| - v8::Local<v8::Context> context = args.GetIsolate()->GetCurrentContext();
|
| + v8::Isolate* isolate = args.GetIsolate();
|
| + v8::Local<v8::Context> context = isolate->GetCurrentContext();
|
| if (args[0]->IsFunction()) {
|
| - TaskRunner::FromContext(context)->Append(new SetTimeoutTask(
|
| - args.GetIsolate(), v8::Local<v8::Function>::Cast(args[0])));
|
| - } else {
|
| TaskRunner::FromContext(context)->Append(
|
| - new ExecuteStringTask(ToVector(args[0].As<v8::String>())));
|
| + new SetTimeoutTask(isolate, v8::Local<v8::Function>::Cast(args[0])));
|
| + } else {
|
| + TaskRunner::FromContext(context)->Append(new ExecuteStringTask(
|
| + ToVector(args[0].As<v8::String>()), v8::String::Empty(isolate),
|
| + v8::Integer::New(isolate, 0), v8::Integer::New(isolate, 0)));
|
| }
|
| }
|
| };
|
| @@ -301,7 +334,9 @@ class FrontendChannelImpl : public InspectorClientImpl::FrontendChannel {
|
| v8::Local<v8::String> result = v8::String::Concat(prefix, message_string);
|
| result = v8::String::Concat(result, suffix);
|
|
|
| - frontend_task_runner_->Append(new ExecuteStringTask(ToVector(result)));
|
| + frontend_task_runner_->Append(new ExecuteStringTask(
|
| + ToVector(result), v8::String::Empty(isolate),
|
| + v8::Integer::New(isolate, 0), v8::Integer::New(isolate, 0)));
|
| }
|
|
|
| private:
|
| @@ -336,6 +371,7 @@ int main(int argc, char* argv[]) {
|
| TaskRunner backend_runner(&backend_configuration, false, &ready_semaphore);
|
| ready_semaphore.Wait();
|
| SendMessageToBackendExtension::set_backend_task_runner(&backend_runner);
|
| + UtilsExtension::set_backend_task_runner(&backend_runner);
|
|
|
| const char* frontend_extensions[] = {"v8_inspector/utils",
|
| "v8_inspector/frontend"};
|
|
|