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
10namespace v8_inspector {
11
12class 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
22class 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