OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef V8ConsoleMessage_h | 5 #ifndef V8ConsoleMessage_h |
6 #define V8ConsoleMessage_h | 6 #define V8ConsoleMessage_h |
7 | 7 |
8 #include "platform/inspector_protocol/Collections.h" | 8 #include "platform/inspector_protocol/Collections.h" |
9 #include "platform/inspector_protocol/String16.h" | 9 #include "platform/inspector_protocol/String16.h" |
10 #include "platform/v8_inspector/protocol/Console.h" | 10 #include "platform/v8_inspector/protocol/Console.h" |
| 11 #include "platform/v8_inspector/protocol/Runtime.h" |
11 #include "platform/v8_inspector/public/V8ConsoleTypes.h" | 12 #include "platform/v8_inspector/public/V8ConsoleTypes.h" |
12 #include "platform/v8_inspector/public/V8StackTrace.h" | 13 #include "platform/v8_inspector/public/V8StackTrace.h" |
13 #include <deque> | 14 #include <deque> |
14 #include <v8.h> | 15 #include <v8.h> |
15 | 16 |
16 namespace blink { | 17 namespace blink { |
17 | 18 |
18 class InspectedContext; | 19 class InspectedContext; |
19 class V8DebuggerImpl; | 20 class V8DebuggerImpl; |
20 class V8InspectorSessionImpl; | 21 class V8InspectorSessionImpl; |
21 class V8StackTrace; | 22 class V8StackTrace; |
22 | 23 |
| 24 enum class V8MessageOrigin { kConsole, kException, kRevokedException }; |
| 25 |
23 class V8ConsoleMessage { | 26 class V8ConsoleMessage { |
24 public: | 27 public: |
25 V8ConsoleMessage( | 28 V8ConsoleMessage( |
26 double timestampMS, | 29 double timestamp, |
27 MessageSource, | 30 MessageSource, |
28 MessageLevel, | 31 MessageLevel, |
29 const String16& message, | 32 const String16& message, |
30 const String16& url, | 33 const String16& url, |
31 unsigned lineNumber, | 34 unsigned lineNumber, |
32 unsigned columnNumber, | 35 unsigned columnNumber, |
33 std::unique_ptr<V8StackTrace>, | 36 std::unique_ptr<V8StackTrace>, |
34 int scriptId, | 37 int scriptId, |
35 const String16& requestIdentifier); | 38 const String16& requestIdentifier); |
36 ~V8ConsoleMessage(); | 39 ~V8ConsoleMessage(); |
37 | 40 |
38 static std::unique_ptr<V8ConsoleMessage> createForConsoleAPI( | 41 static std::unique_ptr<V8ConsoleMessage> createForConsoleAPI( |
39 double timestampMS, | 42 double timestamp, |
40 MessageType, | 43 MessageType, |
41 MessageLevel, | 44 MessageLevel, |
42 const String16& message, | 45 const String16& message, |
43 std::vector<v8::Local<v8::Value>>* arguments, | 46 std::vector<v8::Local<v8::Value>>* arguments, |
44 std::unique_ptr<V8StackTrace>, | 47 std::unique_ptr<V8StackTrace>, |
45 InspectedContext*); | 48 InspectedContext*); |
46 | 49 |
47 std::unique_ptr<protocol::Console::ConsoleMessage> buildInspectorObject(V8In
spectorSessionImpl*, bool generatePreview) const; | 50 static std::unique_ptr<V8ConsoleMessage> createForException( |
| 51 double timestamp, |
| 52 const String16& message, |
| 53 const String16& url, |
| 54 unsigned lineNumber, |
| 55 unsigned columnNumber, |
| 56 std::unique_ptr<V8StackTrace>, |
| 57 int scriptId, |
| 58 v8::Isolate*, |
| 59 int contextId, |
| 60 v8::Local<v8::Value> exception, |
| 61 unsigned exceptionId); |
| 62 |
| 63 static std::unique_ptr<V8ConsoleMessage> createForRevokedException( |
| 64 double timestamp, |
| 65 const String16& message, |
| 66 unsigned revokedExceptionId); |
| 67 |
| 68 V8MessageOrigin origin() const; |
| 69 void reportToFrontend(protocol::Console::Frontend*, V8InspectorSessionImpl*,
bool generatePreview) const; |
| 70 void reportToFrontend(protocol::Runtime::Frontend*, V8InspectorSessionImpl*,
bool generatePreview) const; |
48 unsigned argumentCount() const; | 71 unsigned argumentCount() const; |
49 MessageType type() const; | 72 MessageType type() const; |
50 void contextDestroyed(int contextId); | 73 void contextDestroyed(int contextId); |
51 void assignId(unsigned); | |
52 void assignRelatedId(unsigned); | |
53 void addArguments(v8::Isolate*, int contextId, std::vector<v8::Local<v8::Val
ue>>*); | |
54 | 74 |
55 private: | 75 private: |
56 using Arguments = std::vector<std::unique_ptr<v8::Global<v8::Value>>>; | 76 using Arguments = std::vector<std::unique_ptr<v8::Global<v8::Value>>>; |
57 void appendArguments(protocol::Console::ConsoleMessage*, V8InspectorSessionI
mpl*, bool generatePreview) const; | 77 std::unique_ptr<protocol::Array<protocol::Runtime::RemoteObject>> wrapArgume
nts(V8InspectorSessionImpl*, bool generatePreview) const; |
| 78 std::unique_ptr<protocol::Runtime::RemoteObject> wrapException(V8InspectorSe
ssionImpl*, bool generatePreview) const; |
58 | 79 |
| 80 V8MessageOrigin m_origin; |
59 double m_timestamp; | 81 double m_timestamp; |
60 MessageSource m_source; | 82 MessageSource m_source; |
61 MessageLevel m_level; | 83 MessageLevel m_level; |
62 String16 m_message; | 84 String16 m_message; |
63 String16 m_url; | 85 String16 m_url; |
64 unsigned m_lineNumber; | 86 unsigned m_lineNumber; |
65 unsigned m_columnNumber; | 87 unsigned m_columnNumber; |
66 std::unique_ptr<V8StackTrace> m_stackTrace; | 88 std::unique_ptr<V8StackTrace> m_stackTrace; |
67 int m_scriptId; | 89 int m_scriptId; |
68 String16 m_requestIdentifier; | 90 String16 m_requestIdentifier; |
69 int m_contextId; | 91 int m_contextId; |
70 MessageType m_type; | 92 MessageType m_type; |
71 unsigned m_messageId; | 93 unsigned m_exceptionId; |
72 unsigned m_relatedMessageId; | 94 unsigned m_revokedExceptionId; |
73 Arguments m_arguments; | 95 Arguments m_arguments; |
74 }; | 96 }; |
75 | 97 |
76 class V8ConsoleMessageStorage { | 98 class V8ConsoleMessageStorage { |
77 public: | 99 public: |
78 V8ConsoleMessageStorage(V8DebuggerImpl*, int contextGroupId); | 100 V8ConsoleMessageStorage(V8DebuggerImpl*, int contextGroupId); |
79 ~V8ConsoleMessageStorage(); | 101 ~V8ConsoleMessageStorage(); |
80 | 102 |
81 int contextGroupId() { return m_contextGroupId; } | 103 int contextGroupId() { return m_contextGroupId; } |
82 int expiredCount() { return m_expiredCount; } | 104 int expiredCount() { return m_expiredCount; } |
83 const std::deque<std::unique_ptr<V8ConsoleMessage>>& messages() const { retu
rn m_messages; } | 105 const std::deque<std::unique_ptr<V8ConsoleMessage>>& messages() const { retu
rn m_messages; } |
84 | 106 |
85 void addMessage(std::unique_ptr<V8ConsoleMessage>); | 107 void addMessage(std::unique_ptr<V8ConsoleMessage>); |
86 void contextDestroyed(int contextId); | 108 void contextDestroyed(int contextId); |
87 void clear(); | 109 void clear(); |
88 | 110 |
89 private: | 111 private: |
90 V8DebuggerImpl* m_debugger; | 112 V8DebuggerImpl* m_debugger; |
91 int m_contextGroupId; | 113 int m_contextGroupId; |
92 int m_expiredCount; | 114 int m_expiredCount; |
93 std::deque<std::unique_ptr<V8ConsoleMessage>> m_messages; | 115 std::deque<std::unique_ptr<V8ConsoleMessage>> m_messages; |
94 }; | 116 }; |
95 | 117 |
96 } // namespace blink | 118 } // namespace blink |
97 | 119 |
98 #endif // V8ConsoleMessage_h | 120 #endif // V8ConsoleMessage_h |
OLD | NEW |