blob: 7d293af5a754d8543e092d4deaca1caf0d0f7f16 [file] [log] [blame]
Ben Murdochf3b273f2017-01-17 12:11:28 +00001// 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 internalConstructorNameCallback(
31 const v8::FunctionCallbackInfo<v8::Value>&);
32 static void formatAccessorsAsProperties(
33 const v8::FunctionCallbackInfo<v8::Value>&);
34 static void subtypeCallback(const v8::FunctionCallbackInfo<v8::Value>&);
35 static void getInternalPropertiesCallback(
36 const v8::FunctionCallbackInfo<v8::Value>&);
37 static void objectHasOwnPropertyCallback(
38 const v8::FunctionCallbackInfo<v8::Value>&);
39 static void bindCallback(const v8::FunctionCallbackInfo<v8::Value>&);
40 static void proxyTargetValueCallback(
41 const v8::FunctionCallbackInfo<v8::Value>&);
42};
43
44} // namespace v8_inspector
45
46#endif // V8_INSPECTOR_V8INJECTEDSCRIPTHOST_H_