Log Message
Web Inspector: console.table() with a list of objects no longer works https://bugs.webkit.org/show_bug.cgi?id=145952
Patch by Joseph Pecoraro <[email protected]> on 2015-06-13 Reviewed by Timothy Hatcher. Source/_javascript_Core: * inspector/InjectedScriptSource.js: (InjectedScript.RemoteObject.prototype._generatePreview): Calling generatePreview again was actually starting with a preview of the current object instead of the sub-value. Go down the other path that correctly generates sub-previews. Leave filtering on the backend unimplemented, which we were already ignoring. Source/WebInspectorUI: * UserInterface/Views/ConsoleMessageView.js: (WebInspector.ConsoleMessageView.prototype._appendMessageTextAndArguments): (WebInspector.ConsoleMessageView.prototype._formatParameterAsTable): Don't allow expanding a cosole.table message, and don't output the total object even if the table preview was lossless, as the experience is poor. LayoutTests: * inspector/console/console-api.html: * inspector/console/console-table-expected.txt: Added. * inspector/console/console-table.html: Add a similiar console API test all about console.table().
Modified Paths
- trunk/LayoutTests/ChangeLog
- trunk/LayoutTests/inspector/console/console-api.html
- trunk/Source/_javascript_Core/ChangeLog
- trunk/Source/_javascript_Core/inspector/InjectedScriptSource.js
- trunk/Source/WebInspectorUI/ChangeLog
- trunk/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js
Added Paths
Diff
Modified: trunk/LayoutTests/ChangeLog (185539 => 185540)
--- trunk/LayoutTests/ChangeLog 2015-06-13 19:28:38 UTC (rev 185539)
+++ trunk/LayoutTests/ChangeLog 2015-06-13 20:42:04 UTC (rev 185540)
@@ -1,3 +1,15 @@
+2015-06-13 Joseph Pecoraro <[email protected]>
+
+ Web Inspector: console.table() with a list of objects no longer works
+ https://bugs.webkit.org/show_bug.cgi?id=145952
+
+ Reviewed by Timothy Hatcher.
+
+ * inspector/console/console-api.html:
+ * inspector/console/console-table-expected.txt: Added.
+ * inspector/console/console-table.html:
+ Add a similiar console API test all about console.table().
+
2015-06-13 Gyuyoung Kim <[email protected]>
[EFL] Mark fast/forms/select-element-focus-ring.html to Missing
Modified: trunk/LayoutTests/inspector/console/console-api.html (185539 => 185540)
--- trunk/LayoutTests/inspector/console/console-api.html 2015-06-13 19:28:38 UTC (rev 185539)
+++ trunk/LayoutTests/inspector/console/console-api.html 2015-06-13 20:42:04 UTC (rev 185540)
@@ -2,7 +2,7 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<script type="text/_javascript_" src=""
+<script src=""
<script>
var string = "string";
var object = {a:1};
@@ -37,7 +37,6 @@
{
if (key === "_objectId" || key === "_stackTrace")
return "<filtered>";
-
return value;
}
Added: trunk/LayoutTests/inspector/console/console-table-expected.txt (0 => 185540)
--- trunk/LayoutTests/inspector/console/console-table-expected.txt (rev 0)
+++ trunk/LayoutTests/inspector/console/console-table-expected.txt 2015-06-13 20:42:04 UTC (rev 185540)
@@ -0,0 +1,477 @@
+CONSOLE MESSAGE: line 1:
+CONSOLE MESSAGE: line 1: apple,orange,banana
+CONSOLE MESSAGE: line 1: [object Object]
+CONSOLE MESSAGE: line 1: John,Smith,Jane,Doe,Emily,Jones
+CONSOLE MESSAGE: line 1: [object Object],[object Object],[object Object]
+CONSOLE MESSAGE: line 1: [object Object],[object Object],[object Object]
+
+STEP: console.table([])
+{
+ "_source": "console-api",
+ "_level": "log",
+ "_messageText": "",
+ "_type": "table",
+ "_url": null,
+ "_line": 1,
+ "_column": 14,
+ "_repeatCount": 1,
+ "_parameters": [
+ {
+ "_type": "object",
+ "_subtype": "array",
+ "_objectId": "<filtered>",
+ "_description": "Array",
+ "_hasChildren": true,
+ "_size": 0,
+ "_preview": {
+ "_type": "object",
+ "_subtype": "array",
+ "_description": "Array",
+ "_lossless": true,
+ "_overflow": false,
+ "_size": 0,
+ "_properties": [],
+ "_entries": null
+ }
+ }
+ ],
+ "_stackTrace": "<filtered>",
+ "_request": null
+}
+
+STEP: console.table(['apple', 'orange', 'banana'])
+{
+ "_source": "console-api",
+ "_level": "log",
+ "_messageText": "apple,orange,banana",
+ "_type": "table",
+ "_url": null,
+ "_line": 1,
+ "_column": 14,
+ "_repeatCount": 1,
+ "_parameters": [
+ {
+ "_type": "object",
+ "_subtype": "array",
+ "_objectId": "<filtered>",
+ "_description": "Array",
+ "_hasChildren": true,
+ "_size": 3,
+ "_preview": {
+ "_type": "object",
+ "_subtype": "array",
+ "_description": "Array",
+ "_lossless": true,
+ "_overflow": false,
+ "_size": 3,
+ "_properties": [
+ {
+ "_name": "0",
+ "_type": "string",
+ "_value": "apple"
+ },
+ {
+ "_name": "1",
+ "_type": "string",
+ "_value": "orange"
+ },
+ {
+ "_name": "2",
+ "_type": "string",
+ "_value": "banana"
+ }
+ ],
+ "_entries": null
+ }
+ }
+ ],
+ "_stackTrace": "<filtered>",
+ "_request": null
+}
+
+STEP: console.table({firstName: 'John', lastName: 'Smith'})
+{
+ "_source": "console-api",
+ "_level": "log",
+ "_messageText": "[object Object]",
+ "_type": "table",
+ "_url": null,
+ "_line": 1,
+ "_column": 14,
+ "_repeatCount": 1,
+ "_parameters": [
+ {
+ "_type": "object",
+ "_objectId": "<filtered>",
+ "_description": "Object",
+ "_hasChildren": true,
+ "_preview": {
+ "_type": "object",
+ "_description": "Object",
+ "_lossless": true,
+ "_overflow": false,
+ "_properties": [
+ {
+ "_name": "firstName",
+ "_type": "string",
+ "_value": "John"
+ },
+ {
+ "_name": "lastName",
+ "_type": "string",
+ "_value": "Smith"
+ }
+ ],
+ "_entries": null
+ }
+ }
+ ],
+ "_stackTrace": "<filtered>",
+ "_request": null
+}
+
+STEP: console.table([['John', 'Smith'], ['Jane', 'Doe'], ['Emily', 'Jones']])
+{
+ "_source": "console-api",
+ "_level": "log",
+ "_messageText": "John,Smith,Jane,Doe,Emily,Jones",
+ "_type": "table",
+ "_url": null,
+ "_line": 1,
+ "_column": 14,
+ "_repeatCount": 1,
+ "_parameters": [
+ {
+ "_type": "object",
+ "_subtype": "array",
+ "_objectId": "<filtered>",
+ "_description": "Array",
+ "_hasChildren": true,
+ "_size": 3,
+ "_preview": {
+ "_type": "object",
+ "_subtype": "array",
+ "_description": "Array",
+ "_lossless": true,
+ "_overflow": false,
+ "_size": 3,
+ "_properties": [
+ {
+ "_name": "0",
+ "_type": "object",
+ "_subtype": "array",
+ "_valuePreview": {
+ "_type": "object",
+ "_subtype": "array",
+ "_description": "Array",
+ "_lossless": true,
+ "_overflow": false,
+ "_size": 2,
+ "_properties": [
+ {
+ "_name": "0",
+ "_type": "string",
+ "_value": "John"
+ },
+ {
+ "_name": "1",
+ "_type": "string",
+ "_value": "Smith"
+ }
+ ],
+ "_entries": null
+ }
+ },
+ {
+ "_name": "1",
+ "_type": "object",
+ "_subtype": "array",
+ "_valuePreview": {
+ "_type": "object",
+ "_subtype": "array",
+ "_description": "Array",
+ "_lossless": true,
+ "_overflow": false,
+ "_size": 2,
+ "_properties": [
+ {
+ "_name": "0",
+ "_type": "string",
+ "_value": "Jane"
+ },
+ {
+ "_name": "1",
+ "_type": "string",
+ "_value": "Doe"
+ }
+ ],
+ "_entries": null
+ }
+ },
+ {
+ "_name": "2",
+ "_type": "object",
+ "_subtype": "array",
+ "_valuePreview": {
+ "_type": "object",
+ "_subtype": "array",
+ "_description": "Array",
+ "_lossless": true,
+ "_overflow": false,
+ "_size": 2,
+ "_properties": [
+ {
+ "_name": "0",
+ "_type": "string",
+ "_value": "Emily"
+ },
+ {
+ "_name": "1",
+ "_type": "string",
+ "_value": "Jones"
+ }
+ ],
+ "_entries": null
+ }
+ }
+ ],
+ "_entries": null
+ }
+ }
+ ],
+ "_stackTrace": "<filtered>",
+ "_request": null
+}
+
+STEP: console.table([john, jane, emily])
+{
+ "_source": "console-api",
+ "_level": "log",
+ "_messageText": "[object Object],[object Object],[object Object]",
+ "_type": "table",
+ "_url": null,
+ "_line": 1,
+ "_column": 14,
+ "_repeatCount": 1,
+ "_parameters": [
+ {
+ "_type": "object",
+ "_subtype": "array",
+ "_objectId": "<filtered>",
+ "_description": "Array",
+ "_hasChildren": true,
+ "_size": 3,
+ "_preview": {
+ "_type": "object",
+ "_subtype": "array",
+ "_description": "Array",
+ "_lossless": true,
+ "_overflow": false,
+ "_size": 3,
+ "_properties": [
+ {
+ "_name": "0",
+ "_type": "object",
+ "_valuePreview": {
+ "_type": "object",
+ "_description": "Person",
+ "_lossless": true,
+ "_overflow": false,
+ "_properties": [
+ {
+ "_name": "firstName",
+ "_type": "string",
+ "_value": "John"
+ },
+ {
+ "_name": "lastName",
+ "_type": "string",
+ "_value": "Smith"
+ }
+ ],
+ "_entries": null
+ }
+ },
+ {
+ "_name": "1",
+ "_type": "object",
+ "_valuePreview": {
+ "_type": "object",
+ "_description": "Person",
+ "_lossless": true,
+ "_overflow": false,
+ "_properties": [
+ {
+ "_name": "firstName",
+ "_type": "string",
+ "_value": "Jane"
+ },
+ {
+ "_name": "lastName",
+ "_type": "string",
+ "_value": "Doe"
+ }
+ ],
+ "_entries": null
+ }
+ },
+ {
+ "_name": "2",
+ "_type": "object",
+ "_valuePreview": {
+ "_type": "object",
+ "_description": "Person",
+ "_lossless": true,
+ "_overflow": false,
+ "_properties": [
+ {
+ "_name": "firstName",
+ "_type": "string",
+ "_value": "Emily"
+ },
+ {
+ "_name": "lastName",
+ "_type": "string",
+ "_value": "Jones"
+ }
+ ],
+ "_entries": null
+ }
+ }
+ ],
+ "_entries": null
+ }
+ }
+ ],
+ "_stackTrace": "<filtered>",
+ "_request": null
+}
+
+STEP: console.table([john, jane, emily], ['firstName'])
+{
+ "_source": "console-api",
+ "_level": "log",
+ "_messageText": "[object Object],[object Object],[object Object]",
+ "_type": "table",
+ "_url": null,
+ "_line": 1,
+ "_column": 14,
+ "_repeatCount": 1,
+ "_parameters": [
+ {
+ "_type": "object",
+ "_subtype": "array",
+ "_objectId": "<filtered>",
+ "_description": "Array",
+ "_hasChildren": true,
+ "_size": 3,
+ "_preview": {
+ "_type": "object",
+ "_subtype": "array",
+ "_description": "Array",
+ "_lossless": true,
+ "_overflow": false,
+ "_size": 3,
+ "_properties": [
+ {
+ "_name": "0",
+ "_type": "object",
+ "_valuePreview": {
+ "_type": "object",
+ "_description": "Person",
+ "_lossless": true,
+ "_overflow": false,
+ "_properties": [
+ {
+ "_name": "firstName",
+ "_type": "string",
+ "_value": "John"
+ },
+ {
+ "_name": "lastName",
+ "_type": "string",
+ "_value": "Smith"
+ }
+ ],
+ "_entries": null
+ }
+ },
+ {
+ "_name": "1",
+ "_type": "object",
+ "_valuePreview": {
+ "_type": "object",
+ "_description": "Person",
+ "_lossless": true,
+ "_overflow": false,
+ "_properties": [
+ {
+ "_name": "firstName",
+ "_type": "string",
+ "_value": "Jane"
+ },
+ {
+ "_name": "lastName",
+ "_type": "string",
+ "_value": "Doe"
+ }
+ ],
+ "_entries": null
+ }
+ },
+ {
+ "_name": "2",
+ "_type": "object",
+ "_valuePreview": {
+ "_type": "object",
+ "_description": "Person",
+ "_lossless": true,
+ "_overflow": false,
+ "_properties": [
+ {
+ "_name": "firstName",
+ "_type": "string",
+ "_value": "Emily"
+ },
+ {
+ "_name": "lastName",
+ "_type": "string",
+ "_value": "Jones"
+ }
+ ],
+ "_entries": null
+ }
+ }
+ ],
+ "_entries": null
+ }
+ },
+ {
+ "_type": "object",
+ "_subtype": "array",
+ "_objectId": "<filtered>",
+ "_description": "Array",
+ "_hasChildren": true,
+ "_size": 1,
+ "_preview": {
+ "_type": "object",
+ "_subtype": "array",
+ "_description": "Array",
+ "_lossless": true,
+ "_overflow": false,
+ "_size": 1,
+ "_properties": [
+ {
+ "_name": "0",
+ "_type": "string",
+ "_value": "firstName"
+ }
+ ],
+ "_entries": null
+ }
+ }
+ ],
+ "_stackTrace": "<filtered>",
+ "_request": null
+}
+
Copied: trunk/LayoutTests/inspector/console/console-table.html (from rev 185539, trunk/LayoutTests/inspector/console/console-api.html) (0 => 185540)
--- trunk/LayoutTests/inspector/console/console-table.html (rev 0)
+++ trunk/LayoutTests/inspector/console/console-table.html 2015-06-13 20:42:04 UTC (rev 185540)
@@ -0,0 +1,52 @@
+<!doctype html>
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<script src=""
+<script>
+function Person(firstName, lastName) {
+ this.firstName = firstName;
+ this.lastName = lastName;
+}
+
+var john = new Person("John", "Smith");
+var jane = new Person("Jane", "Doe");
+var emily = new Person("Emily", "Jones");
+
+function test()
+{
+ var currentStepIndex = 0;
+ var steps = [
+ "console.table([])", // Empty.
+ "console.table(['apple', 'orange', 'banana'])", // Index (array index), Value
+ "console.table({firstName: 'John', lastName: 'Smith'})", // Index (property name), Value (property value)
+ "console.table([['John', 'Smith'], ['Jane', 'Doe'], ['Emily', 'Jones']])", // Index, 0, 1
+ "console.table([john, jane, emily])", // Index, firstName, lastName
+ "console.table([john, jane, emily], ['firstName'])", // Index, firstName (at least).
+ ];
+
+ function remoteObjectJSONFilter(key, value)
+ {
+ if (key === "_objectId" || key === "_stackTrace")
+ return "<filtered>";
+ return value;
+ }
+
+ WebInspector.logManager.addEventListener(WebInspector.LogManager.Event.MessageAdded, function(event) {
+ var message = event.data.message;
+ InspectorTest.assert(message instanceof WebInspector.ConsoleMessage);
+ InspectorTest.log("\nSTEP: " + steps[currentStepIndex]);
+ InspectorTest.log(JSON.stringify(message, remoteObjectJSONFilter, " "));
+
+ if (++currentStepIndex >= steps.length)
+ InspectorTest.completeTest();
+ });
+
+ for (var step of steps)
+ WebInspector.runtimeManager.evaluateInInspectedWindow(step, "test", false, true, false, true, false, function(){});
+}
+</script>
+</head>
+<body _onload_="runTest();">
+</body>
+</html>
Modified: trunk/Source/_javascript_Core/ChangeLog (185539 => 185540)
--- trunk/Source/_javascript_Core/ChangeLog 2015-06-13 19:28:38 UTC (rev 185539)
+++ trunk/Source/_javascript_Core/ChangeLog 2015-06-13 20:42:04 UTC (rev 185540)
@@ -1,3 +1,17 @@
+2015-06-13 Joseph Pecoraro <[email protected]>
+
+ Web Inspector: console.table() with a list of objects no longer works
+ https://bugs.webkit.org/show_bug.cgi?id=145952
+
+ Reviewed by Timothy Hatcher.
+
+ * inspector/InjectedScriptSource.js:
+ (InjectedScript.RemoteObject.prototype._generatePreview):
+ Calling generatePreview again was actually starting with a preview
+ of the current object instead of the sub-value. Go down the other
+ path that correctly generates sub-previews. Leave filtering on the
+ backend unimplemented, which we were already ignoring.
+
2015-06-13 Youenn Fablet <[email protected]>
[Streams API] ReadableJSStream should handle promises returned by JS source start callback
Modified: trunk/Source/_javascript_Core/inspector/InjectedScriptSource.js (185539 => 185540)
--- trunk/Source/_javascript_Core/inspector/InjectedScriptSource.js 2015-06-13 19:28:38 UTC (rev 185539)
+++ trunk/Source/_javascript_Core/inspector/InjectedScriptSource.js 2015-06-13 20:42:04 UTC (rev 185540)
@@ -1102,7 +1102,8 @@
continue;
// If we have a filter, only show properties in the filter.
- if (firstLevelKeys && firstLevelKeys.indexOf(name) === -1)
+ // FIXME: Currently these filters do nothing on the backend.
+ if (firstLevelKeys && !firstLevelKeys.includes(name))
continue;
// Getter/setter.
@@ -1157,14 +1158,8 @@
property.subtype = subtype;
// Second level.
- if (secondLevelKeys === null || secondLevelKeys) {
- var subPreview = this._generatePreview(value, secondLevelKeys || undefined, undefined);
- property.valuePreview = subPreview;
- if (!subPreview.lossless)
- preview.lossless = false;
- if (subPreview.overflow)
- preview.overflow = true;
- } else if (this._isPreviewableObject(value)) {
+ if ((secondLevelKeys === null || secondLevelKeys) || this._isPreviewableObject(value)) {
+ // FIXME: If we want secondLevelKeys filter to continue we would need some refactoring.
var subPreview = this._createObjectPreviewForValue(value);
property.valuePreview = subPreview;
if (!subPreview.lossless)
Modified: trunk/Source/WebInspectorUI/ChangeLog (185539 => 185540)
--- trunk/Source/WebInspectorUI/ChangeLog 2015-06-13 19:28:38 UTC (rev 185539)
+++ trunk/Source/WebInspectorUI/ChangeLog 2015-06-13 20:42:04 UTC (rev 185540)
@@ -1,3 +1,16 @@
+2015-06-13 Joseph Pecoraro <[email protected]>
+
+ Web Inspector: console.table() with a list of objects no longer works
+ https://bugs.webkit.org/show_bug.cgi?id=145952
+
+ Reviewed by Timothy Hatcher.
+
+ * UserInterface/Views/ConsoleMessageView.js:
+ (WebInspector.ConsoleMessageView.prototype._appendMessageTextAndArguments):
+ (WebInspector.ConsoleMessageView.prototype._formatParameterAsTable):
+ Don't allow expanding a cosole.table message, and don't output the total
+ object even if the table preview was lossless, as the experience is poor.
+
2015-06-11 Joseph Pecoraro <[email protected]>
Web Inspector: CSS Regions not displaying DOM Trees in inspector
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js (185539 => 185540)
--- trunk/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js 2015-06-13 19:28:38 UTC (rev 185539)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/ConsoleMessageView.js 2015-06-13 20:42:04 UTC (rev 185540)
@@ -243,9 +243,9 @@
break;
case WebInspector.ConsoleMessage.MessageType.Table:
- // FIXME: Remove messageText?
- var args = this._message.parameters || [this._message.messageText];
+ var args = this._message.parameters;
element.appendChild(this._formatParameterAsTable(args));
+ this._extraParameters = null;
break;
default:
@@ -735,13 +735,12 @@
}
}
- // If lossless or not table data, output the object so full data can be gotten.
- if (!preview.lossless || !flatValues.length) {
- element.appendChild(this._formatParameter(table));
- if (!flatValues.length)
- return element;
- }
+ // If no table data show nothing.
+ if (!flatValues.length)
+ return element;
+ // FIXME: Should we output something extra if the preview is lossless?
+
var dataGrid = WebInspector.DataGrid.createSortableDataGrid(columnNames, flatValues);
dataGrid.element.classList.add("inline");
element.appendChild(dataGrid.element);
_______________________________________________ webkit-changes mailing list [email protected] https://lists.webkit.org/mailman/listinfo/webkit-changes
