Index: test/inspector-protocol/inspector-protocol.cc |
diff --git a/test/inspector-protocol/inspector-protocol.cc b/test/inspector-protocol/inspector-protocol.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..bca88e9781924b8c2a67943d4d028bb0e00e1fa1 |
--- /dev/null |
+++ b/test/inspector-protocol/inspector-protocol.cc |
@@ -0,0 +1,84 @@ |
+// Copyright 2016 the V8 project authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "include/libplatform/libplatform.h" |
+#include "include/v8.h" |
+ |
+#include "src/base/platform/platform.h" |
+#include "src/flags.h" |
+#include "src/inspector/string-util.h" |
+ |
+#include "test/inspector-protocol/channel-impl.h" |
+#include "test/inspector-protocol/inspector-client-impl.h" |
+#include "test/inspector-protocol/inspector-extension.h" |
+#include "test/inspector-protocol/load-extension.h" |
+#include "test/inspector-protocol/set-timeout-extension.h" |
+#include "test/inspector-protocol/task-queue.h" |
+#include "test/inspector-protocol/task-runner.h" |
+#include "test/inspector-protocol/task.h" |
+#include "test/inspector-protocol/utils-extension.h" |
+ |
+int main(int argc, char* argv[]) { |
+ using namespace v8_inspector; |
+ |
+ v8::V8::InitializeICUDefaultLocation(argv[0]); |
+ v8::Platform* platform = v8::platform::CreateDefaultPlatform(); |
+ v8::V8::InitializePlatform(platform); |
+ v8::internal::FlagList::SetFlagsFromCommandLine(&argc, argv, true); |
+ v8::V8::InitializeExternalStartupData(argv[0]); |
+ v8::V8::Initialize(); |
+ |
+ SetTimeoutExtension set_timeout_extension; |
+ v8::RegisterExtension(&set_timeout_extension); |
+ LoadExtension load_extension; |
+ v8::RegisterExtension(&load_extension); |
+ UtilsExtension utils_extension; |
+ v8::RegisterExtension(&utils_extension); |
+ BackendExtension backend_extension; |
+ v8::RegisterExtension(&backend_extension); |
+ FrontendExtension frontend_extension; |
+ v8::RegisterExtension(&frontend_extension); |
+ |
+ TaskQueue backend_queue; |
+ FrontendExtension::set_backend_task_queue(&backend_queue); |
+ |
+ TaskQueue frontend_queue; |
+ BackendExtension::set_frontend_task_queue(&frontend_queue); |
+ |
+ v8::base::Semaphore in_semaphore_(0); |
+ TaskRunner backend_task_runner(&backend_queue); |
+ |
+ const char* backend_extensions[] = {"v8_inspector/setTimeout", |
+ "v8_inspector/backend"}; |
+ v8::ExtensionConfiguration backend_configuration( |
+ arraysize(backend_extensions), backend_extensions); |
+ backend_queue.Append( |
+ new InitTask(&backend_configuration, &backend_task_runner, nullptr)); |
+ V8InspectorClientImpl inspector_client; |
+ ChannelImpl channel(&frontend_queue); |
+ backend_queue.Append( |
+ new ConnectTask(&inspector_client, &channel, &in_semaphore_)); |
+ in_semaphore_.Wait(); |
+ |
+ TaskRunner frontend_task_runner(&frontend_queue); |
+ const char* frontend_extensions[] = { |
+ "v8_inspector/utils", "v8_inspector/load", "v8_inspector/frontend"}; |
+ v8::ExtensionConfiguration frontend_configuration( |
+ arraysize(frontend_extensions), frontend_extensions); |
+ frontend_queue.Append(new InitTask(&frontend_configuration, |
+ &frontend_task_runner, &in_semaphore_)); |
+ in_semaphore_.Wait(); |
+ |
+ for (int i = 1; i < argc; ++i) { |
+ if (argv[i][0] == '-') break; |
+ const size_t kBufferSize = 1024; |
+ char buffer[kBufferSize]; |
+ int written = |
+ v8::base::OS::SNPrintF(buffer, kBufferSize, "load(\"%s\")", argv[i]); |
+ CHECK(written != -1); |
+ String16 source(buffer); |
+ frontend_queue.Append(new ExecuteStringTask(toStringView(source))); |
+ } |
+ return 0; |
+} |