| 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 #include "core/inspector/ThreadDebugger.h" | 5 #include "core/inspector/ThreadDebugger.h" |
| 6 | 6 |
| 7 #include "bindings/core/v8/SourceLocation.h" | 7 #include "bindings/core/v8/SourceLocation.h" |
| 8 #include "bindings/core/v8/V8Binding.h" | 8 #include "bindings/core/v8/V8Binding.h" |
| 9 #include "bindings/core/v8/V8DOMException.h" | 9 #include "bindings/core/v8/V8DOMException.h" |
| 10 #include "bindings/core/v8/V8DOMTokenList.h" | 10 #include "bindings/core/v8/V8DOMTokenList.h" |
| (...skipping 11 matching lines...) Expand all Loading... |
| 22 #include "core/inspector/InspectorTraceEvents.h" | 22 #include "core/inspector/InspectorTraceEvents.h" |
| 23 #include "platform/ScriptForbiddenScope.h" | 23 #include "platform/ScriptForbiddenScope.h" |
| 24 #include "wtf/CurrentTime.h" | 24 #include "wtf/CurrentTime.h" |
| 25 #include "wtf/PtrUtil.h" | 25 #include "wtf/PtrUtil.h" |
| 26 #include <memory> | 26 #include <memory> |
| 27 | 27 |
| 28 namespace blink { | 28 namespace blink { |
| 29 | 29 |
| 30 ThreadDebugger::ThreadDebugger(v8::Isolate* isolate) | 30 ThreadDebugger::ThreadDebugger(v8::Isolate* isolate) |
| 31 : m_isolate(isolate) | 31 : m_isolate(isolate) |
| 32 , m_debugger(V8Debugger::create(isolate, this)) | 32 , m_v8Inspector(V8Inspector::create(isolate, this)) |
| 33 { | 33 { |
| 34 } | 34 } |
| 35 | 35 |
| 36 ThreadDebugger::~ThreadDebugger() | 36 ThreadDebugger::~ThreadDebugger() |
| 37 { | 37 { |
| 38 } | 38 } |
| 39 | 39 |
| 40 // static | 40 // static |
| 41 ThreadDebugger* ThreadDebugger::from(v8::Isolate* isolate) | 41 ThreadDebugger* ThreadDebugger::from(v8::Isolate* isolate) |
| 42 { | 42 { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 55 case V8ConsoleAPIType::kInfo: return InfoMessageLevel; | 55 case V8ConsoleAPIType::kInfo: return InfoMessageLevel; |
| 56 case V8ConsoleAPIType::kWarning: return WarningMessageLevel; | 56 case V8ConsoleAPIType::kWarning: return WarningMessageLevel; |
| 57 case V8ConsoleAPIType::kError: return ErrorMessageLevel; | 57 case V8ConsoleAPIType::kError: return ErrorMessageLevel; |
| 58 default: return LogMessageLevel; | 58 default: return LogMessageLevel; |
| 59 } | 59 } |
| 60 } | 60 } |
| 61 | 61 |
| 62 void ThreadDebugger::willExecuteScript(v8::Isolate* isolate, int scriptId) | 62 void ThreadDebugger::willExecuteScript(v8::Isolate* isolate, int scriptId) |
| 63 { | 63 { |
| 64 if (ThreadDebugger* debugger = ThreadDebugger::from(isolate)) | 64 if (ThreadDebugger* debugger = ThreadDebugger::from(isolate)) |
| 65 debugger->debugger()->willExecuteScript(isolate->GetCurrentContext(), sc
riptId); | 65 debugger->v8Inspector()->willExecuteScript(isolate->GetCurrentContext(),
scriptId); |
| 66 } | 66 } |
| 67 | 67 |
| 68 void ThreadDebugger::didExecuteScript(v8::Isolate* isolate) | 68 void ThreadDebugger::didExecuteScript(v8::Isolate* isolate) |
| 69 { | 69 { |
| 70 if (ThreadDebugger* debugger = ThreadDebugger::from(isolate)) | 70 if (ThreadDebugger* debugger = ThreadDebugger::from(isolate)) |
| 71 debugger->debugger()->didExecuteScript(isolate->GetCurrentContext()); | 71 debugger->v8Inspector()->didExecuteScript(isolate->GetCurrentContext()); |
| 72 } | 72 } |
| 73 | 73 |
| 74 void ThreadDebugger::idleStarted(v8::Isolate* isolate) | 74 void ThreadDebugger::idleStarted(v8::Isolate* isolate) |
| 75 { | 75 { |
| 76 if (ThreadDebugger* debugger = ThreadDebugger::from(isolate)) | 76 if (ThreadDebugger* debugger = ThreadDebugger::from(isolate)) |
| 77 debugger->debugger()->idleStarted(); | 77 debugger->v8Inspector()->idleStarted(); |
| 78 } | 78 } |
| 79 | 79 |
| 80 void ThreadDebugger::idleFinished(v8::Isolate* isolate) | 80 void ThreadDebugger::idleFinished(v8::Isolate* isolate) |
| 81 { | 81 { |
| 82 if (ThreadDebugger* debugger = ThreadDebugger::from(isolate)) | 82 if (ThreadDebugger* debugger = ThreadDebugger::from(isolate)) |
| 83 debugger->debugger()->idleFinished(); | 83 debugger->v8Inspector()->idleFinished(); |
| 84 } | 84 } |
| 85 | 85 |
| 86 void ThreadDebugger::asyncTaskScheduled(const String& operationName, void* task,
bool recurring) | 86 void ThreadDebugger::asyncTaskScheduled(const String& operationName, void* task,
bool recurring) |
| 87 { | 87 { |
| 88 m_debugger->asyncTaskScheduled(operationName, task, recurring); | 88 m_v8Inspector->asyncTaskScheduled(operationName, task, recurring); |
| 89 } | 89 } |
| 90 | 90 |
| 91 void ThreadDebugger::asyncTaskCanceled(void* task) | 91 void ThreadDebugger::asyncTaskCanceled(void* task) |
| 92 { | 92 { |
| 93 m_debugger->asyncTaskCanceled(task); | 93 m_v8Inspector->asyncTaskCanceled(task); |
| 94 } | 94 } |
| 95 | 95 |
| 96 void ThreadDebugger::allAsyncTasksCanceled() | 96 void ThreadDebugger::allAsyncTasksCanceled() |
| 97 { | 97 { |
| 98 m_debugger->allAsyncTasksCanceled(); | 98 m_v8Inspector->allAsyncTasksCanceled(); |
| 99 } | 99 } |
| 100 | 100 |
| 101 void ThreadDebugger::asyncTaskStarted(void* task) | 101 void ThreadDebugger::asyncTaskStarted(void* task) |
| 102 { | 102 { |
| 103 m_debugger->asyncTaskStarted(task); | 103 m_v8Inspector->asyncTaskStarted(task); |
| 104 } | 104 } |
| 105 | 105 |
| 106 void ThreadDebugger::asyncTaskFinished(void* task) | 106 void ThreadDebugger::asyncTaskFinished(void* task) |
| 107 { | 107 { |
| 108 m_debugger->asyncTaskFinished(task); | 108 m_v8Inspector->asyncTaskFinished(task); |
| 109 } | 109 } |
| 110 | 110 |
| 111 unsigned ThreadDebugger::promiseRejected(v8::Local<v8::Context> context, const S
tring16& errorMessage, v8::Local<v8::Value> exception, std::unique_ptr<SourceLoc
ation> location) | 111 unsigned ThreadDebugger::promiseRejected(v8::Local<v8::Context> context, const S
tring16& errorMessage, v8::Local<v8::Value> exception, std::unique_ptr<SourceLoc
ation> location) |
| 112 { | 112 { |
| 113 const String16 defaultMessage = "Uncaught (in promise)"; | 113 const String16 defaultMessage = "Uncaught (in promise)"; |
| 114 String16 message = errorMessage; | 114 String16 message = errorMessage; |
| 115 if (message.isEmpty()) | 115 if (message.isEmpty()) |
| 116 message = defaultMessage; | 116 message = defaultMessage; |
| 117 else if (message.startWith("Uncaught ")) | 117 else if (message.startWith("Uncaught ")) |
| 118 message = message.substring(0, 8) + " (in promise)" + message.substring(
8); | 118 message = message.substring(0, 8) + " (in promise)" + message.substring(
8); |
| 119 | 119 |
| 120 unsigned result = debugger()->exceptionThrown(context, defaultMessage, excep
tion, message, location->url(), location->lineNumber(), location->columnNumber()
, location->cloneStackTrace(), location->scriptId()); | 120 unsigned result = v8Inspector()->exceptionThrown(context, defaultMessage, ex
ception, message, location->url(), location->lineNumber(), location->columnNumbe
r(), location->cloneStackTrace(), location->scriptId()); |
| 121 // TODO(dgozman): do not wrap in ConsoleMessage. | 121 // TODO(dgozman): do not wrap in ConsoleMessage. |
| 122 reportConsoleMessage(toExecutionContext(context), ConsoleMessage::create(JSM
essageSource, ErrorMessageLevel, message, std::move(location))); | 122 reportConsoleMessage(toExecutionContext(context), ConsoleMessage::create(JSM
essageSource, ErrorMessageLevel, message, std::move(location))); |
| 123 return result; | 123 return result; |
| 124 } | 124 } |
| 125 | 125 |
| 126 void ThreadDebugger::promiseRejectionRevoked(v8::Local<v8::Context> context, uns
igned promiseRejectionId) | 126 void ThreadDebugger::promiseRejectionRevoked(v8::Local<v8::Context> context, uns
igned promiseRejectionId) |
| 127 { | 127 { |
| 128 const String16 message = "Handler added to rejected promise"; | 128 const String16 message = "Handler added to rejected promise"; |
| 129 debugger()->exceptionRevoked(context, promiseRejectionId, message); | 129 v8Inspector()->exceptionRevoked(context, promiseRejectionId, message); |
| 130 } | 130 } |
| 131 | 131 |
| 132 void ThreadDebugger::beginUserGesture() | 132 void ThreadDebugger::beginUserGesture() |
| 133 { | 133 { |
| 134 m_userGestureIndicator = wrapUnique(new UserGestureIndicator(DefinitelyProce
ssingNewUserGesture)); | 134 m_userGestureIndicator = wrapUnique(new UserGestureIndicator(DefinitelyProce
ssingNewUserGesture)); |
| 135 } | 135 } |
| 136 | 136 |
| 137 void ThreadDebugger::endUserGesture() | 137 void ThreadDebugger::endUserGesture() |
| 138 { | 138 { |
| 139 m_userGestureIndicator.reset(); | 139 m_userGestureIndicator.reset(); |
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 343 { | 343 { |
| 344 TRACE_EVENT_COPY_ASYNC_END0("blink.console", String(title).utf8().data(), th
is); | 344 TRACE_EVENT_COPY_ASYNC_END0("blink.console", String(title).utf8().data(), th
is); |
| 345 } | 345 } |
| 346 | 346 |
| 347 void ThreadDebugger::consoleTimeStamp(const String16& title) | 347 void ThreadDebugger::consoleTimeStamp(const String16& title) |
| 348 { | 348 { |
| 349 v8::Isolate* isolate = m_isolate; | 349 v8::Isolate* isolate = m_isolate; |
| 350 TRACE_EVENT_INSTANT1("devtools.timeline", "TimeStamp", TRACE_EVENT_SCOPE_THR
EAD, "data", InspectorTimeStampEvent::data(currentExecutionContext(isolate), tit
le)); | 350 TRACE_EVENT_INSTANT1("devtools.timeline", "TimeStamp", TRACE_EVENT_SCOPE_THR
EAD, "data", InspectorTimeStampEvent::data(currentExecutionContext(isolate), tit
le)); |
| 351 } | 351 } |
| 352 | 352 |
| 353 void ThreadDebugger::startRepeatingTimer(double interval, V8DebuggerClient::Time
rCallback callback, void* data) | 353 void ThreadDebugger::startRepeatingTimer(double interval, V8InspectorClient::Tim
erCallback callback, void* data) |
| 354 { | 354 { |
| 355 m_timerData.append(data); | 355 m_timerData.append(data); |
| 356 m_timerCallbacks.append(callback); | 356 m_timerCallbacks.append(callback); |
| 357 | 357 |
| 358 std::unique_ptr<Timer<ThreadDebugger>> timer = wrapUnique(new Timer<ThreadDe
bugger>(this, &ThreadDebugger::onTimer)); | 358 std::unique_ptr<Timer<ThreadDebugger>> timer = wrapUnique(new Timer<ThreadDe
bugger>(this, &ThreadDebugger::onTimer)); |
| 359 Timer<ThreadDebugger>* timerPtr = timer.get(); | 359 Timer<ThreadDebugger>* timerPtr = timer.get(); |
| 360 m_timers.append(std::move(timer)); | 360 m_timers.append(std::move(timer)); |
| 361 timerPtr->startRepeating(interval, BLINK_FROM_HERE); | 361 timerPtr->startRepeating(interval, BLINK_FROM_HERE); |
| 362 } | 362 } |
| 363 | 363 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 378 { | 378 { |
| 379 for (size_t index = 0; index < m_timers.size(); ++index) { | 379 for (size_t index = 0; index < m_timers.size(); ++index) { |
| 380 if (m_timers[index].get() == timer) { | 380 if (m_timers[index].get() == timer) { |
| 381 m_timerCallbacks[index](m_timerData[index]); | 381 m_timerCallbacks[index](m_timerData[index]); |
| 382 return; | 382 return; |
| 383 } | 383 } |
| 384 } | 384 } |
| 385 } | 385 } |
| 386 | 386 |
| 387 } // namespace blink | 387 } // namespace blink |
| OLD | NEW |