Use v8 to parse message as JSON
This commit is contained in:
parent
db6097ecec
commit
f2f6415543
1 changed files with 16 additions and 5 deletions
|
@ -45,12 +45,23 @@ void Debugger::DispatchProtocolMessage(DevToolsAgentHost* agent_host,
|
||||||
const std::string& message) {
|
const std::string& message) {
|
||||||
DCHECK(agent_host == agent_host_.get());
|
DCHECK(agent_host == agent_host_.get());
|
||||||
|
|
||||||
std::unique_ptr<base::Value> parsed_message(base::JSONReader::Read(message));
|
v8::Locker locker(isolate());
|
||||||
if (!parsed_message->IsType(base::Value::TYPE_DICTIONARY))
|
v8::HandleScope handle_scope(isolate());
|
||||||
return;
|
|
||||||
|
v8::Local<v8::String> local_message =
|
||||||
|
v8::String::NewFromUtf8(isolate(), message.data());
|
||||||
|
v8::MaybeLocal<v8::Value> parsed_message = v8::JSON::Parse(
|
||||||
|
isolate()->GetCurrentContext(), local_message);
|
||||||
|
if (parsed_message.IsEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::unique_ptr<base::DictionaryValue> dict(new base::DictionaryValue());
|
||||||
|
if (!mate::ConvertFromV8(isolate(), parsed_message.ToLocalChecked(),
|
||||||
|
dict.get())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
base::DictionaryValue* dict =
|
|
||||||
static_cast<base::DictionaryValue*>(parsed_message.get());
|
|
||||||
int id;
|
int id;
|
||||||
if (!dict->GetInteger("id", &id)) {
|
if (!dict->GetInteger("id", &id)) {
|
||||||
std::string method;
|
std::string method;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue