| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. | 2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. |
| 3 * Copyright (C) 2011 Google Inc. All Rights Reserved. | 3 * Copyright (C) 2011 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 * 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 11 matching lines...) Expand all Loading... |
| 22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 25 */ | 25 */ |
| 26 | 26 |
| 27 /** | 27 /** |
| 28 * @constructor | 28 * @constructor |
| 29 * @extends {WebInspector.Object} | 29 * @extends {WebInspector.Object} |
| 30 * @param {boolean=} isWebComponent | 30 * @param {boolean=} isWebComponent |
| 31 */ | 31 */ |
| 32 WebInspector.View = function(isWebComponent) | 32 WebInspector.Widget = function(isWebComponent) |
| 33 { | 33 { |
| 34 this.contentElement = createElementWithClass("div", "view"); | 34 this.contentElement = createElementWithClass("div", "widget"); |
| 35 if (isWebComponent) { | 35 if (isWebComponent) { |
| 36 WebInspector.installComponentRootStyles(this.contentElement); | 36 WebInspector.installComponentRootStyles(this.contentElement); |
| 37 this.element = createElementWithClass("div", "vbox flex-auto"); | 37 this.element = createElementWithClass("div", "vbox flex-auto"); |
| 38 this._shadowRoot = this.element.createShadowRoot(); | 38 this._shadowRoot = this.element.createShadowRoot(); |
| 39 this._shadowRoot.appendChild(this.contentElement); | 39 this._shadowRoot.appendChild(this.contentElement); |
| 40 } else { | 40 } else { |
| 41 this.element = this.contentElement; | 41 this.element = this.contentElement; |
| 42 } | 42 } |
| 43 this._isWebComponent = isWebComponent; | 43 this._isWebComponent = isWebComponent; |
| 44 this.element.__view = this; | 44 this.element.__widget = this; |
| 45 this._visible = true; | 45 this._visible = true; |
| 46 this._isRoot = false; | 46 this._isRoot = false; |
| 47 this._isShowing = false; | 47 this._isShowing = false; |
| 48 this._children = []; | 48 this._children = []; |
| 49 this._hideOnDetach = false; | 49 this._hideOnDetach = false; |
| 50 this._notificationDepth = 0; | 50 this._notificationDepth = 0; |
| 51 } | 51 } |
| 52 | 52 |
| 53 /** | 53 /** |
| 54 * @param {string} cssFile | 54 * @param {string} cssFile |
| 55 * @return {!Element} | 55 * @return {!Element} |
| 56 */ | 56 */ |
| 57 WebInspector.View.createStyleElement = function(cssFile) | 57 WebInspector.Widget.createStyleElement = function(cssFile) |
| 58 { | 58 { |
| 59 var content = Runtime.cachedResources[cssFile] || ""; | 59 var content = Runtime.cachedResources[cssFile] || ""; |
| 60 if (!content) | 60 if (!content) |
| 61 console.error(cssFile + " not preloaded. Check module.json"); | 61 console.error(cssFile + " not preloaded. Check module.json"); |
| 62 var styleElement = createElement("style"); | 62 var styleElement = createElement("style"); |
| 63 styleElement.type = "text/css"; | 63 styleElement.type = "text/css"; |
| 64 styleElement.textContent = content; | 64 styleElement.textContent = content; |
| 65 return styleElement; | 65 return styleElement; |
| 66 } | 66 } |
| 67 | 67 |
| 68 WebInspector.View.prototype = { | 68 WebInspector.Widget.prototype = { |
| 69 markAsRoot: function() | 69 markAsRoot: function() |
| 70 { | 70 { |
| 71 WebInspector.installComponentRootStyles(this.element); | 71 WebInspector.installComponentRootStyles(this.element); |
| 72 WebInspector.View.__assert(!this.element.parentElement, "Attempt to mark
as root attached node"); | 72 WebInspector.Widget.__assert(!this.element.parentElement, "Attempt to ma
rk as root attached node"); |
| 73 this._isRoot = true; | 73 this._isRoot = true; |
| 74 }, | 74 }, |
| 75 | 75 |
| 76 /** | 76 /** |
| 77 * @return {?WebInspector.View} | 77 * @return {?WebInspector.Widget} |
| 78 */ | 78 */ |
| 79 parentView: function() | 79 parentWidget: function() |
| 80 { | 80 { |
| 81 return this._parentView; | 81 return this._parentWidget; |
| 82 }, | 82 }, |
| 83 | 83 |
| 84 /** | 84 /** |
| 85 * @return {!Array.<!WebInspector.View>} | 85 * @return {!Array.<!WebInspector.Widget>} |
| 86 */ | 86 */ |
| 87 children: function() | 87 children: function() |
| 88 { | 88 { |
| 89 return this._children; | 89 return this._children; |
| 90 }, | 90 }, |
| 91 | 91 |
| 92 /** | 92 /** |
| 93 * @param {!WebInspector.View} view | 93 * @param {!WebInspector.Widget} widget |
| 94 * @protected | 94 * @protected |
| 95 */ | 95 */ |
| 96 childWasDetached: function(view) | 96 childWasDetached: function(widget) |
| 97 { | 97 { |
| 98 }, | 98 }, |
| 99 | 99 |
| 100 /** | 100 /** |
| 101 * @return {boolean} | 101 * @return {boolean} |
| 102 */ | 102 */ |
| 103 isShowing: function() | 103 isShowing: function() |
| 104 { | 104 { |
| 105 return this._isShowing; | 105 return this._isShowing; |
| 106 }, | 106 }, |
| (...skipping 15 matching lines...) Expand all Loading... |
| 122 setHideOnDetach: function() | 122 setHideOnDetach: function() |
| 123 { | 123 { |
| 124 this._hideOnDetach = true; | 124 this._hideOnDetach = true; |
| 125 }, | 125 }, |
| 126 | 126 |
| 127 /** | 127 /** |
| 128 * @return {boolean} | 128 * @return {boolean} |
| 129 */ | 129 */ |
| 130 _inNotification: function() | 130 _inNotification: function() |
| 131 { | 131 { |
| 132 return !!this._notificationDepth || (this._parentView && this._parentVie
w._inNotification()); | 132 return !!this._notificationDepth || (this._parentWidget && this._parentW
idget._inNotification()); |
| 133 }, | 133 }, |
| 134 | 134 |
| 135 _parentIsShowing: function() | 135 _parentIsShowing: function() |
| 136 { | 136 { |
| 137 if (this._isRoot) | 137 if (this._isRoot) |
| 138 return true; | 138 return true; |
| 139 return this._parentView && this._parentView.isShowing(); | 139 return this._parentWidget && this._parentWidget.isShowing(); |
| 140 }, | 140 }, |
| 141 | 141 |
| 142 /** | 142 /** |
| 143 * @param {function(this:WebInspector.View)} method | 143 * @param {function(this:WebInspector.Widget)} method |
| 144 */ | 144 */ |
| 145 _callOnVisibleChildren: function(method) | 145 _callOnVisibleChildren: function(method) |
| 146 { | 146 { |
| 147 var copy = this._children.slice(); | 147 var copy = this._children.slice(); |
| 148 for (var i = 0; i < copy.length; ++i) { | 148 for (var i = 0; i < copy.length; ++i) { |
| 149 if (copy[i]._parentView === this && copy[i]._visible) | 149 if (copy[i]._parentWidget === this && copy[i]._visible) |
| 150 method.call(copy[i]); | 150 method.call(copy[i]); |
| 151 } | 151 } |
| 152 }, | 152 }, |
| 153 | 153 |
| 154 _processWillShow: function() | 154 _processWillShow: function() |
| 155 { | 155 { |
| 156 this._callOnVisibleChildren(this._processWillShow); | 156 this._callOnVisibleChildren(this._processWillShow); |
| 157 this._isShowing = true; | 157 this._isShowing = true; |
| 158 }, | 158 }, |
| 159 | 159 |
| (...skipping 26 matching lines...) Expand all Loading... |
| 186 { | 186 { |
| 187 if (this._inNotification()) | 187 if (this._inNotification()) |
| 188 return; | 188 return; |
| 189 if (!this.isShowing()) | 189 if (!this.isShowing()) |
| 190 return; | 190 return; |
| 191 this._notify(this.onResize); | 191 this._notify(this.onResize); |
| 192 this._callOnVisibleChildren(this._processOnResize); | 192 this._callOnVisibleChildren(this._processOnResize); |
| 193 }, | 193 }, |
| 194 | 194 |
| 195 /** | 195 /** |
| 196 * @param {function(this:WebInspector.View)} notification | 196 * @param {function(this:WebInspector.Widget)} notification |
| 197 */ | 197 */ |
| 198 _notify: function(notification) | 198 _notify: function(notification) |
| 199 { | 199 { |
| 200 ++this._notificationDepth; | 200 ++this._notificationDepth; |
| 201 try { | 201 try { |
| 202 notification.call(this); | 202 notification.call(this); |
| 203 } finally { | 203 } finally { |
| 204 --this._notificationDepth; | 204 --this._notificationDepth; |
| 205 } | 205 } |
| 206 }, | 206 }, |
| (...skipping 13 matching lines...) Expand all Loading... |
| 220 onLayout: function() | 220 onLayout: function() |
| 221 { | 221 { |
| 222 }, | 222 }, |
| 223 | 223 |
| 224 /** | 224 /** |
| 225 * @param {?Element} parentElement | 225 * @param {?Element} parentElement |
| 226 * @param {?Element=} insertBefore | 226 * @param {?Element=} insertBefore |
| 227 */ | 227 */ |
| 228 show: function(parentElement, insertBefore) | 228 show: function(parentElement, insertBefore) |
| 229 { | 229 { |
| 230 WebInspector.View.__assert(parentElement, "Attempt to attach view with n
o parent element"); | 230 WebInspector.Widget.__assert(parentElement, "Attempt to attach widget wi
th no parent element"); |
| 231 | 231 |
| 232 // Update view hierarchy | 232 // Update widget hierarchy. |
| 233 if (this.element.parentElement !== parentElement) { | 233 if (this.element.parentElement !== parentElement) { |
| 234 if (this.element.parentElement) | 234 if (this.element.parentElement) |
| 235 this.detach(); | 235 this.detach(); |
| 236 | 236 |
| 237 var currentParent = parentElement; | 237 var currentParent = parentElement; |
| 238 while (currentParent && !currentParent.__view) | 238 while (currentParent && !currentParent.__widget) |
| 239 currentParent = currentParent.parentElementOrShadowHost(); | 239 currentParent = currentParent.parentElementOrShadowHost(); |
| 240 | 240 |
| 241 if (currentParent) { | 241 if (currentParent) { |
| 242 this._parentView = currentParent.__view; | 242 this._parentWidget = currentParent.__widget; |
| 243 this._parentView._children.push(this); | 243 this._parentWidget._children.push(this); |
| 244 this._isRoot = false; | 244 this._isRoot = false; |
| 245 } else | 245 } else |
| 246 WebInspector.View.__assert(this._isRoot, "Attempt to attach view
to orphan node"); | 246 WebInspector.Widget.__assert(this._isRoot, "Attempt to attach wi
dget to orphan node"); |
| 247 } else if (this._visible) { | 247 } else if (this._visible) { |
| 248 return; | 248 return; |
| 249 } | 249 } |
| 250 | 250 |
| 251 this._visible = true; | 251 this._visible = true; |
| 252 | 252 |
| 253 if (this._parentIsShowing()) | 253 if (this._parentIsShowing()) |
| 254 this._processWillShow(); | 254 this._processWillShow(); |
| 255 | 255 |
| 256 this.element.classList.add("visible"); | 256 this.element.classList.add("visible"); |
| 257 | 257 |
| 258 // Reparent | 258 // Reparent |
| 259 if (this.element.parentElement !== parentElement) { | 259 if (this.element.parentElement !== parentElement) { |
| 260 WebInspector.View._incrementViewCounter(parentElement, this.element)
; | 260 WebInspector.Widget._incrementWidgetCounter(parentElement, this.elem
ent); |
| 261 if (insertBefore) | 261 if (insertBefore) |
| 262 WebInspector.View._originalInsertBefore.call(parentElement, this
.element, insertBefore); | 262 WebInspector.Widget._originalInsertBefore.call(parentElement, th
is.element, insertBefore); |
| 263 else | 263 else |
| 264 WebInspector.View._originalAppendChild.call(parentElement, this.
element); | 264 WebInspector.Widget._originalAppendChild.call(parentElement, thi
s.element); |
| 265 } | 265 } |
| 266 | 266 |
| 267 if (this._parentIsShowing()) | 267 if (this._parentIsShowing()) |
| 268 this._processWasShown(); | 268 this._processWasShown(); |
| 269 | 269 |
| 270 if (this._parentView && this._hasNonZeroConstraints()) | 270 if (this._parentWidget && this._hasNonZeroConstraints()) |
| 271 this._parentView.invalidateConstraints(); | 271 this._parentWidget.invalidateConstraints(); |
| 272 else | 272 else |
| 273 this._processOnResize(); | 273 this._processOnResize(); |
| 274 }, | 274 }, |
| 275 | 275 |
| 276 /** | 276 /** |
| 277 * @param {boolean=} overrideHideOnDetach | 277 * @param {boolean=} overrideHideOnDetach |
| 278 */ | 278 */ |
| 279 detach: function(overrideHideOnDetach) | 279 detach: function(overrideHideOnDetach) |
| 280 { | 280 { |
| 281 var parentElement = this.element.parentElement; | 281 var parentElement = this.element.parentElement; |
| 282 if (!parentElement) | 282 if (!parentElement) |
| 283 return; | 283 return; |
| 284 | 284 |
| 285 if (this._parentIsShowing()) | 285 if (this._parentIsShowing()) |
| 286 this._processWillHide(); | 286 this._processWillHide(); |
| 287 | 287 |
| 288 if (!overrideHideOnDetach && this._shouldHideOnDetach()) { | 288 if (!overrideHideOnDetach && this._shouldHideOnDetach()) { |
| 289 this.element.classList.remove("visible"); | 289 this.element.classList.remove("visible"); |
| 290 this._visible = false; | 290 this._visible = false; |
| 291 if (this._parentIsShowing()) | 291 if (this._parentIsShowing()) |
| 292 this._processWasHidden(); | 292 this._processWasHidden(); |
| 293 if (this._parentView && this._hasNonZeroConstraints()) | 293 if (this._parentWidget && this._hasNonZeroConstraints()) |
| 294 this._parentView.invalidateConstraints(); | 294 this._parentWidget.invalidateConstraints(); |
| 295 return; | 295 return; |
| 296 } | 296 } |
| 297 | 297 |
| 298 // Force legal removal | 298 // Force legal removal |
| 299 WebInspector.View._decrementViewCounter(parentElement, this.element); | 299 WebInspector.Widget._decrementWidgetCounter(parentElement, this.element)
; |
| 300 WebInspector.View._originalRemoveChild.call(parentElement, this.element)
; | 300 WebInspector.Widget._originalRemoveChild.call(parentElement, this.elemen
t); |
| 301 | 301 |
| 302 this._visible = false; | 302 this._visible = false; |
| 303 if (this._parentIsShowing()) | 303 if (this._parentIsShowing()) |
| 304 this._processWasHidden(); | 304 this._processWasHidden(); |
| 305 | 305 |
| 306 // Update view hierarchy | 306 // Update widget hierarchy. |
| 307 if (this._parentView) { | 307 if (this._parentWidget) { |
| 308 var childIndex = this._parentView._children.indexOf(this); | 308 var childIndex = this._parentWidget._children.indexOf(this); |
| 309 WebInspector.View.__assert(childIndex >= 0, "Attempt to remove non-c
hild view"); | 309 WebInspector.Widget.__assert(childIndex >= 0, "Attempt to remove non
-child widget"); |
| 310 this._parentView._children.splice(childIndex, 1); | 310 this._parentWidget._children.splice(childIndex, 1); |
| 311 this._parentView.childWasDetached(this); | 311 this._parentWidget.childWasDetached(this); |
| 312 var parent = this._parentView; | 312 var parent = this._parentWidget; |
| 313 this._parentView = null; | 313 this._parentWidget = null; |
| 314 if (this._hasNonZeroConstraints()) | 314 if (this._hasNonZeroConstraints()) |
| 315 parent.invalidateConstraints(); | 315 parent.invalidateConstraints(); |
| 316 } else | 316 } else |
| 317 WebInspector.View.__assert(this._isRoot, "Removing non-root view fro
m DOM"); | 317 WebInspector.Widget.__assert(this._isRoot, "Removing non-root widget
from DOM"); |
| 318 }, | 318 }, |
| 319 | 319 |
| 320 detachChildViews: function() | 320 detachChildWidgets: function() |
| 321 { | 321 { |
| 322 var children = this._children.slice(); | 322 var children = this._children.slice(); |
| 323 for (var i = 0; i < children.length; ++i) | 323 for (var i = 0; i < children.length; ++i) |
| 324 children[i].detach(); | 324 children[i].detach(); |
| 325 }, | 325 }, |
| 326 | 326 |
| 327 /** | 327 /** |
| 328 * @return {!Array.<!Element>} | 328 * @return {!Array.<!Element>} |
| 329 */ | 329 */ |
| 330 elementsToRestoreScrollPositionsFor: function() | 330 elementsToRestoreScrollPositionsFor: function() |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 369 return; | 369 return; |
| 370 this._notify(this.onLayout); | 370 this._notify(this.onLayout); |
| 371 this.doResize(); | 371 this.doResize(); |
| 372 }, | 372 }, |
| 373 | 373 |
| 374 /** | 374 /** |
| 375 * @param {string} cssFile | 375 * @param {string} cssFile |
| 376 */ | 376 */ |
| 377 registerRequiredCSS: function(cssFile) | 377 registerRequiredCSS: function(cssFile) |
| 378 { | 378 { |
| 379 (this._isWebComponent ? this._shadowRoot : this.element).appendChild(Web
Inspector.View.createStyleElement(cssFile)); | 379 (this._isWebComponent ? this._shadowRoot : this.element).appendChild(Web
Inspector.Widget.createStyleElement(cssFile)); |
| 380 }, | 380 }, |
| 381 | 381 |
| 382 printViewHierarchy: function() | 382 printWidgetHierarchy: function() |
| 383 { | 383 { |
| 384 var lines = []; | 384 var lines = []; |
| 385 this._collectViewHierarchy("", lines); | 385 this._collectWidgetHierarchy("", lines); |
| 386 console.log(lines.join("\n")); | 386 console.log(lines.join("\n")); |
| 387 }, | 387 }, |
| 388 | 388 |
| 389 _collectViewHierarchy: function(prefix, lines) | 389 _collectWidgetHierarchy: function(prefix, lines) |
| 390 { | 390 { |
| 391 lines.push(prefix + "[" + this.element.className + "]" + (this._children
.length ? " {" : "")); | 391 lines.push(prefix + "[" + this.element.className + "]" + (this._children
.length ? " {" : "")); |
| 392 | 392 |
| 393 for (var i = 0; i < this._children.length; ++i) | 393 for (var i = 0; i < this._children.length; ++i) |
| 394 this._children[i]._collectViewHierarchy(prefix + " ", lines); | 394 this._children[i]._collectWidgetHierarchy(prefix + " ", lines); |
| 395 | 395 |
| 396 if (this._children.length) | 396 if (this._children.length) |
| 397 lines.push(prefix + "}"); | 397 lines.push(prefix + "}"); |
| 398 }, | 398 }, |
| 399 | 399 |
| 400 /** | 400 /** |
| 401 * @return {!Element} | 401 * @return {!Element} |
| 402 */ | 402 */ |
| 403 defaultFocusedElement: function() | 403 defaultFocusedElement: function() |
| 404 { | 404 { |
| (...skipping 25 matching lines...) Expand all Loading... |
| 430 var activeElement = this.element.ownerDocument.activeElement; | 430 var activeElement = this.element.ownerDocument.activeElement; |
| 431 return activeElement && activeElement.isSelfOrDescendant(this.element); | 431 return activeElement && activeElement.isSelfOrDescendant(this.element); |
| 432 }, | 432 }, |
| 433 | 433 |
| 434 /** | 434 /** |
| 435 * @return {!Size} | 435 * @return {!Size} |
| 436 */ | 436 */ |
| 437 measurePreferredSize: function() | 437 measurePreferredSize: function() |
| 438 { | 438 { |
| 439 var document = this.element.ownerDocument; | 439 var document = this.element.ownerDocument; |
| 440 WebInspector.View._originalAppendChild.call(document.body, this.element)
; | 440 WebInspector.Widget._originalAppendChild.call(document.body, this.elemen
t); |
| 441 this.element.positionAt(0, 0); | 441 this.element.positionAt(0, 0); |
| 442 var result = new Size(this.element.offsetWidth, this.element.offsetHeigh
t); | 442 var result = new Size(this.element.offsetWidth, this.element.offsetHeigh
t); |
| 443 this.element.positionAt(undefined, undefined); | 443 this.element.positionAt(undefined, undefined); |
| 444 WebInspector.View._originalRemoveChild.call(document.body, this.element)
; | 444 WebInspector.Widget._originalRemoveChild.call(document.body, this.elemen
t); |
| 445 return result; | 445 return result; |
| 446 }, | 446 }, |
| 447 | 447 |
| 448 /** | 448 /** |
| 449 * @return {!Constraints} | 449 * @return {!Constraints} |
| 450 */ | 450 */ |
| 451 calculateConstraints: function() | 451 calculateConstraints: function() |
| 452 { | 452 { |
| 453 return new Constraints(); | 453 return new Constraints(); |
| 454 }, | 454 }, |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 494 { | 494 { |
| 495 var constraints = this.constraints(); | 495 var constraints = this.constraints(); |
| 496 return !!(constraints.minimum.width || constraints.minimum.height || con
straints.preferred.width || constraints.preferred.height); | 496 return !!(constraints.minimum.width || constraints.minimum.height || con
straints.preferred.width || constraints.preferred.height); |
| 497 }, | 497 }, |
| 498 | 498 |
| 499 invalidateConstraints: function() | 499 invalidateConstraints: function() |
| 500 { | 500 { |
| 501 var cached = this._cachedConstraints; | 501 var cached = this._cachedConstraints; |
| 502 delete this._cachedConstraints; | 502 delete this._cachedConstraints; |
| 503 var actual = this.constraints(); | 503 var actual = this.constraints(); |
| 504 if (!actual.isEqual(cached) && this._parentView) | 504 if (!actual.isEqual(cached) && this._parentWidget) |
| 505 this._parentView.invalidateConstraints(); | 505 this._parentWidget.invalidateConstraints(); |
| 506 else | 506 else |
| 507 this.doLayout(); | 507 this.doLayout(); |
| 508 }, | 508 }, |
| 509 | 509 |
| 510 __proto__: WebInspector.Object.prototype | 510 __proto__: WebInspector.Object.prototype |
| 511 } | 511 } |
| 512 | 512 |
| 513 WebInspector.View._originalAppendChild = Element.prototype.appendChild; | 513 WebInspector.Widget._originalAppendChild = Element.prototype.appendChild; |
| 514 WebInspector.View._originalInsertBefore = Element.prototype.insertBefore; | 514 WebInspector.Widget._originalInsertBefore = Element.prototype.insertBefore; |
| 515 WebInspector.View._originalRemoveChild = Element.prototype.removeChild; | 515 WebInspector.Widget._originalRemoveChild = Element.prototype.removeChild; |
| 516 WebInspector.View._originalRemoveChildren = Element.prototype.removeChildren; | 516 WebInspector.Widget._originalRemoveChildren = Element.prototype.removeChildren; |
| 517 | 517 |
| 518 WebInspector.View._incrementViewCounter = function(parentElement, childElement) | 518 WebInspector.Widget._incrementWidgetCounter = function(parentElement, childEleme
nt) |
| 519 { | 519 { |
| 520 var count = (childElement.__viewCounter || 0) + (childElement.__view ? 1 : 0
); | 520 var count = (childElement.__widgetCounter || 0) + (childElement.__widget ? 1
: 0); |
| 521 if (!count) | 521 if (!count) |
| 522 return; | 522 return; |
| 523 | 523 |
| 524 while (parentElement) { | 524 while (parentElement) { |
| 525 parentElement.__viewCounter = (parentElement.__viewCounter || 0) + count
; | 525 parentElement.__widgetCounter = (parentElement.__widgetCounter || 0) + c
ount; |
| 526 parentElement = parentElement.parentElementOrShadowHost(); | 526 parentElement = parentElement.parentElementOrShadowHost(); |
| 527 } | 527 } |
| 528 } | 528 } |
| 529 | 529 |
| 530 WebInspector.View._decrementViewCounter = function(parentElement, childElement) | 530 WebInspector.Widget._decrementWidgetCounter = function(parentElement, childEleme
nt) |
| 531 { | 531 { |
| 532 var count = (childElement.__viewCounter || 0) + (childElement.__view ? 1 : 0
); | 532 var count = (childElement.__widgetCounter || 0) + (childElement.__widget ? 1
: 0); |
| 533 if (!count) | 533 if (!count) |
| 534 return; | 534 return; |
| 535 | 535 |
| 536 while (parentElement) { | 536 while (parentElement) { |
| 537 parentElement.__viewCounter -= count; | 537 parentElement.__widgetCounter -= count; |
| 538 parentElement = parentElement.parentElementOrShadowHost(); | 538 parentElement = parentElement.parentElementOrShadowHost(); |
| 539 } | 539 } |
| 540 } | 540 } |
| 541 | 541 |
| 542 WebInspector.View.__assert = function(condition, message) | 542 WebInspector.Widget.__assert = function(condition, message) |
| 543 { | 543 { |
| 544 if (!condition) { | 544 if (!condition) { |
| 545 console.trace(); | 545 console.trace(); |
| 546 throw new Error(message); | 546 throw new Error(message); |
| 547 } | 547 } |
| 548 } | 548 } |
| 549 | 549 |
| 550 /** | 550 /** |
| 551 * @constructor | 551 * @constructor |
| 552 * @extends {WebInspector.View} | 552 * @extends {WebInspector.Widget} |
| 553 * @param {boolean=} isWebComponent | 553 * @param {boolean=} isWebComponent |
| 554 */ | 554 */ |
| 555 WebInspector.VBox = function(isWebComponent) | 555 WebInspector.VBox = function(isWebComponent) |
| 556 { | 556 { |
| 557 WebInspector.View.call(this, isWebComponent); | 557 WebInspector.Widget.call(this, isWebComponent); |
| 558 this.contentElement.classList.add("vbox"); | 558 this.contentElement.classList.add("vbox"); |
| 559 }; | 559 }; |
| 560 | 560 |
| 561 WebInspector.VBox.prototype = { | 561 WebInspector.VBox.prototype = { |
| 562 /** | 562 /** |
| 563 * @override | 563 * @override |
| 564 * @return {!Constraints} | 564 * @return {!Constraints} |
| 565 */ | 565 */ |
| 566 calculateConstraints: function() | 566 calculateConstraints: function() |
| 567 { | 567 { |
| 568 var constraints = new Constraints(); | 568 var constraints = new Constraints(); |
| 569 | 569 |
| 570 /** | 570 /** |
| 571 * @this {!WebInspector.View} | 571 * @this {!WebInspector.Widget} |
| 572 * @suppressReceiverCheck | 572 * @suppressReceiverCheck |
| 573 */ | 573 */ |
| 574 function updateForChild() | 574 function updateForChild() |
| 575 { | 575 { |
| 576 var child = this.constraints(); | 576 var child = this.constraints(); |
| 577 constraints = constraints.widthToMax(child); | 577 constraints = constraints.widthToMax(child); |
| 578 constraints = constraints.addHeight(child); | 578 constraints = constraints.addHeight(child); |
| 579 } | 579 } |
| 580 | 580 |
| 581 this._callOnVisibleChildren(updateForChild); | 581 this._callOnVisibleChildren(updateForChild); |
| 582 return constraints; | 582 return constraints; |
| 583 }, | 583 }, |
| 584 | 584 |
| 585 __proto__: WebInspector.View.prototype | 585 __proto__: WebInspector.Widget.prototype |
| 586 }; | 586 }; |
| 587 | 587 |
| 588 /** | 588 /** |
| 589 * @constructor | 589 * @constructor |
| 590 * @extends {WebInspector.View} | 590 * @extends {WebInspector.Widget} |
| 591 * @param {boolean=} isWebComponent | 591 * @param {boolean=} isWebComponent |
| 592 */ | 592 */ |
| 593 WebInspector.HBox = function(isWebComponent) | 593 WebInspector.HBox = function(isWebComponent) |
| 594 { | 594 { |
| 595 WebInspector.View.call(this, isWebComponent); | 595 WebInspector.Widget.call(this, isWebComponent); |
| 596 this.contentElement.classList.add("hbox"); | 596 this.contentElement.classList.add("hbox"); |
| 597 }; | 597 }; |
| 598 | 598 |
| 599 WebInspector.HBox.prototype = { | 599 WebInspector.HBox.prototype = { |
| 600 /** | 600 /** |
| 601 * @override | 601 * @override |
| 602 * @return {!Constraints} | 602 * @return {!Constraints} |
| 603 */ | 603 */ |
| 604 calculateConstraints: function() | 604 calculateConstraints: function() |
| 605 { | 605 { |
| 606 var constraints = new Constraints(); | 606 var constraints = new Constraints(); |
| 607 | 607 |
| 608 /** | 608 /** |
| 609 * @this {!WebInspector.View} | 609 * @this {!WebInspector.Widget} |
| 610 * @suppressReceiverCheck | 610 * @suppressReceiverCheck |
| 611 */ | 611 */ |
| 612 function updateForChild() | 612 function updateForChild() |
| 613 { | 613 { |
| 614 var child = this.constraints(); | 614 var child = this.constraints(); |
| 615 constraints = constraints.addWidth(child); | 615 constraints = constraints.addWidth(child); |
| 616 constraints = constraints.heightToMax(child); | 616 constraints = constraints.heightToMax(child); |
| 617 } | 617 } |
| 618 | 618 |
| 619 this._callOnVisibleChildren(updateForChild); | 619 this._callOnVisibleChildren(updateForChild); |
| 620 return constraints; | 620 return constraints; |
| 621 }, | 621 }, |
| 622 | 622 |
| 623 __proto__: WebInspector.View.prototype | 623 __proto__: WebInspector.Widget.prototype |
| 624 }; | 624 }; |
| 625 | 625 |
| 626 /** | 626 /** |
| 627 * @constructor | 627 * @constructor |
| 628 * @extends {WebInspector.VBox} | 628 * @extends {WebInspector.VBox} |
| 629 * @param {function()} resizeCallback | 629 * @param {function()} resizeCallback |
| 630 */ | 630 */ |
| 631 WebInspector.VBoxWithResizeCallback = function(resizeCallback) | 631 WebInspector.VBoxWithResizeCallback = function(resizeCallback) |
| 632 { | 632 { |
| 633 WebInspector.VBox.call(this); | 633 WebInspector.VBox.call(this); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 644 } | 644 } |
| 645 | 645 |
| 646 /** | 646 /** |
| 647 * @override | 647 * @override |
| 648 * @param {?Node} child | 648 * @param {?Node} child |
| 649 * @return {?Node} | 649 * @return {?Node} |
| 650 * @suppress {duplicate} | 650 * @suppress {duplicate} |
| 651 */ | 651 */ |
| 652 Element.prototype.appendChild = function(child) | 652 Element.prototype.appendChild = function(child) |
| 653 { | 653 { |
| 654 WebInspector.View.__assert(!child.__view || child.parentElement === this, "A
ttempt to add view via regular DOM operation."); | 654 WebInspector.Widget.__assert(!child.__widget || child.parentElement === this
, "Attempt to add widget via regular DOM operation."); |
| 655 return WebInspector.View._originalAppendChild.call(this, child); | 655 return WebInspector.Widget._originalAppendChild.call(this, child); |
| 656 } | 656 } |
| 657 | 657 |
| 658 /** | 658 /** |
| 659 * @override | 659 * @override |
| 660 * @param {?Node} child | 660 * @param {?Node} child |
| 661 * @param {?Node} anchor | 661 * @param {?Node} anchor |
| 662 * @return {!Node} | 662 * @return {!Node} |
| 663 * @suppress {duplicate} | 663 * @suppress {duplicate} |
| 664 */ | 664 */ |
| 665 Element.prototype.insertBefore = function(child, anchor) | 665 Element.prototype.insertBefore = function(child, anchor) |
| 666 { | 666 { |
| 667 WebInspector.View.__assert(!child.__view || child.parentElement === this, "A
ttempt to add view via regular DOM operation."); | 667 WebInspector.Widget.__assert(!child.__widget || child.parentElement === this
, "Attempt to add widget via regular DOM operation."); |
| 668 return WebInspector.View._originalInsertBefore.call(this, child, anchor); | 668 return WebInspector.Widget._originalInsertBefore.call(this, child, anchor); |
| 669 } | 669 } |
| 670 | 670 |
| 671 /** | 671 /** |
| 672 * @override | 672 * @override |
| 673 * @param {?Node} child | 673 * @param {?Node} child |
| 674 * @return {!Node} | 674 * @return {!Node} |
| 675 * @suppress {duplicate} | 675 * @suppress {duplicate} |
| 676 */ | 676 */ |
| 677 Element.prototype.removeChild = function(child) | 677 Element.prototype.removeChild = function(child) |
| 678 { | 678 { |
| 679 WebInspector.View.__assert(!child.__viewCounter && !child.__view, "Attempt t
o remove element containing view via regular DOM operation"); | 679 WebInspector.Widget.__assert(!child.__widgetCounter && !child.__widget, "Att
empt to remove element containing widget via regular DOM operation"); |
| 680 return WebInspector.View._originalRemoveChild.call(this, child); | 680 return WebInspector.Widget._originalRemoveChild.call(this, child); |
| 681 } | 681 } |
| 682 | 682 |
| 683 Element.prototype.removeChildren = function() | 683 Element.prototype.removeChildren = function() |
| 684 { | 684 { |
| 685 WebInspector.View.__assert(!this.__viewCounter, "Attempt to remove element c
ontaining view via regular DOM operation"); | 685 WebInspector.Widget.__assert(!this.__widgetCounter, "Attempt to remove eleme
nt containing widget via regular DOM operation"); |
| 686 WebInspector.View._originalRemoveChildren.call(this); | 686 WebInspector.Widget._originalRemoveChildren.call(this); |
| 687 } | 687 } |
| OLD | NEW |