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