Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: Source/WebCore/inspector/InjectedScriptSource.js

Issue 11434008: Merge 135720 - Web Inspector: object preview does not render node id, className; logs too many func… (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1312/
Patch Set: Created 8 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2007 Apple Inc. All rights reserved. 2 * Copyright (C) 2007 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 694 matching lines...) Expand 10 before | Expand all | Expand 10 after
705 if (subtype === "regexp") 705 if (subtype === "regexp")
706 return this._toString(obj); 706 return this._toString(obj);
707 707
708 if (subtype === "date") 708 if (subtype === "date")
709 return this._toString(obj); 709 return this._toString(obj);
710 710
711 if (subtype === "node") { 711 if (subtype === "node") {
712 var description = obj.nodeName.toLowerCase(); 712 var description = obj.nodeName.toLowerCase();
713 switch (obj.nodeType) { 713 switch (obj.nodeType) {
714 case 1 /* Node.ELEMENT_NODE */: 714 case 1 /* Node.ELEMENT_NODE */:
715 description = "<" + description + ">"; 715 description += obj.id ? "#" + obj.id : "";
716 var className = obj.className;
717 description += className ? "." + className : "";
716 break; 718 break;
717 case 10 /*Node.DOCUMENT_TYPE_NODE */: 719 case 10 /*Node.DOCUMENT_TYPE_NODE */:
718 description = "<!DOCTYPE " + description + ">"; 720 description = "<!DOCTYPE " + description + ">";
719 break; 721 break;
720 } 722 }
721 return description; 723 return description;
722 } 724 }
723 725
724 var className = InjectedScriptHost.internalConstructorName(obj); 726 var className = InjectedScriptHost.internalConstructorName(obj);
725 if (subtype === "array") { 727 if (subtype === "array") {
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
802 * @param {Object} object 804 * @param {Object} object
803 */ 805 */
804 _generatePreview: function(object) 806 _generatePreview: function(object)
805 { 807 {
806 this.preview = {}; 808 this.preview = {};
807 this.preview.lossless = true; 809 this.preview.lossless = true;
808 this.preview.overflow = false; 810 this.preview.overflow = false;
809 this.preview.properties = []; 811 this.preview.properties = [];
810 812
811 var isArray = this.subtype === "array"; 813 var isArray = this.subtype === "array";
812 var elementsToDump = isArray ? 100 : 5; 814 var propertiesThreshold = {
815 properties: 5,
816 indexes: 100
817 };
813 818
814 for (var o = object; injectedScript._isDefined(o); o = o.__proto__) 819 for (var o = object; injectedScript._isDefined(o); o = o.__proto__)
815 this._generateProtoPreview(o, elementsToDump); 820 this._generateProtoPreview(o, propertiesThreshold);
816 }, 821 },
817 822
818 /** 823 /**
819 * @param {Object} object 824 * @param {Object} object
820 * @param {number} elementsToDump 825 * @param {Object} propertiesThreshold
821 */ 826 */
822 _generateProtoPreview: function(object, elementsToDump) 827 _generateProtoPreview: function(object, propertiesThreshold)
823 { 828 {
824 var propertyNames = Object.keys(/** @type {!Object} */(object)); 829 var propertyNames = Object.keys(/** @type {!Object} */(object));
825 try { 830 try {
826 for (var i = 0; i < propertyNames.length; ++i) { 831 for (var i = 0; i < propertyNames.length; ++i) {
827 if (this.preview.properties.length >= elementsToDump) { 832 if (!propertiesThreshold.properties || !propertiesThreshold.inde xes) {
828 this.preview.overflow = true; 833 this.preview.overflow = true;
829 this.preview.lossless = false; 834 this.preview.lossless = false;
830 break; 835 break;
831 } 836 }
832 var name = propertyNames[i]; 837 var name = propertyNames[i];
833 if (this.subtype === "array" && name === "length") 838 if (this.subtype === "array" && name === "length")
834 continue; 839 continue;
835 840
836 var descriptor = Object.getOwnPropertyDescriptor(/** @type {!Obj ect} */(object), name); 841 var descriptor = Object.getOwnPropertyDescriptor(/** @type {!Obj ect} */(object), name);
837 if (!("value" in descriptor) || !descriptor.enumerable) { 842 if (!("value" in descriptor) || !descriptor.enumerable) {
838 this.preview.lossless = false; 843 this.preview.lossless = false;
839 continue; 844 continue;
840 } 845 }
841 846
842 var value = descriptor.value; 847 var value = descriptor.value;
843 if (value === null) { 848 if (value === null) {
844 this.preview.properties.push({ name: name, type: "object", v alue: "null" }); 849 this._appendPropertyPreview({ name: name, type: "object", va lue: "null" }, propertiesThreshold);
845 continue; 850 continue;
846 } 851 }
847 852
848 const maxLength = 100; 853 const maxLength = 100;
849 var type = typeof value; 854 var type = typeof value;
850 855
851 if (InjectedScript.primitiveTypes[type]) { 856 if (InjectedScript.primitiveTypes[type]) {
852 if (type === "string") { 857 if (type === "string") {
853 if (value.length > maxLength) { 858 if (value.length > maxLength) {
854 value = this._abbreviateString(value, maxLength, tru e); 859 value = this._abbreviateString(value, maxLength, tru e);
855 this.preview.lossless = false; 860 this.preview.lossless = false;
856 } 861 }
857 value = "\"" + value.replace(/\n/g, "\u21B5") + "\""; 862 value = "\"" + value.replace(/\n/g, "\u21B5") + "\"";
858 } 863 }
859 this.preview.properties.push({ name: name, type: type, value : value + "" }); 864 this._appendPropertyPreview({ name: name, type: type, value: value + "" }, propertiesThreshold);
860 continue; 865 continue;
861 } 866 }
862 867
863 this.preview.lossless = false; 868 this.preview.lossless = false;
864 869
865 var subtype = injectedScript._subtype(value); 870 var subtype = injectedScript._subtype(value);
866 var description = ""; 871 var description = "";
867 if (type !== "function") 872 if (type !== "function")
868 description = this._abbreviateString(/** @type {string} */ ( injectedScript._describe(value)), maxLength, subtype === "regexp"); 873 description = this._abbreviateString(/** @type {string} */ ( injectedScript._describe(value)), maxLength, subtype === "regexp");
869 874
870 var property = { name: name, type: type, value: description }; 875 var property = { name: name, type: type, value: description };
871 if (subtype) 876 if (subtype)
872 property.subtype = subtype; 877 property.subtype = subtype;
873 this.preview.properties.push(property); 878 this._appendPropertyPreview(property, propertiesThreshold);
874 } 879 }
875 } catch (e) { 880 } catch (e) {
876 } 881 }
877 }, 882 },
878 883
879 /** 884 /**
885 * @param {Object} property
886 * @param {Object} propertiesThreshold
887 */
888 _appendPropertyPreview: function(property, propertiesThreshold)
889 {
890 if (isNaN(property.name))
891 propertiesThreshold.properties--;
892 else
893 propertiesThreshold.indexes--;
894 this.preview.properties.push(property);
895 },
896
897 /**
880 * @param {string} string 898 * @param {string} string
881 * @param {number} maxLength 899 * @param {number} maxLength
882 * @param {boolean=} middle 900 * @param {boolean=} middle
883 * @returns 901 * @returns
884 */ 902 */
885 _abbreviateString: function(string, maxLength, middle) 903 _abbreviateString: function(string, maxLength, middle)
886 { 904 {
887 if (string.length <= maxLength) 905 if (string.length <= maxLength)
888 return string; 906 return string;
889 if (middle) { 907 if (middle) {
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after
1207 */ 1225 */
1208 _logEvent: function(event) 1226 _logEvent: function(event)
1209 { 1227 {
1210 console.log(event.type, event); 1228 console.log(event.type, event);
1211 } 1229 }
1212 } 1230 }
1213 1231
1214 injectedScript._commandLineAPIImpl = new CommandLineAPIImpl(); 1232 injectedScript._commandLineAPIImpl = new CommandLineAPIImpl();
1215 return injectedScript; 1233 return injectedScript;
1216 }) 1234 })
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698