void InspectorDebuggerAgent::didParseSource(const String& scriptId, const Script& script) { // Don't send script content to the front end until it's really needed. const bool* isContentScript = script.isContentScript ? &script.isContentScript : 0; String sourceMapURL = sourceMapURLForScript(script); m_frontend->scriptParsed(scriptId, script.url, script.startLine, script.startColumn, script.endLine, script.endColumn, isContentScript, sourceMapURL); m_scripts.set(scriptId, script); if (script.url.isEmpty()) return; RefPtr<InspectorObject> breakpointsCookie = m_state->getObject(DebuggerAgentState::javaScriptBreakpoints); for (InspectorObject::iterator it = breakpointsCookie->begin(); it != breakpointsCookie->end(); ++it) { RefPtr<InspectorObject> breakpointObject = it->second->asObject(); bool isRegex; breakpointObject->getBoolean("isRegex", &isRegex); String url; breakpointObject->getString("url", &url); if (!matches(script.url, url, isRegex)) continue; ScriptBreakpoint breakpoint; breakpointObject->getNumber("lineNumber", &breakpoint.lineNumber); breakpointObject->getNumber("columnNumber", &breakpoint.columnNumber); breakpointObject->getString("condition", &breakpoint.condition); RefPtr<InspectorObject> location = resolveBreakpoint(it->first, scriptId, breakpoint); if (location) m_frontend->breakpointResolved(it->first, location); } }
void InspectorDebuggerAgent::didParseSource(JSC::SourceID sourceID, const Script& inScript) { Script script = inScript; if (script.startLine <= 0 && !script.startColumn) script.sourceURL = ContentSearchUtilities::findScriptSourceURL(script.source); script.sourceMappingURL = sourceMapURLForScript(script); bool hasSourceURL = !script.sourceURL.isEmpty(); String scriptURL = hasSourceURL ? script.sourceURL : script.url; bool* hasSourceURLParam = hasSourceURL ? &hasSourceURL : nullptr; String* sourceMapURLParam = script.sourceMappingURL.isNull() ? nullptr : &script.sourceMappingURL; const bool* isContentScript = script.isContentScript ? &script.isContentScript : nullptr; String scriptIDStr = String::number(sourceID); m_frontendDispatcher->scriptParsed(scriptIDStr, scriptURL, script.startLine, script.startColumn, script.endLine, script.endColumn, isContentScript, sourceMapURLParam, hasSourceURLParam); m_scripts.set(sourceID, script); if (scriptURL.isEmpty()) return; for (auto it = m_javaScriptBreakpoints.begin(), end = m_javaScriptBreakpoints.end(); it != end; ++it) { RefPtr<InspectorObject> breakpointObject; if (!it->value->asObject(breakpointObject)) return; bool isRegex; breakpointObject->getBoolean(ASCIILiteral("isRegex"), isRegex); String url; breakpointObject->getString(ASCIILiteral("url"), url); if (!matches(scriptURL, url, isRegex)) continue; ScriptBreakpoint breakpoint; breakpointObject->getInteger(ASCIILiteral("lineNumber"), breakpoint.lineNumber); breakpointObject->getInteger(ASCIILiteral("columnNumber"), breakpoint.columnNumber); breakpointObject->getString(ASCIILiteral("condition"), breakpoint.condition); breakpointObject->getBoolean(ASCIILiteral("autoContinue"), breakpoint.autoContinue); ErrorString errorString; RefPtr<InspectorArray> actions; breakpointObject->getArray(ASCIILiteral("actions"), actions); if (!breakpointActionsFromProtocol(errorString, actions, &breakpoint.actions)) { ASSERT_NOT_REACHED(); continue; } RefPtr<Inspector::Protocol::Debugger::Location> location = resolveBreakpoint(it->key, sourceID, breakpoint); if (location) m_frontendDispatcher->breakpointResolved(it->key, location); } }
void InspectorDebuggerAgent::didParseSource(const String& scriptId, const Script& inScript) { Script script = inScript; if (!script.startLine && !script.startColumn) script.sourceURL = ContentSearchUtils::findScriptSourceURL(script.source); script.sourceMappingURL = sourceMapURLForScript(script); bool hasSourceURL = !script.sourceURL.isEmpty(); String scriptURL = hasSourceURL ? script.sourceURL : script.url; bool* hasSourceURLParam = hasSourceURL ? &hasSourceURL : 0; String* sourceMapURLParam = script.sourceMappingURL.isNull() ? 0 : &script.sourceMappingURL; const bool* isContentScript = script.isContentScript ? &script.isContentScript : 0; m_frontend->scriptParsed(scriptId, scriptURL, script.startLine, script.startColumn, script.endLine, script.endColumn, isContentScript, sourceMapURLParam, hasSourceURLParam); m_scripts.set(scriptId, script); if (scriptURL.isEmpty()) return; RefPtr<InspectorObject> breakpointsCookie = m_state->getObject(DebuggerAgentState::javaScriptBreakpoints); for (InspectorObject::iterator it = breakpointsCookie->begin(); it != breakpointsCookie->end(); ++it) { RefPtr<InspectorObject> breakpointObject = it->value->asObject(); bool isRegex; breakpointObject->getBoolean("isRegex", &isRegex); String url; breakpointObject->getString("url", &url); if (!matches(scriptURL, url, isRegex)) continue; ScriptBreakpoint breakpoint; breakpointObject->getNumber("lineNumber", &breakpoint.lineNumber); breakpointObject->getNumber("columnNumber", &breakpoint.columnNumber); breakpointObject->getString("condition", &breakpoint.condition); breakpointObject->getBoolean("autoContinue", &breakpoint.autoContinue); ErrorString errorString; RefPtr<InspectorArray> actions = breakpointObject->getArray("actions"); if (!breakpointActionsFromProtocol(&errorString, actions, &breakpoint.actions)) { ASSERT_NOT_REACHED(); continue; } RefPtr<TypeBuilder::Debugger::Location> location = resolveBreakpoint(it->key, scriptId, breakpoint); if (location) m_frontend->breakpointResolved(it->key, location); } }
void InspectorDebuggerAgent::didParseSource(const String& scriptId, const Script& script) { // Don't send script content to the front end until it's really needed. const bool* isContentScript = script.isContentScript ? &script.isContentScript : 0; String sourceMapURL = sourceMapURLForScript(script); String* sourceMapURLParam = sourceMapURL.isNull() ? 0 : &sourceMapURL; String sourceURL; if (!script.startLine && !script.startColumn) { bool deprecated; sourceURL = ContentSearchUtils::findSourceURL(script.source, ContentSearchUtils::JavaScriptMagicComment, &deprecated); // FIXME: add deprecated console message here. } bool hasSourceURL = !sourceURL.isEmpty(); String scriptURL = hasSourceURL ? sourceURL : script.url; bool* hasSourceURLParam = hasSourceURL ? &hasSourceURL : 0; m_frontend->scriptParsed(scriptId, scriptURL, script.startLine, script.startColumn, script.endLine, script.endColumn, isContentScript, sourceMapURLParam, hasSourceURLParam); m_scripts.set(scriptId, script); if (scriptURL.isEmpty()) return; RefPtr<JSONObject> breakpointsCookie = m_state->getObject(DebuggerAgentState::javaScriptBreakpoints); for (JSONObject::iterator it = breakpointsCookie->begin(); it != breakpointsCookie->end(); ++it) { RefPtr<JSONObject> breakpointObject = it->value->asObject(); bool isAntibreakpoint; breakpointObject->getBoolean(DebuggerAgentState::isAnti, &isAntibreakpoint); if (isAntibreakpoint) continue; bool isRegex; breakpointObject->getBoolean(DebuggerAgentState::isRegex, &isRegex); String url; breakpointObject->getString(DebuggerAgentState::url, &url); if (!matches(scriptURL, url, isRegex)) continue; ScriptBreakpoint breakpoint; breakpointObject->getNumber(DebuggerAgentState::lineNumber, &breakpoint.lineNumber); breakpointObject->getNumber(DebuggerAgentState::columnNumber, &breakpoint.columnNumber); breakpointObject->getString(DebuggerAgentState::condition, &breakpoint.condition); RefPtr<TypeBuilder::Debugger::Location> location = resolveBreakpoint(it->key, scriptId, breakpoint, UserBreakpointSource); if (location) m_frontend->breakpointResolved(it->key, location); } }