Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(197)

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/sources/ThreadsSidebarPane.js

Issue 2174863003: DevTools: traverse widget hierarchy to reveal views. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: lcean Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 4
5 /** 5 /**
6 * @constructor 6 * @constructor
7 * @extends {WebInspector.View} 7 * @extends {WebInspector.View}
8 * @implements {WebInspector.TargetManager.Observer} 8 * @implements {WebInspector.TargetManager.Observer}
9 */ 9 */
10 WebInspector.ThreadsSidebarPane = function() 10 WebInspector.ThreadsSidebarPane = function()
11 { 11 {
12 WebInspector.View.call(this, WebInspector.UIString("Threads")); 12 WebInspector.View.call(this, WebInspector.UIString("Threads"));
13 this.requestSetVisible(false);
14 13
15 /** @type {!Map.<!WebInspector.DebuggerModel, !WebInspector.UIList.Item>} */ 14 /** @type {!Map.<!WebInspector.DebuggerModel, !WebInspector.UIList.Item>} */
16 this._debuggerModelToListItems = new Map(); 15 this._debuggerModelToListItems = new Map();
17 /** @type {!Map.<!WebInspector.UIList.Item, !WebInspector.Target>} */ 16 /** @type {!Map.<!WebInspector.UIList.Item, !WebInspector.Target>} */
18 this._listItemsToTargets = new Map(); 17 this._listItemsToTargets = new Map();
19 /** @type {?WebInspector.UIList.Item} */ 18 /** @type {?WebInspector.UIList.Item} */
20 this._selectedListItem = null; 19 this._selectedListItem = null;
21 this.threadList = new WebInspector.UIList(); 20 this.threadList = new WebInspector.UIList();
22 this.threadList.show(this.element); 21 this.threadList.show(this.element);
23 WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebI nspector.DebuggerModel.Events.DebuggerPaused, this._onDebuggerStateChanged, this ); 22 WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebI nspector.DebuggerModel.Events.DebuggerPaused, this._onDebuggerStateChanged, this );
24 WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebI nspector.DebuggerModel.Events.DebuggerResumed, this._onDebuggerStateChanged, thi s); 23 WebInspector.targetManager.addModelListener(WebInspector.DebuggerModel, WebI nspector.DebuggerModel.Events.DebuggerResumed, this._onDebuggerStateChanged, thi s);
25 WebInspector.targetManager.addModelListener(WebInspector.RuntimeModel, WebIn spector.RuntimeModel.Events.ExecutionContextChanged, this._onExecutionContextCha nged, this); 24 WebInspector.targetManager.addModelListener(WebInspector.RuntimeModel, WebIn spector.RuntimeModel.Events.ExecutionContextChanged, this._onExecutionContextCha nged, this);
26 WebInspector.context.addFlavorChangeListener(WebInspector.Target, this._targ etChanged, this); 25 WebInspector.context.addFlavorChangeListener(WebInspector.Target, this._targ etChanged, this);
27 WebInspector.targetManager.observeTargets(this); 26 WebInspector.targetManager.observeTargets(this);
28 } 27 }
29 28
30 WebInspector.ThreadsSidebarPane.prototype = { 29 WebInspector.ThreadsSidebarPane.prototype = {
31 /** 30 /**
32 * @override 31 * @override
33 * @param {!WebInspector.Target} target 32 * @param {!WebInspector.Target} target
34 */ 33 */
35 targetAdded: function(target) 34 targetAdded: function(target)
36 { 35 {
37 var debuggerModel = WebInspector.DebuggerModel.fromTarget(target) 36 var debuggerModel = WebInspector.DebuggerModel.fromTarget(target)
38 if (!debuggerModel) { 37 if (!debuggerModel)
39 this._updateVisibility();
40 return; 38 return;
41 }
42 39
43 var executionContext = target.runtimeModel.defaultExecutionContext(); 40 var executionContext = target.runtimeModel.defaultExecutionContext();
44 var label = executionContext && executionContext.label() ? executionCont ext.label() : target.name(); 41 var label = executionContext && executionContext.label() ? executionCont ext.label() : target.name();
45 var listItem = new WebInspector.UIList.Item(label, ""); 42 var listItem = new WebInspector.UIList.Item(label, "");
46 listItem.element.addEventListener("click", this._onListItemClick.bind(th is, listItem), false); 43 listItem.element.addEventListener("click", this._onListItemClick.bind(th is, listItem), false);
47 var currentTarget = WebInspector.context.flavor(WebInspector.Target); 44 var currentTarget = WebInspector.context.flavor(WebInspector.Target);
48 if (currentTarget === target) 45 if (currentTarget === target)
49 this._selectListItem(listItem); 46 this._selectListItem(listItem);
50 47
51 this._debuggerModelToListItems.set(debuggerModel, listItem); 48 this._debuggerModelToListItems.set(debuggerModel, listItem);
52 this._listItemsToTargets.set(listItem, target); 49 this._listItemsToTargets.set(listItem, target);
53 this.threadList.addItem(listItem); 50 this.threadList.addItem(listItem);
54 this._updateDebuggerState(debuggerModel); 51 this._updateDebuggerState(debuggerModel);
55 this._updateVisibility();
56 },
57
58 _updateVisibility: function()
59 {
60 this._wasVisibleAtLeastOnce = this._wasVisibleAtLeastOnce || this._debug gerModelToListItems.size > 1;
61 this.requestSetVisible(this._wasVisibleAtLeastOnce);
62 }, 52 },
63 53
64 /** 54 /**
65 * @override 55 * @override
66 * @param {!WebInspector.Target} target 56 * @param {!WebInspector.Target} target
67 */ 57 */
68 targetRemoved: function(target) 58 targetRemoved: function(target)
69 { 59 {
70 var debuggerModel = WebInspector.DebuggerModel.fromTarget(target) 60 var debuggerModel = WebInspector.DebuggerModel.fromTarget(target)
71 if (!debuggerModel) 61 if (!debuggerModel)
72 return; 62 return;
73 var listItem = this._debuggerModelToListItems.remove(debuggerModel); 63 var listItem = this._debuggerModelToListItems.remove(debuggerModel);
74 if (listItem) { 64 if (listItem) {
75 this._listItemsToTargets.remove(listItem); 65 this._listItemsToTargets.remove(listItem);
76 this.threadList.removeItem(listItem); 66 this.threadList.removeItem(listItem);
77 } 67 }
78 this._updateVisibility();
79 }, 68 },
80 69
81 /** 70 /**
82 * @param {!WebInspector.Event} event 71 * @param {!WebInspector.Event} event
83 */ 72 */
84 _targetChanged: function(event) 73 _targetChanged: function(event)
85 { 74 {
86 var newTarget = /** @type {!WebInspector.Target} */(event.data); 75 var newTarget = /** @type {!WebInspector.Target} */(event.data);
87 var debuggerModel = WebInspector.DebuggerModel.fromTarget(newTarget) 76 var debuggerModel = WebInspector.DebuggerModel.fromTarget(newTarget)
88 if (!debuggerModel) 77 if (!debuggerModel)
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 */ 132 */
144 _onListItemClick: function(listItem) 133 _onListItemClick: function(listItem)
145 { 134 {
146 WebInspector.context.setFlavor(WebInspector.Target, this._listItemsToTar gets.get(listItem)); 135 WebInspector.context.setFlavor(WebInspector.Target, this._listItemsToTar gets.get(listItem));
147 listItem.element.scrollIntoViewIfNeeded(); 136 listItem.element.scrollIntoViewIfNeeded();
148 }, 137 },
149 138
150 139
151 __proto__: WebInspector.View.prototype 140 __proto__: WebInspector.View.prototype
152 } 141 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698