Skip to content

Commit 24be6e7

Browse files
author
Chris K
committed
Listen to 'active-tab'.
1 parent 2f9e55e commit 24be6e7

File tree

4 files changed

+82
-33
lines changed

4 files changed

+82
-33
lines changed

src/ecma-debugger/dominspection/templates.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,10 @@
274274
}
275275
case DOCUMENT_NODE:
276276
{
277+
if (ev_listener)
278+
tree += "<div class='search-match dom-search document' " +
279+
"obj-id='" + node[ID] + "'>" +
280+
"document" + ev_listener + "</div>";
277281
break;
278282
}
279283
case DOCUMENT_TYPE_NODE:

src/ecma-debugger/evlistenertooltip/evlisteners.js

Lines changed: 63 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@ cls.EventName = function(name)
1717

1818
cls.EvenetListeners = function(view)
1919
{
20+
this._init(view);
21+
};
22+
23+
cls.EvenetListeners.prototype = new function()
24+
{
25+
2026
/* interface */
2127

2228
this.update = function() {};
@@ -50,6 +56,33 @@ cls.EvenetListeners = function(view)
5056
5157
*/
5258

59+
var DELAY = 150;
60+
61+
this._on_new_rts = function()
62+
{
63+
if (!this._on_new_rts_timeout)
64+
this._on_new_rts_timeout = setTimeout(this._handle_new_rts_bound, DELAY);
65+
};
66+
67+
this._handle_new_rts = function()
68+
{
69+
var rt_ids = window.runtimes.get_dom_runtime_ids();
70+
var cur_rt_ids = this._rts.map(this._get_rt_id);
71+
var new_rt_ids = rt_ids.filter(function(id) { return !cur_rt_ids.contains(id); });
72+
var live_rts = this._rts.filter(function(rt) { return rt_ids.contains(rt.rt_id); });
73+
if (live_rts.length != this._rts.length)
74+
{
75+
this._rts = live_rts;
76+
this._view.update();
77+
}
78+
if (new_rt_ids)
79+
this._update_rt_list(new_rt_ids);
80+
81+
this._on_new_rts_timeout = 0;
82+
};
83+
84+
this._get_rt_id = function(rt) { return rt.rt_id };
85+
5386
this._update_rt_list = function(rt_id_list)
5487
{
5588
var ctx = {rt_id_list: rt_id_list, rt_map: {}, win_id_map: {}, expanded_map: {}};
@@ -104,33 +137,34 @@ cls.EvenetListeners = function(view)
104137
var EVENT_NAMES = 2;
105138
var rt_id = message[RUNTIME_ID];
106139
var obj_id = message[OBJECT_ID];
107-
ctx.rt_map[rt_id] = null;
108-
if (message[EVENT_NAMES] && message[EVENT_NAMES].length)
140+
var ev_list = message[EVENT_NAMES];
141+
var rt_listeners = {rt_id: rt_id,
142+
obj_id: obj_id,
143+
window_id: ctx.win_id_map[rt_id]};
144+
ctx.expanded_map[rt_id] = [];
145+
if (ev_list && ev_list.length)
109146
{
110-
ctx.expanded_map[rt_id] = [];
111-
ctx.rt_map[message[RUNTIME_ID]] =
147+
rt_listeners.event_names = ev_list.map(function(name)
112148
{
113-
rt_id: rt_id,
114-
obj_id: obj_id,
115-
window_id: ctx.win_id_map[rt_id],
116-
event_names: message[EVENT_NAMES].map(function(name)
149+
var ev_n_obj = new cls.EventName(name);
150+
if (this.is_expanded(rt_id, name))
117151
{
118-
var ev_n_obj = new cls.EventName(name);
119-
if (this.is_expanded(rt_id, name))
120-
{
121-
ctx.expanded_map[rt_id].push(name);
122-
ev_n_obj.rt_id = rt_id;
123-
ev_n_obj.obj_id = obj_id;
124-
ev_n_obj.model = new cls.InspectableDOMNode(rt_id, obj_id);
125-
var search_cb = this._handle_dom_search.bind(this,
126-
ev_n_obj,
127-
ctx.handle_expand_listener);
128-
ev_n_obj.model.search(name, SEARCH_TYPE_EVENT, 0, 0, search_cb);
129-
}
130-
return ev_n_obj;
131-
}, this),
132-
};
152+
ctx.expanded_map[rt_id].push(name);
153+
ev_n_obj.rt_id = rt_id;
154+
ev_n_obj.obj_id = obj_id;
155+
ev_n_obj.model = new cls.InspectableDOMNode(rt_id, obj_id);
156+
var search_cb = this._handle_dom_search.bind(this,
157+
ev_n_obj,
158+
ctx.handle_expand_listener);
159+
ev_n_obj.model.search(name, SEARCH_TYPE_EVENT, 0, 0, search_cb);
160+
}
161+
return ev_n_obj;
162+
}, this);
133163
}
164+
else
165+
rt_listeners.event_names = [];
166+
167+
ctx.rt_map[rt_id] = rt_listeners;
134168
this._check_update_ctx(ctx);
135169
}
136170
else
@@ -245,14 +279,9 @@ cls.EvenetListeners = function(view)
245279
{
246280
this._rts = [];
247281
this._win_id_map = {};
248-
var rt_id_list = window.runtimes.get_runtime_ids();
282+
var rt_id_list = window.runtimes.get_dom_runtime_ids();
249283
if (rt_id_list.length)
250-
{
251-
window.messages.remove_listener('new-top-runtime', this._update_bound);
252284
this._update_rt_list(rt_id_list);
253-
}
254-
else
255-
window.messages.add_listener('new-top-runtime', this._update_bound);
256285
};
257286

