Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 2007 Apple Inc. All rights reserved. | 2 * Copyright (C) 2007 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2013 Google Inc. All rights reserved. | 3 * Copyright (C) 2013 Google Inc. All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
| 7 * are met: | 7 * are met: |
| 8 * | 8 * |
| 9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 1076 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1087 this.objectId = injectedScript._bind(object, objectGroupName); | 1087 this.objectId = injectedScript._bind(object, objectGroupName); |
| 1088 var subtype = injectedScript._subtype(object); | 1088 var subtype = injectedScript._subtype(object); |
| 1089 if (subtype) | 1089 if (subtype) |
| 1090 this.subtype = subtype; | 1090 this.subtype = subtype; |
| 1091 var className = InjectedScriptHost.internalConstructorName(object); | 1091 var className = InjectedScriptHost.internalConstructorName(object); |
| 1092 if (className) | 1092 if (className) |
| 1093 this.className = className; | 1093 this.className = className; |
| 1094 this.description = injectedScript._describe(object); | 1094 this.description = injectedScript._describe(object); |
| 1095 | 1095 |
| 1096 if (generatePreview && (this.type === "object" || injectedScript._isHTMLAllC ollection(object))) | 1096 if (generatePreview && (this.type === "object" || injectedScript._isHTMLAllC ollection(object))) |
| 1097 this.preview = this._generatePreview(object, undefined, columnNames, isT able, false); | 1097 this.preview = this._generatePreview(object, undefined, columnNames, isT able); |
| 1098 } | 1098 } |
| 1099 | 1099 |
| 1100 InjectedScript.RemoteObject.prototype = { | 1100 InjectedScript.RemoteObject.prototype = { |
| 1101 /** | 1101 /** |
| 1102 * @param {Object} object | 1102 * @param {Object} object |
| 1103 * @param {Array.<string>=} firstLevelKeys | 1103 * @param {Array.<string>=} firstLevelKeys |
| 1104 * @param {?Array.<string>=} secondLevelKeys | 1104 * @param {?Array.<string>=} secondLevelKeys |
| 1105 * @param {boolean=} isTable | 1105 * @param {boolean=} isTable |
| 1106 * @param {boolean=} isTableRow | |
| 1107 * @return {!RuntimeAgent.ObjectPreview} preview | 1106 * @return {!RuntimeAgent.ObjectPreview} preview |
| 1108 */ | 1107 */ |
| 1109 _generatePreview: function(object, firstLevelKeys, secondLevelKeys, isTable, isTableRow) | 1108 _generatePreview: function(object, firstLevelKeys, secondLevelKeys, isTable) |
| 1110 { | 1109 { |
| 1111 var preview = { __proto__: null }; | 1110 var preview = { __proto__: null }; |
| 1112 preview.lossless = true; | 1111 preview.lossless = true; |
| 1113 preview.overflow = false; | 1112 preview.overflow = false; |
| 1114 preview.properties = []; | 1113 preview.properties = []; |
| 1115 | 1114 |
| 1116 var firstLevelKeysCount = firstLevelKeys ? firstLevelKeys.length : 0; | 1115 var firstLevelKeysCount = firstLevelKeys ? firstLevelKeys.length : 0; |
| 1117 | 1116 |
| 1118 var propertiesThreshold = { | 1117 var propertiesThreshold = { |
| 1119 properties: (isTable || isTableRow) ? 1000 : max(5, firstLevelKeysCo unt), | 1118 properties: isTable ? 1000 : max(5, firstLevelKeysCount), |
| 1120 indexes: (isTable || isTableRow) ? 1000 : max(100, firstLevelKeysCou nt) | 1119 indexes: isTable ? 1000 : max(100, firstLevelKeysCount) |
| 1121 }; | 1120 }; |
| 1122 | 1121 |
| 1123 try { | 1122 try { |
| 1124 var descriptors = injectedScript._propertyDescriptors(object); | 1123 var descriptors = injectedScript._propertyDescriptors(object); |
| 1124 var internalProperties; | |
| 1125 | 1125 |
| 1126 if (firstLevelKeys) { | 1126 if (firstLevelKeys) { |
| 1127 var nameToDescriptors = { __proto__: null }; | 1127 var nameToDescriptors = { __proto__: null }; |
| 1128 for (var i = 0; i < descriptors.length; ++i) { | 1128 for (var i = 0; i < descriptors.length; ++i) { |
| 1129 var descriptor = descriptors[i]; | 1129 var descriptor = descriptors[i]; |
| 1130 nameToDescriptors["#" + descriptor.name] = descriptor; | 1130 nameToDescriptors["#" + descriptor.name] = descriptor; |
| 1131 } | 1131 } |
| 1132 descriptors = []; | 1132 descriptors = []; |
| 1133 for (var i = 0; i < firstLevelKeys.length; ++i) | 1133 for (var i = 0; i < firstLevelKeys.length; ++i) |
| 1134 descriptors[i] = nameToDescriptors["#" + firstLevelKeys[i]]; | 1134 descriptors[i] = nameToDescriptors["#" + firstLevelKeys[i]]; |
| 1135 } | 1135 } |
| 1136 | 1136 |
| 1137 for (var i = 0; i < descriptors.length; ++i) { | 1137 for (var i = 0, n = descriptors.length + 1; i < n; ++i) { |
| 1138 if (propertiesThreshold.indexes < 0 || propertiesThreshold.prope rties < 0) | 1138 if (propertiesThreshold.indexes < 0 || propertiesThreshold.prope rties < 0) |
| 1139 break; | 1139 break; |
| 1140 | 1140 |
| 1141 var descriptor = descriptors[i]; | 1141 var descriptor = descriptors[i]; |
| 1142 if (i >= descriptors.length && !isTable) { | |
| 1143 // Add internal properties to preview. | |
| 1144 if (!internalProperties) { | |
| 1145 internalProperties = InjectedScriptHost.getInternalPrope rties(object) || []; | |
| 1146 n = descriptors.length + internalProperties.length; | |
| 1147 if (i >= n) | |
| 1148 break; | |
| 1149 } | |
| 1150 descriptor = nullifyObjectProto(internalProperties[i - descr iptors.length]); | |
| 1151 descriptor.enumerable = true; | |
| 1152 } | |
| 1153 | |
| 1142 if (!descriptor) | 1154 if (!descriptor) |
|
yurys
2014/06/06 09:12:01
Let's try to extract common part into a separate m
aandrey
2014/06/06 09:28:41
Done.
| |
| 1143 continue; | 1155 continue; |
| 1144 if (descriptor.wasThrown) { | 1156 if (descriptor.wasThrown) { |
| 1145 preview.lossless = false; | 1157 preview.lossless = false; |
| 1146 continue; | 1158 continue; |
| 1147 } | 1159 } |
| 1148 if (!descriptor.enumerable && !descriptor.isOwn) | 1160 if (!descriptor.enumerable && !descriptor.isOwn) |
| 1149 continue; | 1161 continue; |
| 1150 | 1162 |
| 1151 var name = descriptor.name; | 1163 var name = descriptor.name; |
| 1152 if (name === "__proto__") | 1164 if (name === "__proto__") |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 1176 if (InjectedScript.primitiveTypes[type]) { | 1188 if (InjectedScript.primitiveTypes[type]) { |
| 1177 if (type === "string" && value.length > maxLength) { | 1189 if (type === "string" && value.length > maxLength) { |
| 1178 value = this._abbreviateString(value, maxLength, true); | 1190 value = this._abbreviateString(value, maxLength, true); |
| 1179 preview.lossless = false; | 1191 preview.lossless = false; |
| 1180 } | 1192 } |
| 1181 this._appendPropertyPreview(preview, { name: name, type: typ e, value: toStringDescription(value), __proto__: null }, propertiesThreshold); | 1193 this._appendPropertyPreview(preview, { name: name, type: typ e, value: toStringDescription(value), __proto__: null }, propertiesThreshold); |
| 1182 continue; | 1194 continue; |
| 1183 } | 1195 } |
| 1184 | 1196 |
| 1185 if (secondLevelKeys === null || secondLevelKeys) { | 1197 if (secondLevelKeys === null || secondLevelKeys) { |
| 1186 var subPreview = this._generatePreview(value, secondLevelKey s || undefined, undefined, false, isTable); | 1198 var subPreview = this._generatePreview(value, secondLevelKey s || undefined, undefined, isTable); |
| 1187 var property = { name: name, type: type, valuePreview: subPr eview, __proto__: null }; | 1199 var property = { name: name, type: type, valuePreview: subPr eview, __proto__: null }; |
| 1188 this._appendPropertyPreview(preview, property, propertiesThr eshold); | 1200 this._appendPropertyPreview(preview, property, propertiesThr eshold); |
| 1189 if (!subPreview.lossless) | 1201 if (!subPreview.lossless) |
| 1190 preview.lossless = false; | 1202 preview.lossless = false; |
| 1191 if (subPreview.overflow) | 1203 if (subPreview.overflow) |
| 1192 preview.overflow = true; | 1204 preview.overflow = true; |
| 1193 continue; | 1205 continue; |
| 1194 } | 1206 } |
| 1195 | 1207 |
| 1196 preview.lossless = false; | 1208 preview.lossless = false; |
| (...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1642 */ | 1654 */ |
| 1643 _logEvent: function(event) | 1655 _logEvent: function(event) |
| 1644 { | 1656 { |
| 1645 inspectedWindow.console.log(event.type, event); | 1657 inspectedWindow.console.log(event.type, event); |
| 1646 } | 1658 } |
| 1647 } | 1659 } |
| 1648 | 1660 |
| 1649 injectedScript._commandLineAPIImpl = new CommandLineAPIImpl(); | 1661 injectedScript._commandLineAPIImpl = new CommandLineAPIImpl(); |
| 1650 return injectedScript; | 1662 return injectedScript; |
| 1651 }) | 1663 }) |
| OLD | NEW |