Index: tools/deep_memory_profiler/visualizer/menu-view.js |
diff --git a/tools/deep_memory_profiler/visualizer/menu-view.js b/tools/deep_memory_profiler/visualizer/menu-view.js |
deleted file mode 100644 |
index e9ec19789f1a792856090dff9e8f87777756f1ed..0000000000000000000000000000000000000000 |
--- a/tools/deep_memory_profiler/visualizer/menu-view.js |
+++ /dev/null |
@@ -1,104 +0,0 @@ |
-// Copyright 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-/** |
- * This is a view class showing tree-menu. |
- * @param {Object} profiler Must have addListener method. |
- * @construct |
- */ |
-var MenuView = function(profiler) { |
- this.profiler_ = profiler; |
- this.placeholder_ = '#category-menu'; |
- |
- // Update graph view and menu view when profiler model changed. |
- profiler.addListener('changed', this.redraw_.bind(this)); |
- profiler.addListener('changed:selected', this.selectNode_.bind(this)); |
-}; |
- |
-/** |
- * Highlight the node being selected. |
- * @param {string} id Model id. |
- * @private |
- */ |
-MenuView.prototype.selectNode_ = function(id) { |
- var $tree = this.$tree_; |
- var node = $tree.tree('getNodeById', id); |
- $tree.tree('selectNode', node); |
- $tree.tree('scrollToNode', node); |
-}; |
- |
-/** |
- * Update menu view when model updated. |
- * @param {Array.<Object>} models |
- * @private |
- */ |
-MenuView.prototype.redraw_ = function(models) { |
- function convert(origin, target) { |
- target.label = origin.name; |
- target.id = origin.id; |
- |
- if ('children' in origin) { |
- target.children = []; |
- origin.children.forEach(function(originChild) { |
- var targetChild = {}; |
- target.children.push(targetChild); |
- convert(originChild, targetChild); |
- }); |
- } |
- } |
- |
- function merge(left, right) { |
- if (!('children' in right) && 'children' in left) |
- return; |
- if ('children' in right && !('children' in left)) |
- left.children = right.children; |
- if ('children' in right && 'children' in left) { |
- right.children.forEach(function(child) { |
- // Find child with the same label in right tree. |
- var index = left.children.reduce(function(previous, current, index) { |
- if (child.label === current.label) |
- return index; |
- return previous; |
- }, -1); |
- if (index === -1) |
- left.children.push(child); |
- else |
- merge(child, left.children[index]); |
- }); |
- } |
- } |
- |
- var self = this; |
- |
- // Merge trees in all snapshots. |
- var union = null; |
- models.forEach(function(model) { |
- var data = {}; |
- convert(model, data); |
- if (!union) |
- union = data; |
- else |
- merge(union, data); |
- }); |
- |
- // Draw breakdown menu. |
- var data = [union]; |
- if (!this.$tree_) { |
- this.$tree_ = $(this.placeholder_).tree({ |
- data: data, |
- autoOpen: true, |
- onCreateLi: function(node, $li) { |
- // TODO(junjianx): Add checkbox to decide the breakdown visibility. |
- } |
- }); |
- |
- // Delegate click event to profiler. |
- this.$tree_.bind('tree.click', function(event) { |
- event.preventDefault(); |
- self.profiler_.setSelected(event.node.id); |
- }); |
- } else { |
- this.$tree_.tree('loadData', data); |
- } |
-}; |