Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(109)

Side by Side Diff: src/inspector/v8-debugger-agent-impl.cc

Issue 2723273002: [inspector] introduced Debugger.scheduleStepIntoAsync (Closed)
Patch Set: fixed tests Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 the V8 project 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 "src/inspector/v8-debugger-agent-impl.h" 5 #include "src/inspector/v8-debugger-agent-impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "src/debug/debug-interface.h" 9 #include "src/debug/debug-interface.h"
10 #include "src/inspector/injected-script.h" 10 #include "src/inspector/injected-script.h"
(...skipping 718 matching lines...) Expand 10 before | Expand all | Expand 10 after
729 729
730 Response V8DebuggerAgentImpl::stepOut() { 730 Response V8DebuggerAgentImpl::stepOut() {
731 if (!isPaused()) return Response::Error(kDebuggerNotPaused); 731 if (!isPaused()) return Response::Error(kDebuggerNotPaused);
732 m_scheduledDebuggerStep = StepOut; 732 m_scheduledDebuggerStep = StepOut;
733 m_recursionLevelForStepOut = 1; 733 m_recursionLevelForStepOut = 1;
734 m_session->releaseObjectGroup(kBacktraceObjectGroup); 734 m_session->releaseObjectGroup(kBacktraceObjectGroup);
735 m_debugger->stepOutOfFunction(); 735 m_debugger->stepOutOfFunction();
736 return Response::OK(); 736 return Response::OK();
737 } 737 }
738 738
739 void V8DebuggerAgentImpl::scheduleStepIntoAsync(
740 std::unique_ptr<ScheduleStepIntoAsyncCallback> callback) {
741 if (!isPaused()) {
742 callback->sendFailure(Response::Error(kDebuggerNotPaused));
743 return;
744 }
745 if (m_stepIntoAsyncCallback) {
746 m_stepIntoAsyncCallback->sendFailure(Response::Error(
747 "Current scheduled step into async was overriden with new one."));
748 }
749 m_stepIntoAsyncCallback = std::move(callback);
750 }
751
752 bool V8DebuggerAgentImpl::shouldBreakInScheduledAsyncTask() {
753 if (!m_stepIntoAsyncCallback) return false;
754 m_stepIntoAsyncCallback->sendSuccess();
755 m_stepIntoAsyncCallback.reset();
756 m_scheduledDebuggerStep = NoStep;
757 v8::debug::ClearStepping(m_isolate);
758 return true;
759 }
760
739 Response V8DebuggerAgentImpl::setPauseOnExceptions( 761 Response V8DebuggerAgentImpl::setPauseOnExceptions(
740 const String16& stringPauseState) { 762 const String16& stringPauseState) {
741 if (!enabled()) return Response::Error(kDebuggerNotEnabled); 763 if (!enabled()) return Response::Error(kDebuggerNotEnabled);
742 v8::debug::ExceptionBreakState pauseState; 764 v8::debug::ExceptionBreakState pauseState;
743 if (stringPauseState == "none") { 765 if (stringPauseState == "none") {
744 pauseState = v8::debug::NoBreakOnException; 766 pauseState = v8::debug::NoBreakOnException;
745 } else if (stringPauseState == "all") { 767 } else if (stringPauseState == "all") {
746 pauseState = v8::debug::BreakOnAnyException; 768 pauseState = v8::debug::BreakOnAnyException;
747 } else if (stringPauseState == "uncaught") { 769 } else if (stringPauseState == "uncaught") {
748 pauseState = v8::debug::BreakOnUncaughtException; 770 pauseState = v8::debug::BreakOnUncaughtException;
(...skipping 470 matching lines...) Expand 10 before | Expand all | Expand 10 after
1219 protocol::DictionaryValue::create(); 1241 protocol::DictionaryValue::create();
1220 reason->setString("reason", hitReasons[i].first); 1242 reason->setString("reason", hitReasons[i].first);
1221 if (hitReasons[i].second) 1243 if (hitReasons[i].second)
1222 reason->setObject("auxData", std::move(hitReasons[i].second)); 1244 reason->setObject("auxData", std::move(hitReasons[i].second));
1223 reasons->pushValue(std::move(reason)); 1245 reasons->pushValue(std::move(reason));
1224 } 1246 }
1225 breakAuxData = protocol::DictionaryValue::create(); 1247 breakAuxData = protocol::DictionaryValue::create();
1226 breakAuxData->setArray("reasons", std::move(reasons)); 1248 breakAuxData->setArray("reasons", std::move(reasons));
1227 } 1249 }
1228 1250
1251 if (m_stepIntoAsyncCallback) {
1252 m_stepIntoAsyncCallback->sendFailure(
1253 Response::Error("No async tasks were scheduled before pause."));
1254 m_stepIntoAsyncCallback.reset();
1255 }
1256
1229 std::unique_ptr<Array<CallFrame>> protocolCallFrames; 1257 std::unique_ptr<Array<CallFrame>> protocolCallFrames;
1230 Response response = currentCallFrames(&protocolCallFrames); 1258 Response response = currentCallFrames(&protocolCallFrames);
1231 if (!response.isSuccess()) protocolCallFrames = Array<CallFrame>::create(); 1259 if (!response.isSuccess()) protocolCallFrames = Array<CallFrame>::create();
1232 m_frontend.paused(std::move(protocolCallFrames), breakReason, 1260 m_frontend.paused(std::move(protocolCallFrames), breakReason,
1233 std::move(breakAuxData), std::move(hitBreakpointIds), 1261 std::move(breakAuxData), std::move(hitBreakpointIds),
1234 currentAsyncStackTrace()); 1262 currentAsyncStackTrace());
1235 m_scheduledDebuggerStep = NoStep; 1263 m_scheduledDebuggerStep = NoStep;
1236 m_javaScriptPauseScheduled = false; 1264 m_javaScriptPauseScheduled = false;
1237 1265
1238 if (!m_continueToLocationBreakpointId.isEmpty()) { 1266 if (!m_continueToLocationBreakpointId.isEmpty()) {
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
1290 void V8DebuggerAgentImpl::reset() { 1318 void V8DebuggerAgentImpl::reset() {
1291 if (!enabled()) return; 1319 if (!enabled()) return;
1292 m_scheduledDebuggerStep = NoStep; 1320 m_scheduledDebuggerStep = NoStep;
1293 m_blackboxedPositions.clear(); 1321 m_blackboxedPositions.clear();
1294 resetBlackboxedStateCache(); 1322 resetBlackboxedStateCache();
1295 m_scripts.clear(); 1323 m_scripts.clear();
1296 m_breakpointIdToDebuggerBreakpointIds.clear(); 1324 m_breakpointIdToDebuggerBreakpointIds.clear();
1297 } 1325 }
1298 1326
1299 } // namespace v8_inspector 1327 } // namespace v8_inspector
OLDNEW
« no previous file with comments | « src/inspector/v8-debugger-agent-impl.h ('k') | test/inspector/debugger/schedule-step-into-async.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698