Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: third_party/WebKit/LayoutTests/inspector/console/console-copy-truncated-text.html

Issue 2900733003: DevTools: fix offset condition in console viewport _selectedText and add tests (Closed)
Patch Set: fix offset correction condition Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/inspector/console/console-copy-truncated-text-expected.txt » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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>
6
7 function test()
8 {
9 var longUrl = "www." + "z123456789".repeat(15) + ".com";
10 var shortUrl = "www.bar.com";
11 var mixedUrl = longUrl + " " + shortUrl + " " + longUrl;
12 var shortUrlWithHashes = "www." + "0123456789".repeat(2) + "zfoobarz" + "012 3456789".repeat(2);
13 var urlWithHashes = "www." + "0123456789".repeat(2) + "z".repeat(150) + "012 3456789".repeat(2);
14 var highlightedUrl = "www." + "z".repeat(200) + ".com";
15 var prepareCode = `
16 // Keep this as the first url logged to record the max truncated length.
17 console.log("${longUrl}");
18
19 console.log("${shortUrl}");
20 console.log("${longUrl}");
21 console.log("${mixedUrl}");
22 console.log("${shortUrlWithHashes}");
23 console.log("${urlWithHashes}");
24 console.log("${highlightedUrl}");
25 `;
26
27 var expectedMessageCount = 8;
28 var consoleView = Console.ConsoleView.instance();
29 var viewport = Console.ConsoleView.instance()._viewport;
30 var maxLength;
31 var halfMaxLength;
32 var secondLongUrlIndexInMixedUrl;
33
34 var tests = [
35 function testSelectWithinTruncatedUrl(next)
36 {
37 makeSelectionAndDump(1, 0, 1, halfMaxLength);
38 makeSelectionAndDump(1, 0, 1, halfMaxLength + 1);
39 makeSelectionAndDump(1, 0, 1, maxLength);
40 makeSelectionAndDump(1, halfMaxLength, 1, halfMaxLength + 1);
41 makeSelectionAndDump(1, halfMaxLength, 1, maxLength);
42 makeSelectionAndDump(1, halfMaxLength + 1, 1, maxLength);
43 next();
44 },
45
46 function testSelectAcrossMultipleMessages(next) {
47 makeSelectionAndDump(1, 0, 2, shortUrl.length);
48 makeSelectionAndDump(1, halfMaxLength, 2, shortUrl.length);
49 makeSelectionAndDump(1, halfMaxLength + 1, 2, shortUrl.length);
50 next();
51 },
52
53 function testSelectAcrossMultipleMessagesWithTruncatedUrls(next) {
54 makeSelectionAndDump(1, 0, 3, halfMaxLength);
55 makeSelectionAndDump(1, 0, 3, halfMaxLength + 1);
56 makeSelectionAndDump(1, 0, 3, maxLength);
57 next();
58 },
59
60 function testSelectWithinMessageWithMultipleTruncatedUrls(next) {
61 makeSelectionAndDump(4, 0, 4, halfMaxLength);
62 makeSelectionAndDump(4, 0, 4, halfMaxLength + 1);
63 makeSelectionAndDump(4, 0, 4, secondLongUrlIndexInMixedUrl);
64 makeSelectionAndDump(4, 0, 4, secondLongUrlIndexInMixedUrl + halfMax Length);
65 makeSelectionAndDump(4, 0, 4, secondLongUrlIndexInMixedUrl + halfMax Length + 1);
66 makeSelectionAndDump(4, 0, 4, secondLongUrlIndexInMixedUrl + maxLeng th);
67
68 makeSelectionAndDump(4, halfMaxLength, 4, halfMaxLength + 1);
69 makeSelectionAndDump(4, halfMaxLength, 4, secondLongUrlIndexInMixedU rl);
70 makeSelectionAndDump(4, halfMaxLength, 4, secondLongUrlIndexInMixedU rl + halfMaxLength);
71 makeSelectionAndDump(4, halfMaxLength, 4, secondLongUrlIndexInMixedU rl + halfMaxLength + 1);
72 makeSelectionAndDump(4, halfMaxLength, 4, secondLongUrlIndexInMixedU rl + maxLength);
73
74 makeSelectionAndDump(4, halfMaxLength + 1, 4, secondLongUrlIndexInMi xedUrl);
75 makeSelectionAndDump(4, halfMaxLength + 1, 4, secondLongUrlIndexInMi xedUrl + halfMaxLength);
76 makeSelectionAndDump(4, halfMaxLength + 1, 4, secondLongUrlIndexInMi xedUrl + halfMaxLength + 1);
77 makeSelectionAndDump(4, halfMaxLength + 1, 4, secondLongUrlIndexInMi xedUrl + maxLength);
78
79 makeSelectionAndDump(4, secondLongUrlIndexInMixedUrl, 4, secondLongU rlIndexInMixedUrl + halfMaxLength);
80 makeSelectionAndDump(4, secondLongUrlIndexInMixedUrl, 4, secondLongU rlIndexInMixedUrl + halfMaxLength + 1);
81 makeSelectionAndDump(4, secondLongUrlIndexInMixedUrl, 4, secondLongU rlIndexInMixedUrl + maxLength);
82
83 makeSelectionAndDump(4, secondLongUrlIndexInMixedUrl + halfMaxLength , 4, secondLongUrlIndexInMixedUrl + halfMaxLength + 1);
84 makeSelectionAndDump(4, secondLongUrlIndexInMixedUrl + halfMaxLength , 4, secondLongUrlIndexInMixedUrl + maxLength);
85
86 makeSelectionAndDump(4, secondLongUrlIndexInMixedUrl + halfMaxLength + 1, 4, secondLongUrlIndexInMixedUrl + maxLength);
87 next();
88 },
89
90 function testSelectWithinShortUrlWithHashes(next)
91 {
92 var hashedUrlMaxLength = consoleMessageText(5).length;
93 var hashedUrlHalfMaxLength = Math.ceil(hashedUrlMaxLength / 2);
94 makeSelectionAndDump(5, 0, 5, hashedUrlHalfMaxLength);
95 makeSelectionAndDump(5, 0, 5, hashedUrlMaxLength);
96 makeSelectionAndDump(5, hashedUrlHalfMaxLength, 5, hashedUrlMaxLengt h);
97 next();
98 },
99
100 function testSelectWithinUrlWithHashes(next)
101 {
102 var hashedUrlMaxLength = consoleMessageText(6).length;
103 var hashedUrlHalfMaxLength = Math.ceil(hashedUrlMaxLength / 2);
104 makeSelectionAndDump(6, 0, 6, hashedUrlHalfMaxLength);
105 makeSelectionAndDump(6, 0, 6, hashedUrlHalfMaxLength + 1);
106 makeSelectionAndDump(6, 0, 6, hashedUrlMaxLength);
107 makeSelectionAndDump(6, hashedUrlHalfMaxLength, 6, hashedUrlHalfMaxL ength + 1);
108 makeSelectionAndDump(6, hashedUrlHalfMaxLength, 6, hashedUrlMaxLengt h);
109 makeSelectionAndDump(6, hashedUrlHalfMaxLength + 1, 6, hashedUrlMaxL ength);
110 next();
111 },
112
113 function testSelectWithinHighlightedUrlBeginning(next) {
114 testHighlightedUrlWithSearchQuery("www.", next);
115 },
116
117 function testSelectWithinHighlightedUrlMiddle(next) {
118 testHighlightedUrlWithSearchQuery("zzzzz", next);
119 },
120
121 function testSelectWithinHighlightedUrlEnd(next) {
122 testHighlightedUrlWithSearchQuery(".com", next);
123 }
124 ];
125
126 InspectorTest.waitForConsoleMessages(expectedMessageCount, () => {
127 viewport.invalidate();
128
129 // Get the max truncated length from the first longUrl logged.
130 try {
131 var longUrlMessageText = consoleMessageText(1);
132 maxLength = longUrlMessageText.length;
133 halfMaxLength = Math.ceil(maxLength / 2);
134 secondLongUrlIndexInMixedUrl = maxLength + 1 + shortUrl.length + 1;
135 InspectorTest.addResult("Long url has max length: " + maxLength + ", text: " + longUrlMessageText);
136 } catch (e) {
137 InspectorTest.addResult("FAIL: Could not get max truncation length f rom first longUrl message.");
138 InspectorTest.completeTest();
139 return;
140 }
141 InspectorTest.runTestSuite(tests);
142 });
143 InspectorTest.evaluateInConsole(prepareCode);
144
145 function consoleMessageText(index) {
146 var messageElement = consoleView._visibleViewMessages[index].element();
147 return messageElement.querySelector('.console-message-text').deepTextCon tent();
148 }
149
150 function makeSelectionAndDump(fromMessage, fromTextOffset, toMessage, toText Offset) {
151 InspectorTest.addResult("\nMaking selection: " + fromMessage + ", " + fr omTextOffset + ", " + toMessage + ", " + toTextOffset);
152
153 // Ignore the anchor text on the start/end message, just use their conte nts.
154 var fromAnchor = consoleView.itemElement(fromMessage).element().querySel ector('.console-message-anchor');
155 var toAnchor = consoleView.itemElement(toMessage).element().querySelecto r('.console-message-anchor');
156 fromTextOffset += fromAnchor ? fromAnchor.deepTextContent().length : 0;
157 toTextOffset += toAnchor ? toAnchor.deepTextContent().length : 0;
158 InspectorTest.selectConsoleMessages(fromMessage, fromTextOffset, toMessa ge, toTextOffset);
159 var selectedText = viewport._selectedText();
160 if (selectedText) {
161 selectedText = selectedText.replace(/\bVM\d+/g, "VM");
162 InspectorTest.addResult("Selection length: " + selectedText.length + ", text: " + selectedText);
163 } else {
164 InspectorTest.addResult("No selection");
165 }
166 }
167
168 function testHighlightedUrlWithSearchQuery(query, next) {
169 // Clear any existing ranges to avoid using them as the query.
170 window.getSelection().removeAllRanges();
171 InspectorTest.addSniffer(consoleView, "_searchFinishedForTests", onSearc h);
172 consoleView._searchableView._searchInputElement.value = query;
173 consoleView._searchableView.showSearchField();
174 InspectorTest.addResult("Searching for text: " + query);
175
176 function onSearch() {
177 var matches = consoleView.element.childTextNodes().filter(node => no de.parentElement.classList.contains("highlighted-search-result")).map(node => no de.parentElement);
178 InspectorTest.addResult("Highlighted " + matches.length + " matches" );
179
180 // Use TextNodes for containers to get inside the highlighted match element.
181 makeSelectionAndDump(7, 0, 7, halfMaxLength);
182 makeSelectionAndDump(7, 0, 7, halfMaxLength + 1);
183 makeSelectionAndDump(7, 0, 7, maxLength);
184 makeSelectionAndDump(7, halfMaxLength, 7, halfMaxLength + 1);
185 makeSelectionAndDump(7, halfMaxLength, 7, maxLength);
186 makeSelectionAndDump(7, halfMaxLength + 1, 7, maxLength);
187 next();
188 }
189 }
190 }
191 </script>
192 </head>
193 <body onload="runTest()">
194 <p>Tests that console copies truncated text in messages properly.</p>
195 </body>
196 </html>
OLDNEW
« no previous file with comments | « no previous file | third_party/WebKit/LayoutTests/inspector/console/console-copy-truncated-text-expected.txt » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698