258287
this.get_data = function()
@@ -304,14 +333,16 @@ cls.EvenetListeners = function(view)
304333

305334
this._init = function(view)
306335
{
336+
this._on_new_rts_timeout = 0;
337+
this._handle_new_rts_bound = this._handle_new_rts.bind(this);
307338
this._rts = [];
308339
this._win_id_map = {};
309340
this._expand_tree = {};
310341
this._view = view;
311342
this._tagman = window.tag_manager;
312343
this._esdb = window.services["ecmascript-debugger"];
313-
this._update_bound = this.update.bind(this);
314-
}
344+
window.messages.add_listener("active-tab", this._on_new_rts.bind(this));
345+
};
315346

316-
this._init(view);
347+
317348
};

src/ecma-debugger/evlistenertooltip/evlistenertemplates.js

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
["div",
88
["div",
99
["span",
10-
["span", "Update"], // TODO ui string
10+
["span", "Update all"], // TODO ui string
1111
"class" , "ui-button",
1212
"unselectable", "on",
1313
"tabindex", "1",
@@ -18,8 +18,14 @@
1818

1919
this._ev_names_list = function(ev_obj, index, ev_obj_list)
2020
{
21+
var rt = window.runtimes.getRuntime(ev_obj.rt_id);
2122
return (
2223
["li",
24+
["h2",
25+
["span", rt && (rt.title || rt.host),
26+
"data-tooltip", "url-tooltip",
27+
"data-tooltip-text", rt && rt.uri],
28+
"class", "ev-listener-rt-title"],
2329
["ul", ev_obj.event_names.map(this._ev_name_item, this),
2430
"data-rt-id", String(ev_obj.rt_id),
2531
"data-obj-id", String(ev_obj.obj_id)]]);

src/ecma-debugger/runtimes.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1112,6 +1112,14 @@ cls.EcmascriptDebugger["6.0"].Runtimes = function(service_version)
11121112
return this.getRuntimeIdsFromWindow(__selected_window);
11131113
};
11141114

1115+
this.get_dom_runtime_ids = function()
1116+
{
1117+
return this.getRuntimeIdsFromWindow(__selected_window).filter(function(rt_id)
1118+
{
1119+
return __runtimes[rt_id].description != "extensionjs";
1120+
});
1121+
};
1122+
11151123
this.getRuntimeIdWithURL = function(url)
11161124
{
11171125
var r = '';

0 commit comments

Comments
 (0)