| Index: chrome/tools/test/reference_build/chrome_linux/resources/inspector/ProfileView.js | 
| diff --git a/chrome/tools/test/reference_build/chrome_linux/resources/inspector/ProfileView.js b/chrome/tools/test/reference_build/chrome_linux/resources/inspector/ProfileView.js | 
| index d00733c483fcbbd4b53e1011ea74ef1b19146a7a..5c9fcdafb92d47a534a6342dd4d64adf3e2e9ff2 100644 | 
| --- a/chrome/tools/test/reference_build/chrome_linux/resources/inspector/ProfileView.js | 
| +++ b/chrome/tools/test/reference_build/chrome_linux/resources/inspector/ProfileView.js | 
| @@ -56,25 +56,19 @@ WebInspector.ProfileView = function(profile) | 
| this.viewSelectElement.appendChild(heavyViewOption); | 
| this.viewSelectElement.appendChild(treeViewOption); | 
|  | 
| -    this.percentButton = document.createElement("button"); | 
| -    this.percentButton.className = "percent-time-status-bar-item status-bar-item"; | 
| +    this.percentButton = new WebInspector.StatusBarButton("", "percent-time-status-bar-item"); | 
| this.percentButton.addEventListener("click", this._percentClicked.bind(this), false); | 
|  | 
| -    this.focusButton = document.createElement("button"); | 
| -    this.focusButton.title = WebInspector.UIString("Focus selected function."); | 
| -    this.focusButton.className = "focus-profile-node-status-bar-item status-bar-item"; | 
| +    this.focusButton = new WebInspector.StatusBarButton(WebInspector.UIString("Focus selected function."), "focus-profile-node-status-bar-item"); | 
| this.focusButton.disabled = true; | 
| this.focusButton.addEventListener("click", this._focusClicked.bind(this), false); | 
|  | 
| -    this.excludeButton = document.createElement("button"); | 
| -    this.excludeButton.title = WebInspector.UIString("Exclude selected function."); | 
| -    this.excludeButton.className = "exclude-profile-node-status-bar-item status-bar-item"; | 
| +    this.excludeButton = new WebInspector.StatusBarButton(WebInspector.UIString("Exclude selected function."), "exclude-profile-node-status-bar-item"); | 
| this.excludeButton.disabled = true; | 
| this.excludeButton.addEventListener("click", this._excludeClicked.bind(this), false); | 
|  | 
| -    this.resetButton = document.createElement("button"); | 
| -    this.resetButton.title = WebInspector.UIString("Restore all functions."); | 
| -    this.resetButton.className = "reset-profile-status-bar-item status-bar-item hidden"; | 
| +    this.resetButton = new WebInspector.StatusBarButton(WebInspector.UIString("Restore all functions."), "reset-profile-status-bar-item"); | 
| +    this.resetButton.visible = false; | 
| this.resetButton.addEventListener("click", this._resetClicked.bind(this), false); | 
|  | 
| this.profile = profile; | 
| @@ -90,7 +84,7 @@ WebInspector.ProfileView = function(profile) | 
| WebInspector.ProfileView.prototype = { | 
| get statusBarItems() | 
| { | 
| -        return [this.viewSelectElement, this.percentButton, this.focusButton, this.excludeButton, this.resetButton]; | 
| +        return [this.viewSelectElement, this.percentButton.element, this.focusButton.element, this.excludeButton.element, this.resetButton.element]; | 
| }, | 
|  | 
| get profile() | 
| @@ -148,11 +142,23 @@ WebInspector.ProfileView.prototype = { | 
| return this._bottomUpTree; | 
| }, | 
|  | 
| +    show: function(parentElement) | 
| +    { | 
| +        WebInspector.View.prototype.show.call(this, parentElement); | 
| +        this.dataGrid.updateWidths(); | 
| +    }, | 
| + | 
| hide: function() | 
| { | 
| WebInspector.View.prototype.hide.call(this); | 
| this._currentSearchResultIndex = -1; | 
| }, | 
| + | 
| +    resize: function() | 
| +    { | 
| +        if (this.dataGrid) | 
| +            this.dataGrid.updateWidths(); | 
| +    }, | 
|  | 
| refresh: function() | 
| { | 
| @@ -166,8 +172,8 @@ WebInspector.ProfileView.prototype = { | 
| for (var index = 0; index < count; ++index) | 
| this.dataGrid.appendChild(children[index]); | 
|  | 
| -        if (selectedProfileNode && selectedProfileNode._dataGridNode) | 
| -            selectedProfileNode._dataGridNode.selected = true; | 
| +        if (selectedProfileNode) | 
| +            selectedProfileNode.selected = true; | 
| }, | 
|  | 
| refreshVisibleData: function() | 
| @@ -196,8 +202,7 @@ WebInspector.ProfileView.prototype = { | 
| delete profileNode._searchMatchedCallsColumn; | 
| delete profileNode._searchMatchedFunctionColumn; | 
|  | 
| -                if (profileNode._dataGridNode) | 
| -                    profileNode._dataGridNode.refresh(); | 
| +                profileNode.refresh(); | 
| } | 
| } | 
|  | 
| @@ -313,7 +318,7 @@ WebInspector.ProfileView.prototype = { | 
| profileDataGridNode._searchMatchedTotalColumn || | 
| profileDataGridNode._searchMatchedAverageColumn || | 
| profileDataGridNode._searchMatchedCallsColumn || | 
| -                profileDataGridNode._searchMatchedFunctionColumn); | 
| +                profileDataGridNode._searchMatchedFunctionColumn) | 
| { | 
| profileDataGridNode.refresh(); | 
| return true; | 
| @@ -322,48 +327,14 @@ WebInspector.ProfileView.prototype = { | 
| return false; | 
| } | 
|  | 
| -        var current = this.dataGrid; | 
| -        var ancestors = []; | 
| -        var nextIndexes = []; | 
| -        var startIndex = 0; | 
| +        var current = this.profileDataGridTree.children[0]; | 
|  | 
| while (current) { | 
| -            var children = current.children; | 
| -            var childrenLength = children.length; | 
| - | 
| -            if (startIndex >= childrenLength) { | 
| -                current = ancestors.pop(); | 
| -                startIndex = nextIndexes.pop(); | 
| -                continue; | 
| +            if (matchesQuery(current)) { | 
| +                this._searchResults.push({ profileNode: current }); | 
| } | 
|  | 
| -            for (var i = startIndex; i < childrenLength; ++i) { | 
| -                var child = children[i]; | 
| - | 
| -                if (matchesQuery(child)) { | 
| -                    if (child._dataGridNode) { | 
| -                        // The child has a data grid node already, no need to remember the ancestors. | 
| -                        this._searchResults.push({ profileNode: child }); | 
| -                    } else { | 
| -                        var ancestorsCopy = [].concat(ancestors); | 
| -                        ancestorsCopy.push(current); | 
| -                        this._searchResults.push({ profileNode: child, ancestors: ancestorsCopy }); | 
| -                    } | 
| -                } | 
| - | 
| -                if (child.children.length) { | 
| -                    ancestors.push(current); | 
| -                    nextIndexes.push(i + 1); | 
| -                    current = child; | 
| -                    startIndex = 0; | 
| -                    break; | 
| -                } | 
| - | 
| -                if (i === (childrenLength - 1)) { | 
| -                    current = ancestors.pop(); | 
| -                    startIndex = nextIndexes.pop(); | 
| -                } | 
| -            } | 
| +            current = current.traverseNextNode(false, null, false); | 
| } | 
|  | 
| finishedCallback(this, this._searchResults.length); | 
| @@ -419,26 +390,9 @@ WebInspector.ProfileView.prototype = { | 
| if (!searchResult) | 
| return; | 
|  | 
| -        var profileNode = this._searchResults[index].profileNode; | 
| -        if (!profileNode._dataGridNode && searchResult.ancestors) { | 
| -            var ancestors = searchResult.ancestors; | 
| -            for (var i = 0; i < ancestors.length; ++i) { | 
| -                var ancestorProfileNode = ancestors[i]; | 
| -                var gridNode = ancestorProfileNode._dataGridNode; | 
| -                if (gridNode) | 
| -                    gridNode.expand(); | 
| -            } | 
| - | 
| -            // No need to keep the ancestors around. | 
| -            delete searchResult.ancestors; | 
| -        } | 
| - | 
| -        gridNode = profileNode._dataGridNode; | 
| -        if (!gridNode) | 
| -            return; | 
| - | 
| -        gridNode.reveal(); | 
| -        gridNode.select(); | 
| +        var profileNode = searchResult.profileNode; | 
| +        profileNode.reveal(); | 
| +        profileNode.select(); | 
| }, | 
|  | 
| _changeView: function(event) | 
| @@ -479,10 +433,10 @@ WebInspector.ProfileView.prototype = { | 
| { | 
| if (this.showSelfTimeAsPercent && this.showTotalTimeAsPercent && this.showAverageTimeAsPercent) { | 
| this.percentButton.title = WebInspector.UIString("Show absolute total and self times."); | 
| -            this.percentButton.addStyleClass("toggled-on"); | 
| +            this.percentButton.toggled = true; | 
| } else { | 
| this.percentButton.title = WebInspector.UIString("Show total and self times as percentages."); | 
| -            this.percentButton.removeStyleClass("toggled-on"); | 
| +            this.percentButton.toggled = false; | 
| } | 
| }, | 
|  | 
| @@ -491,7 +445,7 @@ WebInspector.ProfileView.prototype = { | 
| if (!this.dataGrid.selectedNode) | 
| return; | 
|  | 
| -        this.resetButton.removeStyleClass("hidden"); | 
| +        this.resetButton.visible = true; | 
| this.profileDataGridTree.focus(this.dataGrid.selectedNode); | 
| this.refresh(); | 
| this.refreshVisibleData(); | 
| @@ -506,7 +460,7 @@ WebInspector.ProfileView.prototype = { | 
|  | 
| selectedNode.deselect(); | 
|  | 
| -        this.resetButton.removeStyleClass("hidden"); | 
| +        this.resetButton.visible = true; | 
| this.profileDataGridTree.exclude(selectedNode); | 
| this.refresh(); | 
| this.refreshVisibleData(); | 
| @@ -514,7 +468,7 @@ WebInspector.ProfileView.prototype = { | 
|  | 
| _resetClicked: function(event) | 
| { | 
| -        this.resetButton.addStyleClass("hidden"); | 
| +        this.resetButton.visible = false; | 
| this.profileDataGridTree.restore(); | 
| this.refresh(); | 
| this.refreshVisibleData(); | 
|  |