OLD | NEW |
| (Empty) |
1 // Copyright 2015 the V8 project authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "src/inspector/RemoteObjectId.h" | |
6 | |
7 #include "src/inspector/StringUtil.h" | |
8 #include "src/inspector/protocol/Protocol.h" | |
9 | |
10 namespace v8_inspector { | |
11 | |
12 RemoteObjectIdBase::RemoteObjectIdBase() : m_injectedScriptId(0) {} | |
13 | |
14 std::unique_ptr<protocol::DictionaryValue> | |
15 RemoteObjectIdBase::parseInjectedScriptId(const String16& objectId) { | |
16 std::unique_ptr<protocol::Value> parsedValue = protocol::parseJSON(objectId); | |
17 if (!parsedValue || parsedValue->type() != protocol::Value::TypeObject) | |
18 return nullptr; | |
19 | |
20 std::unique_ptr<protocol::DictionaryValue> parsedObjectId( | |
21 protocol::DictionaryValue::cast(parsedValue.release())); | |
22 bool success = | |
23 parsedObjectId->getInteger("injectedScriptId", &m_injectedScriptId); | |
24 if (success) return parsedObjectId; | |
25 return nullptr; | |
26 } | |
27 | |
28 RemoteObjectId::RemoteObjectId() : RemoteObjectIdBase(), m_id(0) {} | |
29 | |
30 std::unique_ptr<RemoteObjectId> RemoteObjectId::parse( | |
31 ErrorString* errorString, const String16& objectId) { | |
32 std::unique_ptr<RemoteObjectId> result(new RemoteObjectId()); | |
33 std::unique_ptr<protocol::DictionaryValue> parsedObjectId = | |
34 result->parseInjectedScriptId(objectId); | |
35 if (!parsedObjectId) { | |
36 *errorString = "Invalid remote object id"; | |
37 return nullptr; | |
38 } | |
39 | |
40 bool success = parsedObjectId->getInteger("id", &result->m_id); | |
41 if (!success) { | |
42 *errorString = "Invalid remote object id"; | |
43 return nullptr; | |
44 } | |
45 return result; | |
46 } | |
47 | |
48 RemoteCallFrameId::RemoteCallFrameId() | |
49 : RemoteObjectIdBase(), m_frameOrdinal(0) {} | |
50 | |
51 std::unique_ptr<RemoteCallFrameId> RemoteCallFrameId::parse( | |
52 ErrorString* errorString, const String16& objectId) { | |
53 std::unique_ptr<RemoteCallFrameId> result(new RemoteCallFrameId()); | |
54 std::unique_ptr<protocol::DictionaryValue> parsedObjectId = | |
55 result->parseInjectedScriptId(objectId); | |
56 if (!parsedObjectId) { | |
57 *errorString = "Invalid call frame id"; | |
58 return nullptr; | |
59 } | |
60 | |
61 bool success = parsedObjectId->getInteger("ordinal", &result->m_frameOrdinal); | |
62 if (!success) { | |
63 *errorString = "Invalid call frame id"; | |
64 return nullptr; | |
65 } | |
66 | |
67 return result; | |
68 } | |
69 | |
70 String16 RemoteCallFrameId::serialize(int injectedScriptId, int frameOrdinal) { | |
71 return "{\"ordinal\":" + String16::fromInteger(frameOrdinal) + | |
72 ",\"injectedScriptId\":" + String16::fromInteger(injectedScriptId) + | |
73 "}"; | |
74 } | |
75 | |
76 } // namespace v8_inspector | |
OLD | NEW |