Chromium Code Reviews| OLD | NEW |
|---|---|
| (Empty) | |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 /** | |
| 6 * @fileoverview OK to use private properties in tests. | |
| 7 * @suppress {accessControls} | |
|
dgozman
2017/04/25 21:08:28
If we intend to compile tests and rely on compilat
chenwilliam
2017/06/15 01:01:05
Let's revisit this later? In theory I agree with y
| |
| 8 */ | |
| 9 | |
| 10 /** | |
| 11 * @param {boolean} printOriginatingCommand | |
| 12 * @param {boolean} dumpClassNames | |
| 13 * @param {function(!Element, !ConsoleModel.ConsoleMessage):string=} formatter | |
| 14 */ | |
| 15 TestRunner.dumpConsoleMessages = function(printOriginatingCommand, dumpClassName s, formatter) { | |
| 16 TestRunner.addResults(TestRunner.dumpConsoleMessagesIntoArray(printOriginating Command, dumpClassNames, formatter)); | |
| 17 }; | |
| 18 | |
| 19 /** | |
| 20 * @param {boolean} printOriginatingCommand | |
| 21 * @param {boolean} dumpClassNames | |
| 22 * @param {function(!Element, !ConsoleModel.ConsoleMessage):string=} formatter | |
| 23 * @return {!Array<string>} | |
| 24 */ | |
| 25 TestRunner.dumpConsoleMessagesIntoArray = function(printOriginatingCommand, dump ClassNames, formatter) { | |
| 26 Common.settingForTest('messageLevelFilters2').set(ConsoleModel.ConsoleMessage. MessageLevel.Verbose); | |
| 27 formatter = formatter || TestRunner.prepareConsoleMessageText; | |
| 28 var result = []; | |
| 29 TestRunner.disableConsoleViewport(); | |
| 30 var consoleView = Console.ConsoleView.instance(); | |
| 31 if (consoleView._needsFullUpdate) | |
| 32 consoleView._updateMessageList(); | |
| 33 var viewMessages = consoleView._visibleViewMessages; | |
| 34 for (var i = 0; i < viewMessages.length; ++i) { | |
| 35 var uiMessage = viewMessages[i]; | |
| 36 var message = uiMessage.consoleMessage(); | |
| 37 var element = uiMessage.element(); | |
| 38 | |
| 39 if (dumpClassNames) { | |
| 40 var classNames = []; | |
| 41 for (var node = element.firstChild; node; node = node.traverseNextNode(ele ment)) { | |
| 42 if (node.nodeType === Node.ELEMENT_NODE && node.className) { | |
| 43 classNames.push(node.className.replace('platform-linux', 'platform-*') | |
| 44 .replace('platform-mac', 'platform-*') | |
| 45 .replace('platform-windows', 'platform-*')); | |
| 46 } | |
| 47 } | |
| 48 } | |
| 49 | |
| 50 if (TestRunner.dumpConsoleTableMessage(uiMessage, false, result)) { | |
| 51 if (dumpClassNames) | |
| 52 result.push(classNames.join(' > ')); | |
| 53 } else { | |
| 54 var messageText = formatter(element, message); | |
| 55 messageText = messageText.replace(/VM\d+/g, 'VM'); | |
| 56 result.push(messageText + (dumpClassNames ? ' ' + classNames.join(' > ') : '')); | |
| 57 } | |
| 58 | |
| 59 if (printOriginatingCommand && uiMessage.consoleMessage().originatingMessage ()) | |
| 60 result.push('Originating from: ' + uiMessage.consoleMessage().originatingM essage().messageText); | |
| 61 } | |
| 62 return result; | |
| 63 }; | |
| 64 | |
| 65 /** | |
| 66 * @param {!Element} messageElement | |
| 67 * @param {!ConsoleModel.ConsoleMessage} consoleMessage | |
| 68 * @return {string} | |
| 69 */ | |
| 70 TestRunner.prepareConsoleMessageText = function(messageElement, consoleMessage) { | |
| 71 var messageText = messageElement.deepTextContent().replace(/\u200b/g, ''); | |
| 72 // Replace scriptIds with generic scriptId string to avoid flakiness. | |
| 73 messageText = messageText.replace(/VM\d+/g, 'VM'); | |
| 74 // Remove line and column of evaluate method. | |
| 75 messageText = messageText.replace(/(at eval \(eval at evaluate) \(:\d+:\d+\)/, '$1'); | |
| 76 | |
| 77 if (messageText.startsWith('Navigated to')) { | |
| 78 var fileName = messageText.split(' ').pop().split('/').pop(); | |
| 79 messageText = 'Navigated to ' + fileName; | |
| 80 } | |
| 81 // The message might be extremely long in case of dumping stack overflow messa ge. | |
| 82 messageText = messageText.substring(0, 1024); | |
| 83 return messageText; | |
| 84 }; | |
| 85 | |
| 86 /** | |
| 87 * @param {!Console.ConsoleViewMessage} viewMessage | |
| 88 * @param {boolean} forceInvalidate | |
| 89 * @param {!Array<string>} results | |
| 90 * @return {boolean} | |
| 91 */ | |
| 92 TestRunner.dumpConsoleTableMessage = function(viewMessage, forceInvalidate, resu lts) { | |
| 93 if (forceInvalidate) | |
| 94 Console.ConsoleView.instance()._viewport.invalidate(); | |
| 95 var table = viewMessage.element(); | |
| 96 var headers = table.querySelectorAll('th > div:first-child'); | |
| 97 if (!headers.length) | |
| 98 return false; | |
| 99 | |
| 100 var headerLine = ''; | |
| 101 for (var i = 0; i < headers.length; i++) | |
| 102 headerLine += headers[i].textContent + ' | '; | |
| 103 | |
| 104 addResult('HEADER ' + headerLine); | |
| 105 | |
| 106 var rows = table.querySelectorAll('.data-container tr'); | |
| 107 | |
| 108 for (var i = 0; i < rows.length; i++) { | |
| 109 var row = rows[i]; | |
| 110 var rowLine = ''; | |
| 111 var items = row.querySelectorAll('td > span'); | |
| 112 for (var j = 0; j < items.length; j++) | |
| 113 rowLine += items[j].textContent + ' | '; | |
| 114 | |
| 115 if (rowLine.trim()) | |
| 116 addResult('ROW ' + rowLine); | |
| 117 } | |
| 118 | |
| 119 /** | |
| 120 * @param {string} x | |
| 121 */ | |
| 122 function addResult(x) { | |
| 123 if (results) | |
| 124 results.push(x); | |
| 125 else | |
| 126 TestRunner.addResult(x); | |
| 127 } | |
| 128 | |
| 129 return true; | |
| 130 }; | |
| 131 | |
| 132 TestRunner.disableConsoleViewport = function() { | |
| 133 TestRunner.fixConsoleViewportDimensions(600, 2000); | |
| 134 }; | |
| 135 | |
| 136 /** | |
| 137 * @param {number} width | |
| 138 * @param {number} height | |
| 139 */ | |
| 140 TestRunner.fixConsoleViewportDimensions = function(width, height) { | |
| 141 var viewport = Console.ConsoleView.instance()._viewport; | |
| 142 viewport.element.style.width = width + 'px'; | |
| 143 viewport.element.style.height = height + 'px'; | |
| 144 viewport.element.style.position = 'absolute'; | |
| 145 viewport.invalidate(); | |
| 146 }; | |
| OLD | NEW |