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_V8INJECTEDSCRIPTHOST_H_ 6 #define V8_INSPECTOR_V8INJECTEDSCRIPTHOST_H_ 7 8 #include "include/v8.h" 9 10 namespace v8_inspector { 11 12 class V8InspectorImpl; 13 14 // SECURITY NOTE: Although the InjectedScriptHost is intended for use solely by 15 // the inspector, 16 // a reference to the InjectedScriptHost may be leaked to the page being 17 // inspected. Thus, the 18 // InjectedScriptHost must never implemment methods that have more power over 19 // the page than the 20 // page already has itself (e.g. origin restriction bypasses). 21 22 class V8InjectedScriptHost { 23 public: 24 // We expect that debugger outlives any JS context and thus 25 // V8InjectedScriptHost (owned by JS) 26 // is destroyed before inspector. 27 static v8::Local<v8::Object> create(v8::Local<v8::Context>, V8InspectorImpl*); 28 29 private: 30 static void nullifyPrototypeCallback( 31 const v8::FunctionCallbackInfo<v8::Value>&); 32 static void internalConstructorNameCallback( 33 const v8::FunctionCallbackInfo<v8::Value>&); 34 static void formatAccessorsAsProperties( 35 const v8::FunctionCallbackInfo<v8::Value>&); 36 static void subtypeCallback(const v8::FunctionCallbackInfo<v8::Value>&); 37 static void getInternalPropertiesCallback( 38 const v8::FunctionCallbackInfo<v8::Value>&); 39 static void objectHasOwnPropertyCallback( 40 const v8::FunctionCallbackInfo<v8::Value>&); 41 static void bindCallback(const v8::FunctionCallbackInfo<v8::Value>&); 42 static void proxyTargetValueCallback( 43 const v8::FunctionCallbackInfo<v8::Value>&); 44 }; 45 46 } // namespace v8_inspector 47 48 #endif // V8_INSPECTOR_V8INJECTEDSCRIPTHOST_H_ 49