837dad8685cde8121c3242f71e9bd81e7b9e5cca
[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)
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 from stack traces to avoid rebaselining each time InjectedScriptSource is edited.
15     messageText = messageText.replace(/InjectedScript[\.a-zA-Z_]+ VM:\d+/g, "");
16     // The message might be extremely long in case of dumping stack overflow message.
17     messageText = messageText.substring(0, 1024);
18     return messageText;
19 }
20
21 InspectorTest.disableConsoleViewport = function()
22 {
23     var viewport = WebInspector.ConsolePanel._view()._viewport;
24     viewport.element.style.height = "2000px";
25     viewport.element.style.position = "absolute";
26     viewport.invalidate();
27 }
28
29 InspectorTest.dumpConsoleMessages = function(printOriginatingCommand, dumpClassNames, formatter)
30 {
31     WebInspector.inspectorView.panel("console");
32     formatter = formatter || InspectorTest.prepareConsoleMessageText;
33     var result = [];
34     InspectorTest.disableConsoleViewport();
35     var viewMessages = WebInspector.ConsolePanel._view()._visibleViewMessages;
36     for (var i = 0; i < viewMessages.length; ++i) {
37         var uiMessage = viewMessages[i];
38         var message = uiMessage.consoleMessage();
39         var element = uiMessage.contentElement();
40
41         if (dumpClassNames) {
42             var classNames = [];
43             for (var node = element.firstChild; node; node = node.traverseNextNode(element)) {
44                 if (node.nodeType === Node.ELEMENT_NODE && node.className)
45                     classNames.push(node.className);
46             }
47         }
48
49         if (InspectorTest.dumpConsoleTableMessage(uiMessage, false)) {
50             if (dumpClassNames)
51                 InspectorTest.addResult(classNames.join(" > "));
52         } else {
53             var messageText = formatter(element);
54             InspectorTest.addResult(messageText + (dumpClassNames ? " " + classNames.join(" > ") : ""));
55         }
56
57         if (printOriginatingCommand && uiMessage.consoleMessage().originatingMessage())
58             InspectorTest.addResult("Originating from: " + uiMessage.consoleMessage().originatingMessage().messageText);
59     }
60     return result;
61 }
62
63 InspectorTest.dumpConsoleTableMessage = function(viewMessage, forceInvalidate)
64 {
65     if (forceInvalidate)
66         WebInspector.ConsolePanel._view()._viewport.invalidate();
67     var table = viewMessage.contentElement();
68     var headers = table.querySelectorAll("th div");
69     if (!headers.length)
70         return false;
71
72     var headerLine = "";
73     for (var i = 0; i < headers.length; i++)
74         headerLine += headers[i].textContent + " | ";
75
76     InspectorTest.addResult("HEADER " + headerLine);
77
78     var rows = table.querySelectorAll(".data-container tr");
79
80     for (var i = 0; i < rows.length; i++) {
81         var row = rows[i];
82         var rowLine = "";
83         var items = row.querySelectorAll("td > span");
84         for (var j = 0; j < items.length; j++)
85             rowLine += items[j].textContent + " | ";
86
87         if (rowLine.trim())
88             InspectorTest.addResult("ROW " + rowLine);
89     }
90     return true;
91 }
92
93 InspectorTest.dumpConsoleMessagesWithStyles = function(sortMessages)
94 {
95     WebInspector.inspectorView.panel("console");
96     var result = [];
97     var messageViews = WebInspector.ConsolePanel._view()._visibleViewMessages;
98     for (var i = 0; i < messageViews.length; ++i) {
99         var element = messageViews[i].contentElement();
100         var messageText = InspectorTest.prepareConsoleMessageText(element)
101         InspectorTest.addResult(messageText);
102         var spans = element.querySelectorAll(".console-message-text > span > span");
103         for (var j = 0; j < spans.length; j++)
104             InspectorTest.addResult("Styled text #" + j + ": " + (spans[j].style.cssText || "NO STYLES DEFINED"));
105     }
106 }
107
108 InspectorTest.dumpConsoleMessagesWithClasses = function(sortMessages) {
109     WebInspector.inspectorView.panel("console");
110     var result = [];
111     var messageViews = WebInspector.ConsolePanel._view()._visibleViewMessages;
112     for (var i = 0; i < messageViews.length; ++i) {
113         var element = messageViews[i].contentElement();
114         var messageText = InspectorTest.prepareConsoleMessageText(element);
115         result.push(messageText + " " + element.getAttribute("class"));
116     }
117     if (sortMessages)
118         result.sort();
119     for (var i = 0; i < result.length; ++i)
120         InspectorTest.addResult(result[i]);
121 }
122
123 InspectorTest.expandConsoleMessages = function(callback)
124 {
125     WebInspector.inspectorView.panel("console");
126     var messageViews = WebInspector.ConsolePanel._view()._visibleViewMessages;
127     for (var i = 0; i < messageViews.length; ++i) {
128         var message = messageViews[i].consoleMessage();
129         var element = messageViews[i].contentElement();
130         var node = element;
131         while (node) {
132             if (node.treeElementForTest)
133                 node.treeElementForTest.expand();
134             if (node._section) {
135                 message.section = node._section;
136                 node._section.expanded = true;
137             }
138             node = node.traverseNextNode(element);
139         }
140     }
141     if (callback)
142         InspectorTest.runAfterPendingDispatches(callback);
143 }
144
145 InspectorTest.waitForRemoteObjectsConsoleMessages = function(callback)
146 {
147     var messages = WebInspector.ConsolePanel._view()._visibleViewMessages;
148     for (var i = 0; i < messages.length; ++i)
149         messages[i].toMessageElement();
150     InspectorTest.runAfterPendingDispatches(callback);
151 }
152
153 InspectorTest.checkConsoleMessagesDontHaveParameters = function()
154 {
155     WebInspector.inspectorView.panel("console");
156     var messageViews = WebInspector.ConsolePanel._view()._visibleViewMessages;
157     for (var i = 0; i < messageViews.length; ++i) {
158         var m = messageViews[i].consoleMessage();
159         InspectorTest.addResult("Message[" + i + "]:");
160         InspectorTest.addResult("Message: " + WebInspector.displayNameForURL(m.url) + ":" + m.line + " " + m.message);
161         if ("_parameters" in m) {
162             if (m._parameters)
163                 InspectorTest.addResult("FAILED: message parameters list is not empty: " + m.parameters);
164             else
165                 InspectorTest.addResult("SUCCESS: message parameters list is empty. ");
166         } else {
167             InspectorTest.addResult("FAILED: didn't find _parameters field in the message.");
168         }
169     }
170 }
171
172 InspectorTest.waitUntilMessageReceived = function(callback)
173 {
174     InspectorTest.addSniffer(WebInspector.console, "addMessage", callback, false);
175 }
176
177 InspectorTest.waitUntilNthMessageReceived = function(count, callback)
178 {
179     function override()
180     {
181         if (--count === 0)
182             InspectorTest.safeWrap(callback)();
183         else
184             InspectorTest.addSniffer(WebInspector.console, "addMessage", override, false);
185     }
186     InspectorTest.addSniffer(WebInspector.console, "addMessage", override, false);
187 }
188
189 InspectorTest.changeExecutionContext = function(namePrefix)
190 {
191     WebInspector.inspectorView.panel("console");
192     var selector = WebInspector.ConsolePanel._view()._executionContextSelector._selectElement;
193     var option = selector.firstChild;
194     while (option) {
195         if (option.textContent && option.textContent.startsWith(namePrefix))
196             break;
197         option = option.nextSibling;
198     }
199     if (!option) {
200         InspectorTest.addResult("FAILED: context with prefix: "  + namePrefix + " not found in the context list");
201         return;
202     }
203     option.selected = true;
204     WebInspector.ConsolePanel._view()._executionContextChanged();
205 }
206
207
208 }