Chromium Code Reviews

Side by Side Diff: Source/devtools/front_end/components/CustomPreviewSection.js

Issue 1072523002: Devtools: allow multiple custom formatters (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Test added Created 5 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | | Annotate | Revision Log
« no previous file with comments | « Source/core/inspector/InjectedScriptSource.js ('k') | Source/devtools/protocol.json » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @constructor 6 * @constructor
7 * @param {!WebInspector.RemoteObject} object 7 * @param {!WebInspector.RemoteObject} object
8 * @param {!Array.<*>=} prefixML 8 * @param {!Array.<*>=} prefixML
9 */ 9 */
10 WebInspector.CustomPreviewSection = function(object, prefixML) 10 WebInspector.CustomPreviewSection = function(object, prefixML)
(...skipping 184 matching lines...)
195 else 195 else
196 parent.removeChild(this._cachedContent); 196 parent.removeChild(this._cachedContent);
197 }, 197 },
198 198
199 _loadBody: function() 199 _loadBody: function()
200 { 200 {
201 /** 201 /**
202 * @suppressReceiverCheck 202 * @suppressReceiverCheck
203 * @suppressGlobalPropertiesCheck 203 * @suppressGlobalPropertiesCheck
204 * @suppress {undefinedVars} 204 * @suppress {undefinedVars}
205 * @this {?} 205 * @this {Object}
206 * @param {*=} formatter
206 */ 207 */
207 function load() 208 function load(formatter)
208 { 209 {
209 /** 210 /**
210 * @param {*} jsonMLObject 211 * @param {*} jsonMLObject
211 * @throws {string} error message 212 * @throws {string} error message
212 */ 213 */
213 function substituteObjectTagsInCustomPreview(jsonMLObject) 214 function substituteObjectTagsInCustomPreview(jsonMLObject)
214 { 215 {
215 if (!jsonMLObject || (typeof jsonMLObject !== "object") || (type of jsonMLObject.splice !== "function")) 216 if (!jsonMLObject || (typeof jsonMLObject !== "object") || (type of jsonMLObject.splice !== "function"))
216 return; 217 return;
217 218
218 var obj = jsonMLObject.length; 219 var obj = jsonMLObject.length;
219 if (!(typeof obj === "number" && obj >>> 0 === obj && (obj > 0 | | 1 / obj > 0))) 220 if (!(typeof obj === "number" && obj >>> 0 === obj && (obj > 0 | | 1 / obj > 0)))
220 return; 221 return;
221 222
222 var startIndex = 1; 223 var startIndex = 1;
223 if (jsonMLObject[0] === "object") { 224 if (jsonMLObject[0] === "object") {
224 var attributes = jsonMLObject[1]; 225 var attributes = jsonMLObject[1];
225 var originObject = attributes["object"]; 226 var originObject = attributes["object"];
226 if (typeof originObject === "undefined") 227 if (typeof originObject === "undefined")
227 throw "Illegal format: obligatory attribute \"object\" i sn't specified"; 228 throw "Illegal format: obligatory attribute \"object\" i sn't specified";
228 229
229 jsonMLObject[1] = bindRemoteObject(originObject, false, fals e, null, false); 230 jsonMLObject[1] = bindRemoteObject(originObject, false, fals e, null, false);
230 startIndex = 2; 231 startIndex = 2;
231 } 232 }
232
233 for (var i = startIndex; i < jsonMLObject.length; ++i) 233 for (var i = startIndex; i < jsonMLObject.length; ++i)
234 substituteObjectTagsInCustomPreview(jsonMLObject[i]); 234 substituteObjectTagsInCustomPreview(jsonMLObject[i]);
235 } 235 }
236 236
237 try { 237 try {
238 var formatter = window["devtoolsFormatter"];
239 if (!formatter)
240 return null;
241
242 var body = formatter.body(this); 238 var body = formatter.body(this);
243 substituteObjectTagsInCustomPreview(body); 239 substituteObjectTagsInCustomPreview(body);
244 return body; 240 return body;
245 } catch (e) { 241 } catch (e) {
246 console.error("Custom Formatter Failed: " + e); 242 console.error("Custom Formatter Failed: " + e);
247 return null; 243 return null;
248 } 244 }
249 } 245 }
250 246
251 this._object.callFunctionJSON(load, [], onBodyLoaded.bind(this)); 247 var customPreview = this._object.customPreview();
248 this._object.callFunctionJSON(load, [{objectId: customPreview.formatterO bjectId}], onBodyLoaded.bind(this));
252 249
253 /** 250 /**
254 * @param {*} bodyJsonML 251 * @param {*} bodyJsonML
255 * @this {WebInspector.CustomPreviewSection} 252 * @this {WebInspector.CustomPreviewSection}
256 */ 253 */
257 function onBodyLoaded(bodyJsonML) 254 function onBodyLoaded(bodyJsonML)
258 { 255 {
259 if (!bodyJsonML) 256 if (!bodyJsonML)
260 return; 257 return;
261 258
262 this._cachedContent = this._renderJSONMLTag(bodyJsonML); 259 this._cachedContent = this._renderJSONMLTag(bodyJsonML);
263 this._toggleExpand(); 260 this._toggleExpand();
264 } 261 }
265 } 262 }
266 } 263 }
OLDNEW
« no previous file with comments | « Source/core/inspector/InjectedScriptSource.js ('k') | Source/devtools/protocol.json » ('j') | no next file with comments »

Powered by Google App Engine