Index: src/inspector/RemoteObjectId.cpp |
diff --git a/src/inspector/RemoteObjectId.cpp b/src/inspector/RemoteObjectId.cpp |
new file mode 100644 |
index 0000000000000000000000000000000000000000..75cd17bf9054b10a671ce20c49235e4871b165b4 |
--- /dev/null |
+++ b/src/inspector/RemoteObjectId.cpp |
@@ -0,0 +1,76 @@ |
+// Copyright 2015 the V8 project authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "src/inspector/RemoteObjectId.h" |
+ |
+#include "src/inspector/StringUtil.h" |
+#include "src/inspector/protocol/Protocol.h" |
+ |
+namespace v8_inspector { |
+ |
+RemoteObjectIdBase::RemoteObjectIdBase() : m_injectedScriptId(0) {} |
+ |
+std::unique_ptr<protocol::DictionaryValue> |
+RemoteObjectIdBase::parseInjectedScriptId(const String16& objectId) { |
+ std::unique_ptr<protocol::Value> parsedValue = protocol::parseJSON(objectId); |
+ if (!parsedValue || parsedValue->type() != protocol::Value::TypeObject) |
+ return nullptr; |
+ |
+ std::unique_ptr<protocol::DictionaryValue> parsedObjectId( |
+ protocol::DictionaryValue::cast(parsedValue.release())); |
+ bool success = |
+ parsedObjectId->getInteger("injectedScriptId", &m_injectedScriptId); |
+ if (success) return parsedObjectId; |
+ return nullptr; |
+} |
+ |
+RemoteObjectId::RemoteObjectId() : RemoteObjectIdBase(), m_id(0) {} |
+ |
+std::unique_ptr<RemoteObjectId> RemoteObjectId::parse( |
+ ErrorString* errorString, const String16& objectId) { |
+ std::unique_ptr<RemoteObjectId> result(new RemoteObjectId()); |
+ std::unique_ptr<protocol::DictionaryValue> parsedObjectId = |
+ result->parseInjectedScriptId(objectId); |
+ if (!parsedObjectId) { |
+ *errorString = "Invalid remote object id"; |
+ return nullptr; |
+ } |
+ |
+ bool success = parsedObjectId->getInteger("id", &result->m_id); |
+ if (!success) { |
+ *errorString = "Invalid remote object id"; |
+ return nullptr; |
+ } |
+ return result; |
+} |
+ |
+RemoteCallFrameId::RemoteCallFrameId() |
+ : RemoteObjectIdBase(), m_frameOrdinal(0) {} |
+ |
+std::unique_ptr<RemoteCallFrameId> RemoteCallFrameId::parse( |
+ ErrorString* errorString, const String16& objectId) { |
+ std::unique_ptr<RemoteCallFrameId> result(new RemoteCallFrameId()); |
+ std::unique_ptr<protocol::DictionaryValue> parsedObjectId = |
+ result->parseInjectedScriptId(objectId); |
+ if (!parsedObjectId) { |
+ *errorString = "Invalid call frame id"; |
+ return nullptr; |
+ } |
+ |
+ bool success = parsedObjectId->getInteger("ordinal", &result->m_frameOrdinal); |
+ if (!success) { |
+ *errorString = "Invalid call frame id"; |
+ return nullptr; |
+ } |
+ |
+ return result; |
+} |
+ |
+String16 RemoteCallFrameId::serialize(int injectedScriptId, int frameOrdinal) { |
+ return "{\"ordinal\":" + String16::fromInteger(frameOrdinal) + |
+ ",\"injectedScriptId\":" + String16::fromInteger(injectedScriptId) + |
+ "}"; |
+} |
+ |
+} // namespace v8_inspector |