Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / WebKit / LayoutTests / http / tests / inspector / console-test.js
1 var initialize_ConsoleTest = function() {
2
3
4 InspectorTest.showConsolePanel = function()
5 {
6     WebInspector.inspectorView.showPanel("console");
7 }
8
9 InspectorTest.prepareConsoleMessageText = function(messageElement, consoleMessage)
10 {
11     var messageText = messageElement.textContent.replace(/\u200b/g, "");
12     // Replace scriptIds with generic scriptId string to avoid flakiness.
13     messageText = messageText.replace(/VM\d+/g, "VM");
14     // Strip out InjectedScript line numbers from stack traces to avoid rebaselining each time InjectedScriptSource is edited.
15     messageText = messageText.replace(/VM:\d+ InjectedScript\./g, " InjectedScript.");
16     // Strip out InjectedScript line numbers from console message anchor.
17     var functionName = consoleMessage && consoleMessage.stackTrace && consoleMessage.stackTrace[0] && consoleMessage.stackTrace[0].functionName || "";
18     if (functionName.indexOf("InjectedScript") !== -1)
19         messageText = messageText.replace(/\bVM:\d+/, ""); // Only first replace.
20     // The message might be extremely long in case of dumping stack overflow message.
21     messageText = messageText.substring(0, 1024);
22     return messageText;
23 }
24
25 InspectorTest.disableConsoleViewport = function()
26 {
27     InspectorTest.fixConsoleViewportDimensions(600, 2000);
28 }
29
30 InspectorTest.fixConsoleViewportDimensions = function(width, height)
31 {
32     var viewport = WebInspector.ConsolePanel._view()._viewport;
33     viewport.element.style.width = width + "px";
34     viewport.element.style.height = height + "px";
35     viewport.element.style.position = "absolute";
36     viewport.invalidate();
37 }
38
39 InspectorTest.dumpConsoleMessages = function(printOriginatingCommand, dumpClassNames, formatter)
40 {
41     WebInspector.inspectorView.panel("console");
42     formatter = formatter || InspectorTest.prepareConsoleMessageText;
43     var result = [];
44     InspectorTest.disableConsoleViewport();
45     var viewMessages = WebInspector.ConsolePanel._view()._visibleViewMessages;
46     for (var i = 0; i < viewMessages.length; ++i) {
47         var uiMessage = viewMessages[i];
48         var message = uiMessage.consoleMessage();
49         var element = uiMessage.contentElement();
50
51         if (dumpClassNames) {
52             var classNames = [];
53             for (var node = element.firstChild; node; node = node.traverseNextNode(element)) {
54                 if (node.nodeType === Node.ELEMENT_NODE && node.className)
55                     classNames.push(node.className);
56             }
57         }
58
59         if (InspectorTest.dumpConsoleTableMessage(uiMessage, false)) {
60             if (dumpClassNames)
61                 InspectorTest.addResult(classNames.join(" > "));
62         } else {
63             var messageText = formatter(element, message);
64             InspectorTest.addResult(messageText + (dumpClassNames ? " " + classNames.join(" > ") : ""));
65         }
66
67         if (printOriginatingCommand && uiMessage.consoleMessage().originatingMessage())
68             InspectorTest.addResult("Originating from: " + uiMessage.consoleMessage().originatingMessage().messageText);
69     }
70     return result;
71 }
72
73 InspectorTest.dumpConsoleTableMessage = function(viewMessage, forceInvalidate)
74 {
75     if (forceInvalidate)
76         WebInspector.ConsolePanel._view()._viewport.invalidate();
77     var table = viewMessage.contentElement();
78     var headers = table.querySelectorAll("th div");
79     if (!headers.length)
80         return false;
81
82     var headerLine = "";
83     for (var i = 0; i < headers.length; i++)
84         headerLine += headers[i].textContent + " | ";
85
86     InspectorTest.addResult("HEADER " + headerLine);
87
88     var rows = table.querySelectorAll(".data-container tr");
89
90     for (var i = 0; i < rows.length; i++) {
91         var row = rows[i];
92         var rowLine = "";
93         var items = row.querySelectorAll("td > span");
94         for (var j = 0; j < items.length; j++)
95             rowLine += items[j].textContent + " | ";
96
97         if (rowLine.trim())
98             InspectorTest.addResult("ROW " + rowLine);
99     }
100     return true;
101 }
102
103 InspectorTest.dumpConsoleMessagesWithStyles = function(sortMessages)
104 {
105     WebInspector.inspectorView.panel("console");
106     var result = [];
107     var messageViews = WebInspector.ConsolePanel._view()._visibleViewMessages;
108     for (var i = 0; i < messageViews.length; ++i) {
109         var element = messageViews[i].contentElement();
110         var messageText = InspectorTest.prepareConsoleMessageText(element)
111         InspectorTest.addResult(messageText);
112         var spans = element.querySelectorAll(".console-message-text > span > span");
113         for (var j = 0; j < spans.length; j++)
114             InspectorTest.addResult("Styled text #" + j + ": " + (spans[j].style.cssText || "NO STYLES DEFINED"));
115     }
116 }
117
118 InspectorTest.dumpConsoleMessagesWithClasses = function(sortMessages) {
119     WebInspector.inspectorView.panel("console");
120     var result = [];
121     var messageViews = WebInspector.ConsolePanel._view()._visibleViewMessages;
122     for (var i = 0; i < messageViews.length; ++i) {
123         var element = messageViews[i].contentElement();
124         var messageText = InspectorTest.prepareConsoleMessageText(element);
125         result.push(messageText + " " + element.getAttribute("class"));
126     }
127     if (sortMessages)
128         result.sort();
129     for (var i = 0; i < result.length; ++i)
130         InspectorTest.addResult(result[i]);
131 }
132
133 InspectorTest.expandConsoleMessages = function(callback, deepFilter)
134 {
135     WebInspector.inspectorView.panel("console");
136     var messageViews = WebInspector.ConsolePanel._view()._visibleViewMessages;
137
138     // Initiate round-trips to fetch necessary data for further rendering.
139     for (var i = 0; i < messageViews.length; ++i)
140         messageViews[i].contentElement();
141
142     InspectorTest.runAfterPendingDispatches(expandTreeElements);
143
144     function expandTreeElements()
145     {
146         for (var i = 0; i < messageViews.length; ++i) {
147             var element = messageViews[i].contentElement();
148             for (var node = element; node; node = node.traverseNextNode(element)) {
149                 if (node.treeElementForTest)
150                     node.treeElementForTest.expand();
151                 if (!node._section)
152                     continue;
153                 node._section.expanded = true;
154
155                 if (!deepFilter)
156                     continue;
157                 var treeElements = node._section.propertiesTreeOutline.children;
158                 for (var j = 0; j < treeElements.length; ++j) {
159                     for (var treeElement = treeElements[j]; treeElement; treeElement = treeElement.traverseNextTreeElement(false, null, false)) {
160                         if (deepFilter(treeElement))
161                             treeElement.expand();
162                     }
163                 }
164             }
165         }
166         InspectorTest.runAfterPendingDispatches(callback);
167     }
168 }
169
170 InspectorTest.waitForRemoteObjectsConsoleMessages = function(callback)
171 {
172     var messages = WebInspector.ConsolePanel._view()._visibleViewMessages;
173     for (var i = 0; i < messages.length; ++i)
174         messages[i].toMessageElement();
175     InspectorTest.runAfterPendingDispatches(callback);
176 }
177
178 InspectorTest.checkConsoleMessagesDontHaveParameters = function()
179 {
180     WebInspector.inspectorView.panel("console");
181     var messageViews = WebInspector.ConsolePanel._view()._visibleViewMessages;
182     for (var i = 0; i < messageViews.length; ++i) {
183         var m = messageViews[i].consoleMessage();
184         InspectorTest.addResult("Message[" + i + "]:");
185         InspectorTest.addResult("Message: " + WebInspector.displayNameForURL(m.url) + ":" + m.line + " " + m.message);
186         if ("_parameters" in m) {
187             if (m._parameters)
188                 InspectorTest.addResult("FAILED: message parameters list is not empty: " + m.parameters);
189             else
190                 InspectorTest.addResult("SUCCESS: message parameters list is empty. ");
191         } else {
192             InspectorTest.addResult("FAILED: didn't find _parameters field in the message.");
193         }
194     }
195 }
196
197 InspectorTest.waitUntilMessageReceived = function(callback)
198 {
199     InspectorTest.addSniffer(WebInspector.consoleModel, "addMessage", callback, false);
200 }
201
202 InspectorTest.waitUntilNthMessageReceived = function(count, callback)
203 {
204     function override()
205     {
206         if (--count === 0)
207             InspectorTest.safeWrap(callback)();
208         else
209             InspectorTest.addSniffer(WebInspector.consoleModel, "addMessage", override, false);
210     }
211     InspectorTest.addSniffer(WebInspector.consoleModel, "addMessage", override, false);
212 }
213
214 InspectorTest.changeExecutionContext = function(namePrefix)
215 {
216     WebInspector.inspectorView.panel("console");
217     var selector = WebInspector.ConsolePanel._view()._executionContextSelector._selectElement;
218     var option = selector.firstChild;
219     while (option) {
220         if (option.textContent && option.textContent.startsWith(namePrefix))
221             break;
222         option = option.nextSibling;
223     }
224     if (!option) {
225         InspectorTest.addResult("FAILED: context with prefix: "  + namePrefix + " not found in the context list");
226         return;
227     }
228     option.selected = true;
229     WebInspector.ConsolePanel._view()._executionContextChanged();
230 }
231
232 }