| OLD | NEW |
| 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 * @unrestricted | 5 * @unrestricted |
| 6 */ | 6 */ |
| 7 Components.CustomPreviewSection = class { | 7 ObjectUI.CustomPreviewSection = class { |
| 8 /** | 8 /** |
| 9 * @param {!SDK.RemoteObject} object | 9 * @param {!SDK.RemoteObject} object |
| 10 */ | 10 */ |
| 11 constructor(object) { | 11 constructor(object) { |
| 12 this._sectionElement = createElementWithClass('span', 'custom-expandable-sec
tion'); | 12 this._sectionElement = createElementWithClass('span', 'custom-expandable-sec
tion'); |
| 13 this._object = object; | 13 this._object = object; |
| 14 this._expanded = false; | 14 this._expanded = false; |
| 15 this._cachedContent = null; | 15 this._cachedContent = null; |
| 16 var customPreview = object.customPreview(); | 16 var customPreview = object.customPreview(); |
| 17 | 17 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 return array[0] === 'object' ? this._layoutObjectTag(array) : this._renderEl
ement(array); | 56 return array[0] === 'object' ? this._layoutObjectTag(array) : this._renderEl
ement(array); |
| 57 } | 57 } |
| 58 | 58 |
| 59 /** | 59 /** |
| 60 * | 60 * |
| 61 * @param {!Array.<*>} object | 61 * @param {!Array.<*>} object |
| 62 * @return {!Node} | 62 * @return {!Node} |
| 63 */ | 63 */ |
| 64 _renderElement(object) { | 64 _renderElement(object) { |
| 65 var tagName = object.shift(); | 65 var tagName = object.shift(); |
| 66 if (!Components.CustomPreviewSection._tagsWhiteList.has(tagName)) { | 66 if (!ObjectUI.CustomPreviewSection._tagsWhiteList.has(tagName)) { |
| 67 Common.console.error('Broken formatter: element ' + tagName + ' is not all
owed!'); | 67 Common.console.error('Broken formatter: element ' + tagName + ' is not all
owed!'); |
| 68 return createElement('span'); | 68 return createElement('span'); |
| 69 } | 69 } |
| 70 var element = createElement(/** @type {string} */ (tagName)); | 70 var element = createElement(/** @type {string} */ (tagName)); |
| 71 if ((typeof object[0] === 'object') && !Array.isArray(object[0])) { | 71 if ((typeof object[0] === 'object') && !Array.isArray(object[0])) { |
| 72 var attributes = object.shift(); | 72 var attributes = object.shift(); |
| 73 for (var key in attributes) { | 73 for (var key in attributes) { |
| 74 var value = attributes[key]; | 74 var value = attributes[key]; |
| 75 if ((key !== 'style') || (typeof value !== 'string')) | 75 if ((key !== 'style') || (typeof value !== 'string')) |
| 76 continue; | 76 continue; |
| 77 | 77 |
| 78 element.setAttribute(key, value); | 78 element.setAttribute(key, value); |
| 79 } | 79 } |
| 80 } | 80 } |
| 81 | 81 |
| 82 this._appendJsonMLTags(element, object); | 82 this._appendJsonMLTags(element, object); |
| 83 return element; | 83 return element; |
| 84 } | 84 } |
| 85 | 85 |
| 86 /** | 86 /** |
| 87 * @param {!Array.<*>} objectTag | 87 * @param {!Array.<*>} objectTag |
| 88 * @return {!Node} | 88 * @return {!Node} |
| 89 */ | 89 */ |
| 90 _layoutObjectTag(objectTag) { | 90 _layoutObjectTag(objectTag) { |
| 91 objectTag.shift(); | 91 objectTag.shift(); |
| 92 var attributes = objectTag.shift(); | 92 var attributes = objectTag.shift(); |
| 93 var remoteObject = this._object.target().runtimeModel.createRemoteObject( | 93 var remoteObject = this._object.target().runtimeModel.createRemoteObject( |
| 94 /** @type {!Protocol.Runtime.RemoteObject} */ (attributes)); | 94 /** @type {!Protocol.Runtime.RemoteObject} */ (attributes)); |
| 95 if (remoteObject.customPreview()) | 95 if (remoteObject.customPreview()) |
| 96 return (new Components.CustomPreviewSection(remoteObject)).element(); | 96 return (new ObjectUI.CustomPreviewSection(remoteObject)).element(); |
| 97 | 97 |
| 98 var sectionElement = Components.ObjectPropertiesSection.defaultObjectPresent
ation(remoteObject); | 98 var sectionElement = ObjectUI.ObjectPropertiesSection.defaultObjectPresentat
ion(remoteObject); |
| 99 sectionElement.classList.toggle('custom-expandable-section-standard-section'
, remoteObject.hasChildren); | 99 sectionElement.classList.toggle('custom-expandable-section-standard-section'
, remoteObject.hasChildren); |
| 100 return sectionElement; | 100 return sectionElement; |
| 101 } | 101 } |
| 102 | 102 |
| 103 /** | 103 /** |
| 104 * @param {!Node} parentElement | 104 * @param {!Node} parentElement |
| 105 * @param {!Array.<*>} jsonMLTags | 105 * @param {!Array.<*>} jsonMLTags |
| 106 */ | 106 */ |
| 107 _appendJsonMLTags(parentElement, jsonMLTags) { | 107 _appendJsonMLTags(parentElement, jsonMLTags) { |
| 108 for (var i = 0; i < jsonMLTags.length; ++i) | 108 for (var i = 0; i < jsonMLTags.length; ++i) |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 } | 179 } |
| 180 | 180 |
| 181 var customPreview = this._object.customPreview(); | 181 var customPreview = this._object.customPreview(); |
| 182 var args = [{objectId: customPreview.bindRemoteObjectFunctionId}, {objectId:
customPreview.formatterObjectId}]; | 182 var args = [{objectId: customPreview.bindRemoteObjectFunctionId}, {objectId:
customPreview.formatterObjectId}]; |
| 183 if (customPreview.configObjectId) | 183 if (customPreview.configObjectId) |
| 184 args.push({objectId: customPreview.configObjectId}); | 184 args.push({objectId: customPreview.configObjectId}); |
| 185 this._object.callFunctionJSON(load, args, onBodyLoaded.bind(this)); | 185 this._object.callFunctionJSON(load, args, onBodyLoaded.bind(this)); |
| 186 | 186 |
| 187 /** | 187 /** |
| 188 * @param {*} bodyJsonML | 188 * @param {*} bodyJsonML |
| 189 * @this {Components.CustomPreviewSection} | 189 * @this {ObjectUI.CustomPreviewSection} |
| 190 */ | 190 */ |
| 191 function onBodyLoaded(bodyJsonML) { | 191 function onBodyLoaded(bodyJsonML) { |
| 192 if (!bodyJsonML) | 192 if (!bodyJsonML) |
| 193 return; | 193 return; |
| 194 | 194 |
| 195 this._cachedContent = this._renderJSONMLTag(bodyJsonML); | 195 this._cachedContent = this._renderJSONMLTag(bodyJsonML); |
| 196 this._sectionElement.appendChild(this._cachedContent); | 196 this._sectionElement.appendChild(this._cachedContent); |
| 197 this._toggleExpand(); | 197 this._toggleExpand(); |
| 198 } | 198 } |
| 199 } | 199 } |
| 200 }; | 200 }; |
| 201 | 201 |
| 202 /** | 202 /** |
| 203 * @unrestricted | 203 * @unrestricted |
| 204 */ | 204 */ |
| 205 Components.CustomPreviewComponent = class { | 205 ObjectUI.CustomPreviewComponent = class { |
| 206 /** | 206 /** |
| 207 * @param {!SDK.RemoteObject} object | 207 * @param {!SDK.RemoteObject} object |
| 208 */ | 208 */ |
| 209 constructor(object) { | 209 constructor(object) { |
| 210 this._object = object; | 210 this._object = object; |
| 211 this._customPreviewSection = new Components.CustomPreviewSection(object); | 211 this._customPreviewSection = new ObjectUI.CustomPreviewSection(object); |
| 212 this.element = createElementWithClass('span', 'source-code'); | 212 this.element = createElementWithClass('span', 'source-code'); |
| 213 var shadowRoot = UI.createShadowRootWithCoreStyles(this.element, 'components
/customPreviewComponent.css'); | 213 var shadowRoot = UI.createShadowRootWithCoreStyles(this.element, 'object_ui/
customPreviewComponent.css'); |
| 214 this.element.addEventListener('contextmenu', this._contextMenuEventFired.bin
d(this), false); | 214 this.element.addEventListener('contextmenu', this._contextMenuEventFired.bin
d(this), false); |
| 215 shadowRoot.appendChild(this._customPreviewSection.element()); | 215 shadowRoot.appendChild(this._customPreviewSection.element()); |
| 216 } | 216 } |
| 217 | 217 |
| 218 expandIfPossible() { | 218 expandIfPossible() { |
| 219 if (this._object.customPreview().hasBody && this._customPreviewSection) | 219 if (this._object.customPreview().hasBody && this._customPreviewSection) |
| 220 this._customPreviewSection._loadBody(); | 220 this._customPreviewSection._loadBody(); |
| 221 } | 221 } |
| 222 | 222 |
| 223 /** | 223 /** |
| 224 * @param {!Event} event | 224 * @param {!Event} event |
| 225 */ | 225 */ |
| 226 _contextMenuEventFired(event) { | 226 _contextMenuEventFired(event) { |
| 227 var contextMenu = new UI.ContextMenu(event); | 227 var contextMenu = new UI.ContextMenu(event); |
| 228 if (this._customPreviewSection) | 228 if (this._customPreviewSection) |
| 229 contextMenu.appendItem(Common.UIString.capitalize('Show as Javascript ^obj
ect'), this._disassemble.bind(this)); | 229 contextMenu.appendItem(Common.UIString.capitalize('Show as Javascript ^obj
ect'), this._disassemble.bind(this)); |
| 230 contextMenu.appendApplicableItems(this._object); | 230 contextMenu.appendApplicableItems(this._object); |
| 231 contextMenu.show(); | 231 contextMenu.show(); |
| 232 } | 232 } |
| 233 | 233 |
| 234 _disassemble() { | 234 _disassemble() { |
| 235 this.element.shadowRoot.textContent = ''; | 235 this.element.shadowRoot.textContent = ''; |
| 236 this._customPreviewSection = null; | 236 this._customPreviewSection = null; |
| 237 this.element.shadowRoot.appendChild(Components.ObjectPropertiesSection.defau
ltObjectPresentation(this._object)); | 237 this.element.shadowRoot.appendChild(ObjectUI.ObjectPropertiesSection.default
ObjectPresentation(this._object)); |
| 238 } | 238 } |
| 239 }; | 239 }; |
| 240 | 240 |
| 241 Components.CustomPreviewSection._tagsWhiteList = new Set(['span', 'div', 'ol', '
li', 'table', 'tr', 'td']); | 241 ObjectUI.CustomPreviewSection._tagsWhiteList = new Set(['span', 'div', 'ol', 'li
', 'table', 'tr', 'td']); |
| OLD | NEW |