diff --git a/src/api/environment.cc b/src/api/environment.cc index a0b97feb597..0774e810746 100644 --- a/src/api/environment.cc +++ b/src/api/environment.cc @@ -532,8 +532,19 @@ NODE_EXTERN std::unique_ptr GetInspectorParentHandle( NODE_EXTERN std::unique_ptr GetInspectorParentHandle( Environment* env, ThreadId thread_id, const char* url, const char* name) { - CHECK_NOT_NULL(env); + if (url == nullptr) url = ""; if (name == nullptr) name = ""; + std::string_view url_view(url); + std::string_view name_view(name); + return GetInspectorParentHandle(env, thread_id, url_view, name_view); +} + +NODE_EXTERN std::unique_ptr GetInspectorParentHandle( + Environment* env, + ThreadId thread_id, + std::string_view url, + std::string_view name) { + CHECK_NOT_NULL(env); CHECK_NE(thread_id.id, static_cast(-1)); if (!env->should_create_inspector()) { return nullptr; diff --git a/src/inspector/worker_inspector.cc b/src/inspector/worker_inspector.cc index 58c7d2602b3..4b6ac1021be 100644 --- a/src/inspector/worker_inspector.cc +++ b/src/inspector/worker_inspector.cc @@ -57,10 +57,10 @@ class WorkerFinishedRequest : public Request { ParentInspectorHandle::ParentInspectorHandle( uint64_t id, - const std::string& url, + std::string_view url, std::shared_ptr parent_thread, bool wait_for_connect, - const std::string& name, + std::string_view name, std::shared_ptr network_resource_manager) : id_(id), url_(url), @@ -104,8 +104,8 @@ void WorkerManager::WorkerStarted(uint64_t session_id, std::unique_ptr WorkerManager::NewParentHandle( uint64_t thread_id, - const std::string& url, - const std::string& name, + std::string_view url, + std::string_view name, std::shared_ptr network_resource_manager) { bool wait = !delegates_waiting_on_start_.empty(); return std::make_unique( diff --git a/src/inspector/worker_inspector.h b/src/inspector/worker_inspector.h index 28a249aea4d..468997230aa 100644 --- a/src/inspector/worker_inspector.h +++ b/src/inspector/worker_inspector.h @@ -57,14 +57,14 @@ class ParentInspectorHandle { public: ParentInspectorHandle( uint64_t id, - const std::string& url, + std::string_view url, std::shared_ptr parent_thread, bool wait_for_connect, - const std::string& name, + std::string_view name, std::shared_ptr network_resource_manager); ~ParentInspectorHandle(); std::unique_ptr NewParentInspectorHandle( - uint64_t thread_id, const std::string& url, const std::string& name) { + uint64_t thread_id, std::string_view url, std::string_view name) { return std::make_unique( thread_id, url, parent_thread_, wait_, name, network_resource_manager_); } @@ -97,8 +97,8 @@ class WorkerManager : public std::enable_shared_from_this { std::unique_ptr NewParentHandle( uint64_t thread_id, - const std::string& url, - const std::string& name, + std::string_view url, + std::string_view name, std::shared_ptr network_resource_manager); void WorkerStarted(uint64_t session_id, const WorkerInfo& info, bool waiting); void WorkerFinished(uint64_t session_id); diff --git a/src/inspector_agent.cc b/src/inspector_agent.cc index 87addfa8fbb..f62eb36b575 100644 --- a/src/inspector_agent.cc +++ b/src/inspector_agent.cc @@ -1155,7 +1155,7 @@ void Agent::SetParentHandle( } std::unique_ptr Agent::GetParentHandle( - uint64_t thread_id, const std::string& url, const std::string& name) { + uint64_t thread_id, std::string_view url, std::string_view name) { THROW_IF_INSUFFICIENT_PERMISSIONS(parent_env_, permission::PermissionScope::kInspector, "GetParentHandle", diff --git a/src/inspector_agent.h b/src/inspector_agent.h index e43dced8f41..5ace72a6401 100644 --- a/src/inspector_agent.h +++ b/src/inspector_agent.h @@ -94,8 +94,9 @@ class Agent { void DisableAsyncHook(); void SetParentHandle(std::unique_ptr parent_handle); - std::unique_ptr GetParentHandle( - uint64_t thread_id, const std::string& url, const std::string& name); + std::unique_ptr GetParentHandle(uint64_t thread_id, + std::string_view url, + std::string_view name); // Called to create inspector sessions that can be used from the same thread. // The inspector responds by using the delegate to send messages back. diff --git a/src/node.h b/src/node.h index 27e9847738c..b17131d6e6b 100644 --- a/src/node.h +++ b/src/node.h @@ -713,6 +713,12 @@ NODE_EXTERN std::unique_ptr GetInspectorParentHandle( const char* child_url, const char* name); +NODE_EXTERN std::unique_ptr GetInspectorParentHandle( + Environment* parent_env, + ThreadId child_thread_id, + std::string_view child_url, + std::string_view name); + struct StartExecutionCallbackInfo { v8::Local process_object; v8::Local native_require; diff --git a/src/node_worker.cc b/src/node_worker.cc index 76a17305f08..e00a5d60d12 100644 --- a/src/node_worker.cc +++ b/src/node_worker.cc @@ -104,7 +104,7 @@ Worker::Worker(Environment* env, if (env->permission()->is_granted( env, node::permission::PermissionScope::kInspector)) { inspector_parent_handle_ = - GetInspectorParentHandle(env, thread_id_, url.c_str(), name.c_str()); + GetInspectorParentHandle(env, thread_id_, url, name); } argv_ = std::vector{env->argv()[0]}; diff --git a/test/parallel/test-worker-name.js b/test/parallel/test-worker-name.js index 30f3710a826..c4676f446c4 100644 --- a/test/parallel/test-worker-name.js +++ b/test/parallel/test-worker-name.js @@ -17,7 +17,7 @@ if (!isMainThread) { const assert = require('assert'); if (isMainThread) { - const name = 'Hello Thread'; + const name = 'Hello\0Thread'; const expectedTitle = `[worker 1] ${name}`; const worker = new Worker(fixtures.path('worker-name.js'), { name,