Index: src/debug/debug-interface.h |
diff --git a/src/debug/debug-interface.h b/src/debug/debug-interface.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..bc72dd8aab171013e4141a5a4da2350181ebab9d |
--- /dev/null |
+++ b/src/debug/debug-interface.h |
@@ -0,0 +1,119 @@ |
+// Copyright 2016 the V8 project authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef V8_DEBUG_DEBUG_INTERFACE_H_ |
+#define V8_DEBUG_DEBUG_INTERFACE_H_ |
+ |
+#include "include/v8-debug.h" |
+#include "include/v8.h" |
+ |
+namespace v8 { |
+ |
+class DebugInterface { |
+ public: |
+ /** |
+ * An event details object passed to the debug event listener. |
+ */ |
+ class EventDetails : public v8::Debug::EventDetails { |
+ public: |
+ /** |
+ * Event type. |
+ */ |
+ virtual v8::DebugEvent GetEvent() const = 0; |
+ |
+ /** |
+ * Access to execution state and event data of the debug event. Don't store |
+ * these cross callbacks as their content becomes invalid. |
+ */ |
+ virtual Local<Object> GetExecutionState() const = 0; |
+ virtual Local<Object> GetEventData() const = 0; |
+ |
+ /** |
+ * Get the context active when the debug event happened. Note this is not |
+ * the current active context as the JavaScript part of the debugger is |
+ * running in its own context which is entered at this point. |
+ */ |
+ virtual Local<Context> GetEventContext() const = 0; |
+ |
+ /** |
+ * Client data passed with the corresponding callback when it was |
+ * registered. |
+ */ |
+ virtual Local<Value> GetCallbackData() const = 0; |
+ |
+ virtual ~EventDetails() {} |
+ }; |
+ |
+ /** |
+ * Debug event callback function. |
+ * |
+ * \param event_details object providing information about the debug event |
+ * |
+ * A EventCallback does not take possession of the event data, |
+ * and must not rely on the data persisting after the handler returns. |
+ */ |
+ typedef void (*EventCallback)(const EventDetails& event_details); |
+ |
+ static bool SetDebugEventListener(Isolate* isolate, EventCallback that, |
+ Local<Value> data = Local<Value>()); |
+ |
+ /** |
+ * Debugger is running in its own context which is entered while debugger |
+ * messages are being dispatched. This is an explicit getter for this |
+ * debugger context. Note that the content of the debugger context is subject |
+ * to change. The Context exists only when the debugger is active, i.e. at |
+ * least one DebugEventListener or MessageHandler is set. |
+ */ |
+ static Local<Context> GetDebugContext(Isolate* isolate); |
+ |
+ /** |
+ * Run a JavaScript function in the debugger. |
+ * \param fun the function to call |
+ * \param data passed as second argument to the function |
+ * With this call the debugger is entered and the function specified is called |
+ * with the execution state as the first argument. This makes it possible to |
+ * get access to information otherwise not available during normal JavaScript |
+ * execution e.g. details on stack frames. Receiver of the function call will |
+ * be the debugger context global object, however this is a subject to change. |
+ * The following example shows a JavaScript function which when passed to |
+ * v8::Debug::Call will return the current line of JavaScript execution. |
+ * |
+ * \code |
+ * function frame_source_line(exec_state) { |
+ * return exec_state.frame(0).sourceLine(); |
+ * } |
+ * \endcode |
+ */ |
+ // TODO(dcarney): data arg should be a MaybeLocal |
+ static MaybeLocal<Value> Call(Local<Context> context, |
+ v8::Local<v8::Function> fun, |
+ Local<Value> data = Local<Value>()); |
+ |
+ /** |
+ * Enable/disable LiveEdit functionality for the given Isolate |
+ * (default Isolate if not provided). V8 will abort if LiveEdit is |
+ * unexpectedly used. LiveEdit is enabled by default. |
+ */ |
+ static void SetLiveEditEnabled(Isolate* isolate, bool enable); |
+ |
+ // Schedule a debugger break to happen when JavaScript code is run |
+ // in the given isolate. |
+ static void DebugBreak(Isolate* isolate); |
+ |
+ // Remove scheduled debugger break in given isolate if it has not |
+ // happened yet. |
+ static void CancelDebugBreak(Isolate* isolate); |
+ |
+ /** |
+ * Returns array of internal properties specific to the value type. Result has |
+ * the following format: [<name>, <value>,...,<name>, <value>]. Result array |
+ * will be allocated in the current context. |
+ */ |
+ static MaybeLocal<Array> GetInternalProperties(Isolate* isolate, |
+ Local<Value> value); |
+}; |
+ |
+} // namespace v8 |
+ |
+#endif // V8_DEBUG_DEBUG_INTERFACE_H_ |