Chromium Code Reviews| Index: test/inspector/inspector-test.cc |
| diff --git a/test/inspector/inspector-test.cc b/test/inspector/inspector-test.cc |
| index a935717c9e6a49c416e45d3f9b58b70c2f6f4f41..0d19b8d82d2f14a78fa61a31d0c4eb1bc0eb964e 100644 |
| --- a/test/inspector/inspector-test.cc |
| +++ b/test/inspector/inspector-test.cc |
| @@ -51,15 +51,11 @@ v8::Local<v8::String> ToV8String(v8::Isolate* isolate, const char* str) { |
| .ToLocalChecked(); |
| } |
| -class UtilsExtension : public TaskRunner::Task { |
| +class UtilsExtension : public TaskRunner::SetupGlobalTask { |
| public: |
| ~UtilsExtension() override = default; |
| - bool is_inspector_task() override { return true; } |
| void Run(v8::Isolate* isolate, |
| - const v8::Global<v8::Context>& context) override { |
| - v8::HandleScope handle_scope(isolate); |
| - v8::Local<v8::Context> local_context = context.Get(isolate); |
| - v8::Context::Scope context_scope(local_context); |
| + v8::Local<v8::ObjectTemplate> global) override { |
| v8::Local<v8::ObjectTemplate> utils = v8::ObjectTemplate::New(isolate); |
| utils->Set(ToV8String(isolate, "print"), |
| v8::FunctionTemplate::New(isolate, &UtilsExtension::Print)); |
| @@ -94,10 +90,7 @@ class UtilsExtension : public TaskRunner::Task { |
| utils->Set(ToV8String(isolate, "createContextGroup"), |
| v8::FunctionTemplate::New(isolate, |
| &UtilsExtension::CreateContextGroup)); |
| - local_context->Global() |
| - ->Set(local_context, ToV8String(isolate, "utils"), |
| - utils->NewInstance(local_context).ToLocalChecked()) |
| - .ToChecked(); |
| + global->Set(ToV8String(isolate, "utils"), utils); |
| } |
| static void set_backend_task_runner(TaskRunner* runner) { |
| @@ -282,23 +275,7 @@ class UtilsExtension : public TaskRunner::Task { |
| } |
| static void CreateContextGroup( |
| - const v8::FunctionCallbackInfo<v8::Value>& args) { |
| - if (args.Length() != 0) { |
| - fprintf(stderr, "Internal error: createContextGroup()."); |
| - Exit(); |
| - } |
| - const char* backend_extensions[] = {"v8_inspector/setTimeout", |
| - "v8_inspector/inspector"}; |
| - v8::ExtensionConfiguration backend_configuration( |
| - arraysize(backend_extensions), backend_extensions); |
| - v8::base::Semaphore ready_semaphore(0); |
| - int context_group_id = 0; |
| - inspector_client_->scheduleCreateContextGroup( |
| - &backend_configuration, &ready_semaphore, &context_group_id); |
| - ready_semaphore.Wait(); |
| - args.GetReturnValue().Set( |
| - v8::Int32::New(args.GetIsolate(), context_group_id)); |
| - } |
| + const v8::FunctionCallbackInfo<v8::Value>& args); |
| }; |
| TaskRunner* UtilsExtension::backend_runner_ = nullptr; |
| @@ -330,15 +307,13 @@ class SetTimeoutTask : public AsyncTask { |
| v8::Global<v8::Function> function_; |
| }; |
| -class SetTimeoutExtension : public v8::Extension { |
| +class SetTimeoutExtension : public TaskRunner::SetupGlobalTask { |
| public: |
| - SetTimeoutExtension() |
| - : v8::Extension("v8_inspector/setTimeout", |
| - "native function setTimeout();") {} |
| - |
| - virtual v8::Local<v8::FunctionTemplate> GetNativeFunctionTemplate( |
| - v8::Isolate* isolate, v8::Local<v8::String> name) { |
| - return v8::FunctionTemplate::New(isolate, SetTimeoutExtension::SetTimeout); |
| + void Run(v8::Isolate* isolate, |
| + v8::Local<v8::ObjectTemplate> global) override { |
| + global->Set( |
| + ToV8String(isolate, "setTimeout"), |
| + v8::FunctionTemplate::New(isolate, &SetTimeoutExtension::SetTimeout)); |
| } |
| private: |
| @@ -376,79 +351,39 @@ bool StrictAccessCheck(v8::Local<v8::Context> accessing_context, |
| return accessing_context.IsEmpty(); |
| } |
| -class InspectorExtension : public v8::Extension { |
| +class InspectorExtension : public TaskRunner::SetupGlobalTask { |
| public: |
| - InspectorExtension() |
| - : v8::Extension("v8_inspector/inspector", |
| - "native function attachInspector();" |
| - "native function detachInspector();" |
| - "native function setMaxAsyncTaskStacks();" |
| - "native function dumpAsyncTaskStacksStateForTest();" |
| - "native function breakProgram();" |
| - "native function createObjectWithStrictCheck();" |
| - "native function callWithScheduledBreak();" |
| - "native function allowAccessorFormatting();") {} |
| - |
| - virtual v8::Local<v8::FunctionTemplate> GetNativeFunctionTemplate( |
| - v8::Isolate* isolate, v8::Local<v8::String> name) { |
| - v8::Local<v8::Context> context = isolate->GetCurrentContext(); |
| - if (name->Equals(context, |
| - v8::String::NewFromUtf8(isolate, "attachInspector", |
| - v8::NewStringType::kNormal) |
| - .ToLocalChecked()) |
| - .FromJust()) { |
| - return v8::FunctionTemplate::New(isolate, InspectorExtension::Attach); |
| - } else if (name->Equals(context, |
| - v8::String::NewFromUtf8(isolate, "detachInspector", |
| - v8::NewStringType::kNormal) |
| - .ToLocalChecked()) |
| - .FromJust()) { |
| - return v8::FunctionTemplate::New(isolate, InspectorExtension::Detach); |
| - } else if (name->Equals(context, v8::String::NewFromUtf8( |
| - isolate, "setMaxAsyncTaskStacks", |
| - v8::NewStringType::kNormal) |
| - .ToLocalChecked()) |
| - .FromJust()) { |
| - return v8::FunctionTemplate::New( |
| - isolate, InspectorExtension::SetMaxAsyncTaskStacks); |
| - } else if (name->Equals(context, |
| - v8::String::NewFromUtf8( |
| - isolate, "dumpAsyncTaskStacksStateForTest", |
| - v8::NewStringType::kNormal) |
| - .ToLocalChecked()) |
| - .FromJust()) { |
| - return v8::FunctionTemplate::New( |
| - isolate, InspectorExtension::DumpAsyncTaskStacksStateForTest); |
| - } else if (name->Equals(context, |
| - v8::String::NewFromUtf8(isolate, "breakProgram", |
| - v8::NewStringType::kNormal) |
| - .ToLocalChecked()) |
| - .FromJust()) { |
| - return v8::FunctionTemplate::New(isolate, |
| - InspectorExtension::BreakProgram); |
| - } else if (name->Equals(context, v8::String::NewFromUtf8( |
| - isolate, "createObjectWithStrictCheck", |
| - v8::NewStringType::kNormal) |
| - .ToLocalChecked()) |
| - .FromJust()) { |
| - return v8::FunctionTemplate::New( |
| - isolate, InspectorExtension::CreateObjectWithStrictCheck); |
| - } else if (name->Equals(context, v8::String::NewFromUtf8( |
| - isolate, "callWithScheduledBreak", |
| - v8::NewStringType::kNormal) |
| - .ToLocalChecked()) |
| - .FromJust()) { |
| - return v8::FunctionTemplate::New( |
| - isolate, InspectorExtension::CallWithScheduledBreak); |
| - } else if (name->Equals(context, v8::String::NewFromUtf8( |
| - isolate, "allowAccessorFormatting", |
| - v8::NewStringType::kNormal) |
| - .ToLocalChecked()) |
| - .FromJust()) { |
| - return v8::FunctionTemplate::New( |
| - isolate, InspectorExtension::AllowAccessorFormatting); |
| - } |
| - return v8::Local<v8::FunctionTemplate>(); |
| + ~InspectorExtension() override = default; |
| + void Run(v8::Isolate* isolate, |
| + v8::Local<v8::ObjectTemplate> global) override { |
| + v8::Local<v8::ObjectTemplate> inspector = v8::ObjectTemplate::New(isolate); |
| + inspector->Set( |
| + ToV8String(isolate, "attachInspector"), |
| + v8::FunctionTemplate::New(isolate, &InspectorExtension::Attach)); |
| + inspector->Set( |
| + ToV8String(isolate, "detachInspector"), |
| + v8::FunctionTemplate::New(isolate, &InspectorExtension::Detach)); |
| + inspector->Set(ToV8String(isolate, "setMaxAsyncTaskStacks"), |
| + v8::FunctionTemplate::New( |
| + isolate, &InspectorExtension::SetMaxAsyncTaskStacks)); |
| + inspector->Set( |
| + ToV8String(isolate, "dumpAsyncTaskStacksStateForTest"), |
| + v8::FunctionTemplate::New( |
| + isolate, &InspectorExtension::DumpAsyncTaskStacksStateForTest)); |
| + inspector->Set( |
| + ToV8String(isolate, "breakProgram"), |
| + v8::FunctionTemplate::New(isolate, &InspectorExtension::BreakProgram)); |
| + inspector->Set( |
| + ToV8String(isolate, "createObjectWithStrictCheck"), |
| + v8::FunctionTemplate::New( |
| + isolate, &InspectorExtension::CreateObjectWithStrictCheck)); |
| + inspector->Set(ToV8String(isolate, "callWithScheduledBreak"), |
| + v8::FunctionTemplate::New( |
| + isolate, &InspectorExtension::CallWithScheduledBreak)); |
| + inspector->Set(ToV8String(isolate, "allowAccessorFormatting"), |
| + v8::FunctionTemplate::New( |
| + isolate, &InspectorExtension::AllowAccessorFormatting)); |
| + global->Set(ToV8String(isolate, "inspector"), inspector); |
| } |
| private: |
| @@ -578,6 +513,24 @@ class InspectorExtension : public v8::Extension { |
| } |
| }; |
| +void UtilsExtension::CreateContextGroup( |
|
dgozman
2017/04/21 23:10:44
Inline this back into place.
kozy
2017/04/21 23:16:54
It uses SetTimeoutExtension and InspectorExtension
|
| + const v8::FunctionCallbackInfo<v8::Value>& args) { |
| + if (args.Length() != 0) { |
| + fprintf(stderr, "Internal error: createContextGroup()."); |
| + Exit(); |
| + } |
| + v8::base::Semaphore ready_semaphore(0); |
| + int context_group_id = 0; |
| + TaskRunner::SetupGlobalTasks setup_global; |
| + setup_global.emplace_back(new SetTimeoutExtension()); |
| + setup_global.emplace_back(new InspectorExtension()); |
| + inspector_client_->scheduleCreateContextGroup( |
| + std::move(setup_global), &ready_semaphore, &context_group_id); |
| + ready_semaphore.Wait(); |
| + args.GetReturnValue().Set( |
| + v8::Int32::New(args.GetIsolate(), context_group_id)); |
| +} |
| + |
| v8::Local<v8::String> ToString(v8::Isolate* isolate, |
| const v8_inspector::StringView& string) { |
| if (string.is8Bit()) |
| @@ -634,30 +587,23 @@ int main(int argc, char* argv[]) { |
| v8::V8::InitializeExternalStartupData(argv[0]); |
| v8::V8::Initialize(); |
| - SetTimeoutExtension set_timeout_extension; |
| - v8::RegisterExtension(&set_timeout_extension); |
| - InspectorExtension inspector_extension; |
| - v8::RegisterExtension(&inspector_extension); |
| - SendMessageToBackendExtension send_message_to_backend_extension; |
| - v8::RegisterExtension(&send_message_to_backend_extension); |
| - |
| v8::base::Semaphore ready_semaphore(0); |
| - const char* backend_extensions[] = {"v8_inspector/setTimeout", |
| - "v8_inspector/inspector"}; |
| - v8::ExtensionConfiguration backend_configuration( |
| - arraysize(backend_extensions), backend_extensions); |
| - TaskRunner backend_runner(&backend_configuration, false, &ready_semaphore); |
| + TaskRunner::SetupGlobalTasks backend_extensions; |
| + backend_extensions.emplace_back(new SetTimeoutExtension()); |
| + backend_extensions.emplace_back(new InspectorExtension()); |
| + TaskRunner backend_runner(std::move(backend_extensions), 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/frontend"}; |
| - v8::ExtensionConfiguration frontend_configuration( |
| - arraysize(frontend_extensions), frontend_extensions); |
| - TaskRunner frontend_runner(&frontend_configuration, true, &ready_semaphore); |
| + TaskRunner::SetupGlobalTasks frontend_extensions; |
| + frontend_extensions.emplace_back(new UtilsExtension()); |
| + frontend_extensions.emplace_back(new SendMessageToBackendExtension()); |
| + TaskRunner frontend_runner(std::move(frontend_extensions), true, |
| + &ready_semaphore); |
| ready_semaphore.Wait(); |
| - frontend_runner.Append(new UtilsExtension()); |
| FrontendChannelImpl frontend_channel(&frontend_runner); |
| InspectorClientImpl inspector_client(&backend_runner, &frontend_channel, |