JavaScriptContextManager.js [plain text]
WebInspector.JavaScriptContextManager = function(resourceTreeModel, consoleView)
{
resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.FrameAdded, this._frameAdded, this);
resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.FrameNavigated, this._frameNavigated, this);
resourceTreeModel.addEventListener(WebInspector.ResourceTreeModel.EventTypes.FrameDetached, this._frameDetached, this);
this._consoleView = consoleView;
this._frameIdToContext = {};
}
WebInspector.JavaScriptContextManager.prototype = {
_frameAdded: function(event)
{
var frame = event.data;
var context = new WebInspector.FrameEvaluationContext(frame);
this._frameIdToContext[frame.id] = context;
this._consoleView.addContext(context);
},
_frameNavigated: function(event)
{
var frame = event.data;
var context = this._frameIdToContext[frame.id];
if (context)
context._frameNavigated(frame);
},
_frameDetached: function(event)
{
var frame = event.data;
var context = this._frameIdToContext[frame.id];
if (!context)
return;
this._consoleView.removeContext(context);
delete this._frameIdToContext[frame.id];
},
}
WebInspector.JavaScriptContextManager.prototype.__proto__ = WebInspector.Object.prototype;
WebInspector.FrameEvaluationContext = function(frame)
{
this._frame = frame;
}
WebInspector.FrameEvaluationContext.EventTypes = {
Updated: "updated"
}
WebInspector.FrameEvaluationContext.prototype =
{
_frameNavigated: function(frame)
{
this._frame = frame;
this.dispatchEventToListeners(WebInspector.FrameEvaluationContext.EventTypes.Updated, this);
},
get frameId()
{
return this._frame.id;
},
get url()
{
return this._frame.url;
},
get displayName()
{
if (!this._frame.parentFrame)
return "<top frame>";
var name = this._frame.name || "";
var subtitle = new WebInspector.ParsedURL(this._frame.url).displayName;
if (subtitle) {
if (!name)
return subtitle;
return name + "( " + subtitle + " )";
}
return "<iframe>";
}
}
WebInspector.FrameEvaluationContext.prototype.__proto__ = WebInspector.Object.prototype;