// 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. #ifndef V8_INSPECTOR_V8_INJECTED_SCRIPT_HOST_H_ #define V8_INSPECTOR_V8_INJECTED_SCRIPT_HOST_H_ #include "include/v8.h" namespace v8_inspector { class V8InspectorImpl; // SECURITY NOTE: Although the InjectedScriptHost is intended for use solely by // the inspector, // a reference to the InjectedScriptHost may be leaked to the page being // inspected. Thus, the // InjectedScriptHost must never implemment methods that have more power over // the page than the // page already has itself (e.g. origin restriction bypasses). class V8InjectedScriptHost { public: // We expect that debugger outlives any JS context and thus // V8InjectedScriptHost (owned by JS) // is destroyed before inspector. static v8::Local create(v8::Local, V8InspectorImpl*); private: static void nullifyPrototypeCallback( const v8::FunctionCallbackInfo&); static void getPropertyCallback(const v8::FunctionCallbackInfo&); static void internalConstructorNameCallback( const v8::FunctionCallbackInfo&); static void formatAccessorsAsProperties( const v8::FunctionCallbackInfo&); static void subtypeCallback(const v8::FunctionCallbackInfo&); static void getInternalPropertiesCallback( const v8::FunctionCallbackInfo&); static void objectHasOwnPropertyCallback( const v8::FunctionCallbackInfo&); static void bindCallback(const v8::FunctionCallbackInfo&); static void proxyTargetValueCallback( const v8::FunctionCallbackInfo&); static void nativeAccessorDescriptorCallback( const v8::FunctionCallbackInfo&); static void typedArrayPropertiesCallback( const v8::FunctionCallbackInfo&); }; } // namespace v8_inspector #endif // V8_INSPECTOR_V8_INJECTED_SCRIPT_HOST_H_