WebInspector.LinkifierFormatter = function()
{
}
WebInspector.LinkifierFormatter.prototype = {
formatLiveAnchor: function(anchor, uiLocation) { }
}
WebInspector.Linkifier = function(formatter)
{
this._formatter = formatter || new WebInspector.Linkifier.DefaultFormatter(WebInspector.Linkifier.MaxLengthForDisplayedURLs);
this._liveLocations = [];
}
WebInspector.Linkifier.prototype = {
linkifyLocation: function(sourceURL, lineNumber, columnNumber, classes)
{
var rawLocation = WebInspector.debuggerModel.createRawLocationByURL(sourceURL, lineNumber, columnNumber || 0);
if (!rawLocation)
return WebInspector.linkifyResourceAsNode(sourceURL, lineNumber, classes);
return this.linkifyRawLocation(rawLocation, classes);
},
linkifyRawLocation: function(rawLocation, classes)
{
var script = WebInspector.debuggerModel.scriptForId(rawLocation.scriptId);
if (!script)
return null;
var anchor = WebInspector.linkifyURLAsNode("", "", classes, false);
var liveLocation = script.createLiveLocation(rawLocation, this._updateAnchor.bind(this, anchor));
this._liveLocations.push(liveLocation);
return anchor;
},
linkifyCSSRuleLocation: function(rule)
{
var anchor = WebInspector.linkifyURLAsNode("", "", "", false);
var liveLocation = WebInspector.cssModel.createLiveLocation(rule, this._updateAnchor.bind(this, anchor));
if (!liveLocation)
return null;
this._liveLocations.push(liveLocation);
return anchor;
},
reset: function()
{
for (var i = 0; i < this._liveLocations.length; ++i)
this._liveLocations[i].dispose();
this._liveLocations = [];
},
_updateAnchor: function(anchor, uiLocation)
{
anchor.preferredPanel = "scripts";
anchor.href = sanitizeHref(uiLocation.uiSourceCode.originURL());
anchor.uiSourceCode = uiLocation.uiSourceCode;
anchor.lineNumber = uiLocation.lineNumber;
this._formatter.formatLiveAnchor(anchor, uiLocation);
}
}
WebInspector.Linkifier.DefaultFormatter = function(maxLength)
{
this._maxLength = maxLength;
}
WebInspector.Linkifier.DefaultFormatter.prototype = {
formatLiveAnchor: function(anchor, uiLocation)
{
var text = WebInspector.formatLinkText(uiLocation.uiSourceCode.originURL(), uiLocation.lineNumber);
if (this._maxLength)
text = text.centerEllipsizedToLength(this._maxLength);
anchor.textContent = text;
var titleText = uiLocation.uiSourceCode.originURL();
if (typeof uiLocation.lineNumber === "number")
titleText += ":" + (uiLocation.lineNumber + 1);
anchor.title = titleText;
},
__proto__: WebInspector.LinkifierFormatter.prototype
}
WebInspector.Linkifier.DefaultCSSFormatter = function()
{
WebInspector.Linkifier.DefaultFormatter.call(this);
}
WebInspector.Linkifier.DefaultCSSFormatter.prototype = {
formatLiveAnchor: function(anchor, uiLocation)
{
WebInspector.Linkifier.DefaultFormatter.prototype.formatLiveAnchor.call(this, anchor, uiLocation);
anchor.classList.add("webkit-html-resource-link");
anchor.setAttribute("data-uncopyable", anchor.textContent);
anchor.textContent = "";
},
__proto__: WebInspector.Linkifier.DefaultFormatter.prototype
}
WebInspector.Linkifier.MaxLengthForDisplayedURLs = 150;