Upstream version 9.38.198.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(/\bVM\d+/g, "VM");
14     // Strip out InjectedScript from stack traces to avoid rebaselining each time InjectedScriptSource is edited.
15     messageText = messageText.replace(/InjectedScript[\.a-zA-Z_]+ VM:\d+/g, "");
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)
134 {
135     WebInspector.inspectorView.panel("console");
136     var messageViews = WebInspector.ConsolePanel._view()._visibleViewMessages;
137     for (var i = 0; i < messageViews.length; ++i) {
138         var message = messageViews[i].consoleMessage();
139         var element = messageViews[i].contentElement();
140         var node = element;
141         while (node) {
142             if (node.treeElementForTest)
143                 node.treeElementForTest.expand();
144             if (node._section) {
145                 message.section = node._section;
146                 node._section.expanded = true;
147             }
148             node = node.traverseNextNode(element);
149         }
150     }
151     if (callback)
152         InspectorTest.runAfterPendingDispatches(callback);
153 }
154
155 InspectorTest.waitForRemoteObjectsConsoleMessages = function(callback)
156 {
157     var messages = WebInspector.ConsolePanel._view()._visibleViewMessages;
158     for (var i = 0; i < messages.length; ++i)
159         messages[i].toMessageElement();
160     InspectorTest.runAfterPendingDispatches(callback);
161 }
162
163 InspectorTest.checkConsoleMessagesDontHaveParameters = function()
164 {
165     WebInspector.inspectorView.panel("console");
166     var messageViews = WebInspector.ConsolePanel._view()._visibleViewMessages;
167     for (var i = 0; i < messageViews.length; ++i) {
168         var m = messageViews[i].consoleMessage();
169         InspectorTest.addResult("Message[" + i + "]:");
170         InspectorTest.addResult("Message: " + WebInspector.displayNameForURL(m.url) + ":" + m.line + " " + m.message);
171         if ("_parameters" in m) {
172             if (m._parameters)
173                 InspectorTest.addResult("FAILED: message parameters list is not empty: " + m.parameters);
174             else
175                 InspectorTest.addResult("SUCCESS: message parameters list is empty. ");
176         } else {
177             InspectorTest.addResult("FAILED: didn't find _parameters field in the message.");
178         }
179     }
180 }
181
182 InspectorTest.waitUntilMessageReceived = function(callback)
183 {
184     InspectorTest.addSniffer(WebInspector.consoleModel, "addMessage", callback, false);
185 }
186
187 InspectorTest.waitUntilNthMessageReceived = function(count, callback)
188 {
189     function override()
190     {
191         if (--count === 0)
192             InspectorTest.safeWrap(callback)();
193         else
194             InspectorTest.addSniffer(WebInspector.consoleModel, "addMessage", override, false);
195     }
196     InspectorTest.addSniffer(WebInspector.consoleModel, "addMessage", override, false);
197 }
198
199 InspectorTest.changeExecutionContext = function(namePrefix)
200 {
201     WebInspector.inspectorView.panel("console");
202     var selector = WebInspector.ConsolePanel._view()._executionContextSelector._selectElement;
203     var option = selector.firstChild;
204     while (option) {
205         if (option.textContent && option.textContent.startsWith(namePrefix))
206             break;
207         option = option.nextSibling;
208     }
209     if (!option) {
210         InspectorTest.addResult("FAILED: context with prefix: "  + namePrefix + " not found in the context list");
211         return;
212     }
213     option.selected = true;
214     WebInspector.ConsolePanel._view()._executionContextChanged();
215 }
216
217 }