[inspector] do not capture hint if there is no break location

If we have several scripts with the same url (see many <script> tags in
one page), then we try to set breakpoint only in script with given
lineNumber inside and ignore all other scripts. We should follow the
same logic when we capture hint for later breakpoint restore.

R=yangguo@chromium.org

Bug: none
Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
Change-Id: I44a332ac64f62ec9a0d24d5fe4688f8ced125e39
Reviewed-on: https://chromium-review.googlesource.com/821053
Commit-Queue: Yang Guo <yangguo@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#50019}
This commit is contained in:
Alexey Kozyatinskiy 2017-12-11 16:39:47 -08:00 committed by Commit Bot
parent 4bc48c2185
commit be3c2cdd8d
3 changed files with 39 additions and 1 deletions

View File

@ -553,7 +553,7 @@ Response V8DebuggerAgentImpl::setBreakpointByUrl(
}
std::unique_ptr<protocol::Debugger::Location> location = setBreakpointImpl(
breakpointId, script.first, condition, lineNumber, columnNumber);
if (type != BreakpointType::kByUrlRegex) {
if (location && type != BreakpointType::kByUrlRegex) {
hint = breakpointHint(*script.second, lineNumber, columnNumber);
}
if (location) (*locations)->addItem(std::move(location));

View File

@ -0,0 +1,11 @@
Tests breakpoint when two scripts have the same url.
{
breakpointId : <breakpointId>
locations : [
[0] : {
columnNumber : 2
lineNumber : 2
scriptId : <scriptId>
}
]
}

View File

@ -0,0 +1,27 @@
// Copyright 2017 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
let {session, contextGroup, Protocol} = InspectorTest.start(
'Tests breakpoint when two scripts have the same url.');
// Order of addScript is important!
contextGroup.addScript(`
function boo() {
return 42;
}
function foo() {}
`, 0, 0, 'test.js');
contextGroup.addScript(`function foo() {}`, 15, 0, 'test.js');
(async function test() {
await Protocol.Debugger.enable();
let {result} = await Protocol.Debugger.setBreakpointByUrl({
url: 'test.js',
lineNumber: 2,
columnNumber: 2
});
InspectorTest.logMessage(result);
InspectorTest.completeTest();
})();