Skip to content

Commit 41800ff

Browse files
authored
Merge pull request #736 from NativeScript/pete/network-agent
Fix inline js string to c-string conversion that failed on older devices
2 parents b753387 + ac501db commit 41800ff

File tree

1 file changed

+27
-6
lines changed

1 file changed

+27
-6
lines changed

runtime/src/main/jni/NetworkDomainCallbackHandlers.cpp

+27-6
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
#include <sstream>
66
#include "NetworkDomainCallbackHandlers.h"
7+
#include "NativeScriptAssert.h"
78

89
using namespace tns;
910

@@ -48,14 +49,24 @@ void NetworkDomainCallbackHandlers::ResponseReceivedCallback(const v8::FunctionC
4849
throw NativeScriptException("`response` parameter not in the correct format.");
4950
}
5051

51-
auto responseJsonString = ArgConverter::ConvertToString(responseJson).c_str();
52-
auto protocolResponseJson = protocol::parseJSON(responseJsonString);
52+
auto responseJsonString = ArgConverter::ConvertToString(responseJson);
53+
auto responseJsonCString = responseJsonString.c_str();
54+
auto protocolResponseJson = protocol::parseJSON(responseJsonCString);
5355

5456
protocol::ErrorSupport errorSupport;
5557

5658
auto protocolResponseObj = protocol::Network::Response::parse(protocolResponseJson.get(),
5759
&errorSupport);
5860

61+
auto errorString = errorSupport.errors().utf8();
62+
63+
if (!errorString.empty()) {
64+
auto errorMessage = "Error while parsing debug `response` object. ";
65+
DEBUG_WRITE_FORCE("%s Error: %s", errorMessage, errorString.c_str());
66+
67+
throw NativeScriptException(errorMessage + errorString);
68+
}
69+
5970
auto requestIdString = ArgConverter::ConvertToString(requestId).c_str();
6071
auto networkRequestData = new v8_inspector::utils::NetworkRequestData();
6172
networkAgentInstance->m_responses.insert(std::make_pair(requestIdString, networkRequestData));
@@ -122,21 +133,31 @@ void NetworkDomainCallbackHandlers::RequestWillBeSentCallback(const v8::Function
122133
throw NativeScriptException("`request` parameter not in the correct format.");
123134
}
124135

125-
auto requestJsonString = ArgConverter::ConvertToString(requestJson).c_str();
126-
auto protocolRequestJson = protocol::parseJSON(requestJsonString);
136+
auto requestJsonString = ArgConverter::ConvertToString(requestJson);
137+
auto requestJsonCString = requestJsonString.c_str();
138+
auto protocolRequestJson = protocol::parseJSON(requestJsonCString);
127139

128140
protocol::ErrorSupport errorSupport;
129141

130-
auto protocolResponseObj = protocol::Network::Request::parse(protocolRequestJson.get(), &errorSupport);
142+
auto protocolRequestObj = protocol::Network::Request::parse(protocolRequestJson.get(), &errorSupport);
131143
auto initiator = protocol::Network::Initiator::create().setType(protocol::Network::Initiator::TypeEnum::Script).build();
132144

145+
auto errorString = errorSupport.errors().utf8();
146+
147+
if (!errorString.empty()) {
148+
auto errorMessage = "Error while parsing debug `request` object. ";
149+
DEBUG_WRITE_FORCE("%s Error: %s", errorMessage, errorString.c_str());
150+
151+
throw NativeScriptException(errorMessage + errorString);
152+
}
153+
133154
protocol::Maybe<String16> type(ArgConverter::ConvertToString(typeArg).c_str());
134155
protocol::Maybe<protocol::Network::Response> emptyRedirect;
135156
networkAgentInstance->m_frontend.requestWillBeSent(ArgConverter::ConvertToString(requestId).c_str(),
136157
FrameId,
137158
LoaderId,
138159
ArgConverter::ConvertToString(url).c_str(),
139-
std::move(protocolResponseObj),
160+
std::move(protocolRequestObj),
140161
timeStamp,
141162
std::move(initiator),
142163
emptyRedirect,

0 commit comments

Comments
 (0)