Index: LayoutTests/inspector/jump-to-previous-editing-location.html |
diff --git a/LayoutTests/inspector/jump-to-previous-editing-location.html b/LayoutTests/inspector/jump-to-previous-editing-location.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1c1c6ad480eefbae69bc5437fe1e543f9f5129c7 |
--- /dev/null |
+++ b/LayoutTests/inspector/jump-to-previous-editing-location.html |
@@ -0,0 +1,269 @@ |
+<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/blink-fs.js"></script> |
+<script src="editor/editor-test.js"></script> |
+<script> |
+function test() |
+{ |
+ WebInspector.showPanel("sources"); |
+ var panel = WebInspector.panels.sources; |
+ |
+ function rollback() |
+ { |
+ panel._historyManager.rollback(); |
+ } |
+ |
+ function rollover() |
+ { |
+ panel._historyManager.rollover(); |
+ } |
+ |
+ function clickAtEditor(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, callback, lines, columns) |
+ { |
+ var iterationsAmount = lines.length; |
+ function innerClickAndDump(iteration) |
+ { |
+ if (iteration === iterationsAmount) { |
+ callback(); |
+ return; |
+ } |
+ clickAtEditor(editor, lines[iteration], columns[iteration]); |
+ setTimeout(innerClickAndDump.bind(this, iteration + 1), 0); |
+ } |
+ innerClickAndDump(0); |
+ } |
+ |
+ function dumpLineColumn(line, column) |
+ { |
+ return "line: " + line + " column: " + column; |
+ } |
+ |
+ 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); |
+ } |
+ |
+ InspectorTest.runTestSuite([ |
+ function testSimpleMovements(next) |
+ { |
+ InspectorTest.showScriptSource("blink-fs.js", onContentLoaded); |
+ |
+ function onContentLoaded() |
+ { |
+ var editor = panel.visibleView.textEditor; |
+ dumpSelection(editor, "Initial position"); |
+ clickAtEditor(editor, 4, 7); |
+ |
+ InspectorTest.typeIn("\nSome more text here"); |
+ dumpSelection(editor, "Typed in some text"); |
+ |
+ rollback(); |
+ dumpSelection(editor, "Rolled back"); |
+ InspectorTest.typeIn("\nSome more text here as well\n"); |
+ dumpSelection(editor, "Typed in some text"); |
+ |
+ rollover(); |
+ dumpSelection(editor, "Rolled over"); |
+ next(); |
+ } |
+ }, |
+ |
+ function testSequentialJumps(next) |
+ { |
+ var editor = panel.visibleView.textEditor; |
+ const jumpsToDo = 4; |
+ clickAndDump(editor, jumpBack, [10, 11, 12, 13], [3, 4, 5, 6]); |
+ |
+ function jumpBack() |
+ { |
+ 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, step2, [10, 11, 12, 13], [3, 4, 5, 6]); |
+ |
+ function step2() |
+ { |
+ 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, step2, [10, 11], [1, 1]); |
+ } |
+ function step2() |
+ { |
+ 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 = panel._editorContainer._tabbedPane.selectedTabId; |
+ panel._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, step2, lines, columns); |
+ function step2() |
+ { |
+ for (var i = 0; i < jumpsAmount; ++i) { |
+ rollback(); |
+ dumpSelection(editor, "Rolled back"); |
+ } |
+ next(); |
+ } |
+ }, |
+ |
+ function testInFileSearch(next) |
+ { |
+ var searchableView = panel.searchableView(); |
+ searchableView.showSearchField(); |
+ dumpSelection(panel.visibleView.textEditor, "Before searching"); |
+ InspectorTest.typeIn("generate_"); |
+ for (var i = 0; i < 3; ++i) |
+ searchableView.handleFindPreviousShortcut(); |
+ searchableView.closeSearch(); |
+ 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(); |
+ var anchorURI = uiSourceCode.uri(); |
+ var jumpAnchor = linkifier.linkifyLocation(anchorURI, 10, 1); |
+ WebInspector.showPanel("timeline"); |
+ WebInspector.showAnchorLocation(jumpAnchor); |
+ 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("blink-fs.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.highlightPosition(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> |