Diff
Modified: trunk/Source/WebCore/ChangeLog (101340 => 101341)
--- trunk/Source/WebCore/ChangeLog 2011-11-29 09:23:28 UTC (rev 101340)
+++ trunk/Source/WebCore/ChangeLog 2011-11-29 09:27:27 UTC (rev 101341)
@@ -1,3 +1,46 @@
+2011-11-28 Andrey Kosyakov <[email protected]>
+
+ Web Inspector: remove WebInspector.linkifyURL and TreeElement.titleHTML
+ https://bugs.webkit.org/show_bug.cgi?id=73217
+
+ Reviewed by Pavel Feldman.
+
+ * inspector/front-end/AuditFormatters.js:
+ (WebInspector.applyFormatters):
+ * inspector/front-end/AuditResultView.js:
+ (WebInspector.AuditCategoryResultPane.prototype._appendResult):
+ * inspector/front-end/AuditRules.js:
+ (WebInspector.AuditRules.GzipRule.prototype.doRun):
+ (WebInspector.AuditRules.UnusedCssRule.prototype.doRun.evalCallback.selectorsCallback):
+ (WebInspector.AuditRules.ImageDimensionsRule.prototype.doRun):
+ (WebInspector.AuditRules.CssInHeadRule.prototype.doRun):
+ * inspector/front-end/AuditsPanel.js:
+ (WebInspector.AuditRuleResult):
+ (WebInspector.AuditRuleResult.linkifyDisplayName):
+ (WebInspector.AuditRuleResult.prototype.addSnippet):
+ (WebInspector.AuditRuleResult.prototype.addFormatted):
+ (WebInspector.AuditRuleResult.prototype._append):
+ * inspector/front-end/ElementsTreeOutline.js:
+ (WebInspector.ElementsTreeElement.prototype.adjustCollapsedRange):
+ * inspector/front-end/ObjectPropertiesSection.js:
+ (WebInspector.ObjectPropertiesSection.prototype.updateProperties):
+ * inspector/front-end/ResourceHeadersView.js:
+ (WebInspector.ResourceHeadersView.prototype._formatHeader):
+ (WebInspector.ResourceHeadersView.prototype._formatParameter):
+ (WebInspector.ResourceHeadersView.prototype._refreshURL):
+ (WebInspector.ResourceHeadersView.prototype._refreshUrlFragment):
+ (WebInspector.ResourceHeadersView.prototype._refreshRequestPayload):
+ (WebInspector.ResourceHeadersView.prototype._refreshParms):
+ (WebInspector.ResourceHeadersView.prototype._refreshHTTPInformation):
+ (WebInspector.ResourceHeadersView.prototype._refreshHeaders):
+ * inspector/front-end/ResourceUtils.js:
+ * inspector/front-end/StylesSidebarPane.js:
+ (WebInspector.ComputedStylePropertiesSection.prototype.rebuildComputedTrace):
+ * inspector/front-end/WorkersSidebarPane.js:
+ (WebInspector.WorkersSidebarPane.prototype.addWorker):
+ * inspector/front-end/treeoutline.js:
+ (TreeElement.prototype._setListItemNodeContent):
+
2011-11-29 Sheriff Bot <[email protected]>
Unreviewed, rolling out r101302.
Modified: trunk/Source/WebCore/inspector/front-end/AuditFormatters.js (101340 => 101341)
--- trunk/Source/WebCore/inspector/front-end/AuditFormatters.js 2011-11-29 09:23:28 UTC (rev 101340)
+++ trunk/Source/WebCore/inspector/front-end/AuditFormatters.js 2011-11-29 09:27:27 UTC (rev 101341)
@@ -43,6 +43,8 @@
break;
case "object":
+ if (value instanceof Node)
+ return value;
if (value instanceof Array) {
formatter = WebInspector.AuditFormatters.concat;
args = value;
Modified: trunk/Source/WebCore/inspector/front-end/AuditResultView.js (101340 => 101341)
--- trunk/Source/WebCore/inspector/front-end/AuditResultView.js 2011-11-29 09:23:28 UTC (rev 101340)
+++ trunk/Source/WebCore/inspector/front-end/AuditResultView.js 2011-11-29 09:27:27 UTC (rev 101341)
@@ -108,7 +108,7 @@
}
var treeElement = new TreeElement(null, null, !!result.children);
- treeElement.titleHTML = title;
+ treeElement.title = title;
parentTreeElement.appendChild(treeElement);
if (result.className)
Modified: trunk/Source/WebCore/inspector/front-end/AuditRules.js (101340 => 101341)
--- trunk/Source/WebCore/inspector/front-end/AuditRules.js 2011-11-29 09:23:28 UTC (rev 101340)
+++ trunk/Source/WebCore/inspector/front-end/AuditRules.js 2011-11-29 09:27:27 UTC (rev 101341)
@@ -92,7 +92,7 @@
}
var savings = 2 * size / 3;
totalSavings += savings;
- summary.addChild(String.sprintf("%s could save ~%s", WebInspector.AuditRuleResult.linkifyDisplayName(resource.url), Number.bytesToString(savings)));
+ summary.addFormatted("%r could save ~%s", resource.url, Number.bytesToString(savings));
result.violationCount++;
}
}
@@ -352,7 +352,7 @@
var pctUnused = Math.round(100 * unusedStylesheetSize / stylesheetSize);
if (!summary)
summary = result.addChild("", true);
- var entry = summary.addChild(String.sprintf("%s: %s (%d%%) is not used by the current page.", url, Number.bytesToString(unusedStylesheetSize), pctUnused));
+ var entry = summary.addFormatted("%s: %s (%d%%) is not used by the current page.", url, Number.bytesToString(unusedStylesheetSize), pctUnused);
for (var j = 0; j < unusedRules.length; ++j)
entry.addSnippet(unusedRules[j]);
@@ -681,10 +681,10 @@
{
for (var url in urlToNoDimensionCount) {
var entry = entry || result.addChild("A width and height should be specified for all images in order to speed up page display. The following image(s) are missing a width and/or height:", true);
- var value = WebInspector.AuditRuleResult.linkifyDisplayName(url);
+ var format = "%r";
if (urlToNoDimensionCount[url] > 1)
- value += String.sprintf(" (%d uses)", urlToNoDimensionCount[url]);
- entry.addChild(value);
+ format += " (%d uses)";
+ entry.addFormatted(format, url, urlToNoDimensionCount[url]);
result.violationCount++;
}
callback(entry ? result : null);
@@ -801,11 +801,11 @@
for (var url in evalResult) {
var urlViolations = evalResult[url];
if (urlViolations[0]) {
- result.addChild(String.sprintf("%s style block(s) in the %s body should be moved to the document head.", urlViolations[0], WebInspector.AuditRuleResult.linkifyDisplayName(url)));
+ result.addFormatted("%s style block(s) in the %r body should be moved to the document head.", urlViolations[0], url);
result.violationCount += urlViolations[0];
}
for (var i = 0; i < urlViolations[1].length; ++i)
- result.addChild(String.sprintf("Link node %s should be moved to the document head in %s", WebInspector.AuditRuleResult.linkifyDisplayName(urlViolations[1][i]), WebInspector.AuditRuleResult.linkifyDisplayName(url)));
+ result.addFormatted("Link node %r should be moved to the document head in %r", urlViolations[1][i], url);
result.violationCount += urlViolations[1].length;
}
summary.value = String.sprintf("CSS in the document body adversely impacts rendering performance.");
Modified: trunk/Source/WebCore/inspector/front-end/AuditsPanel.js (101340 => 101341)
--- trunk/Source/WebCore/inspector/front-end/AuditsPanel.js 2011-11-29 09:23:28 UTC (rev 101340)
+++ trunk/Source/WebCore/inspector/front-end/AuditsPanel.js 2011-11-29 09:27:27 UTC (rev 101341)
@@ -386,11 +386,17 @@
this.className = className;
this.expanded = expanded;
this.violationCount = 0;
+ this._formatters = {
+ r: WebInspector.AuditRuleResult.linkifyDisplayName
+ };
+ var standardFormatters = Object.keys(String.standardFormatters);
+ for (var i = 0; i < standardFormatters.length; ++i)
+ this._formatters[standardFormatters[i]] = String.standardFormatters[standardFormatters[i]];
}
WebInspector.AuditRuleResult.linkifyDisplayName = function(url)
{
- return WebInspector.linkifyURL(url, WebInspector.displayNameForURL(url));
+ return WebInspector.linkifyURLAsNode(url, WebInspector.displayNameForURL(url));
}
WebInspector.AuditRuleResult.resourceDomain = function(domain)
@@ -426,6 +432,29 @@
addSnippet: function(snippet)
{
return this.addChild(snippet, false, "source-code");
+ },
+
+ /**
+ * @param {string} format
+ * @param {...*} vararg
+ */
+ addFormatted: function(format, vararg)
+ {
+ var substitutions = Array.prototype.slice.call(arguments, 1);
+ var fragment = document.createDocumentFragment();
+
+ var formattedResult = String.format(format, substitutions, this._formatters, fragment, this._append).formattedResult;
+ if (formattedResult instanceof Node)
+ formattedResult.normalize();
+ return this.addChild(formattedResult);
+ },
+
+ _append: function(a, b)
+ {
+ if (!(b instanceof Node))
+ b = document.createTextNode(b);
+ a.appendChild(b);
+ return a;
}
}
Modified: trunk/Source/WebCore/inspector/front-end/ElementsTreeOutline.js (101340 => 101341)
--- trunk/Source/WebCore/inspector/front-end/ElementsTreeOutline.js 2011-11-29 09:23:28 UTC (rev 101340)
+++ trunk/Source/WebCore/inspector/front-end/ElementsTreeOutline.js 2011-11-29 09:27:27 UTC (rev 101341)
@@ -884,8 +884,10 @@
if (childNodeCount > this.expandedChildCount) {
var targetButtonIndex = expandedChildCount;
if (!this.expandAllButtonElement) {
- var item = new TreeElement(null, null, false);
- item.titleHTML = "<button class=\"show-all-nodes\" value=\"\" />";
+ var button = document.createElement("button");
+ button.className = "show-all-nodes";
+ button.value = "";
+ var item = new TreeElement(button, null, false);
item.selectable = false;
item.expandAllButton = true;
this.insertChild(item, targetButtonIndex);
Modified: trunk/Source/WebCore/inspector/front-end/ObjectPropertiesSection.js (101340 => 101341)
--- trunk/Source/WebCore/inspector/front-end/ObjectPropertiesSection.js 2011-11-29 09:23:28 UTC (rev 101340)
+++ trunk/Source/WebCore/inspector/front-end/ObjectPropertiesSection.js 2011-11-29 09:27:27 UTC (rev 101341)
@@ -90,9 +90,10 @@
}
if (!this.propertiesTreeOutline.children.length) {
- var title = "<div class=\"info\">" + this.emptyPlaceholder + "</div>";
- var infoElement = new TreeElement(null, null, false);
- infoElement.titleHTML = title;
+ var title = document.createElement("div");
+ title.className = "info";
+ title.textContent = this.emptyPlaceholder;
+ var infoElement = new TreeElement(title, null, false);
this.propertiesTreeOutline.appendChild(infoElement);
}
this.propertiesForTest = properties;
Modified: trunk/Source/WebCore/inspector/front-end/ResourceHeadersView.js (101340 => 101341)
--- trunk/Source/WebCore/inspector/front-end/ResourceHeadersView.js 2011-11-29 09:23:28 UTC (rev 101340)
+++ trunk/Source/WebCore/inspector/front-end/ResourceHeadersView.js 2011-11-29 09:27:27 UTC (rev 101341)
@@ -111,11 +111,49 @@
}
WebInspector.ResourceHeadersView.prototype = {
+ /**
+ * @param {string} name
+ * @param {string} value
+ */
+ _formatHeader: function(name, value)
+ {
+ var fragment = document.createDocumentFragment();
+ fragment.createChild("div", "header-name").textContent = name + ":";
+ fragment.createChild("div", "header-value source-code").textContent = value;
+ return fragment;
+ },
+
+ /**
+ * @param {string} value
+ * @param {string} className
+ */
+ _formatParameter: function(value, className)
+ {
+ var errorDecoding = false;
+
+ if (this._decodeRequestParameters) {
+ if (value.indexOf("%") >= 0) {
+ try {
+ value = decodeURIComponent(value);
+ } catch(e) {
+ errorDecoding = true;
+ }
+ }
+ value = value.replace(/\+/g, " ");
+ }
+ var div = document.createElement("div");
+ div.className = className;
+ if (errorDecoding)
+ div.createChild("span", "error-message").textContent = WebInspector.UIString("(unable to decode value)");
+ else
+ div.textContent = value;
+ return div;
+ },
+
_refreshURL: function()
{
- this._urlTreeElement.titleHTML = "<div class=\"header-name\">" + WebInspector.UIString("Request URL") + ":</div>" +
- "<div class=\"header-value source-code\">" + this._resource.url.escapeHTML() + "</div>";
+ this._urlTreeElement.title = this._formatHeader(WebInspector.UIString("Request URL"), this._resource.url);
},
_refreshQueryString: function()
@@ -140,11 +178,8 @@
this._urlFragmentTreeElement.listItemElement.removeChildren();
this._urlFragmentTreeElement.listItemElement.appendChild(document.createTextNode(sectionTitle));
- var title = "<div class=\"header-name\">#:</div>";
- title += "<div class=\"header-value source-code\">" + urlFragment.escapeHTML() + "</div>";
-
var fragmentTreeElement = new TreeElement(null, null, false);
- fragmentTreeElement.titleHTML = title;
+ fragmentTreeElement.title = this._formatHeader("#", urlFragment);
fragmentTreeElement.selectable = false;
this._urlFragmentTreeElement.appendChild(fragmentTreeElement);
},
@@ -172,33 +207,15 @@
{
this._requestPayloadTreeElement.removeChildren();
- var title = "<div class=\"raw-form-data header-value source-code\">" + formData.escapeHTML() + "</div>";
- var parmTreeElement = new TreeElement(null, null, false);
- parmTreeElement.titleHTML = title;
+ var title = document.createElement("div");
+ title.className = "raw-form-data header-value source-code";
+ title.textContent = formData;
+
+ var parmTreeElement = new TreeElement(title, null, false);
parmTreeElement.selectable = false;
this._requestPayloadTreeElement.appendChild(parmTreeElement);
},
- _decodeURIComponent: function(value)
- {
- var errorDecoding = false;
-
- if (value.indexOf("%") >= 0) {
- try {
- value = decodeURIComponent(value);
- } catch(e) {
- errorDecoding = true;
- }
- }
- value = value.replace(/\+/g, " ");
-
- var valueEscaped = value.escapeHTML();
- if (errorDecoding)
- valueEscaped += " <span class=\"error-message\">" + WebInspector.UIString("(unable to decode value)").escapeHTML() + "</span>";
-
- return valueEscaped;
- },
-
_refreshParms: function(title, parms, parmsTreeElement)
{
parmsTreeElement.removeChildren();
@@ -218,17 +235,13 @@
for (var i = 0; i < parms.length; ++i) {
- var name = parms[i].name;
- var value = parms[i].value;
+ var paramNameValue = document.createDocumentFragment();
+ var name = this._formatParameter(parms[i].name + ":", "header-name");
+ var value = this._formatParameter(parms[i].value, "header-name source-code");
+ paramNameValue.appendChild(name);
+ paramNameValue.appendChild(value);
- var valueEscaped = this._decodeRequestParameters ? this._decodeURIComponent(value) : value.escapeHTML();
- var nameEscaped = this._decodeRequestParameters ? this._decodeURIComponent(name) : name.escapeHTML();
-
- title = "<div class=\"header-name\">" + nameEscaped + ":</div>";
- title += "<div class=\"header-value source-code\">" + valueEscaped + "</div>";
-
- var parmTreeElement = new TreeElement(null, null, false);
- parmTreeElement.titleHTML = title;
+ var parmTreeElement = new TreeElement(paramNameValue, null, false);
parmTreeElement.selectable = false;
parmsTreeElement.appendChild(parmTreeElement);
}
@@ -292,7 +305,6 @@
requestMethodElement.hidden = !this._resource.statusCode;
var statusCodeElement = this._statusCodeTreeElement;
statusCodeElement.hidden = !this._resource.statusCode;
- var statusCodeImage = "";
if (this._resource.statusCode) {
var statusImageSource = "";
@@ -303,18 +315,20 @@
else
statusImageSource = "Images/errorRedDot.png";
- var statusTextEscaped = this._resource.statusCode + " " + this._resource.statusText.escapeHTML();
- statusCodeImage = "<img class=\"resource-status-image\" src="" + statusImageSource + "\" title=\"" + statusTextEscaped + "\">";
+ requestMethodElement.title = this._formatHeader(WebInspector.UIString("Request Method"), this._resource.requestMethod);
- requestMethodElement.titleHTML = "<div class=\"header-name\">" + WebInspector.UIString("Request Method") + ":</div>" +
- "<div class=\"header-value source-code\">" + this._resource.requestMethod + "</div>";
+ var statusCodeFragment = document.createDocumentFragment();
+ statusCodeFragment.createChild("div", "header-name").textContent = WebInspector.UIString("Status Code") + ":";
- var fromCacheSpan = "";
+ var statusCodeImage = statusCodeFragment.createChild("img", "resource-status-image");
+ statusCodeImage.src = ""
+ statusCodeImage.title = this._resource.statusCode + " " + this._resource.statusText;
+ var value = statusCodeFragment.createChild("div", "header-value source-code");
+ value.textContent = this._resource.statusCode + " " + this._resource.statusText;
if (this._resource.cached)
- fromCacheSpan = " " + "<span class=\"status-from-cache\">" + WebInspector.UIString("(from cache)").escapeHTML() + "</span>";
+ value.createChild("span", "status-from-cache").textContent = " " + WebInspector.UIString("(from cache)");
- statusCodeElement.titleHTML = "<div class=\"header-name\">" + WebInspector.UIString("Status Code") + ":</div>" +
- statusCodeImage + "<div class=\"header-value source-code\">" + statusTextEscaped + fromCacheSpan + "</div>";
+ statusCodeElement.title = statusCodeFragment;
}
},
@@ -337,21 +351,15 @@
this._refreshHeadersTitle(title, headersTreeElement, length);
headersTreeElement.hidden = !length;
for (var i = 0; i < length; ++i) {
- title = "<div class=\"header-name\">" + headers[i].header.escapeHTML() + ":</div>";
- title += "<div class=\"header-value source-code\">" + headers[i].value.escapeHTML() + "</div>"
-
var headerTreeElement = new TreeElement(null, null, false);
- headerTreeElement.titleHTML = title;
+ headerTreeElement.title = this._formatHeader(headers[i].header, headers[i].value);
headerTreeElement.selectable = false;
headersTreeElement.appendChild(headerTreeElement);
}
if (additionalRow) {
- title = "<div class=\"header-name\">" + additionalRow.header.escapeHTML() + ":</div>";
- title += "<div class=\"header-value source-code\">" + additionalRow.value.escapeHTML() + "</div>"
-
var headerTreeElement = new TreeElement(null, null, false);
- headerTreeElement.titleHTML = title;
+ headerTreeElement.title = this._formatHeader(additionalRow.header, additionalRow.value);
headerTreeElement.selectable = false;
headersTreeElement.appendChild(headerTreeElement);
}
Modified: trunk/Source/WebCore/inspector/front-end/ResourceUtils.js (101340 => 101341)
--- trunk/Source/WebCore/inspector/front-end/ResourceUtils.js 2011-11-29 09:23:28 UTC (rev 101340)
+++ trunk/Source/WebCore/inspector/front-end/ResourceUtils.js 2011-11-29 09:27:27 UTC (rev 101341)
@@ -177,22 +177,6 @@
/**
* @param {string} url
- * @param {string=} linkText
- * @param {string=} classes
- * @param {boolean=} isExternal
- * @param {string=} tooltipText
- * @return {string}
- * @deprecated
- */
-WebInspector.linkifyURL = function(url, linkText, classes, isExternal, tooltipText)
-{
- // Use the DOM version of this function so as to avoid needing to escape attributes.
- // FIXME: Get rid of linkifyURL entirely.
- return WebInspector.linkifyURLAsNode(url, linkText, classes, isExternal, tooltipText).outerHTML;
-}
-
-/**
- * @param {string} url
* @param {number=} lineNumber
* @return {string}
*/
Modified: trunk/Source/WebCore/inspector/front-end/StylesSidebarPane.js (101340 => 101341)
--- trunk/Source/WebCore/inspector/front-end/StylesSidebarPane.js 2011-11-29 09:23:28 UTC (rev 101340)
+++ trunk/Source/WebCore/inspector/front-end/StylesSidebarPane.js 2011-11-29 09:27:27 UTC (rev 101341)
@@ -1361,12 +1361,17 @@
var treeElement = this._propertyTreeElements[property.name];
if (treeElement) {
- var selectorText = section.styleRule.selectorText;
- var value = property.value;
- var title = "<span style='color: gray'>" + selectorText + "</span> - " + value;
- var subtitle = " <span style='float:right'>" + section._selectorRefElement.innerHTML + "</span>";
- var childElement = new TreeElement(null, null, false);
- childElement.titleHTML = title + subtitle;
+ var fragment = document.createDocumentFragment();
+ var selector = fragment.createChild("span");
+ selector.style.color = "gray";
+ selector.textContent = section.styleRule.selectorText;
+ fragment.appendChild(document.createTextNode(" - " + property.value + " "));
+ var subtitle = fragment.createChild("span");
+ subtitle.style.float = "right";
+ var selectorRef = section._selectorRefElement.cloneNode(true);
+ for (var n = 0; n < selectorRef.childNodes.length; ++n)
+ subtitle.appendChild(selectorRef.childNodes[n]);
+ var childElement = new TreeElement(fragment, null, false);
treeElement.appendChild(childElement);
if (section.isPropertyOverloaded(property.name))
childElement.listItemElement.addStyleClass("overloaded");
Modified: trunk/Source/WebCore/inspector/front-end/WorkersSidebarPane.js (101340 => 101341)
--- trunk/Source/WebCore/inspector/front-end/WorkersSidebarPane.js 2011-11-29 09:23:28 UTC (rev 101340)
+++ trunk/Source/WebCore/inspector/front-end/WorkersSidebarPane.js 2011-11-29 09:27:27 UTC (rev 101341)
@@ -62,10 +62,8 @@
var worker = new WebInspector.Worker(id, url, isShared);
this._workers[id] = worker;
- var title = WebInspector.linkifyURL(url, WebInspector.displayNameForURL(url), "worker-item", true, url);
- var treeElement = new TreeElement(null, worker, false);
- treeElement.titleHTML = title;
- this._treeOutline.appendChild(treeElement);
+ var title = WebInspector.linkifyURLAsNode(url, WebInspector.displayNameForURL(url), "worker-item", true, url);
+ this._treeOutline.appendChild(new TreeElement(title, worker, false));
},
removeWorker: function(id)
Modified: trunk/Source/WebCore/inspector/front-end/treeoutline.js (101340 => 101341)
--- trunk/Source/WebCore/inspector/front-end/treeoutline.js 2011-11-29 09:23:28 UTC (rev 101340)
+++ trunk/Source/WebCore/inspector/front-end/treeoutline.js 2011-11-29 09:27:27 UTC (rev 101341)
@@ -530,16 +530,6 @@
this.didChange();
},
- get titleHTML() {
- return this._titleHTML;
- },
-
- set titleHTML(x) {
- this._titleHTML = x;
- this._setListItemNodeContent();
- this.didChange();
- },
-
get tooltip() {
return this._tooltip;
},
@@ -630,17 +620,12 @@
if (!this._listItemNode)
return;
- if (!this._titleHTML && !this._title)
- this._listItemNode.removeChildren();
- else if (typeof this._titleHTML === "string")
- this._listItemNode.innerHTML = this._titleHTML;
- else if (typeof this._title === "string")
+ if (typeof this._title === "string")
this._listItemNode.textContent = this._title;
else {
this._listItemNode.removeChildren();
- if (this._title.parentNode)
- this._title.parentNode.removeChild(this._title);
- this._listItemNode.appendChild(this._title);
+ if (this._title)
+ this._listItemNode.appendChild(this._title);
}
}
}