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