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

Side by Side Diff: Source/bindings/core/dart/DartInspectorDebuggerAgent.cpp

Issue 1672443003: Fix devtools bugs Fix a spurious layout test failure (Closed) Base URL: svn://svn.chromium.org/blink/branches/dart/2454_1
Patch Set: Created 4 years, 10 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 | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2010 Apple Inc. All rights reserved. 2 * Copyright (C) 2010 Apple Inc. All rights reserved.
3 * Copyright (C) 2014 Google Inc. All rights reserved. 3 * Copyright (C) 2014 Google Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 8 *
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 return String(); 100 return String();
101 } 101 }
102 102
103 static String generateBreakpointIdDart(const String& scriptId, int lineNumber, i nt columnNumber, DartInspectorDebuggerAgent::BreakpointSource source) 103 static String generateBreakpointIdDart(const String& scriptId, int lineNumber, i nt columnNumber, DartInspectorDebuggerAgent::BreakpointSource source)
104 { 104 {
105 return scriptId + ':' + String::number(lineNumber) + ':' + String::number(co lumnNumber) + breakpointIdSuffixDart(source); 105 return scriptId + ':' + String::number(lineNumber) + ':' + String::number(co lumnNumber) + breakpointIdSuffixDart(source);
106 } 106 }
107 107
108 DartInspectorDebuggerAgent::DartInspectorDebuggerAgent(DartInjectedScriptManager * injectedScriptManager, InspectorDebuggerAgent* inspectorDebuggerAgent, Inspect orPageAgent* pageAgent) 108 DartInspectorDebuggerAgent::DartInspectorDebuggerAgent(DartInjectedScriptManager * injectedScriptManager, InspectorDebuggerAgent* inspectorDebuggerAgent, Inspect orPageAgent* pageAgent)
109 : m_injectedScriptManager(injectedScriptManager) 109 : m_injectedScriptManager(injectedScriptManager)
110 , m_frontend(0)
111 , m_pausedScriptState(nullptr) 110 , m_pausedScriptState(nullptr)
112 , m_currentCallStack(0) 111 , m_currentCallStack(0)
113 , m_javaScriptPauseScheduled(false) 112 , m_javaScriptPauseScheduled(false)
114 , m_debuggerStepScheduled(false) 113 , m_debuggerStepScheduled(false)
115 , m_steppingFromFramework(false) 114 , m_steppingFromFramework(false)
116 , m_pausingOnNativeEvent(false) 115 , m_pausingOnNativeEvent(false)
117 , m_listener(nullptr) 116 , m_listener(nullptr)
118 , m_skippedStepInCount(0) 117 , m_skippedStepInCount(0)
119 , m_skipAllPauses(false) 118 , m_skipAllPauses(false)
120 , m_inspectorDebuggerAgent(inspectorDebuggerAgent) 119 , m_inspectorDebuggerAgent(inspectorDebuggerAgent)
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 } 170 }
172 171
173 void DartInspectorDebuggerAgent::enable(ErrorString*) 172 void DartInspectorDebuggerAgent::enable(ErrorString*)
174 { 173 {
175 if (enabled()) 174 if (enabled())
176 return; 175 return;
177 176
178 enable(); 177 enable();
179 state()->setBoolean(DartDebuggerAgentState::debuggerEnabled, true); 178 state()->setBoolean(DartDebuggerAgentState::debuggerEnabled, true);
180 179
181 ASSERT(m_frontend); 180 ASSERT(frontend());
182 } 181 }
183 182
184 void DartInspectorDebuggerAgent::disable(ErrorString*) 183 void DartInspectorDebuggerAgent::disable(ErrorString*)
185 { 184 {
186 if (!enabled()) 185 if (!enabled())
187 return; 186 return;
188 187
189 disable(); 188 disable();
190 state()->setBoolean(DartDebuggerAgentState::debuggerEnabled, false); 189 state()->setBoolean(DartDebuggerAgentState::debuggerEnabled, false);
191 } 190 }
192 191
193 static PassOwnPtr<ScriptRegexp> compileSkipCallFramePattern(String patternText) 192 static PassOwnPtr<ScriptRegexp> compileSkipCallFramePattern(String patternText)
194 { 193 {
195 if (patternText.isEmpty()) 194 if (patternText.isEmpty())
196 return nullptr; 195 return nullptr;
197 OwnPtr<ScriptRegexp> result = adoptPtr(new ScriptRegexp(patternText, TextCas eSensitive)); 196 OwnPtr<ScriptRegexp> result = adoptPtr(new ScriptRegexp(patternText, TextCas eSensitive));
198 if (!result->isValid()) 197 if (!result->isValid())
199 result.clear(); 198 result.clear();
200 return result.release(); 199 return result.release();
201 } 200 }
202 201
203 void DartInspectorDebuggerAgent::restore() 202 void DartInspectorDebuggerAgent::restore()
204 { 203 {
205 if (enabled()) { 204 if (enabled()) {
206 m_frontend->globalObjectCleared(); 205 frontend()->globalObjectCleared();
207 enable(); 206 enable();
208 long pauseState = state()->getLong(DartDebuggerAgentState::pauseOnExcept ionsState); 207 long pauseState = state()->getLong(DartDebuggerAgentState::pauseOnExcept ionsState);
209 String error; 208 String error;
210 setPauseOnExceptionsImpl(&error, pauseState); 209 setPauseOnExceptionsImpl(&error, pauseState);
211 m_cachedSkipStackRegExp = compileSkipCallFramePattern(state()->getString (DartDebuggerAgentState::skipStackPattern)); 210 m_cachedSkipStackRegExp = compileSkipCallFramePattern(state()->getString (DartDebuggerAgentState::skipStackPattern));
212 m_skipAllPauses = state()->getBoolean(DartDebuggerAgentState::skipAllPau ses); 211 m_skipAllPauses = state()->getBoolean(DartDebuggerAgentState::skipAllPau ses);
213 if (m_skipAllPauses && state()->getBoolean(DartDebuggerAgentState::skipA llPausesExpiresOnReload)) { 212 if (m_skipAllPauses && state()->getBoolean(DartDebuggerAgentState::skipA llPausesExpiresOnReload)) {
214 m_skipAllPauses = false; 213 m_skipAllPauses = false;
215 state()->setBoolean(DartDebuggerAgentState::skipAllPauses, false); 214 state()->setBoolean(DartDebuggerAgentState::skipAllPauses, false);
216 } 215 }
217 } 216 }
218 } 217 }
219 218
220 void DartInspectorDebuggerAgent::setFrontend(InspectorFrontend* frontend) 219 InspectorFrontend::Debugger* DartInspectorDebuggerAgent::frontend()
221 { 220 {
222 m_frontend = InspectorFrontend::Debugger::from(frontend); 221 return m_inspectorDebuggerAgent->frontend();
223 } 222 }
224 223
224
225 void DartInspectorDebuggerAgent::clearFrontend() 225 void DartInspectorDebuggerAgent::clearFrontend()
226 { 226 {
227 m_frontend = 0;
228
229 if (!enabled()) 227 if (!enabled())
230 return; 228 return;
231 229
232 disable(); 230 disable();
233 231
234 // FIXME: due to state()->mute() hack in InspectorController, debuggerEnable d is actually set to false only 232 // FIXME: due to state()->mute() hack in InspectorController, debuggerEnable d is actually set to false only
235 // in InspectorState, but not in cookie. That's why after navigation debugge rEnabled will be true, 233 // in InspectorState, but not in cookie. That's why after navigation debugge rEnabled will be true,
236 // but after front-end re-open it will still be false. 234 // but after front-end re-open it will still be false.
237 state()->setBoolean(DartDebuggerAgentState::debuggerEnabled, false); 235 state()->setBoolean(DartDebuggerAgentState::debuggerEnabled, false);
238 } 236 }
(...skipping 626 matching lines...) Expand 10 before | Expand all | Expand 10 after
865 } 863 }
866 864
867 const bool* isInternalScript = script.isInternalScript ? &script.isInternalS cript : 0; 865 const bool* isInternalScript = script.isInternalScript ? &script.isInternalS cript : 0;
868 bool hasSourceURL = !script.sourceURL.isEmpty(); 866 bool hasSourceURL = !script.sourceURL.isEmpty();
869 String scriptURL = hasSourceURL ? script.sourceURL : script.url; 867 String scriptURL = hasSourceURL ? script.sourceURL : script.url;
870 868
871 String sourceMapURL = sourceMapURLForScript(script, compileResult); 869 String sourceMapURL = sourceMapURLForScript(script, compileResult);
872 String* sourceMapURLParam = sourceMapURL.isNull() ? 0 : &sourceMapURL; 870 String* sourceMapURLParam = sourceMapURL.isNull() ? 0 : &sourceMapURL;
873 871
874 bool* hasSourceURLParam = hasSourceURL ? &hasSourceURL : 0; 872 bool* hasSourceURLParam = hasSourceURL ? &hasSourceURL : 0;
873 ASSERT(frontend());
875 if (!hasSyntaxError) 874 if (!hasSyntaxError)
876 m_frontend->scriptParsed(scriptId, scriptURL, script.startLine, script.s tartColumn, script.endLine, script.endColumn, isContentScript, isInternalScript, sourceMapURLParam, hasSourceURLParam, languageParam, libraryIdParam); 875 frontend()->scriptParsed(scriptId, scriptURL, script.startLine, script.s tartColumn, script.endLine, script.endColumn, isContentScript, isInternalScript, sourceMapURLParam, hasSourceURLParam, languageParam, libraryIdParam);
877 else 876 else
878 m_frontend->scriptFailedToParse(scriptId, scriptURL, script.startLine, s cript.startColumn, script.endLine, script.endColumn, isContentScript, isInternal Script, sourceMapURLParam, hasSourceURLParam, languageParam, libraryIdParam); 877 frontend()->scriptFailedToParse(scriptId, scriptURL, script.startLine, s cript.startColumn, script.endLine, script.endColumn, isContentScript, isInternal Script, sourceMapURLParam, hasSourceURLParam, languageParam, libraryIdParam);
879 878
880 m_scripts.set(scriptId, script); 879 m_scripts.set(scriptId, script);
881 880
882 if (scriptURL.isEmpty() || hasSyntaxError) 881 if (scriptURL.isEmpty() || hasSyntaxError)
883 return; 882 return;
884 883
885 RefPtr<JSONObject> breakpointsCookie = state()->getObject(DartDebuggerAgentS tate::dartBreakpoints); 884 RefPtr<JSONObject> breakpointsCookie = state()->getObject(DartDebuggerAgentS tate::dartBreakpoints);
886 for (JSONObject::iterator it = breakpointsCookie->begin(); it != breakpoints Cookie->end(); ++it) { 885 for (JSONObject::iterator it = breakpointsCookie->begin(); it != breakpoints Cookie->end(); ++it) {
887 RefPtr<JSONObject> breakpointObject = it->value->asObject(); 886 RefPtr<JSONObject> breakpointObject = it->value->asObject();
888 bool isAntibreakpoint; 887 bool isAntibreakpoint;
889 breakpointObject->getBoolean(DartDebuggerAgentState::isAnti, &isAntibrea kpoint); 888 breakpointObject->getBoolean(DartDebuggerAgentState::isAnti, &isAntibrea kpoint);
890 if (isAntibreakpoint) 889 if (isAntibreakpoint)
891 continue; 890 continue;
892 bool isRegex; 891 bool isRegex;
893 breakpointObject->getBoolean(DartDebuggerAgentState::isRegex, &isRegex); 892 breakpointObject->getBoolean(DartDebuggerAgentState::isRegex, &isRegex);
894 String url; 893 String url;
895 breakpointObject->getString(DartDebuggerAgentState::url, &url); 894 breakpointObject->getString(DartDebuggerAgentState::url, &url);
896 if (!matches(scriptURL, url, isRegex)) 895 if (!matches(scriptURL, url, isRegex))
897 continue; 896 continue;
898 ScriptBreakpoint breakpoint; 897 ScriptBreakpoint breakpoint;
899 breakpointObject->getNumber(DartDebuggerAgentState::lineNumber, &breakpo int.lineNumber); 898 breakpointObject->getNumber(DartDebuggerAgentState::lineNumber, &breakpo int.lineNumber);
900 breakpointObject->getNumber(DartDebuggerAgentState::columnNumber, &break point.columnNumber); 899 breakpointObject->getNumber(DartDebuggerAgentState::columnNumber, &break point.columnNumber);
901 breakpointObject->getString(DartDebuggerAgentState::condition, &breakpoi nt.condition); 900 breakpointObject->getString(DartDebuggerAgentState::condition, &breakpoi nt.condition);
902 RefPtr<TypeBuilder::Debugger::Location> location = resolveBreakpoint(it- >key, scriptId, breakpoint, UserBreakpointSource); 901 RefPtr<TypeBuilder::Debugger::Location> location = resolveBreakpoint(it- >key, scriptId, breakpoint, UserBreakpointSource);
903 if (location) 902 if (location)
904 m_frontend->breakpointResolved(it->key, location); 903 frontend()->breakpointResolved(it->key, location);
905 } 904 }
906 } 905 }
907 906
908 DartScriptDebugListener::SkipPauseRequest DartInspectorDebuggerAgent::didPause(D artScriptState* scriptState, Dart_StackTrace callFrames, Dart_Handle exception, const Vector<String>& hitBreakpoints) 907 DartScriptDebugListener::SkipPauseRequest DartInspectorDebuggerAgent::didPause(D artScriptState* scriptState, Dart_StackTrace callFrames, Dart_Handle exception, const Vector<String>& hitBreakpoints)
909 { 908 {
910 DartScriptDebugListener::SkipPauseRequest result; 909 DartScriptDebugListener::SkipPauseRequest result;
911 if (!callFrames) 910 if (!callFrames)
912 result = DartScriptDebugListener::Continue; // Skip pauses inside V8 int ernal scripts and on syntax errors. 911 result = DartScriptDebugListener::Continue; // Skip pauses inside V8 int ernal scripts and on syntax errors.
913 else if (m_javaScriptPauseScheduled) 912 else if (m_javaScriptPauseScheduled)
914 result = DartScriptDebugListener::NoSkip; // Don't skip explicit pause r equests from front-end. 913 result = DartScriptDebugListener::NoSkip; // Don't skip explicit pause r equests from front-end.
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
946 if (breakpointIterator != m_serverBreakpoints.end()) { 945 if (breakpointIterator != m_serverBreakpoints.end()) {
947 const String& localId = breakpointIterator->value.first; 946 const String& localId = breakpointIterator->value.first;
948 hitBreakpointIds->addItem(localId); 947 hitBreakpointIds->addItem(localId);
949 948
950 BreakpointSource source = breakpointIterator->value.second; 949 BreakpointSource source = breakpointIterator->value.second;
951 if (m_breakReason == InspectorFrontend::Debugger::Reason::Other && s ource == DebugCommandBreakpointSource) 950 if (m_breakReason == InspectorFrontend::Debugger::Reason::Other && s ource == DebugCommandBreakpointSource)
952 m_breakReason = InspectorFrontend::Debugger::Reason::DebugComman d; 951 m_breakReason = InspectorFrontend::Debugger::Reason::DebugComman d;
953 } 952 }
954 } 953 }
955 954
956 m_frontend->paused(currentCallFrames(), m_breakReason, m_breakAuxData, hitBr eakpointIds, nullptr); 955 frontend()->paused(currentCallFrames(), m_breakReason, m_breakAuxData, hitBr eakpointIds, nullptr);
957 m_javaScriptPauseScheduled = false; 956 m_javaScriptPauseScheduled = false;
958 m_debuggerStepScheduled = false; 957 m_debuggerStepScheduled = false;
959 m_steppingFromFramework = false; 958 m_steppingFromFramework = false;
960 m_pausingOnNativeEvent = false; 959 m_pausingOnNativeEvent = false;
961 m_skippedStepInCount = 0; 960 m_skippedStepInCount = 0;
962 961
963 if (!m_continueToLocationBreakpointId.isEmpty()) { 962 if (!m_continueToLocationBreakpointId.isEmpty()) {
964 scriptDebugServer().removeBreakpoint(m_continueToLocationBreakpointId); 963 scriptDebugServer().removeBreakpoint(m_continueToLocationBreakpointId);
965 m_continueToLocationBreakpointId = ""; 964 m_continueToLocationBreakpointId = "";
966 } 965 }
967 if (m_listener) 966 if (m_listener)
968 m_listener->didPause(); 967 m_listener->didPause();
969 return result; 968 return result;
970 } 969 }
971 970
972 void DartInspectorDebuggerAgent::didContinue() 971 void DartInspectorDebuggerAgent::didContinue()
973 { 972 {
974 m_pausedScriptState = nullptr; 973 m_pausedScriptState = nullptr;
975 m_currentCallStack = 0; 974 m_currentCallStack = 0;
976 clearBreakDetails(); 975 clearBreakDetails();
977 // Already called by InspectorDebuggerAgent? 976 // Already called by InspectorDebuggerAgent?
978 m_frontend->resumed(); 977 frontend()->resumed();
979 } 978 }
980 979
981 bool DartInspectorDebuggerAgent::canBreakProgram() 980 bool DartInspectorDebuggerAgent::canBreakProgram()
982 { 981 {
983 return scriptDebugServer().canBreakProgram(); 982 return scriptDebugServer().canBreakProgram();
984 } 983 }
985 984
986 void DartInspectorDebuggerAgent::breakProgram(InspectorFrontend::Debugger::Reaso n::Enum breakReason, PassRefPtr<JSONObject> data) 985 void DartInspectorDebuggerAgent::breakProgram(InspectorFrontend::Debugger::Reaso n::Enum breakReason, PassRefPtr<JSONObject> data)
987 { 986 {
988 if (m_skipAllPauses) 987 if (m_skipAllPauses)
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
1044 m_breakpointIdToDebugServerBreakpointIds.clear(); 1043 m_breakpointIdToDebugServerBreakpointIds.clear();
1045 } 1044 }
1046 1045
1047 DartScriptDebugServer& DartInspectorDebuggerAgent::scriptDebugServer() 1046 DartScriptDebugServer& DartInspectorDebuggerAgent::scriptDebugServer()
1048 { 1047 {
1049 return DartScriptDebugServer::shared(); 1048 return DartScriptDebugServer::shared();
1050 } 1049 }
1051 1050
1052 } // namespace blink 1051 } // namespace blink
1053 1052
OLDNEW
« no previous file with comments | « Source/bindings/core/dart/DartInspectorDebuggerAgent.h ('k') | Source/bindings/core/dart/DartInspectorRuntimeAgent.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698