Update To 11.40.268.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / inspector / jump-to-previous-editing-location.html
1 <html>
2 <head>
3 <script src="../http/tests/inspector/inspector-test.js"></script>
4 <script src="../http/tests/inspector/console-test.js"></script>
5 <script src="../http/tests/inspector/workspace-test.js"></script>
6 <script src="../http/tests/inspector/debugger-test.js"></script>
7 <script src="resources/example-fileset-for-test.js"></script>
8 <script src="editor/editor-test.js"></script>
9 <script>
10 function test()
11 {
12     var panel = WebInspector.panels.sources;
13     var sourcesView = panel._sourcesView;
14     var historyManager = sourcesView._historyManager;
15     var editorContainer = sourcesView._editorContainer;
16
17     function rollback()
18     {
19         historyManager.rollback();
20     }
21
22     function rollover()
23     {
24         historyManager.rollover();
25     }
26
27     function dumpSelection(editor, label)
28     {
29         var selection = editor.selection();
30         var label = "<" + label + ">";
31         var fileName = "[" + editor._url.split("/").pop() + "]";
32         var selectionText = "";
33         if (selection.isEmpty())
34             selectionText = "line: " + selection.startLine + " column: " + selection.startColumn;
35         else
36             selectionText = "(NOT EMPTY): " + selection.toString();
37         InspectorTest.addResult(label + " " + selectionText + " " + fileName);
38     }
39
40     function eventSenderClickAtEditor(editor, lineNumber, columnNumber)
41     {
42         editor.scrollToLine(lineNumber);
43         var coordinates = editor.cursorPositionToCoordinates(lineNumber, columnNumber);
44         eventSender.mouseMoveTo(coordinates.x, coordinates.y);
45         eventSender.mouseDown();
46         eventSender.mouseUp();
47         dumpSelection(editor, "Mouse click (" + lineNumber + ", " + columnNumber + ")");
48     }
49
50     function clickAndDump(editor, lines, columns)
51     {
52         for (var i = 0; i < lines.length; ++i) {
53             var lineNumber = lines[i];
54             var columnNumber = columns[i];
55             var originSelection = editor.selection();
56             editor.setSelection(WebInspector.TextRange.createFromLocation(lineNumber, columnNumber));
57             editor._delegate.onJumpToPosition(originSelection, editor.selection());
58             dumpSelection(editor, "Mouse click (" + lineNumber + ", " + columnNumber + ")");
59         }
60     }
61
62     InspectorTest.runTestSuite([
63         function testSimpleMovements(next)
64         {
65             InspectorTest.showScriptSource("example-fileset-for-test.js", onContentLoaded);
66
67             function onContentLoaded()
68             {
69                 var editor = panel.visibleView.textEditor;
70                 dumpSelection(editor, "Initial position");
71                 eventSenderClickAtEditor(editor, 4, 7, true);
72
73                 InspectorTest.typeIn(editor, "\nSome more text here", step2);
74             }
75
76             function step2() {
77                 var editor = panel.visibleView.textEditor;
78                 dumpSelection(editor, "Typed in some text");
79
80                 rollback();
81                 dumpSelection(editor, "Rolled back");
82                 InspectorTest.typeIn(editor, "\nSome more text here as well\n", step3);
83             }
84
85             function step3() {
86                 var editor = panel.visibleView.textEditor;
87                 dumpSelection(editor, "Typed in some text");
88
89                 rollover();
90                 dumpSelection(editor, "Rolled over");
91                 next();
92             }
93         },
94
95         function testSequentialJumps(next)
96         {
97             var editor = panel.visibleView.textEditor;
98             // Hide inspector view to significantly speed up following tests from testsuite.
99             InspectorTest.hideInspectorView();
100             const jumpsToDo = 4;
101             clickAndDump(editor, [10, 11, 12, 13], [3, 4, 5, 6]);
102
103             for (var i = 0; i < jumpsToDo; ++i) {
104                 rollback();
105                 dumpSelection(editor, "Rolled back");
106             }
107             for (var i = 0; i < jumpsToDo; ++i) {
108                 rollover();
109                 dumpSelection(editor, "Rolled over");
110             }
111             next();
112         },
113
114         function testDeletePreviousJumpLocations(next)
115         {
116             var editor = panel.visibleView.textEditor;
117             editor.editRange(new WebInspector.TextRange(9, 0, 15, 0), "");
118             dumpSelection(editor, "Removed lines from 9 to 15");
119             rollback();
120             dumpSelection(editor, "Rolled back");
121             rollover();
122             dumpSelection(editor, "Rolled over");
123             next();
124         },
125
126         function testDeleteNextJumpLocations(next)
127         {
128             var editor = panel.visibleView.textEditor;
129             const jumpsToDo = 4;
130             clickAndDump(editor, [10, 11, 12, 13], [3, 4, 5, 6]);
131
132             for (var i = 0; i < jumpsToDo; ++i)
133                 rollback();
134             dumpSelection(editor, "Rolled back 4 times");
135             editor.editRange(new WebInspector.TextRange(9, 0, 11, 0), "");
136             dumpSelection(editor, "Removed lines from 9 to 11");
137             rollover();
138             dumpSelection(editor, "Rolled over");
139             next();
140         },
141
142         function testCrossFileJump(next)
143         {
144             InspectorTest.showScriptSource("workspace-test.js", onContentLoaded);
145             function onContentLoaded()
146             {
147                 var editor = panel.visibleView.textEditor;
148                 dumpSelection(editor, "Opened workspace-test.js");
149                 clickAndDump(editor, [10, 11], [1, 1]);
150                 for (var i = 0; i < 4; ++i) {
151                     rollback();
152                     dumpSelection(panel.visibleView.textEditor, "Rolled back");
153                 }
154                 for (var i = 0; i < 4; ++i) {
155                     rollover();
156                     dumpSelection(panel.visibleView.textEditor, "Rolled over");
157                 }
158                 next();
159             }
160         },
161
162         function testCloseCrossFile(next)
163         {
164             var selectedTab = editorContainer._tabbedPane.selectedTabId;
165             editorContainer._tabbedPane.closeTab(selectedTab);
166             dumpSelection(panel.visibleView.textEditor, "Close active tab");
167             for (var i = 0; i < 1; ++i) {
168                 rollback();
169                 dumpSelection(panel.visibleView.textEditor, "Rolled back");
170             }
171             for (var i = 0; i < 3; ++i) {
172                 rollover();
173                 dumpSelection(panel.visibleView.textEditor, "Rolled over");
174             }
175             next();
176         },
177
178         function testHistoryDepth(next)
179         {
180             var lines = [];
181             var columns = [];
182             const jumpsAmount = WebInspector.EditingLocationHistoryManager.HistoryDepth;
183             for(var i = 0; i < jumpsAmount; ++i) {
184                 lines.push(i + 10);
185                 columns.push(7);
186             }
187             var editor = panel.visibleView.textEditor;
188             clickAndDump(editor, lines, columns);
189             for (var i = 0; i < jumpsAmount; ++i) {
190                 rollback();
191                 dumpSelection(editor, "Rolled back");
192             }
193             next();
194         },
195
196         function testInFileSearch(next)
197         {
198             var searchableView = panel.searchableView();
199
200             dumpSelection(panel.visibleView.textEditor, "Before searching");
201
202             searchableView.showSearchField();
203             searchableView._searchInputElement.value = "generate_";
204             searchableView._performSearch(true, true);
205             for (var i = 0; i < 3; ++i)
206                 searchableView.handleFindNextShortcut();
207             searchableView.handleCancelSearchShortcut();
208
209             dumpSelection(panel.visibleView.textEditor, "After searching");
210             rollback();
211             dumpSelection(panel.visibleView.textEditor, "Rolled back");
212             rollover();
213             dumpSelection(panel.visibleView.textEditor, "Rolled over");
214             next();
215         },
216
217         function testShowAnchorLocation(next)
218         {
219             dumpSelection(panel.visibleView.textEditor, "Before switching to other panel");
220             InspectorTest.waitForScriptSource("workspace-test.js", onScriptSource);
221             function onScriptSource(uiSourceCode)
222             {
223                 var linkifier = new WebInspector.Linkifier();
224                 var anchorURI = uiSourceCode.url;
225                 var anchor = linkifier.linkifyScriptLocation(WebInspector.targetManager.mainTarget(), null, anchorURI, 10, 1);
226                 WebInspector.Revealer.revealPromise(anchor.__uiLocation).then(function() {
227                     InspectorTest.addResult("Selection: " + panel.visibleView.textEditor.selection().toString());
228                     dumpSelection(panel.visibleView.textEditor, "Showed anchor in " + anchorURI.split("/").pop() + " with line 333 column 3");
229                     rollback();
230                     dumpSelection(panel.visibleView.textEditor, "Rolled back");
231                     rollover();
232                     dumpSelection(panel.visibleView.textEditor, "Rolled over");
233                     next();
234                 });
235             }
236         },
237
238         function testShowUISourceCode(next)
239         {
240             dumpSelection(panel.visibleView.textEditor, "Initial state");
241
242             InspectorTest.waitForScriptSource("example-fileset-for-test.js", onScriptSourceLoaded);
243             function onScriptSourceLoaded(uiSourceCode)
244             {
245                 var jumps = [20, 10, 30];
246                 for (var i = 0; i < jumps.length; ++i) {
247                     panel.showUISourceCode(uiSourceCode, jumps[i]);
248                     dumpSelection(panel.visibleView.textEditor, "jump to line " + jumps[i]);
249                 }
250                 panel.showUISourceCode(uiSourceCode, 40, 10);
251                 dumpSelection(panel.visibleView.textEditor, "highlight line 40");
252                 for (var i = 0; i < jumps.length + 1; ++i) {
253                     rollback();
254                     dumpSelection(panel.visibleView.textEditor, "rollback");
255                 }
256                 next();
257             }
258         }
259     ]);
260 };
261 </script>
262 </head>
263 <body onload="runTest()">
264 <p>Tests that jumping to previous location works as intended.</p>
265 </body>
266 </html>