Home | History | Annotate | Download | only in inspector
      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