| <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> |