blob: 4caa5fd0f8af244e73b81f21e2caeaa9e7b2e4a6 [file] [log] [blame]
<html>
<head>
<script src="../http/tests/inspector/inspector-test.js"></script>
<script src="../http/tests/inspector/workspace-test.js"></script>
<script src="../http/tests/inspector/debugger-test.js"></script>
<script src="resources/example-fileset-for-test.js"></script>
<script src="editor/editor-test.js"></script>
<script>
function test()
{
WebInspector.inspectorView.showPanel("sources");
var panel = WebInspector.panels.sources;
var sourcesView = panel._sourcesView;
var historyManager = sourcesView._historyManager;
var editorContainer = sourcesView._editorContainer;
function rollback()
{
historyManager.rollback();
}
function rollover()
{
historyManager.rollover();
}
function dumpSelection(editor, label)
{
var selection = editor.selection();
var label = "<" + label + ">";
var fileName = "[" + editor._url.split("/").pop() + "]";
var selectionText = "";
if (selection.isEmpty())
selectionText = "line: " + selection.startLine + " column: " + selection.startColumn;
else
selectionText = "(NOT EMPTY): " + selection.toString();
InspectorTest.addResult(label + " " + selectionText + " " + fileName);
}
function eventSenderClickAtEditor(editor, lineNumber, columnNumber)
{
editor.scrollToLine(lineNumber);
var coordinates = editor.cursorPositionToCoordinates(lineNumber, columnNumber);
eventSender.mouseMoveTo(coordinates.x, coordinates.y);
eventSender.mouseDown();
eventSender.mouseUp();
dumpSelection(editor, "Mouse click (" + lineNumber + ", " + columnNumber + ")");
}
function clickAndDump(editor, lines, columns)
{
for (var i = 0; i < lines.length; ++i) {
var lineNumber = lines[i];
var columnNumber = columns[i];
var originSelection = editor.selection();
editor.setSelection(WebInspector.TextRange.createFromLocation(lineNumber, columnNumber));
editor._delegate.onJumpToPosition(originSelection, editor.selection());
dumpSelection(editor, "Mouse click (" + lineNumber + ", " + columnNumber + ")");
}
}
InspectorTest.runTestSuite([
function testSimpleMovements(next)
{
InspectorTest.showScriptSource("example-fileset-for-test.js", onContentLoaded);
function onContentLoaded()
{
var editor = panel.visibleView.textEditor;
dumpSelection(editor, "Initial position");
eventSenderClickAtEditor(editor, 4, 7, true);
InspectorTest.typeIn(editor, "\nSome more text here", step2);
}
function step2() {
var editor = panel.visibleView.textEditor;
dumpSelection(editor, "Typed in some text");
rollback();
dumpSelection(editor, "Rolled back");
InspectorTest.typeIn(editor, "\nSome more text here as well\n", step3);
}
function step3() {
var editor = panel.visibleView.textEditor;
dumpSelection(editor, "Typed in some text");
rollover();
dumpSelection(editor, "Rolled over");
next();
}
},
function testSequentialJumps(next)
{
var editor = panel.visibleView.textEditor;
// Hide inspector view to significantly speed up following tests from testsuite.
InspectorTest.hideInspectorView();
const jumpsToDo = 4;
clickAndDump(editor, [10, 11, 12, 13], [3, 4, 5, 6]);
for (var i = 0; i < jumpsToDo; ++i) {
rollback();
dumpSelection(editor, "Rolled back");
}
for (var i = 0; i < jumpsToDo; ++i) {
rollover();
dumpSelection(editor, "Rolled over");
}
next();
},
function testDeletePreviousJumpLocations(next)
{
var editor = panel.visibleView.textEditor;
editor.editRange(new WebInspector.TextRange(9, 0, 15, 0), "");
dumpSelection(editor, "Removed lines from 9 to 15");
rollback();
dumpSelection(editor, "Rolled back");
rollover();
dumpSelection(editor, "Rolled over");
next();
},
function testDeleteNextJumpLocations(next)
{
var editor = panel.visibleView.textEditor;
const jumpsToDo = 4;
clickAndDump(editor, [10, 11, 12, 13], [3, 4, 5, 6]);
for (var i = 0; i < jumpsToDo; ++i)
rollback();
dumpSelection(editor, "Rolled back 4 times");
editor.editRange(new WebInspector.TextRange(9, 0, 11, 0), "");
dumpSelection(editor, "Removed lines from 9 to 11");
rollover();
dumpSelection(editor, "Rolled over");
next();
},
function testCrossFileJump(next)
{
InspectorTest.showScriptSource("workspace-test.js", onContentLoaded);
function onContentLoaded()
{
var editor = panel.visibleView.textEditor;
dumpSelection(editor, "Opened workspace-test.js");
clickAndDump(editor, [10, 11], [1, 1]);
for (var i = 0; i < 4; ++i) {
rollback();
dumpSelection(panel.visibleView.textEditor, "Rolled back");
}
for (var i = 0; i < 4; ++i) {
rollover();
dumpSelection(panel.visibleView.textEditor, "Rolled over");
}
next();
}
},
function testCloseCrossFile(next)
{
var selectedTab = editorContainer._tabbedPane.selectedTabId;
editorContainer._tabbedPane.closeTab(selectedTab);
dumpSelection(panel.visibleView.textEditor, "Close active tab");
for (var i = 0; i < 1; ++i) {
rollback();
dumpSelection(panel.visibleView.textEditor, "Rolled back");
}
for (var i = 0; i < 3; ++i) {
rollover();
dumpSelection(panel.visibleView.textEditor, "Rolled over");
}
next();
},
function testHistoryDepth(next)
{
var lines = [];
var columns = [];
const jumpsAmount = WebInspector.EditingLocationHistoryManager.HistoryDepth;
for(var i = 0; i < jumpsAmount; ++i) {
lines.push(i + 10);
columns.push(7);
}
var editor = panel.visibleView.textEditor;
clickAndDump(editor, lines, columns);
for (var i = 0; i < jumpsAmount; ++i) {
rollback();
dumpSelection(editor, "Rolled back");
}
next();
},
function testInFileSearch(next)
{
var searchableView = panel.searchableView();
dumpSelection(panel.visibleView.textEditor, "Before searching");
searchableView.showSearchField();
searchableView._searchInputElement.value = "generate_";
searchableView._performSearch(true, true);
for (var i = 0; i < 3; ++i)
searchableView.handleFindNextShortcut();
searchableView.handleCancelSearchShortcut();
dumpSelection(panel.visibleView.textEditor, "After searching");
rollback();
dumpSelection(panel.visibleView.textEditor, "Rolled back");
rollover();
dumpSelection(panel.visibleView.textEditor, "Rolled over");
next();
},
function testShowAnchorLocation(next)
{
dumpSelection(panel.visibleView.textEditor, "Before switching to other panel");
InspectorTest.waitForScriptSource("workspace-test.js", onScriptSource);
function onScriptSource(uiSourceCode)
{
var linkifier = new WebInspector.Linkifier();
WebInspector.inspectorView.showPanel("timeline");
var anchorURI = uiSourceCode.url;
var anchor = linkifier.linkifyScriptLocation(WebInspector.targetManager.mainTarget(), null, anchorURI, 10, 1);
WebInspector.Revealer.reveal(anchor.__uiLocation);
InspectorTest.addResult("Selection: " + panel.visibleView.textEditor.selection().toString());
dumpSelection(panel.visibleView.textEditor, "Showed anchor in " + anchorURI.split("/").pop() + " with line 333 column 3");
rollback();
dumpSelection(panel.visibleView.textEditor, "Rolled back");
rollover();
dumpSelection(panel.visibleView.textEditor, "Rolled over");
next();
}
},
function testShowUISourceCode(next)
{
dumpSelection(panel.visibleView.textEditor, "Initial state");
InspectorTest.waitForScriptSource("example-fileset-for-test.js", onScriptSourceLoaded);
function onScriptSourceLoaded(uiSourceCode)
{
var jumps = [20, 10, 30];
for (var i = 0; i < jumps.length; ++i) {
panel.showUISourceCode(uiSourceCode, jumps[i]);
dumpSelection(panel.visibleView.textEditor, "jump to line " + jumps[i]);
}
panel.showUISourceCode(uiSourceCode, 40, 10);
dumpSelection(panel.visibleView.textEditor, "highlight line 40");
for (var i = 0; i < jumps.length + 1; ++i) {
rollback();
dumpSelection(panel.visibleView.textEditor, "rollback");
}
next();
}
}
]);
};
</script>
</head>
<body onload="runTest()">
<p>Tests that jumping to previous location works as intended.</p>
</body>
</html>