15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2008 Apple Inc. All Rights Reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2011 Google Inc. All Rights Reserved. 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * are met: 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 1. Redistributions of source code must retain the above copyright 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 2. Redistributions in binary form must reproduce the above copyright 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer in the 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * documentation and/or other materials provided with the distribution. 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {WebInspector.Object} 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.View = function() 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 33197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch this.element = document.createElementWithClass("div", "view"); 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.element.__view = this; 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._visible = true; 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._isRoot = false; 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._isShowing = false; 385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._children = []; 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._hideOnDetach = false; 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._cssFiles = []; 41926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._notificationDepth = 0; 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.View._cssFileToVisibleViewCount = {}; 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.View._cssFileToStyleElement = {}; 4653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)WebInspector.View._cssUnloadTimeout = 2000; 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 48d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)WebInspector.View._buildSourceURL = function(cssFile) 49d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 50d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return "\n/*# sourceURL=" + WebInspector.ParsedURL.completeURL(window.location.href, cssFile) + " */"; 51d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 52d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 53323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)/** 54323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) * @param {string} cssFile 55323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) * @return {!Element} 56323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) */ 57d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)WebInspector.View.createStyleElement = function(cssFile) 58d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 59323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) var styleElement = document.createElement("style"); 60d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) styleElement.type = "text/css"; 61323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) styleElement.textContent = loadResource(cssFile) + WebInspector.View._buildSourceURL(cssFile); 62d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) document.head.insertBefore(styleElement, document.head.firstChild); 63d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return styleElement; 64d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 65d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.View.prototype = { 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) markAsRoot: function() 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 69197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch WebInspector.View.__assert(!this.element.parentElement, "Attempt to mark as root attached node"); 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._isRoot = true; 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 73926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 74926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @return {?WebInspector.View} 75926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 76926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) parentView: function() 77926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 78926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this._parentView; 79926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 80926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 8109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 82a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch * @return {!Array.<!WebInspector.View>} 83a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch */ 84a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch children: function() 85a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch { 86a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch return this._children; 87a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch }, 88a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch 89a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch /** 9009380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {boolean} 9109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) isShowing: function() 935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._isShowing; 955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setHideOnDetach: function() 985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._hideOnDetach = true; 1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 102926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 103f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu * @return {boolean} 104926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 105926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _inNotification: function() 106926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 107926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return !!this._notificationDepth || (this._parentView && this._parentView._inNotification()); 108926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 109926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _parentIsShowing: function() 1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 112926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (this._isRoot) 113926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return true; 114926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return this._parentView && this._parentView.isShowing(); 1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 117926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 118926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {function(this:WebInspector.View)} method 119926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _callOnVisibleChildren: function(method) 1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 122926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) var copy = this._children.slice(); 123926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) for (var i = 0; i < copy.length; ++i) { 124926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (copy[i]._parentView === this && copy[i]._visible) 125926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) method.call(copy[i]); 126926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _processWillShow: function() 1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._loadCSSIfNeeded(); 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._callOnVisibleChildren(this._processWillShow); 133fff8884795cb540f87cf6e6d67b629519b00eb8bBen Murdoch this._isShowing = true; 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _processWasShown: function() 1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 138926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (this._inNotification()) 139926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.restoreScrollPositions(); 141926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._notify(this.wasShown); 1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._callOnVisibleChildren(this._processWasShown); 1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _processWillHide: function() 1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 147926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (this._inNotification()) 148926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.storeScrollPositions(); 1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._callOnVisibleChildren(this._processWillHide); 152926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._notify(this.willHide); 1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._isShowing = false; 1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _processWasHidden: function() 1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._disableCSSIfNeeded(); 1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._callOnVisibleChildren(this._processWasHidden); 1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _processOnResize: function() 1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 164926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (this._inNotification()) 165926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) return; 1665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!this.isShowing()) 1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 168926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._notify(this.onResize); 1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._callOnVisibleChildren(this._processOnResize); 1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 172926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) /** 173926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * @param {function(this:WebInspector.View)} notification 174926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) */ 175926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) _notify: function(notification) 176926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) { 177926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) ++this._notificationDepth; 178926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) try { 179926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) notification.call(this); 180926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } finally { 181926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) --this._notificationDepth; 182926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) } 183926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) }, 184926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) wasShown: function() 1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) willHide: function() 1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) onResize: function() 1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 19707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch onLayout: function() 19807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch { 19907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch }, 20007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 2015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 202a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {?Element} parentElement 2035d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) * @param {?Element=} insertBefore 2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) show: function(parentElement, insertBefore) 2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 207197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch WebInspector.View.__assert(parentElement, "Attempt to attach view with no parent element"); 2085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Update view hierarchy 2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this.element.parentElement !== parentElement) { 211926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) if (this.element.parentElement) 212926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this.detach(); 213926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 2145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var currentParent = parentElement; 2155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while (currentParent && !currentParent.__view) 2165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) currentParent = currentParent.parentElement; 2175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (currentParent) { 2195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._parentView = currentParent.__view; 2205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._parentView._children.push(this); 2215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._isRoot = false; 2225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else 223197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch WebInspector.View.__assert(this._isRoot, "Attempt to attach view to orphan node"); 224a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) } else if (this._visible) { 2255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 226a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) } 2275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._visible = true; 229926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) 2305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._parentIsShowing()) 2315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._processWillShow(); 2325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 233a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this.element.classList.add("visible"); 2345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Reparent 2365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this.element.parentElement !== parentElement) { 2375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.View._incrementViewCounter(parentElement, this.element); 2385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (insertBefore) 2395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.View._originalInsertBefore.call(parentElement, this.element, insertBefore); 2405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) else 2415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.View._originalAppendChild.call(parentElement, this.element); 2425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 244f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu if (this._parentIsShowing()) 2455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._processWasShown(); 24607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 247aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (this._parentView && this._hasNonZeroConstraints()) 248aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._parentView.invalidateConstraints(); 249f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu else 250f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu this._processOnResize(); 2515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 2545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean=} overrideHideOnDetach 2555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) detach: function(overrideHideOnDetach) 2575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var parentElement = this.element.parentElement; 2595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!parentElement) 2605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 2615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 262f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu if (this._parentIsShowing()) 2635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._processWillHide(); 2645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._hideOnDetach && !overrideHideOnDetach) { 266a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this.element.classList.remove("visible"); 2675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._visible = false; 2685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._parentIsShowing()) 2695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._processWasHidden(); 270aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (this._parentView && this._hasNonZeroConstraints()) 271aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._parentView.invalidateConstraints(); 2725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 2735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Force legal removal 2765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.View._decrementViewCounter(parentElement, this.element); 2775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.View._originalRemoveChild.call(parentElement, this.element); 2785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._visible = false; 2805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._parentIsShowing()) 2815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._processWasHidden(); 2825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Update view hierarchy 2845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._parentView) { 2855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var childIndex = this._parentView._children.indexOf(this); 286197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch WebInspector.View.__assert(childIndex >= 0, "Attempt to remove non-child view"); 2875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._parentView._children.splice(childIndex, 1); 28807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch var parent = this._parentView; 2895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._parentView = null; 290aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (this._hasNonZeroConstraints()) 291aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch parent.invalidateConstraints(); 2925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } else 293197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch WebInspector.View.__assert(this._isRoot, "Removing non-root view from DOM"); 2945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) detachChildViews: function() 2975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var children = this._children.slice(); 2995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < children.length; ++i) 3005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) children[i].detach(); 3015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 30309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) /** 30409380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @return {!Array.<!Element>} 30509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) */ 3065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) elementsToRestoreScrollPositionsFor: function() 3075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return [this.element]; 3095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) storeScrollPositions: function() 3125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elements = this.elementsToRestoreScrollPositionsFor(); 3145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < elements.length; ++i) { 3155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var container = elements[i]; 3165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) container._scrollTop = container.scrollTop; 3175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) container._scrollLeft = container.scrollLeft; 3185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) restoreScrollPositions: function() 3225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var elements = this.elementsToRestoreScrollPositionsFor(); 3245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < elements.length; ++i) { 3255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var container = elements[i]; 3265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (container._scrollTop) 3275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) container.scrollTop = container._scrollTop; 3285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (container._scrollLeft) 3295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) container.scrollLeft = container._scrollLeft; 3305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) doResize: function() 3345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 33509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (!this.isShowing()) 33609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) return; 33709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) // No matter what notification we are in, dispatching onResize is not needed. 33809380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) if (!this._inNotification()) 33909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) this._callOnVisibleChildren(this._processOnResize); 3405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 34207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch doLayout: function() 34307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch { 34407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch if (!this.isShowing()) 34507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch return; 34607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this._notify(this.onLayout); 34707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this.doResize(); 34807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch }, 34907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 3505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) registerRequiredCSS: function(cssFile) 3515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._cssFiles.push(cssFile); 3535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _loadCSSIfNeeded: function() 3565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < this._cssFiles.length; ++i) { 3585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var cssFile = this._cssFiles[i]; 3595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var viewsWithCSSFile = WebInspector.View._cssFileToVisibleViewCount[cssFile]; 3615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.View._cssFileToVisibleViewCount[cssFile] = (viewsWithCSSFile || 0) + 1; 3625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!viewsWithCSSFile) 3635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._doLoadCSS(cssFile); 3645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _doLoadCSS: function(cssFile) 3685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var styleElement = WebInspector.View._cssFileToStyleElement[cssFile]; 3705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (styleElement) { 3715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) styleElement.disabled = false; 3725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 3735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 374d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) styleElement = WebInspector.View.createStyleElement(cssFile); 3755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.View._cssFileToStyleElement[cssFile] = styleElement; 3765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _disableCSSIfNeeded: function() 3795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 38053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) var scheduleUnload = !!WebInspector.View._cssUnloadTimer; 38153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 3825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < this._cssFiles.length; ++i) { 3835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var cssFile = this._cssFiles[i]; 3845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) if (!--WebInspector.View._cssFileToVisibleViewCount[cssFile]) 38653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) scheduleUnload = true; 38753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) } 3885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 38953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) function doUnloadCSS() 39053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) { 39153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) delete WebInspector.View._cssUnloadTimer; 39253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) 39353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) for (cssFile in WebInspector.View._cssFileToVisibleViewCount) { 394f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu if (WebInspector.View._cssFileToVisibleViewCount.hasOwnProperty(cssFile) && !WebInspector.View._cssFileToVisibleViewCount[cssFile]) 39553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) WebInspector.View._cssFileToStyleElement[cssFile].disabled = true; 39653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) } 3975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 399f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu if (scheduleUnload && !WebInspector.View._cssUnloadTimer) 400f91f5fa1608c2cdd9af1842fb5dadbe78275be2aBo Liu WebInspector.View._cssUnloadTimer = setTimeout(doUnloadCSS, WebInspector.View._cssUnloadTimeout); 4015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) printViewHierarchy: function() 4045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var lines = []; 4065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._collectViewHierarchy("", lines); 4075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) console.log(lines.join("\n")); 4085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _collectViewHierarchy: function(prefix, lines) 4115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) lines.push(prefix + "[" + this.element.className + "]" + (this._children.length ? " {" : "")); 4135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < this._children.length; ++i) 4155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._children[i]._collectViewHierarchy(prefix + " ", lines); 4165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._children.length) 4185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) lines.push(prefix + "}"); 4195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 422a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Element} 4235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) defaultFocusedElement: function() 4255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._defaultFocusedElement || this.element; 4275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 430a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Element} element 4315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) setDefaultFocusedElement: function(element) 4335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._defaultFocusedElement = element; 4355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) focus: function() 4385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var element = this.defaultFocusedElement(); 4405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!element || element.isAncestor(document.activeElement)) 4415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 4425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.setCurrentFocusElement(element); 4445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 447a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch * @return {boolean} 448a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch */ 449a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch hasFocus: function() 450a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch { 451a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch var activeElement = document.activeElement; 452a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch return activeElement && activeElement.isSelfOrDescendant(this.element); 453a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch }, 454a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch 455a9984bf9ddc3cf73fdae3f29134a2bab379e7029Ben Murdoch /** 456a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!Size} 4575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) measurePreferredSize: function() 4595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._loadCSSIfNeeded(); 4615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.View._originalAppendChild.call(document.body, this.element); 4625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.element.positionAt(0, 0); 4635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var result = new Size(this.element.offsetWidth, this.element.offsetHeight); 4645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.element.positionAt(undefined, undefined); 4655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.View._originalRemoveChild.call(document.body, this.element); 4665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._disableCSSIfNeeded(); 4675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return result; 4685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 47007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch /** 471aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @return {!Constraints} 47207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch */ 473aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch calculateConstraints: function() 47407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch { 475aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return new Constraints(new Size(0, 0)); 47607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch }, 47707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 47807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch /** 479aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @return {!Constraints} 48007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch */ 481aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch constraints: function() 48207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch { 483aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (typeof this._constraints !== "undefined") 484aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return this._constraints; 485aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch if (typeof this._cachedConstraints === "undefined") 486aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._cachedConstraints = this.calculateConstraints(); 487aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return this._cachedConstraints; 488aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch }, 489aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch 490aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch /** 491aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {number} width 492aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {number} height 493aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {number} preferredWidth 494aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {number} preferredHeight 495aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch */ 496aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch setMinimumAndPreferredSizes: function(width, height, preferredWidth, preferredHeight) 497aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch { 498aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._constraints = new Constraints(new Size(width, height), new Size(preferredWidth, preferredHeight)); 499aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this.invalidateConstraints(); 50007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch }, 50107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 50207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch /** 50307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @param {number} width 50407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @param {number} height 50507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch */ 50607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch setMinimumSize: function(width, height) 50707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch { 508aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._constraints = new Constraints(new Size(width, height)); 509aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this.invalidateConstraints(); 51007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch }, 51107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 51207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch /** 51307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @return {boolean} 51407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch */ 515aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch _hasNonZeroConstraints: function() 51607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch { 517aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var constraints = this.constraints(); 518aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return !!(constraints.minimum.width || constraints.minimum.height || constraints.preferred.width || constraints.preferred.height); 51907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch }, 52007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 521aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch invalidateConstraints: function() 52207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch { 523aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var cached = this._cachedConstraints; 524aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch delete this._cachedConstraints; 525aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var actual = this.constraints(); 52607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch if (!actual.isEqual(cached) && this._parentView) 527aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._parentView.invalidateConstraints(); 52807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch else 52907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this.doLayout(); 53007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch }, 53107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 5325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) __proto__: WebInspector.Object.prototype 5335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.View._originalAppendChild = Element.prototype.appendChild; 5365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.View._originalInsertBefore = Element.prototype.insertBefore; 5375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.View._originalRemoveChild = Element.prototype.removeChild; 5385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.View._originalRemoveChildren = Element.prototype.removeChildren; 5395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.View._incrementViewCounter = function(parentElement, childElement) 5415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var count = (childElement.__viewCounter || 0) + (childElement.__view ? 1 : 0); 5435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!count) 5445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 5455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while (parentElement) { 5475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parentElement.__viewCounter = (parentElement.__viewCounter || 0) + count; 5485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parentElement = parentElement.parentElement; 5495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.View._decrementViewCounter = function(parentElement, childElement) 5535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var count = (childElement.__viewCounter || 0) + (childElement.__view ? 1 : 0); 5555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!count) 5565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 5575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) while (parentElement) { 5595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parentElement.__viewCounter -= count; 5605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) parentElement = parentElement.parentElement; 5615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 564197021e6b966cfb06891637935ef33fff06433d1Ben MurdochWebInspector.View.__assert = function(condition, message) 5655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 5665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!condition) { 5675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) console.trace(); 5685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) throw new Error(message); 5695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 5705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 572bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles)/** 57351b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) * @constructor 57451b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) * @extends {WebInspector.View} 57551b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) */ 576d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)WebInspector.VBox = function() 57751b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles){ 57851b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) WebInspector.View.call(this); 579d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this.element.classList.add("vbox"); 580d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)}; 581d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 582d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)WebInspector.VBox.prototype = { 58307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch /** 584aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @return {!Constraints} 58507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch */ 586aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch calculateConstraints: function() 58707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch { 588aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var constraints = new Constraints(new Size(0, 0)); 58907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 59007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch /** 59107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @this {!WebInspector.View} 59207a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @suppressReceiverCheck 59307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch */ 59407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch function updateForChild() 59507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch { 596aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var child = this.constraints(); 597aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch constraints = constraints.widthToMax(child); 598aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch constraints = constraints.addHeight(child); 59907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch } 60007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 60107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this._callOnVisibleChildren(updateForChild); 602aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return constraints; 60307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch }, 60407a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 605d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) __proto__: WebInspector.View.prototype 606d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)}; 607d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 608d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)/** 609d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @constructor 610d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @extends {WebInspector.View} 611d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 612d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)WebInspector.HBox = function() 613d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 614d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) WebInspector.View.call(this); 615d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) this.element.classList.add("hbox"); 616d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)}; 617d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 618d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)WebInspector.HBox.prototype = { 61907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch /** 620aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @return {!Constraints} 62107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch */ 622aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch calculateConstraints: function() 62307a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch { 624aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var constraints = new Constraints(new Size(0, 0)); 62507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 62607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch /** 62707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @this {!WebInspector.View} 62807a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch * @suppressReceiverCheck 62907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch */ 63007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch function updateForChild() 63107a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch { 632aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch var child = this.constraints(); 633aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch constraints = constraints.addWidth(child); 634aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch constraints = constraints.heightToMax(child); 63507a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch } 63607a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 63707a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch this._callOnVisibleChildren(updateForChild); 638aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch return constraints; 63907a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch }, 64007a852d8c1953036774d8f3b65d18dcfea3bb4a2Ben Murdoch 641d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) __proto__: WebInspector.View.prototype 642d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)}; 643d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 644d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)/** 645d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @constructor 646d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @extends {WebInspector.VBox} 647d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * @param {function()} resizeCallback 648d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */ 649d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)WebInspector.VBoxWithResizeCallback = function(resizeCallback) 650d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 651d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) WebInspector.VBox.call(this); 65251b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) this._resizeCallback = resizeCallback; 65351b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)} 65451b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) 655d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)WebInspector.VBoxWithResizeCallback.prototype = { 65651b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) onResize: function() 65751b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) { 65851b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) this._resizeCallback(); 65951b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) }, 66051b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) 661d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) __proto__: WebInspector.VBox.prototype 66251b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)} 66351b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles) 6645d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)/** 6655d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) * @param {?Node} child 6665d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) * @return {?Node} 6675d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) * @suppress {duplicate} 6685d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) */ 6695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Element.prototype.appendChild = function(child) 6705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 671197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch WebInspector.View.__assert(!child.__view || child.parentElement === this, "Attempt to add view via regular DOM operation."); 6725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return WebInspector.View._originalAppendChild.call(this, child); 6735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6755d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)/** 6765d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) * @param {?Node} child 6775d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) * @param {?Node} anchor 678197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @return {!Node} 6795d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) * @suppress {duplicate} 6805d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) */ 6815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Element.prototype.insertBefore = function(child, anchor) 6825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 683197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch WebInspector.View.__assert(!child.__view || child.parentElement === this, "Attempt to add view via regular DOM operation."); 6845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return WebInspector.View._originalInsertBefore.call(this, child, anchor); 6855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6875d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)/** 6885d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) * @param {?Node} child 689197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch * @return {!Node} 6905d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) * @suppress {duplicate} 6915d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) */ 6925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Element.prototype.removeChild = function(child) 6935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 694197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch WebInspector.View.__assert(!child.__viewCounter && !child.__view, "Attempt to remove element containing view via regular DOM operation"); 6955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return WebInspector.View._originalRemoveChild.call(this, child); 6965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 6975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 6985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)Element.prototype.removeChildren = function() 6995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 700197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch WebInspector.View.__assert(!this.__viewCounter, "Attempt to remove element containing view via regular DOM operation"); 7015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.View._originalRemoveChildren.call(this); 7025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 703