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

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

Issue 197073004: DevTools: Fix wrong is-array-like detection when logging in console. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebased Created 6 years, 9 months 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 | Annotate | Revision Log
« no previous file with comments | « LayoutTests/inspector/console/console-format-expected.txt ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 * @template T 104 * @template T
105 */ 105 */
106 function nullifyObjectProto(obj) 106 function nullifyObjectProto(obj)
107 { 107 {
108 if (obj && typeof obj === "object") 108 if (obj && typeof obj === "object")
109 obj.__proto__ = null; 109 obj.__proto__ = null;
110 return obj; 110 return obj;
111 } 111 }
112 112
113 /** 113 /**
114 * FireBug's array detection.
115 * @param {*} obj
116 * @return {boolean}
117 */
118 function isArrayLike(obj)
119 {
120 try {
121 if (typeof obj !== "object")
122 return false;
123 if (typeof obj.splice === "function")
124 return isFinite(obj.length);
125 var str = Object.prototype.toString.call(obj);
126 if (str === "[object Array]" ||
127 str === "[object Arguments]" ||
128 str === "[object HTMLCollection]" ||
129 str === "[object NodeList]" ||
130 str === "[object DOMTokenList]")
131 return isFinite(obj.length);
132 } catch (e) {
133 }
134 return false;
135 }
136
137 /**
114 * @constructor 138 * @constructor
115 */ 139 */
116 var InjectedScript = function() 140 var InjectedScript = function()
117 { 141 {
118 /** @type {number} */ 142 /** @type {number} */
119 this._lastBoundObjectId = 1; 143 this._lastBoundObjectId = 1;
120 /** @type {!Object.<number, Object>} */ 144 /** @type {!Object.<number, Object>} */
121 this._idToWrappedObject = { __proto__: null }; 145 this._idToWrappedObject = { __proto__: null };
122 /** @type {!Object.<number, string>} */ 146 /** @type {!Object.<number, string>} */
123 this._idToObjectGroupName = { __proto__: null }; 147 this._idToObjectGroupName = { __proto__: null };
(...skipping 762 matching lines...) Expand 10 before | Expand all | Expand 10 after
886 if (this.isPrimitiveValue(obj)) 910 if (this.isPrimitiveValue(obj))
887 return null; 911 return null;
888 912
889 if (this._isHTMLAllCollection(obj)) 913 if (this._isHTMLAllCollection(obj))
890 return "array"; 914 return "array";
891 915
892 var preciseType = InjectedScriptHost.type(obj); 916 var preciseType = InjectedScriptHost.type(obj);
893 if (preciseType) 917 if (preciseType)
894 return preciseType; 918 return preciseType;
895 919
896 // FireBug's array detection. 920 if (isArrayLike(obj))
897 try { 921 return "array";
898 if (typeof obj.splice === "function" && isFinite(obj.length))
899 return "array";
900 if (Object.prototype.toString.call(obj) === "[object Arguments]" && isFinite(obj.length)) // arguments.
901 return "array";
902 } catch (e) {
903 }
904 922
905 // If owning frame has navigated to somewhere else window properties wil l be undefined. 923 // If owning frame has navigated to somewhere else window properties wil l be undefined.
906 return null; 924 return null;
907 }, 925 },
908 926
909 /** 927 /**
910 * @param {*} obj 928 * @param {*} obj
911 * @return {string?} 929 * @return {string?}
912 */ 930 */
913 _describe: function(obj) 931 _describe: function(obj)
(...skipping 640 matching lines...) Expand 10 before | Expand all | Expand 10 after
1554 */ 1572 */
1555 _logEvent: function(event) 1573 _logEvent: function(event)
1556 { 1574 {
1557 inspectedWindow.console.log(event.type, event); 1575 inspectedWindow.console.log(event.type, event);
1558 } 1576 }
1559 } 1577 }
1560 1578
1561 injectedScript._commandLineAPIImpl = new CommandLineAPIImpl(); 1579 injectedScript._commandLineAPIImpl = new CommandLineAPIImpl();
1562 return injectedScript; 1580 return injectedScript;
1563 }) 1581 })
OLDNEW
« no previous file with comments | « LayoutTests/inspector/console/console-format-expected.txt ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698