• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2016 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_V8CONSOLE_H_
6 #define V8_INSPECTOR_V8CONSOLE_H_
7 
8 #include "src/base/macros.h"
9 
10 #include "include/v8.h"
11 
12 namespace v8_inspector {
13 
14 class InspectedContext;
15 
16 // Console API
17 // https://console.spec.whatwg.org/#console-interface
18 class V8Console {
19  public:
20   static v8::Local<v8::Object> createConsole(InspectedContext*,
21                                              bool hasMemoryAttribute);
22   static void clearInspectedContextIfNeeded(v8::Local<v8::Context>,
23                                             v8::Local<v8::Object> console);
24   static v8::Local<v8::Object> createCommandLineAPI(InspectedContext*);
25 
26   class CommandLineAPIScope {
27    public:
28     CommandLineAPIScope(v8::Local<v8::Context>,
29                         v8::Local<v8::Object> commandLineAPI,
30                         v8::Local<v8::Object> global);
31     ~CommandLineAPIScope();
32 
33    private:
34     static void accessorGetterCallback(
35         v8::Local<v8::Name>, const v8::PropertyCallbackInfo<v8::Value>&);
36     static void accessorSetterCallback(v8::Local<v8::Name>,
37                                        v8::Local<v8::Value>,
38                                        const v8::PropertyCallbackInfo<void>&);
39 
40     v8::Local<v8::Context> m_context;
41     v8::Local<v8::Object> m_commandLineAPI;
42     v8::Local<v8::Object> m_global;
43     v8::Local<v8::Set> m_installedMethods;
44     bool m_cleanup;
45 
46     DISALLOW_COPY_AND_ASSIGN(CommandLineAPIScope);
47   };
48 
49  private:
50   static void debugCallback(const v8::FunctionCallbackInfo<v8::Value>&);
51   static void errorCallback(const v8::FunctionCallbackInfo<v8::Value>&);
52   static void infoCallback(const v8::FunctionCallbackInfo<v8::Value>&);
53   static void logCallback(const v8::FunctionCallbackInfo<v8::Value>&);
54   static void warnCallback(const v8::FunctionCallbackInfo<v8::Value>&);
55   static void dirCallback(const v8::FunctionCallbackInfo<v8::Value>&);
56   static void dirxmlCallback(const v8::FunctionCallbackInfo<v8::Value>&);
57   static void tableCallback(const v8::FunctionCallbackInfo<v8::Value>&);
58   static void traceCallback(const v8::FunctionCallbackInfo<v8::Value>&);
59   static void groupCallback(const v8::FunctionCallbackInfo<v8::Value>&);
60   static void groupCollapsedCallback(
61       const v8::FunctionCallbackInfo<v8::Value>&);
62   static void groupEndCallback(const v8::FunctionCallbackInfo<v8::Value>&);
63   static void clearCallback(const v8::FunctionCallbackInfo<v8::Value>&);
64   static void countCallback(const v8::FunctionCallbackInfo<v8::Value>&);
65   static void assertCallback(const v8::FunctionCallbackInfo<v8::Value>&);
66   static void markTimelineCallback(const v8::FunctionCallbackInfo<v8::Value>&);
67   static void profileCallback(const v8::FunctionCallbackInfo<v8::Value>&);
68   static void profileEndCallback(const v8::FunctionCallbackInfo<v8::Value>&);
69   static void timelineCallback(const v8::FunctionCallbackInfo<v8::Value>&);
70   static void timelineEndCallback(const v8::FunctionCallbackInfo<v8::Value>&);
71   static void timeCallback(const v8::FunctionCallbackInfo<v8::Value>&);
72   static void timeEndCallback(const v8::FunctionCallbackInfo<v8::Value>&);
73   static void timeStampCallback(const v8::FunctionCallbackInfo<v8::Value>&);
74   // TODO(foolip): There is no spec for the Memory Info API, see blink-dev:
75   // https://groups.google.com/a/chromium.org/d/msg/blink-dev/g5YRCGpC9vs/b4OJz71NmPwJ
76   static void memoryGetterCallback(const v8::FunctionCallbackInfo<v8::Value>&);
77   static void memorySetterCallback(const v8::FunctionCallbackInfo<v8::Value>&);
78 
79   // CommandLineAPI
80   static void keysCallback(const v8::FunctionCallbackInfo<v8::Value>&);
81   static void valuesCallback(const v8::FunctionCallbackInfo<v8::Value>&);
82   static void debugFunctionCallback(const v8::FunctionCallbackInfo<v8::Value>&);
83   static void undebugFunctionCallback(
84       const v8::FunctionCallbackInfo<v8::Value>&);
85   static void monitorFunctionCallback(
86       const v8::FunctionCallbackInfo<v8::Value>&);
87   static void unmonitorFunctionCallback(
88       const v8::FunctionCallbackInfo<v8::Value>&);
89   static void lastEvaluationResultCallback(
90       const v8::FunctionCallbackInfo<v8::Value>&);
91   static void inspectCallback(const v8::FunctionCallbackInfo<v8::Value>&);
92   static void copyCallback(const v8::FunctionCallbackInfo<v8::Value>&);
93   static void inspectedObject(const v8::FunctionCallbackInfo<v8::Value>&,
94                               unsigned num);
inspectedObject0(const v8::FunctionCallbackInfo<v8::Value> & info)95   static void inspectedObject0(
96       const v8::FunctionCallbackInfo<v8::Value>& info) {
97     inspectedObject(info, 0);
98   }
inspectedObject1(const v8::FunctionCallbackInfo<v8::Value> & info)99   static void inspectedObject1(
100       const v8::FunctionCallbackInfo<v8::Value>& info) {
101     inspectedObject(info, 1);
102   }
inspectedObject2(const v8::FunctionCallbackInfo<v8::Value> & info)103   static void inspectedObject2(
104       const v8::FunctionCallbackInfo<v8::Value>& info) {
105     inspectedObject(info, 2);
106   }
inspectedObject3(const v8::FunctionCallbackInfo<v8::Value> & info)107   static void inspectedObject3(
108       const v8::FunctionCallbackInfo<v8::Value>& info) {
109     inspectedObject(info, 3);
110   }
inspectedObject4(const v8::FunctionCallbackInfo<v8::Value> & info)111   static void inspectedObject4(
112       const v8::FunctionCallbackInfo<v8::Value>& info) {
113     inspectedObject(info, 4);
114   }
115 };
116 
117 }  // namespace v8_inspector
118 
119 #endif  // V8_INSPECTOR_V8CONSOLE_H_
120