blob: 30383c563e6187ff4e8a3727a5c442f01763efe9 [file] [log] [blame]
// Copyright 2015 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.
/**
* @constructor
* @extends {WebInspector.SidebarPane}
*/
WebInspector.ObjectEventListenersSidebarPane = function()
{
WebInspector.SidebarPane.call(this, "Event Listeners");
this.element.classList.add("event-listeners-sidebar-pane");
this._refreshButton = new WebInspector.ToolbarButton(WebInspector.UIString("Refresh"), "refresh-toolbar-item");
this._refreshButton.addEventListener("click", this._refreshClick.bind(this));
this._refreshButton.setEnabled(false);
this.toolbar().appendToolbarItem(this._refreshButton);
this._eventListenersView = new WebInspector.EventListenersView(this.element);
}
WebInspector.ObjectEventListenersSidebarPane._objectGroupName = "object-event-listeners-sidebar-pane";
WebInspector.ObjectEventListenersSidebarPane.prototype = {
update: function()
{
if (this._lastRequestedContext) {
this._lastRequestedContext.target().runtimeAgent().releaseObjectGroup(WebInspector.ObjectEventListenersSidebarPane._objectGroupName);
delete this._lastRequestedContext;
}
var executionContext = WebInspector.context.flavor(WebInspector.ExecutionContext);
if (!executionContext) {
this._eventListenersView.reset();
this._eventListenersView.addEmptyHolderIfNeeded();
return;
}
this._lastRequestedContext = executionContext;
Promise.all([this._windowObjectInContext(executionContext)]).then(this._eventListenersView.addObjects.bind(this._eventListenersView));
},
wasShown: function()
{
WebInspector.SidebarPane.prototype.wasShown.call(this);
WebInspector.context.addFlavorChangeListener(WebInspector.ExecutionContext, this.update, this);
this._refreshButton.setEnabled(true);
this.update();
},
willHide: function()
{
WebInspector.SidebarPane.prototype.willHide.call(this);
WebInspector.context.removeFlavorChangeListener(WebInspector.ExecutionContext, this.update, this);
this._refreshButton.setEnabled(false);
},
/**
* @param {!WebInspector.ExecutionContext} executionContext
* @return {!Promise<!WebInspector.RemoteObject>} object
*/
_windowObjectInContext: function(executionContext)
{
return new Promise(windowObjectInContext);
/**
* @param {function(?)} fulfill
* @param {function(*)} reject
*/
function windowObjectInContext(fulfill, reject)
{
executionContext.evaluate("self", WebInspector.ObjectEventListenersSidebarPane._objectGroupName, false, true, false, false, mycallback);
/**
* @param {?WebInspector.RemoteObject} object
*/
function mycallback(object)
{
if (object)
fulfill(object);
else
reject(null);
}
}
},
/**
* @param {!WebInspector.Event} event
*/
_refreshClick: function(event)
{
event.consume();
this.update();
},
__proto__: WebInspector.SidebarPane.prototype
}