blob: 660a7e9601d418044607e27eba3d1955d9a9f272 [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(`Tests how SourceFormatter handles JS sources\n`);
await TestRunner.loadModule('sources_test_runner');
await TestRunner.showPanel('sources');
await TestRunner.addScriptTag('debugger/resources/obfuscated.js');
var uiSourceCode = await TestRunner.waitForUISourceCode('obfuscated.js');
var formatData = await Formatter.SourceFormatter.instance().format(uiSourceCode);
var targetContent = (await formatData.formattedSourceCode.requestContent()).content;
TestRunner.addResult(`Formatted:\n${targetContent}`);
var originalContent = (await uiSourceCode.requestContent()).content;
var text = new TextUtils.Text(originalContent);
var positions = [];
for (var offset = originalContent.indexOf('{'); offset >= 0; offset = originalContent.indexOf('{', offset + 1))
positions.push(text.positionFromOffset(offset));
var script = (await Bindings.debuggerWorkspaceBinding.uiLocationToRawLocations(uiSourceCode, 0, 0))[0].script();
TestRunner.addResult('Location mapping with formatted source:');
await dumpLocations(positions);
await Formatter.SourceFormatter.instance().discardFormattedUISourceCode(formatData.formattedSourceCode);
TestRunner.addResult('Location mapping without formatted source:');
await dumpLocations(positions);
TestRunner.completeTest();
async function dumpLocations(positions) {
for (var position of positions) {
var rawLocation = TestRunner.debuggerModel.createRawLocation(script, position.lineNumber, position.columnNumber);
var uiLocation = await Bindings.debuggerWorkspaceBinding.rawLocationToUILocation(rawLocation);
var reverseRawLocation = (await Bindings.debuggerWorkspaceBinding.uiLocationToRawLocations(
uiLocation.uiSourceCode, uiLocation.lineNumber, uiLocation.columnNumber))[0];
TestRunner.addResult(
`${rawLocation.lineNumber}:${rawLocation.columnNumber} -> ${uiLocation.lineNumber}:${
uiLocation.columnNumber}` +
` -> ${reverseRawLocation.lineNumber}:${reverseRawLocation.columnNumber}`);
}
}
})();