| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | |
| 5 /** | 4 /** |
| 6 * @constructor | |
| 7 * @extends {WebInspector.VBox} | |
| 8 * @implements {WebInspector.TargetManager.Observer} | 5 * @implements {WebInspector.TargetManager.Observer} |
| 6 * @unrestricted |
| 9 */ | 7 */ |
| 10 WebInspector.ThreadsSidebarPane = function() | 8 WebInspector.ThreadsSidebarPane = class extends WebInspector.VBox { |
| 11 { | 9 constructor() { |
| 12 WebInspector.VBox.call(this); | 10 super(); |
| 13 | 11 |
| 14 /** @type {!Map.<!WebInspector.DebuggerModel, !WebInspector.UIList.Item>} */ | 12 /** @type {!Map.<!WebInspector.DebuggerModel, !WebInspector.UIList.Item>} */ |
| 15 this._debuggerModelToListItems = new Map(); | 13 this._debuggerModelToListItems = new Map(); |
| 16 /** @type {!Map.<!WebInspector.UIList.Item, !WebInspector.Target>} */ | 14 /** @type {!Map.<!WebInspector.UIList.Item, !WebInspector.Target>} */ |
| 17 this._listItemsToTargets = new Map(); | 15 this._listItemsToTargets = new Map(); |
| 18 /** @type {?WebInspector.UIList.Item} */ | 16 /** @type {?WebInspector.UIList.Item} */ |
| 19 this._selectedListItem = null; | 17 this._selectedListItem = null; |
| 20 this.threadList = new WebInspector.UIList(); | 18 this.threadList = new WebInspector.UIList(); |
| 21 this.threadList.show(this.element); | 19 this.threadList.show(this.element); |
| 22 WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebI
nspector.DebuggerModel.Events.DebuggerPaused, this._onDebuggerStateChanged, this
); | 20 WebInspector.targetManager.addModelListener( |
| 23 WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebI
nspector.DebuggerModel.Events.DebuggerResumed, this._onDebuggerStateChanged, thi
s); | 21 WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.DebuggerPa
used, this._onDebuggerStateChanged, |
| 24 WebInspector.targetManager.addModelListener(WebInspector.RuntimeModel, WebIn
spector.RuntimeModel.Events.ExecutionContextChanged, this._onExecutionContextCha
nged, this); | 22 this); |
| 23 WebInspector.targetManager.addModelListener( |
| 24 WebInspector.DebuggerModel, WebInspector.DebuggerModel.Events.DebuggerRe
sumed, this._onDebuggerStateChanged, |
| 25 this); |
| 26 WebInspector.targetManager.addModelListener( |
| 27 WebInspector.RuntimeModel, WebInspector.RuntimeModel.Events.ExecutionCon
textChanged, |
| 28 this._onExecutionContextChanged, this); |
| 25 WebInspector.context.addFlavorChangeListener(WebInspector.Target, this._targ
etChanged, this); | 29 WebInspector.context.addFlavorChangeListener(WebInspector.Target, this._targ
etChanged, this); |
| 26 WebInspector.targetManager.addEventListener(WebInspector.TargetManager.Event
s.NameChanged, this._targetNameChanged, this); | 30 WebInspector.targetManager.addEventListener( |
| 31 WebInspector.TargetManager.Events.NameChanged, this._targetNameChanged,
this); |
| 27 WebInspector.targetManager.observeTargets(this); | 32 WebInspector.targetManager.observeTargets(this); |
| 33 } |
| 34 |
| 35 /** |
| 36 * @override |
| 37 * @param {!WebInspector.Target} target |
| 38 */ |
| 39 targetAdded(target) { |
| 40 var debuggerModel = WebInspector.DebuggerModel.fromTarget(target); |
| 41 if (!debuggerModel) |
| 42 return; |
| 43 |
| 44 var listItem = new WebInspector.UIList.Item(this._titleForTarget(target), ''
); |
| 45 listItem.element.addEventListener('click', this._onListItemClick.bind(this,
listItem), false); |
| 46 var currentTarget = WebInspector.context.flavor(WebInspector.Target); |
| 47 if (currentTarget === target) |
| 48 this._selectListItem(listItem); |
| 49 |
| 50 this._debuggerModelToListItems.set(debuggerModel, listItem); |
| 51 this._listItemsToTargets.set(listItem, target); |
| 52 this.threadList.addItem(listItem); |
| 53 this._updateDebuggerState(debuggerModel); |
| 54 } |
| 55 |
| 56 /** |
| 57 * @override |
| 58 * @param {!WebInspector.Target} target |
| 59 */ |
| 60 targetRemoved(target) { |
| 61 var debuggerModel = WebInspector.DebuggerModel.fromTarget(target); |
| 62 if (!debuggerModel) |
| 63 return; |
| 64 var listItem = this._debuggerModelToListItems.remove(debuggerModel); |
| 65 if (listItem) { |
| 66 this._listItemsToTargets.remove(listItem); |
| 67 this.threadList.removeItem(listItem); |
| 68 } |
| 69 } |
| 70 |
| 71 /** |
| 72 * @param {!WebInspector.Event} event |
| 73 */ |
| 74 _targetNameChanged(event) { |
| 75 var target = /** @type {!WebInspector.Target} */ (event.data); |
| 76 var listItem = this._listItemForTarget(target); |
| 77 if (listItem) |
| 78 listItem.setTitle(this._titleForTarget(target)); |
| 79 } |
| 80 |
| 81 /** |
| 82 * @param {!WebInspector.Event} event |
| 83 */ |
| 84 _targetChanged(event) { |
| 85 var listItem = this._listItemForTarget(/** @type {!WebInspector.Target} */ (
event.data)); |
| 86 if (listItem) |
| 87 this._selectListItem(listItem); |
| 88 } |
| 89 |
| 90 /** |
| 91 * @param {!WebInspector.Target} target |
| 92 * @return {?WebInspector.UIList.Item} |
| 93 */ |
| 94 _listItemForTarget(target) { |
| 95 var debuggerModel = WebInspector.DebuggerModel.fromTarget(target); |
| 96 if (!debuggerModel) |
| 97 return null; |
| 98 return this._debuggerModelToListItems.get(debuggerModel) || null; |
| 99 } |
| 100 |
| 101 /** |
| 102 * @param {!WebInspector.Target} target |
| 103 * @return {string} |
| 104 */ |
| 105 _titleForTarget(target) { |
| 106 var executionContext = target.runtimeModel.defaultExecutionContext(); |
| 107 return executionContext && executionContext.label() ? executionContext.label
() : target.name(); |
| 108 } |
| 109 |
| 110 /** |
| 111 * @param {!WebInspector.Event} event |
| 112 */ |
| 113 _onDebuggerStateChanged(event) { |
| 114 var debuggerModel = /** @type {!WebInspector.DebuggerModel} */ (event.target
); |
| 115 this._updateDebuggerState(debuggerModel); |
| 116 } |
| 117 |
| 118 /** |
| 119 * @param {!WebInspector.Event} event |
| 120 */ |
| 121 _onExecutionContextChanged(event) { |
| 122 var executionContext = /** @type {!WebInspector.ExecutionContext} */ (event.
data); |
| 123 if (!executionContext.isDefault) |
| 124 return; |
| 125 var debuggerModel = |
| 126 /** @type {!WebInspector.DebuggerModel} */ (WebInspector.DebuggerModel.f
romTarget(executionContext.target())); |
| 127 var listItem = this._debuggerModelToListItems.get(debuggerModel); |
| 128 if (listItem && executionContext.label()) |
| 129 listItem.setTitle(executionContext.label()); |
| 130 } |
| 131 |
| 132 /** |
| 133 * @param {!WebInspector.DebuggerModel} debuggerModel |
| 134 */ |
| 135 _updateDebuggerState(debuggerModel) { |
| 136 var listItem = this._debuggerModelToListItems.get(debuggerModel); |
| 137 listItem.setSubtitle(WebInspector.UIString(debuggerModel.isPaused() ? 'pause
d' : '')); |
| 138 } |
| 139 |
| 140 /** |
| 141 * @param {!WebInspector.UIList.Item} listItem |
| 142 */ |
| 143 _selectListItem(listItem) { |
| 144 if (listItem === this._selectedListItem) |
| 145 return; |
| 146 |
| 147 if (this._selectedListItem) |
| 148 this._selectedListItem.setSelected(false); |
| 149 |
| 150 this._selectedListItem = listItem; |
| 151 listItem.setSelected(true); |
| 152 } |
| 153 |
| 154 /** |
| 155 * @param {!WebInspector.UIList.Item} listItem |
| 156 */ |
| 157 _onListItemClick(listItem) { |
| 158 WebInspector.context.setFlavor(WebInspector.Target, this._listItemsToTargets
.get(listItem)); |
| 159 listItem.element.scrollIntoViewIfNeeded(); |
| 160 } |
| 28 }; | 161 }; |
| 29 | |
| 30 WebInspector.ThreadsSidebarPane.prototype = { | |
| 31 /** | |
| 32 * @override | |
| 33 * @param {!WebInspector.Target} target | |
| 34 */ | |
| 35 targetAdded: function(target) | |
| 36 { | |
| 37 var debuggerModel = WebInspector.DebuggerModel.fromTarget(target); | |
| 38 if (!debuggerModel) | |
| 39 return; | |
| 40 | |
| 41 var listItem = new WebInspector.UIList.Item(this._titleForTarget(target)
, ""); | |
| 42 listItem.element.addEventListener("click", this._onListItemClick.bind(th
is, listItem), false); | |
| 43 var currentTarget = WebInspector.context.flavor(WebInspector.Target); | |
| 44 if (currentTarget === target) | |
| 45 this._selectListItem(listItem); | |
| 46 | |
| 47 this._debuggerModelToListItems.set(debuggerModel, listItem); | |
| 48 this._listItemsToTargets.set(listItem, target); | |
| 49 this.threadList.addItem(listItem); | |
| 50 this._updateDebuggerState(debuggerModel); | |
| 51 }, | |
| 52 | |
| 53 /** | |
| 54 * @override | |
| 55 * @param {!WebInspector.Target} target | |
| 56 */ | |
| 57 targetRemoved: function(target) | |
| 58 { | |
| 59 var debuggerModel = WebInspector.DebuggerModel.fromTarget(target); | |
| 60 if (!debuggerModel) | |
| 61 return; | |
| 62 var listItem = this._debuggerModelToListItems.remove(debuggerModel); | |
| 63 if (listItem) { | |
| 64 this._listItemsToTargets.remove(listItem); | |
| 65 this.threadList.removeItem(listItem); | |
| 66 } | |
| 67 }, | |
| 68 | |
| 69 /** | |
| 70 * @param {!WebInspector.Event} event | |
| 71 */ | |
| 72 _targetNameChanged: function(event) | |
| 73 { | |
| 74 var target = /** @type {!WebInspector.Target} */ (event.data); | |
| 75 var listItem = this._listItemForTarget(target); | |
| 76 if (listItem) | |
| 77 listItem.setTitle(this._titleForTarget(target)); | |
| 78 }, | |
| 79 | |
| 80 /** | |
| 81 * @param {!WebInspector.Event} event | |
| 82 */ | |
| 83 _targetChanged: function(event) | |
| 84 { | |
| 85 var listItem = this._listItemForTarget(/** @type {!WebInspector.Target}
*/ (event.data)); | |
| 86 if (listItem) | |
| 87 this._selectListItem(listItem); | |
| 88 }, | |
| 89 | |
| 90 /** | |
| 91 * @param {!WebInspector.Target} target | |
| 92 * @return {?WebInspector.UIList.Item} | |
| 93 */ | |
| 94 _listItemForTarget: function(target) | |
| 95 { | |
| 96 var debuggerModel = WebInspector.DebuggerModel.fromTarget(target); | |
| 97 if (!debuggerModel) | |
| 98 return null; | |
| 99 return this._debuggerModelToListItems.get(debuggerModel) || null; | |
| 100 }, | |
| 101 | |
| 102 /** | |
| 103 * @param {!WebInspector.Target} target | |
| 104 * @return {string} | |
| 105 */ | |
| 106 _titleForTarget: function(target) | |
| 107 { | |
| 108 var executionContext = target.runtimeModel.defaultExecutionContext(); | |
| 109 return executionContext && executionContext.label() ? executionContext.l
abel() : target.name(); | |
| 110 }, | |
| 111 | |
| 112 /** | |
| 113 * @param {!WebInspector.Event} event | |
| 114 */ | |
| 115 _onDebuggerStateChanged: function(event) | |
| 116 { | |
| 117 var debuggerModel = /** @type {!WebInspector.DebuggerModel} */ (event.ta
rget); | |
| 118 this._updateDebuggerState(debuggerModel); | |
| 119 }, | |
| 120 | |
| 121 /** | |
| 122 * @param {!WebInspector.Event} event | |
| 123 */ | |
| 124 _onExecutionContextChanged: function(event) | |
| 125 { | |
| 126 var executionContext = /** @type {!WebInspector.ExecutionContext} */ (ev
ent.data); | |
| 127 if (!executionContext.isDefault) | |
| 128 return; | |
| 129 var debuggerModel = /** @type {!WebInspector.DebuggerModel} */ (WebInspe
ctor.DebuggerModel.fromTarget(executionContext.target())); | |
| 130 var listItem = this._debuggerModelToListItems.get(debuggerModel); | |
| 131 if (listItem && executionContext.label()) | |
| 132 listItem.setTitle(executionContext.label()); | |
| 133 }, | |
| 134 | |
| 135 /** | |
| 136 * @param {!WebInspector.DebuggerModel} debuggerModel | |
| 137 */ | |
| 138 _updateDebuggerState: function(debuggerModel) | |
| 139 { | |
| 140 var listItem = this._debuggerModelToListItems.get(debuggerModel); | |
| 141 listItem.setSubtitle(WebInspector.UIString(debuggerModel.isPaused() ? "p
aused" : "")); | |
| 142 }, | |
| 143 | |
| 144 /** | |
| 145 * @param {!WebInspector.UIList.Item} listItem | |
| 146 */ | |
| 147 _selectListItem: function(listItem) | |
| 148 { | |
| 149 if (listItem === this._selectedListItem) | |
| 150 return; | |
| 151 | |
| 152 if (this._selectedListItem) | |
| 153 this._selectedListItem.setSelected(false); | |
| 154 | |
| 155 this._selectedListItem = listItem; | |
| 156 listItem.setSelected(true); | |
| 157 }, | |
| 158 | |
| 159 /** | |
| 160 * @param {!WebInspector.UIList.Item} listItem | |
| 161 */ | |
| 162 _onListItemClick: function(listItem) | |
| 163 { | |
| 164 WebInspector.context.setFlavor(WebInspector.Target, this._listItemsToTar
gets.get(listItem)); | |
| 165 listItem.element.scrollIntoViewIfNeeded(); | |
| 166 }, | |
| 167 | |
| 168 | |
| 169 __proto__: WebInspector.VBox.prototype | |
| 170 }; | |
| OLD | NEW |