| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 #include "config.h" | 5 #include "config.h" |
| 6 #include "core/inspector/ConsoleMessage.h" | 6 #include "core/inspector/ConsoleMessage.h" |
| 7 | 7 |
| 8 #include "bindings/core/v8/ScriptCallStackFactory.h" |
| 8 #include "bindings/core/v8/ScriptState.h" | 9 #include "bindings/core/v8/ScriptState.h" |
| 10 #include "core/inspector/ScriptArguments.h" |
| 11 #include "wtf/CurrentTime.h" |
| 12 #include "wtf/PassOwnPtr.h" |
| 9 | 13 |
| 10 namespace blink { | 14 namespace blink { |
| 11 | 15 |
| 12 ConsoleMessage::ConsoleMessage() | 16 ConsoleMessage::ConsoleMessage() |
| 13 : m_lineNumber(0) | 17 : m_lineNumber(0) |
| 14 , m_columnNumber(0) | 18 , m_columnNumber(0) |
| 15 , m_scriptState(nullptr) | |
| 16 , m_requestIdentifier(0) | 19 , m_requestIdentifier(0) |
| 17 , m_workerProxy(nullptr) | 20 , m_workerProxy(nullptr) |
| 21 , m_timestamp(WTF::currentTime()) |
| 18 { | 22 { |
| 19 } | 23 } |
| 20 | 24 |
| 21 ConsoleMessage::ConsoleMessage(MessageSource source, | 25 ConsoleMessage::ConsoleMessage(MessageSource source, |
| 22 MessageLevel level, | 26 MessageLevel level, |
| 23 const String& message, | 27 const String& message, |
| 24 const String& url, | 28 const String& url, |
| 25 unsigned lineNumber, | 29 unsigned lineNumber, |
| 26 unsigned columnNumber) | 30 unsigned columnNumber) |
| 27 : m_source(source) | 31 : m_source(source) |
| 32 , m_type(LogMessageType) |
| 28 , m_level(level) | 33 , m_level(level) |
| 29 , m_message(message) | 34 , m_message(message) |
| 30 , m_url(url) | 35 , m_url(url) |
| 31 , m_lineNumber(lineNumber) | 36 , m_lineNumber(lineNumber) |
| 32 , m_columnNumber(columnNumber) | 37 , m_columnNumber(columnNumber) |
| 33 , m_scriptState(nullptr) | |
| 34 , m_requestIdentifier(0) | 38 , m_requestIdentifier(0) |
| 35 , m_workerProxy(nullptr) | 39 , m_workerProxy(nullptr) |
| 40 , m_timestamp(WTF::currentTime()) |
| 36 { | 41 { |
| 37 } | 42 } |
| 38 | 43 |
| 39 ConsoleMessage::~ConsoleMessage() | 44 ConsoleMessage::~ConsoleMessage() |
| 40 { | 45 { |
| 41 } | 46 } |
| 42 | 47 |
| 43 PassRefPtrWillBeRawPtr<ScriptCallStack> ConsoleMessage::callStack() const | 48 PassRefPtrWillBeRawPtr<ScriptCallStack> ConsoleMessage::callStack() const |
| 44 { | 49 { |
| 45 return m_callStack; | 50 return m_callStack; |
| 46 } | 51 } |
| 47 | 52 |
| 48 void ConsoleMessage::setCallStack(PassRefPtrWillBeRawPtr<ScriptCallStack> callSt
ack) | 53 void ConsoleMessage::setCallStack(PassRefPtrWillBeRawPtr<ScriptCallStack> callSt
ack) |
| 49 { | 54 { |
| 50 m_callStack = callStack; | 55 m_callStack = callStack; |
| 51 } | 56 } |
| 52 | 57 |
| 53 ScriptState* ConsoleMessage::scriptState() const | 58 ScriptState* ConsoleMessage::scriptState() const |
| 54 { | 59 { |
| 55 return m_scriptState; | 60 if (m_scriptState) |
| 61 return m_scriptState->get(); |
| 62 return nullptr; |
| 56 } | 63 } |
| 57 | 64 |
| 58 void ConsoleMessage::setScriptState(ScriptState* scriptState) | 65 void ConsoleMessage::setScriptState(ScriptState* scriptState) |
| 59 { | 66 { |
| 60 m_scriptState = scriptState; | 67 m_scriptState = adoptPtr(new ScriptStateProtectingContext(scriptState)); |
| 61 } | 68 } |
| 62 | 69 |
| 63 unsigned long ConsoleMessage::requestIdentifier() const | 70 unsigned long ConsoleMessage::requestIdentifier() const |
| 64 { | 71 { |
| 65 return m_requestIdentifier; | 72 return m_requestIdentifier; |
| 66 } | 73 } |
| 67 | 74 |
| 68 void ConsoleMessage::setRequestIdentifier(unsigned long requestIdentifier) | 75 void ConsoleMessage::setRequestIdentifier(unsigned long requestIdentifier) |
| 69 { | 76 { |
| 70 m_requestIdentifier = requestIdentifier; | 77 m_requestIdentifier = requestIdentifier; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 83 unsigned ConsoleMessage::lineNumber() const | 90 unsigned ConsoleMessage::lineNumber() const |
| 84 { | 91 { |
| 85 return m_lineNumber; | 92 return m_lineNumber; |
| 86 } | 93 } |
| 87 | 94 |
| 88 void ConsoleMessage::setLineNumber(unsigned lineNumber) | 95 void ConsoleMessage::setLineNumber(unsigned lineNumber) |
| 89 { | 96 { |
| 90 m_lineNumber = lineNumber; | 97 m_lineNumber = lineNumber; |
| 91 } | 98 } |
| 92 | 99 |
| 100 PassRefPtr<ScriptArguments> ConsoleMessage::scriptArguments() const |
| 101 { |
| 102 return m_arguments; |
| 103 } |
| 104 |
| 105 void ConsoleMessage::setScriptArguments(PassRefPtr<ScriptArguments> arguments) |
| 106 { |
| 107 m_arguments = arguments; |
| 108 } |
| 109 |
| 110 MessageType ConsoleMessage::type() const |
| 111 { |
| 112 return m_type; |
| 113 } |
| 114 |
| 115 void ConsoleMessage::setType(MessageType type) |
| 116 { |
| 117 m_type = type; |
| 118 } |
| 119 |
| 120 double ConsoleMessage::timestamp() const |
| 121 { |
| 122 return m_timestamp; |
| 123 } |
| 124 |
| 125 void ConsoleMessage::setTimestamp(double timestamp) |
| 126 { |
| 127 m_timestamp = timestamp; |
| 128 } |
| 129 |
| 93 MessageSource ConsoleMessage::source() const | 130 MessageSource ConsoleMessage::source() const |
| 94 { | 131 { |
| 95 return m_source; | 132 return m_source; |
| 96 } | 133 } |
| 97 | 134 |
| 98 MessageLevel ConsoleMessage::level() const | 135 MessageLevel ConsoleMessage::level() const |
| 99 { | 136 { |
| 100 return m_level; | 137 return m_level; |
| 101 } | 138 } |
| 102 | 139 |
| 103 const String& ConsoleMessage::message() const | 140 const String& ConsoleMessage::message() const |
| 104 { | 141 { |
| 105 return m_message; | 142 return m_message; |
| 106 } | 143 } |
| 107 | 144 |
| 108 unsigned ConsoleMessage::columnNumber() const | 145 unsigned ConsoleMessage::columnNumber() const |
| 109 { | 146 { |
| 110 return m_columnNumber; | 147 return m_columnNumber; |
| 111 } | 148 } |
| 112 | 149 |
| 150 void ConsoleMessage::windowCleared(LocalDOMWindow* window) |
| 151 { |
| 152 if (m_scriptState && m_scriptState->get() && m_scriptState->get()->domWindow
() == window) { |
| 153 m_scriptState->clear(); |
| 154 m_scriptState.clear(); |
| 155 } |
| 156 |
| 157 if (!m_arguments) |
| 158 return; |
| 159 if (m_arguments->scriptState()->domWindow() != window) |
| 160 return; |
| 161 if (!m_message) |
| 162 m_message = "<message collected>"; |
| 163 m_arguments.clear(); |
| 164 } |
| 165 |
| 166 unsigned ConsoleMessage::argumentCount() |
| 167 { |
| 168 if (m_arguments) |
| 169 return m_arguments->argumentCount(); |
| 170 return 0; |
| 171 } |
| 172 |
| 173 void ConsoleMessage::autogenerateMetadata() |
| 174 { |
| 175 if (m_type == EndGroupMessageType) |
| 176 return; |
| 177 |
| 178 if (!m_callStack) |
| 179 m_callStack = createScriptCallStackForConsole(ScriptCallStack::maxCallSt
ackSizeToCapture, true); |
| 180 |
| 181 if (m_callStack && m_callStack->size()) { |
| 182 const ScriptCallFrame& frame = m_callStack->at(0); |
| 183 m_url = frame.sourceURL(); |
| 184 m_lineNumber = frame.lineNumber(); |
| 185 m_columnNumber = frame.columnNumber(); |
| 186 return; |
| 187 } |
| 188 |
| 189 m_callStack.clear(); |
| 190 } |
| 191 |
| 113 void ConsoleMessage::trace(Visitor* visitor) | 192 void ConsoleMessage::trace(Visitor* visitor) |
| 114 { | 193 { |
| 115 visitor->trace(m_callStack); | 194 visitor->trace(m_callStack); |
| 116 } | 195 } |
| 117 | 196 |
| 118 } // namespace WebCore | 197 } // namespace WebCore |
| OLD | NEW |