blob: 1639f278bb0476ec977f6ed554f65cfd02a19835 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
(async function() {
TestRunner.addResult(`Checks that JavaScriptSourceFrame show breakpoints correctly\n`);
await TestRunner.loadModule('sources_test_runner');
await TestRunner.showPanel('sources');
await TestRunner.addScriptTag('resources/edit-me-breakpoints.js');
Bindings.breakpointManager._storage._breakpoints = new Map();
SourcesTestRunner.runDebuggerTestSuite([
function testAddRemoveBreakpoint(next) {
var javaScriptSourceFrame;
SourcesTestRunner.showScriptSource('edit-me-breakpoints.js', addBreakpoint);
function addBreakpoint(sourceFrame) {
javaScriptSourceFrame = sourceFrame;
TestRunner.addResult('Setting breakpoint');
// Breakpoint decoration expectations are pairs of line number plus
// breakpoint decoration counts. We expect line 2 to have 2 decorations.
SourcesTestRunner
.runActionAndWaitForExactBreakpointDecorations(
javaScriptSourceFrame, [[2, 2]],
() => SourcesTestRunner.createNewBreakpoint(
javaScriptSourceFrame, 2, '', true))
.then(removeBreakpoint);
}
function removeBreakpoint() {
TestRunner.addResult('Toggle breakpoint');
SourcesTestRunner
.runActionAndWaitForExactBreakpointDecorations(
javaScriptSourceFrame, [],
() => SourcesTestRunner.toggleBreakpoint(
javaScriptSourceFrame, 2))
.then(next);
}
},
function testTwoBreakpointsResolvedInOneLine(next) {
var javaScriptSourceFrame;
SourcesTestRunner.showScriptSource('edit-me-breakpoints.js', addBreakpoint);
async function addBreakpoint(sourceFrame) {
javaScriptSourceFrame = sourceFrame;
TestRunner.addResult('Setting breakpoint');
await SourcesTestRunner.runActionAndWaitForExactBreakpointDecorations(
javaScriptSourceFrame, [[2, 2]],
() => SourcesTestRunner.createNewBreakpoint(
javaScriptSourceFrame, 2, '', true));
await SourcesTestRunner.runActionAndWaitForExactBreakpointDecorations(
javaScriptSourceFrame, [[2, 2]],
() => SourcesTestRunner.createNewBreakpoint(
javaScriptSourceFrame, 2, 'true', true));
removeBreakpoint();
}
function removeBreakpoint() {
TestRunner.addResult('Toggle breakpoint');
SourcesTestRunner.removeBreakpoint(javaScriptSourceFrame, 2);
SourcesTestRunner
.runActionAndWaitForExactBreakpointDecorations(
javaScriptSourceFrame, [], () => {}, true)
.then(next);
}
},
function testDecorationInGutter(next) {
var javaScriptSourceFrame;
SourcesTestRunner.showScriptSource('edit-me-breakpoints.js', addRegularDisabled);
function addRegularDisabled(sourceFrame) {
javaScriptSourceFrame = sourceFrame;
TestRunner.addResult('Adding regular disabled breakpoint');
SourcesTestRunner
.runActionAndWaitForExactBreakpointDecorations(
javaScriptSourceFrame, [[2, 1]],
() => SourcesTestRunner.createNewBreakpoint(
javaScriptSourceFrame, 2, '', false))
.then(addConditionalDisabled);
}
function addConditionalDisabled() {
TestRunner.addResult('Adding conditional disabled breakpoint');
SourcesTestRunner
.runActionAndWaitForExactBreakpointDecorations(
javaScriptSourceFrame, [[2, 1]],
() => SourcesTestRunner.createNewBreakpoint(
javaScriptSourceFrame, 2, 'true', false))
.then(addRegularEnabled);
}
function addRegularEnabled() {
TestRunner.addResult('Adding regular enabled breakpoint');
SourcesTestRunner
.runActionAndWaitForExactBreakpointDecorations(
javaScriptSourceFrame, [[2, 2]],
() => SourcesTestRunner.createNewBreakpoint(
javaScriptSourceFrame, 2, '', true))
.then(addConditionalEnabled);
}
function addConditionalEnabled() {
TestRunner.addResult('Adding conditional enabled breakpoint');
SourcesTestRunner
.runActionAndWaitForExactBreakpointDecorations(
javaScriptSourceFrame, [[2, 2]],
() => SourcesTestRunner.createNewBreakpoint(
javaScriptSourceFrame, 2, 'true', true))
.then(disableAll);
}
function disableAll() {
TestRunner.addResult('Disable breakpoints');
SourcesTestRunner
.runActionAndWaitForExactBreakpointDecorations(
javaScriptSourceFrame, [[2, 1]],
() => SourcesTestRunner.toggleBreakpoint(
javaScriptSourceFrame, 2, true))
.then(enabledAll);
}
function enabledAll() {
TestRunner.addResult('Enable breakpoints');
SourcesTestRunner
.runActionAndWaitForExactBreakpointDecorations(
javaScriptSourceFrame, [[2, 2]],
() => SourcesTestRunner.toggleBreakpoint(
javaScriptSourceFrame, 2, true))
.then(removeAll);
}
function removeAll() {
TestRunner.addResult('Remove breakpoints');
SourcesTestRunner
.runActionAndWaitForExactBreakpointDecorations(
javaScriptSourceFrame, [],
() => SourcesTestRunner.toggleBreakpoint(
javaScriptSourceFrame, 2, false))
.then(next);
}
}
]);
})();