| Index: third_party/WebKit/Source/platform/v8_inspector/V8DebuggerAgentImpl.cpp
|
| diff --git a/third_party/WebKit/Source/platform/v8_inspector/V8DebuggerAgentImpl.cpp b/third_party/WebKit/Source/platform/v8_inspector/V8DebuggerAgentImpl.cpp
|
| index 33eebe954b4fc31847e8ec4bcc40f6779c107371..4b2af59a8cafd01f360ae4d9686b9bd7e1eeb1dc 100644
|
| --- a/third_party/WebKit/Source/platform/v8_inspector/V8DebuggerAgentImpl.cpp
|
| +++ b/third_party/WebKit/Source/platform/v8_inspector/V8DebuggerAgentImpl.cpp
|
| @@ -190,10 +190,10 @@ void V8DebuggerAgentImpl::enable()
|
| m_state->setBoolean(DebuggerAgentState::debuggerEnabled, true);
|
| debugger().debuggerAgentEnabled();
|
|
|
| - protocol::Vector<V8DebuggerParsedScript> compiledScripts;
|
| + std::vector<std::unique_ptr<V8DebuggerScript>> compiledScripts;
|
| debugger().getCompiledScripts(m_session->contextGroupId(), compiledScripts);
|
| for (size_t i = 0; i < compiledScripts.size(); i++)
|
| - didParseSource(compiledScripts[i]);
|
| + didParseSource(std::move(compiledScripts[i]), true);
|
|
|
| // FIXME(WK44513): breakpoints activated flag should be synchronized between all front-ends
|
| debugger().setBreakpointsActivated(true);
|
| @@ -575,9 +575,10 @@ void V8DebuggerAgentImpl::searchInContent(ErrorString* error, const String16& sc
|
| const Maybe<bool>& optionalIsRegex,
|
| std::unique_ptr<Array<protocol::Debugger::SearchMatch>>* results)
|
| {
|
| + v8::HandleScope handles(m_isolate);
|
| ScriptsMap::iterator it = m_scripts.find(scriptId);
|
| if (it != m_scripts.end())
|
| - *results = V8ContentSearchUtil::searchInTextByLines(m_session, it->second->source(), query, optionalCaseSensitive.fromMaybe(false), optionalIsRegex.fromMaybe(false));
|
| + *results = V8ContentSearchUtil::searchInTextByLines(m_session, toProtocolString(it->second->source(m_isolate)), query, optionalCaseSensitive.fromMaybe(false), optionalIsRegex.fromMaybe(false));
|
| else
|
| *error = String16("No script for id: " + scriptId);
|
| }
|
| @@ -593,19 +594,21 @@ void V8DebuggerAgentImpl::setScriptSource(ErrorString* errorString,
|
| {
|
| if (!checkEnabled(errorString))
|
| return;
|
| - if (!debugger().setScriptSource(scriptId, newContent, preview.fromMaybe(false), errorString, optOutCompileError, &m_pausedCallFrames, stackChanged))
|
| +
|
| + v8::HandleScope handles(m_isolate);
|
| + v8::Local<v8::String> newSource = toV8String(m_isolate, newContent);
|
| + if (!debugger().setScriptSource(scriptId, newSource, preview.fromMaybe(false), errorString, optOutCompileError, &m_pausedCallFrames, stackChanged))
|
| return;
|
|
|
| + ScriptsMap::iterator it = m_scripts.find(scriptId);
|
| + if (it != m_scripts.end())
|
| + it->second->setSource(m_isolate, newSource);
|
| +
|
| std::unique_ptr<Array<CallFrame>> callFrames = currentCallFrames(errorString);
|
| if (!callFrames)
|
| return;
|
| *newCallFrames = std::move(callFrames);
|
| *asyncStackTrace = currentAsyncStackTrace();
|
| -
|
| - ScriptsMap::iterator it = m_scripts.find(scriptId);
|
| - if (it == m_scripts.end())
|
| - return;
|
| - it->second->setSource(newContent);
|
| }
|
|
|
| void V8DebuggerAgentImpl::restartFrame(ErrorString* errorString,
|
| @@ -646,7 +649,8 @@ void V8DebuggerAgentImpl::getScriptSource(ErrorString* error, const String16& sc
|
| *error = "No script for id: " + scriptId;
|
| return;
|
| }
|
| - *scriptSource = it->second->source();
|
| + v8::HandleScope handles(m_isolate);
|
| + *scriptSource = toProtocolString(it->second->source(m_isolate));
|
| }
|
|
|
| void V8DebuggerAgentImpl::getFunctionDetails(ErrorString* errorString, const String16& functionId, std::unique_ptr<FunctionDetails>* details)
|
| @@ -1133,31 +1137,32 @@ std::unique_ptr<StackTrace> V8DebuggerAgentImpl::currentAsyncStackTrace()
|
| return stackTrace ? stackTrace->buildInspectorObjectForTail(m_debugger) : nullptr;
|
| }
|
|
|
| -void V8DebuggerAgentImpl::didParseSource(const V8DebuggerParsedScript& parsedScript)
|
| +void V8DebuggerAgentImpl::didParseSource(std::unique_ptr<V8DebuggerScript> script, bool success)
|
| {
|
| - V8DebuggerScript script = parsedScript.script;
|
| -
|
| + v8::HandleScope handles(m_isolate);
|
| + String16 scriptSource = toProtocolString(script->source(m_isolate));
|
| bool isDeprecatedSourceURL = false;
|
| - if (!parsedScript.success)
|
| - script.setSourceURL(V8ContentSearchUtil::findSourceURL(script.source(), false, &isDeprecatedSourceURL));
|
| - else if (script.hasSourceURL())
|
| - V8ContentSearchUtil::findSourceURL(script.source(), false, &isDeprecatedSourceURL);
|
| + if (!success)
|
| + script->setSourceURL(V8ContentSearchUtil::findSourceURL(scriptSource, false, &isDeprecatedSourceURL));
|
| + else if (script->hasSourceURL())
|
| + V8ContentSearchUtil::findSourceURL(scriptSource, false, &isDeprecatedSourceURL);
|
|
|
| bool isDeprecatedSourceMappingURL = false;
|
| - if (!parsedScript.success)
|
| - script.setSourceMappingURL(V8ContentSearchUtil::findSourceMapURL(script.source(), false, &isDeprecatedSourceMappingURL));
|
| - else if (!script.sourceMappingURL().isEmpty())
|
| - V8ContentSearchUtil::findSourceMapURL(script.source(), false, &isDeprecatedSourceMappingURL);
|
| -
|
| - script.setHash(calculateHash(script.source()));
|
| -
|
| - int executionContextId = script.executionContextId();
|
| - bool isContentScript = script.isContentScript();
|
| - bool isInternalScript = script.isInternalScript();
|
| - bool isLiveEdit = script.isLiveEdit();
|
| - bool hasSourceURL = script.hasSourceURL();
|
| - String16 scriptURL = script.sourceURL();
|
| - String16 sourceMapURL = script.sourceMappingURL();
|
| + if (!success)
|
| + script->setSourceMappingURL(V8ContentSearchUtil::findSourceMapURL(scriptSource, false, &isDeprecatedSourceMappingURL));
|
| + else if (!script->sourceMappingURL().isEmpty())
|
| + V8ContentSearchUtil::findSourceMapURL(scriptSource, false, &isDeprecatedSourceMappingURL);
|
| +
|
| + script->setHash(calculateHash(scriptSource));
|
| +
|
| + int executionContextId = script->executionContextId();
|
| + bool isContentScript = script->isContentScript();
|
| + bool isInternalScript = script->isInternalScript();
|
| + bool isLiveEdit = script->isLiveEdit();
|
| + bool hasSourceURL = script->hasSourceURL();
|
| + String16 scriptId = script->scriptId();
|
| + String16 scriptURL = script->sourceURL();
|
| + String16 sourceMapURL = script->sourceMappingURL();
|
| bool deprecatedCommentWasUsed = isDeprecatedSourceURL || isDeprecatedSourceMappingURL;
|
|
|
| const Maybe<String16>& sourceMapURLParam = sourceMapURL;
|
| @@ -1166,14 +1171,14 @@ void V8DebuggerAgentImpl::didParseSource(const V8DebuggerParsedScript& parsedScr
|
| const bool* isLiveEditParam = isLiveEdit ? &isLiveEdit : nullptr;
|
| const bool* hasSourceURLParam = hasSourceURL ? &hasSourceURL : nullptr;
|
| const bool* deprecatedCommentWasUsedParam = deprecatedCommentWasUsed ? &deprecatedCommentWasUsed : nullptr;
|
| - if (parsedScript.success)
|
| - m_frontend.scriptParsed(parsedScript.scriptId, scriptURL, script.startLine(), script.startColumn(), script.endLine(), script.endColumn(), executionContextId, script.hash(), isContentScriptParam, isInternalScriptParam, isLiveEditParam, sourceMapURLParam, hasSourceURLParam, deprecatedCommentWasUsedParam);
|
| + if (success)
|
| + m_frontend.scriptParsed(scriptId, scriptURL, script->startLine(), script->startColumn(), script->endLine(), script->endColumn(), executionContextId, script->hash(), isContentScriptParam, isInternalScriptParam, isLiveEditParam, sourceMapURLParam, hasSourceURLParam, deprecatedCommentWasUsedParam);
|
| else
|
| - m_frontend.scriptFailedToParse(parsedScript.scriptId, scriptURL, script.startLine(), script.startColumn(), script.endLine(), script.endColumn(), executionContextId, script.hash(), isContentScriptParam, isInternalScriptParam, sourceMapURLParam, hasSourceURLParam, deprecatedCommentWasUsedParam);
|
| + m_frontend.scriptFailedToParse(scriptId, scriptURL, script->startLine(), script->startColumn(), script->endLine(), script->endColumn(), executionContextId, script->hash(), isContentScriptParam, isInternalScriptParam, sourceMapURLParam, hasSourceURLParam, deprecatedCommentWasUsedParam);
|
|
|
| - m_scripts.set(parsedScript.scriptId, script);
|
| + m_scripts.set(scriptId, std::move(script));
|
|
|
| - if (scriptURL.isEmpty() || !parsedScript.success)
|
| + if (scriptURL.isEmpty() || !success)
|
| return;
|
|
|
| protocol::DictionaryValue* breakpointsCookie = m_state->getObject(DebuggerAgentState::javaScriptBreakpoints);
|
| @@ -1193,7 +1198,7 @@ void V8DebuggerAgentImpl::didParseSource(const V8DebuggerParsedScript& parsedScr
|
| breakpointObject->getNumber(DebuggerAgentState::lineNumber, &breakpoint.lineNumber);
|
| breakpointObject->getNumber(DebuggerAgentState::columnNumber, &breakpoint.columnNumber);
|
| breakpointObject->getString(DebuggerAgentState::condition, &breakpoint.condition);
|
| - std::unique_ptr<protocol::Debugger::Location> location = resolveBreakpoint(cookie.first, parsedScript.scriptId, breakpoint, UserBreakpointSource);
|
| + std::unique_ptr<protocol::Debugger::Location> location = resolveBreakpoint(cookie.first, scriptId, breakpoint, UserBreakpointSource);
|
| if (location)
|
| m_frontend.breakpointResolved(cookie.first, std::move(location));
|
| }
|
|
|