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 #ifndef V8_INSPECTOR_INJECTEDSCRIPTNATIVE_H_ 6 #define V8_INSPECTOR_INJECTEDSCRIPTNATIVE_H_ 7 8 #include <vector> 9 10 #include "src/inspector/protocol/Protocol.h" 11 12 #include "include/v8.h" 13 14 namespace v8_inspector { 15 16 class InjectedScriptNative final { 17 public: 18 explicit InjectedScriptNative(v8::Isolate*); 19 ~InjectedScriptNative(); 20 21 void setOnInjectedScriptHost(v8::Local<v8::Object>); 22 static InjectedScriptNative* fromInjectedScriptHost(v8::Isolate* isolate, 23 v8::Local<v8::Object>); 24 25 int bind(v8::Local<v8::Value>, const String16& groupName); 26 void unbind(int id); 27 v8::Local<v8::Value> objectForId(int id); 28 29 void releaseObjectGroup(const String16& groupName); 30 String16 groupName(int objectId) const; 31 32 private: 33 void addObjectToGroup(int objectId, const String16& groupName); 34 35 int m_lastBoundObjectId; 36 v8::Isolate* m_isolate; 37 protocol::HashMap<int, v8::Global<v8::Value>> m_idToWrappedObject; 38 typedef protocol::HashMap<int, String16> IdToObjectGroupName; 39 IdToObjectGroupName m_idToObjectGroupName; 40 typedef protocol::HashMap<String16, std::vector<int>> NameToObjectGroup; 41 NameToObjectGroup m_nameToObjectGroup; 42 }; 43 44 } // namespace v8_inspector 45 46 #endif // V8_INSPECTOR_INJECTEDSCRIPTNATIVE_H_ 47