Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(270)

Side by Side Diff: test/inspector/inspector-test.cc

Issue 2885253002: [inspector] Extract IsolateData out of TaskRunner (Closed)
Patch Set: Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « test/inspector/inspector-impl.cc ('k') | test/inspector/task-runner.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 the V8 project authors. All rights reserved. 1 // Copyright 2016 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #if !defined(_WIN32) && !defined(_WIN64) 5 #if !defined(_WIN32) && !defined(_WIN64)
6 #include <unistd.h> // NOLINT 6 #include <unistd.h> // NOLINT
7 #endif // !defined(_WIN32) && !defined(_WIN64) 7 #endif // !defined(_WIN32) && !defined(_WIN64)
8 8
9 #include <locale.h> 9 #include <locale.h>
10 10
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
44 v8::internal::Vector<uint16_t>::New(str->Length()); 44 v8::internal::Vector<uint16_t>::New(str->Length());
45 str->Write(buffer.start(), 0, str->Length()); 45 str->Write(buffer.start(), 0, str->Length());
46 return buffer; 46 return buffer;
47 } 47 }
48 48
49 v8::Local<v8::String> ToV8String(v8::Isolate* isolate, const char* str) { 49 v8::Local<v8::String> ToV8String(v8::Isolate* isolate, const char* str) {
50 return v8::String::NewFromUtf8(isolate, str, v8::NewStringType::kNormal) 50 return v8::String::NewFromUtf8(isolate, str, v8::NewStringType::kNormal)
51 .ToLocalChecked(); 51 .ToLocalChecked();
52 } 52 }
53 53
54 class UtilsExtension : public TaskRunner::SetupGlobalTask { 54 class UtilsExtension : public IsolateData::SetupGlobalTask {
55 public: 55 public:
56 ~UtilsExtension() override = default; 56 ~UtilsExtension() override = default;
57 void Run(v8::Isolate* isolate, 57 void Run(v8::Isolate* isolate,
58 v8::Local<v8::ObjectTemplate> global) override { 58 v8::Local<v8::ObjectTemplate> global) override {
59 v8::Local<v8::ObjectTemplate> utils = v8::ObjectTemplate::New(isolate); 59 v8::Local<v8::ObjectTemplate> utils = v8::ObjectTemplate::New(isolate);
60 utils->Set(ToV8String(isolate, "print"), 60 utils->Set(ToV8String(isolate, "print"),
61 v8::FunctionTemplate::New(isolate, &UtilsExtension::Print)); 61 v8::FunctionTemplate::New(isolate, &UtilsExtension::Print));
62 utils->Set(ToV8String(isolate, "quit"), 62 utils->Set(ToV8String(isolate, "quit"),
63 v8::FunctionTemplate::New(isolate, &UtilsExtension::Quit)); 63 v8::FunctionTemplate::New(isolate, &UtilsExtension::Quit));
64 utils->Set(ToV8String(isolate, "setlocale"), 64 utils->Set(ToV8String(isolate, "setlocale"),
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 184
185 static void Load(const v8::FunctionCallbackInfo<v8::Value>& args) { 185 static void Load(const v8::FunctionCallbackInfo<v8::Value>& args) {
186 if (args.Length() != 1 || !args[0]->IsString()) { 186 if (args.Length() != 1 || !args[0]->IsString()) {
187 fprintf(stderr, "Internal error: load gets one string argument."); 187 fprintf(stderr, "Internal error: load gets one string argument.");
188 Exit(); 188 Exit();
189 } 189 }
190 v8::internal::Vector<const char> chars; 190 v8::internal::Vector<const char> chars;
191 v8::Isolate* isolate = args.GetIsolate(); 191 v8::Isolate* isolate = args.GetIsolate();
192 if (ReadFile(isolate, args[0], &chars)) { 192 if (ReadFile(isolate, args[0], &chars)) {
193 ExecuteStringTask(chars).RunOnTaskRunner( 193 ExecuteStringTask(chars).RunOnTaskRunner(
194 TaskRunner::FromContext(isolate->GetCurrentContext())); 194 IsolateData::FromContext(isolate->GetCurrentContext())
195 ->task_runner());
195 } 196 }
196 } 197 }
197 198
198 static void CompileAndRunWithOrigin( 199 static void CompileAndRunWithOrigin(
199 const v8::FunctionCallbackInfo<v8::Value>& args) { 200 const v8::FunctionCallbackInfo<v8::Value>& args) {
200 if (args.Length() != 5 || !args[0]->IsString() || !args[1]->IsString() || 201 if (args.Length() != 5 || !args[0]->IsString() || !args[1]->IsString() ||
201 !args[2]->IsInt32() || !args[3]->IsInt32() || !args[4]->IsBoolean()) { 202 !args[2]->IsInt32() || !args[3]->IsInt32() || !args[4]->IsBoolean()) {
202 fprintf(stderr, 203 fprintf(stderr,
203 "Internal error: compileAndRunWithOrigin(source, name, line, " 204 "Internal error: compileAndRunWithOrigin(source, name, line, "
204 "column, is_module)."); 205 "column, is_module).");
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 v8::Context::Scope context_scope(context); 311 v8::Context::Scope context_scope(context);
311 312
312 v8::Local<v8::Function> function = function_.Get(isolate()); 313 v8::Local<v8::Function> function = function_.Get(isolate());
313 v8::MaybeLocal<v8::Value> result; 314 v8::MaybeLocal<v8::Value> result;
314 result = function->Call(context, context->Global(), 0, nullptr); 315 result = function->Call(context, context->Global(), 0, nullptr);
315 } 316 }
316 317
317 v8::Global<v8::Function> function_; 318 v8::Global<v8::Function> function_;
318 }; 319 };
319 320
320 class SetTimeoutExtension : public TaskRunner::SetupGlobalTask { 321 class SetTimeoutExtension : public IsolateData::SetupGlobalTask {
321 public: 322 public:
322 void Run(v8::Isolate* isolate, 323 void Run(v8::Isolate* isolate,
323 v8::Local<v8::ObjectTemplate> global) override { 324 v8::Local<v8::ObjectTemplate> global) override {
324 global->Set( 325 global->Set(
325 ToV8String(isolate, "setTimeout"), 326 ToV8String(isolate, "setTimeout"),
326 v8::FunctionTemplate::New(isolate, &SetTimeoutExtension::SetTimeout)); 327 v8::FunctionTemplate::New(isolate, &SetTimeoutExtension::SetTimeout));
327 } 328 }
328 329
329 private: 330 private:
330 static void SetTimeout(const v8::FunctionCallbackInfo<v8::Value>& args) { 331 static void SetTimeout(const v8::FunctionCallbackInfo<v8::Value>& args) {
(...skipping 12 matching lines...) Expand all
343 if (args[0]->IsFunction()) { 344 if (args[0]->IsFunction()) {
344 task.reset(new SetTimeoutTask(isolate, 345 task.reset(new SetTimeoutTask(isolate,
345 v8::Local<v8::Function>::Cast(args[0]), 346 v8::Local<v8::Function>::Cast(args[0]),
346 "setTimeout", inspector)); 347 "setTimeout", inspector));
347 } else { 348 } else {
348 task.reset(new ExecuteStringTask( 349 task.reset(new ExecuteStringTask(
349 ToVector(args[0].As<v8::String>()), v8::String::Empty(isolate), 350 ToVector(args[0].As<v8::String>()), v8::String::Empty(isolate),
350 v8::Integer::New(isolate, 0), v8::Integer::New(isolate, 0), 351 v8::Integer::New(isolate, 0), v8::Integer::New(isolate, 0),
351 v8::Boolean::New(isolate, false), "setTimeout", inspector)); 352 v8::Boolean::New(isolate, false), "setTimeout", inspector));
352 } 353 }
353 TaskRunner::FromContext(context)->Append(task.release()); 354 IsolateData::FromContext(context)->task_runner()->Append(task.release());
354 } 355 }
355 }; 356 };
356 357
357 bool StrictAccessCheck(v8::Local<v8::Context> accessing_context, 358 bool StrictAccessCheck(v8::Local<v8::Context> accessing_context,
358 v8::Local<v8::Object> accessed_object, 359 v8::Local<v8::Object> accessed_object,
359 v8::Local<v8::Value> data) { 360 v8::Local<v8::Value> data) {
360 CHECK(accessing_context.IsEmpty()); 361 CHECK(accessing_context.IsEmpty());
361 return accessing_context.IsEmpty(); 362 return accessing_context.IsEmpty();
362 } 363 }
363 364
364 class InspectorExtension : public TaskRunner::SetupGlobalTask { 365 class InspectorExtension : public IsolateData::SetupGlobalTask {
365 public: 366 public:
366 ~InspectorExtension() override = default; 367 ~InspectorExtension() override = default;
367 void Run(v8::Isolate* isolate, 368 void Run(v8::Isolate* isolate,
368 v8::Local<v8::ObjectTemplate> global) override { 369 v8::Local<v8::ObjectTemplate> global) override {
369 v8::Local<v8::ObjectTemplate> inspector = v8::ObjectTemplate::New(isolate); 370 v8::Local<v8::ObjectTemplate> inspector = v8::ObjectTemplate::New(isolate);
370 inspector->Set( 371 inspector->Set(
371 ToV8String(isolate, "attachInspector"), 372 ToV8String(isolate, "attachInspector"),
372 v8::FunctionTemplate::New(isolate, &InspectorExtension::Attach)); 373 v8::FunctionTemplate::New(isolate, &InspectorExtension::Attach));
373 inspector->Set( 374 inspector->Set(
374 ToV8String(isolate, "detachInspector"), 375 ToV8String(isolate, "detachInspector"),
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
524 }; 525 };
525 526
526 void UtilsExtension::CreateContextGroup( 527 void UtilsExtension::CreateContextGroup(
527 const v8::FunctionCallbackInfo<v8::Value>& args) { 528 const v8::FunctionCallbackInfo<v8::Value>& args) {
528 if (args.Length() != 0) { 529 if (args.Length() != 0) {
529 fprintf(stderr, "Internal error: createContextGroup()."); 530 fprintf(stderr, "Internal error: createContextGroup().");
530 Exit(); 531 Exit();
531 } 532 }
532 v8::base::Semaphore ready_semaphore(0); 533 v8::base::Semaphore ready_semaphore(0);
533 int context_group_id = 0; 534 int context_group_id = 0;
534 TaskRunner::SetupGlobalTasks setup_global; 535 IsolateData::SetupGlobalTasks setup_global;
535 setup_global.emplace_back(new SetTimeoutExtension()); 536 setup_global.emplace_back(new SetTimeoutExtension());
536 setup_global.emplace_back(new InspectorExtension()); 537 setup_global.emplace_back(new InspectorExtension());
537 inspector_client_->scheduleCreateContextGroup( 538 inspector_client_->scheduleCreateContextGroup(
538 std::move(setup_global), &ready_semaphore, &context_group_id); 539 std::move(setup_global), &ready_semaphore, &context_group_id);
539 ready_semaphore.Wait(); 540 ready_semaphore.Wait();
540 args.GetReturnValue().Set( 541 args.GetReturnValue().Set(
541 v8::Int32::New(args.GetIsolate(), context_group_id)); 542 v8::Int32::New(args.GetIsolate(), context_group_id));
542 } 543 }
543 544
544 v8::Local<v8::String> ToString(v8::Isolate* isolate, 545 v8::Local<v8::String> ToString(v8::Isolate* isolate,
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
602 v8::StartupData startup_data = {nullptr, 0}; 603 v8::StartupData startup_data = {nullptr, 0};
603 for (int i = 1; i < argc; ++i) { 604 for (int i = 1; i < argc; ++i) {
604 if (strcmp(argv[i], "--embed") == 0) { 605 if (strcmp(argv[i], "--embed") == 0) {
605 argv[i++] = nullptr; 606 argv[i++] = nullptr;
606 printf("Embedding script '%s'\n", argv[i]); 607 printf("Embedding script '%s'\n", argv[i]);
607 startup_data = v8::V8::CreateSnapshotDataBlob(argv[i]); 608 startup_data = v8::V8::CreateSnapshotDataBlob(argv[i]);
608 argv[i] = nullptr; 609 argv[i] = nullptr;
609 } 610 }
610 } 611 }
611 612
612 TaskRunner::SetupGlobalTasks backend_extensions; 613 IsolateData::SetupGlobalTasks backend_extensions;
613 backend_extensions.emplace_back(new SetTimeoutExtension()); 614 backend_extensions.emplace_back(new SetTimeoutExtension());
614 backend_extensions.emplace_back(new InspectorExtension()); 615 backend_extensions.emplace_back(new InspectorExtension());
615 TaskRunner backend_runner(std::move(backend_extensions), false, 616 TaskRunner backend_runner(std::move(backend_extensions), false,
616 &ready_semaphore, 617 &ready_semaphore,
617 startup_data.data ? &startup_data : nullptr); 618 startup_data.data ? &startup_data : nullptr);
618 ready_semaphore.Wait(); 619 ready_semaphore.Wait();
619 SendMessageToBackendExtension::set_backend_task_runner(&backend_runner); 620 SendMessageToBackendExtension::set_backend_task_runner(&backend_runner);
620 UtilsExtension::set_backend_task_runner(&backend_runner); 621 UtilsExtension::set_backend_task_runner(&backend_runner);
621 622
622 TaskRunner::SetupGlobalTasks frontend_extensions; 623 IsolateData::SetupGlobalTasks frontend_extensions;
623 frontend_extensions.emplace_back(new UtilsExtension()); 624 frontend_extensions.emplace_back(new UtilsExtension());
624 frontend_extensions.emplace_back(new SendMessageToBackendExtension()); 625 frontend_extensions.emplace_back(new SendMessageToBackendExtension());
625 TaskRunner frontend_runner(std::move(frontend_extensions), true, 626 TaskRunner frontend_runner(std::move(frontend_extensions), true,
626 &ready_semaphore, nullptr); 627 &ready_semaphore, nullptr);
627 ready_semaphore.Wait(); 628 ready_semaphore.Wait();
628 629
629 FrontendChannelImpl frontend_channel(&frontend_runner); 630 FrontendChannelImpl frontend_channel(&frontend_runner);
630 InspectorClientImpl inspector_client(&backend_runner, &frontend_channel, 631 InspectorClientImpl inspector_client(&backend_runner, &frontend_channel,
631 &ready_semaphore); 632 &ready_semaphore);
632 ready_semaphore.Wait(); 633 ready_semaphore.Wait();
(...skipping 16 matching lines...) Expand all
649 } 650 }
650 frontend_runner.Append(new ExecuteStringTask(chars)); 651 frontend_runner.Append(new ExecuteStringTask(chars));
651 } 652 }
652 653
653 frontend_runner.Join(); 654 frontend_runner.Join();
654 backend_runner.Join(); 655 backend_runner.Join();
655 656
656 delete startup_data.data; 657 delete startup_data.data;
657 return 0; 658 return 0;
658 } 659 }
OLDNEW
« no previous file with comments | « test/inspector/inspector-impl.cc ('k') | test/inspector/task-runner.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698