From d6293c350d7933272451d2bb40fe242ca39b3793 Mon Sep 17 00:00:00 2001 From: Darin Dimitrov Date: Thu, 11 Jul 2019 14:26:36 +0300 Subject: [PATCH] Support UTF-16 characters in inspector Log domain --- .../src/inspector/utils/v8-inspector-common.cpp | 12 ++++++++++++ .../src/inspector/utils/v8-inspector-common.h | 2 ++ .../v8_inspector/src/inspector/v8-log-agent-impl.cpp | 3 ++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/test-app/runtime/src/main/cpp/v8_inspector/src/inspector/utils/v8-inspector-common.cpp b/test-app/runtime/src/main/cpp/v8_inspector/src/inspector/utils/v8-inspector-common.cpp index c0514ff87..d41986951 100644 --- a/test-app/runtime/src/main/cpp/v8_inspector/src/inspector/utils/v8-inspector-common.cpp +++ b/test-app/runtime/src/main/cpp/v8_inspector/src/inspector/utils/v8-inspector-common.cpp @@ -3,6 +3,8 @@ // #include +#include +#include #include #include @@ -39,6 +41,16 @@ protocol::DispatchResponse Common::protocolCommandNotSupportedDispatchResponse() return protocol::DispatchResponse::Error(s_notImplemented); } +std::vector Common::toVector(const std::string &value) { + std::wstring_convert, char16_t> convert; + std::u16string valueu16 = convert.from_bytes(value); + + const uint16_t *begin = reinterpret_cast(valueu16.data()); + const uint16_t *end = reinterpret_cast(valueu16.data() + valueu16.size()); + std::vector vector(begin, end); + return vector; +} + const String16 Common::s_notImplemented = "Protocol command not supported."; } } diff --git a/test-app/runtime/src/main/cpp/v8_inspector/src/inspector/utils/v8-inspector-common.h b/test-app/runtime/src/main/cpp/v8_inspector/src/inspector/utils/v8-inspector-common.h index 3a7da3bef..2ddfa9005 100644 --- a/test-app/runtime/src/main/cpp/v8_inspector/src/inspector/utils/v8-inspector-common.h +++ b/test-app/runtime/src/main/cpp/v8_inspector/src/inspector/utils/v8-inspector-common.h @@ -18,6 +18,8 @@ class Common { static protocol::DispatchResponse protocolCommandNotSupportedDispatchResponse(); + static std::vector toVector(const std::string& value); + private: static const String16 s_notImplemented; }; diff --git a/test-app/runtime/src/main/cpp/v8_inspector/src/inspector/v8-log-agent-impl.cpp b/test-app/runtime/src/main/cpp/v8_inspector/src/inspector/v8-log-agent-impl.cpp index 4b8aafab3..ba897cbb9 100644 --- a/test-app/runtime/src/main/cpp/v8_inspector/src/inspector/v8-log-agent-impl.cpp +++ b/test-app/runtime/src/main/cpp/v8_inspector/src/inspector/v8-log-agent-impl.cpp @@ -71,7 +71,8 @@ void V8LogAgentImpl::EntryAdded(const std::string& text, std::string verbosityLe auto nano = std::chrono::time_point_cast(std::chrono::system_clock::now()); double timestamp = nano.time_since_epoch().count(); - auto textString16 = String16(text.data()); + auto vector = utils::Common::toVector(text); + auto textString16 = String16(vector.data(), vector.size()); auto logEntry = protocol::Log::LogEntry::create() .setSource(protocol::Log::LogEntry::SourceEnum::Javascript)