Index: third_party/WebKit/Source/devtools/front_end/audits2/Audits2Panel.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/audits2/Audits2Panel.js b/third_party/WebKit/Source/devtools/front_end/audits2/Audits2Panel.js |
index a60b2eae43150e72d9daea4b3a59f4b2df1498cf..603a5c5b2751378bf71057eaf1d8d22b234553e3 100644 |
--- a/third_party/WebKit/Source/devtools/front_end/audits2/Audits2Panel.js |
+++ b/third_party/WebKit/Source/devtools/front_end/audits2/Audits2Panel.js |
@@ -61,9 +61,8 @@ Audits2.Audits2Panel = class extends UI.Panel { |
*/ |
_createStatusView(launcherUIElement) { |
var statusView = launcherUIElement.createChild('div', 'audits2-status hbox hidden'); |
- statusView.createChild('span', 'icon'); |
- this._statusElement = createElement('p'); |
- statusView.appendChild(this._statusElement); |
+ this._statusIcon = statusView.createChild('span', 'icon'); |
+ this._statusElement = statusView.createChild('p'); |
this._updateStatus(Common.UIString('Loading...')); |
return statusView; |
} |
@@ -87,6 +86,8 @@ Audits2.Audits2Panel = class extends UI.Panel { |
.then(lighthouseResult => { |
this._finish(lighthouseResult); |
return this._stop(); |
+ }).catch(err => { |
+ if (err instanceof Error) this._renderBugReport(err); |
}); |
} |
@@ -147,17 +148,48 @@ Audits2.Audits2Panel = class extends UI.Panel { |
this.contentElement.classList.add('show-results'); |
} |
+ /** |
+ * @param {!Error} err |
+ */ |
+ _renderBugReport(err) { |
+ console.error(err); |
+ this._statusElement.textContent = ''; |
+ this._statusIcon.classList.add('error'); |
+ this._statusElement.createTextChild(Common.UIString('We ran into an error. ')); |
+ this._createBugReportLink(err, this._statusElement); |
+ } |
+ |
+ /** |
+ * @param {!Error} err |
+ * @param {!Element} parentElem |
+ */ |
+ _createBugReportLink(err, parentElem) { |
+ var baseURI = 'https://github.com/GoogleChrome/lighthouse/issues/new?'; |
+ var title = encodeURI('title=DevTools Error: ' + err.message.substring(0, 60)); |
+ |
+ var qsBody = ''; |
+ qsBody += '**Error Message**: ' + err.message + '\n'; |
+ qsBody += '**Stack Trace**:\n ```' + err.stack + '```'; |
+ var body = '&body=' + encodeURI(qsBody); |
+ |
+ var reportErrorEl = parentElem.createChild('a', 'audits2-link audits2-report-error'); |
+ reportErrorEl.href = baseURI + title + body; |
+ reportErrorEl.textContent = Common.UIString('Report this bug'); |
+ reportErrorEl.target = '_blank'; |
+ } |
+ |
/** |
* @param {!Element} resultsView |
* @param {!ReportRenderer.ReportJSON} lighthouseResult |
* @suppressGlobalPropertiesCheck |
*/ |
_renderReport(resultsView, lighthouseResult) { |
- var reportContainer = resultsView.createChild('div', 'report-container'); |
+ var reportContainer = resultsView.createChild('div', 'report-container lh-root'); |
var dom = new DOM(document); |
var detailsRenderer = new DetailsRenderer(dom); |
- var renderer = new ReportRenderer(dom, detailsRenderer); |
+ var categoryRenderer = new CategoryRenderer(dom, detailsRenderer); |
+ var renderer = new Audits2.ReportRenderer(dom, categoryRenderer); |
var templatesHTML = Runtime.cachedResources['audits2/lighthouse/templates.html']; |
var templatesDOM = new DOMParser().parseFromString(templatesHTML, 'text/html'); |
@@ -165,7 +197,7 @@ Audits2.Audits2Panel = class extends UI.Panel { |
return; |
renderer.setTemplateContext(templatesDOM); |
- reportContainer.appendChild(renderer.renderReport(lighthouseResult)); |
+ renderer.renderReport(lighthouseResult, reportContainer); |
} |
/** |
@@ -192,6 +224,28 @@ Audits2.Audits2Panel = class extends UI.Panel { |
} |
}; |
+/** |
+ * @override |
+ */ |
+Audits2.ReportRenderer = class extends ReportRenderer { |
+ /** |
+ * Provides empty element for left nav |
+ * @override |
+ * @returns {!DocumentFragment} |
+ */ |
+ _renderReportNav() { |
+ return createDocumentFragment(); |
+ } |
+}; |
+ |
+ |
+class ReportUIFeatures { |
+ /** |
+ * @param {!ReportRenderer.ReportJSON} report |
+ */ |
+ initFeatures(report) {} |
+} |
+ |
/** @typedef {{id: string, configID: string, description: string}} */ |
Audits2.Audits2Panel.Preset; |