Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(707)

Unified Diff: third_party/WebKit/Source/devtools/front_end/security/SecurityPanel.js

Issue 2296953004: Send certificates to devtools when it's open instead of using certId (Closed)
Patch Set: take out unneeded code Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/devtools/front_end/security/SecurityPanel.js
diff --git a/third_party/WebKit/Source/devtools/front_end/security/SecurityPanel.js b/third_party/WebKit/Source/devtools/front_end/security/SecurityPanel.js
index 616e1996a78d168d55ce6b981ccceb5afe3e069e..d4e2e796c426cde9ae6f7a53a68d5b3a29f0e19c 100644
--- a/third_party/WebKit/Source/devtools/front_end/security/SecurityPanel.js
+++ b/third_party/WebKit/Source/devtools/front_end/security/SecurityPanel.js
@@ -37,7 +37,7 @@ WebInspector.SecurityPanel.Origin;
* @typedef {Object}
* @property {!SecurityAgent.SecurityState} securityState - Current security state of the origin.
* @property {?NetworkAgent.SecurityDetails} securityDetails - Security details of the origin, if available.
- * @property {?Promise<!NetworkAgent.CertificateDetails>} certificateDetailsPromise - Certificate details of the origin. Only available if securityDetails are available.
+ * @property {?Promise<>} certificateDetailsPromise - Certificate details of the origin.
* @property {?WebInspector.SecurityOriginView} originView - Current SecurityOriginView corresponding to origin.
*/
WebInspector.SecurityPanel.OriginState;
@@ -172,7 +172,6 @@ WebInspector.SecurityPanel.prototype = {
var securityDetails = request.securityDetails();
if (securityDetails) {
originState.securityDetails = securityDetails;
- originState.certificateDetailsPromise = request.networkManager().certificateDetailsPromise(securityDetails.certificateId);
}
this._origins.set(origin, originState);
@@ -228,6 +227,15 @@ WebInspector.SecurityPanel.prototype = {
},
/**
+ * @param {!SecurityAgent.CertificateId} certificateId
+ */
+ showCertificateViewer: function(certificateId)
+ {
+ var securityModel = WebInspector.SecurityModel.fromTarget(this._target);
+ securityModel.showCertificateViewer(certificateId);
+ },
+
+ /**
* @param {!SecurityAgent.SecurityState} stateA
* @param {!SecurityAgent.SecurityState} stateB
* @return {!SecurityAgent.SecurityState}
@@ -323,9 +331,10 @@ WebInspector.SecurityPanel._instance = function()
/**
* @param {string} text
* @param {!SecurityAgent.CertificateId} certificateId
+ * @param {!WebInspector.SecurityPanel} panel
* @return {!Element}
*/
-WebInspector.SecurityPanel.createCertificateViewerButton = function(text, certificateId)
+WebInspector.SecurityPanel.createCertificateViewerButton = function (text, certificateId, panel)
{
/**
* @param {!Event} e
@@ -333,7 +342,25 @@ WebInspector.SecurityPanel.createCertificateViewerButton = function(text, certif
function showCertificateViewer(e)
{
e.consume();
- WebInspector.multitargetNetworkManager.showCertificateViewer(/** @type {number} */ (certificateId));
+ panel.showCertificateViewer(certificateId);
+ }
+
+ return createTextButton(text, showCertificateViewer, "security-certificate-button");
+}
+
+/**
+ * @param {string} text
+ * @param {number} certificateHash
+ * @return {!Element}
+ */
+WebInspector.SecurityPanel.createCertificateViewerButton2 = function (text, certificateHash)
jam 2016/08/31 22:13:28 I'll remove createCertificateViewerButton in a fol
+{
+ /**
+ * @param {!Event} e
+ */
+ function showCertificateViewer(e) {
+ e.consume();
+ WebInspector.multitargetNetworkManager.showCertificateViewer(certificateHash);
}
return createTextButton(text, showCertificateViewer, "security-certificate-button");
@@ -599,7 +626,7 @@ WebInspector.SecurityMainView.prototype = {
text.createChild("div").textContent = explanation.description;
if (explanation.certificateId) {
- text.appendChild(WebInspector.SecurityPanel.createCertificateViewerButton(WebInspector.UIString("View certificate"), explanation.certificateId));
+ text.appendChild(WebInspector.SecurityPanel.createCertificateViewerButton(WebInspector.UIString("View certificate"), explanation.certificateId, this._panel));
}
return text;
@@ -840,79 +867,65 @@ WebInspector.SecurityOriginView = function(panel, origin, originState)
sctSection.createChild("div", "origin-view-section-title").textContent = WebInspector.UIString("Certificate Transparency");
}
- /**
- * @this {WebInspector.SecurityOriginView}
- * @param {?NetworkAgent.CertificateDetails} certificateDetails
- */
- function displayCertificateDetails(certificateDetails)
- {
- var sanDiv = this._createSanDiv(certificateDetails.subject);
- var validFromString = new Date(1000 * certificateDetails.validFrom).toUTCString();
- var validUntilString = new Date(1000 * certificateDetails.validTo).toUTCString();
-
- var table = new WebInspector.SecurityDetailsTable();
- certificateSection.appendChild(table.element());
- table.addRow(WebInspector.UIString("Subject"), certificateDetails.subject.name);
- table.addRow(WebInspector.UIString("SAN"), sanDiv);
- table.addRow(WebInspector.UIString("Valid From"), validFromString);
- table.addRow(WebInspector.UIString("Valid Until"), validUntilString);
- table.addRow(WebInspector.UIString("Issuer"), certificateDetails.issuer);
- table.addRow("", WebInspector.SecurityPanel.createCertificateViewerButton(WebInspector.UIString("Open full certificate details"), originState.securityDetails.certificateId));
-
- if (!originState.securityDetails.signedCertificateTimestampList.length)
- return;
-
- // Show summary of SCT(s) of Certificate Transparency.
- var sctSummaryTable = new WebInspector.SecurityDetailsTable();
- sctSummaryTable.element().classList.add("sct-summary");
- sctSection.appendChild(sctSummaryTable.element());
- for (var i = 0; i < originState.securityDetails.signedCertificateTimestampList.length; i++)
- {
- var sct = originState.securityDetails.signedCertificateTimestampList[i];
- sctSummaryTable.addRow(WebInspector.UIString("SCT"), sct.logDescription + " (" + sct.origin + ", " + sct.status + ")");
- }
+ var sanDiv = this._createSanDiv(originState.securityDetails.sanList);
jam 2016/08/31 22:13:28 this code isn't changed, just indentation was modi
+ var validFromString = new Date(1000 * originState.securityDetails.validFrom).toUTCString();
+ var validUntilString = new Date(1000 * originState.securityDetails.validTo).toUTCString();
- // Show detailed SCT(s) of Certificate Transparency.
- var sctTableWrapper = sctSection.createChild("div", "sct-details");
- sctTableWrapper.classList.add("hidden");
- for (var i = 0; i < originState.securityDetails.signedCertificateTimestampList.length; i++)
- {
- var sctTable = new WebInspector.SecurityDetailsTable();
- sctTableWrapper.appendChild(sctTable.element());
- var sct = originState.securityDetails.signedCertificateTimestampList[i];
- sctTable.addRow(WebInspector.UIString("Log Name"), sct.logDescription);
- sctTable.addRow(WebInspector.UIString("Log ID"), sct.logId.replace(/(.{2})/g,"$1 "));
- sctTable.addRow(WebInspector.UIString("Validation Status"), sct.status);
- sctTable.addRow(WebInspector.UIString("Source"), sct.origin);
- sctTable.addRow(WebInspector.UIString("Issued At"), new Date(sct.timestamp).toUTCString());
- sctTable.addRow(WebInspector.UIString("Hash Algorithm"), sct.hashAlgorithm);
- sctTable.addRow(WebInspector.UIString("Signature Algorithm"), sct.signatureAlgorithm);
- sctTable.addRow(WebInspector.UIString("Signature Data"), sct.signatureData.replace(/(.{2})/g,"$1 "));
- }
+ table = new WebInspector.SecurityDetailsTable();
+ certificateSection.appendChild(table.element());
+ table.addRow(WebInspector.UIString("Subject"), originState.securityDetails.subjectName);
+ table.addRow(WebInspector.UIString("SAN"), sanDiv);
+ table.addRow(WebInspector.UIString("Valid From"), validFromString);
+ table.addRow(WebInspector.UIString("Valid Until"), validUntilString);
+ table.addRow(WebInspector.UIString("Issuer"), originState.securityDetails.issuer);
+ table.addRow("", WebInspector.SecurityPanel.createCertificateViewerButton2(WebInspector.UIString("Open full certificate details"), originState.securityDetails.certificateHash));
- // Add link to toggle between displaying of the summary of the SCT(s) and the detailed SCT(s).
- var toggleSctsDetailsLink = sctSection.createChild("div", "link");
- toggleSctsDetailsLink.classList.add("sct-toggle");
- toggleSctsDetailsLink.textContent = WebInspector.UIString("Show full details");
- function toggleSctDetailsDisplay()
- {
- var isDetailsShown = !sctTableWrapper.classList.contains("hidden");
- if (isDetailsShown)
- toggleSctsDetailsLink.textContent = WebInspector.UIString("Show full details");
- else
- toggleSctsDetailsLink.textContent = WebInspector.UIString("Hide full details");
- sctSummaryTable.element().classList.toggle("hidden");
- sctTableWrapper.classList.toggle("hidden");
- }
- toggleSctsDetailsLink.addEventListener("click", toggleSctDetailsDisplay, false);
+ if (!originState.securityDetails.signedCertificateTimestampList.length)
+ return;
+
+ // Show summary of SCT(s) of Certificate Transparency.
+ var sctSummaryTable = new WebInspector.SecurityDetailsTable();
+ sctSummaryTable.element().classList.add("sct-summary");
+ sctSection.appendChild(sctSummaryTable.element());
+ for (var i = 0; i < originState.securityDetails.signedCertificateTimestampList.length; i++)
+ {
+ var sct = originState.securityDetails.signedCertificateTimestampList[i];
+ sctSummaryTable.addRow(WebInspector.UIString("SCT"), sct.logDescription + " (" + sct.origin + ", " + sct.status + ")");
}
- function displayCertificateDetailsUnavailable()
+ // Show detailed SCT(s) of Certificate Transparency.
+ var sctTableWrapper = sctSection.createChild("div", "sct-details");
+ sctTableWrapper.classList.add("hidden");
+ for (var i = 0; i < originState.securityDetails.signedCertificateTimestampList.length; i++)
{
- certificateSection.createChild("div").textContent = WebInspector.UIString("Certificate details unavailable.");
+ var sctTable = new WebInspector.SecurityDetailsTable();
+ sctTableWrapper.appendChild(sctTable.element());
+ var sct = originState.securityDetails.signedCertificateTimestampList[i];
+ sctTable.addRow(WebInspector.UIString("Log Name"), sct.logDescription);
+ sctTable.addRow(WebInspector.UIString("Log ID"), sct.logId.replace(/(.{2})/g,"$1 "));
+ sctTable.addRow(WebInspector.UIString("Validation Status"), sct.status);
+ sctTable.addRow(WebInspector.UIString("Source"), sct.origin);
+ sctTable.addRow(WebInspector.UIString("Issued At"), new Date(sct.timestamp).toUTCString());
+ sctTable.addRow(WebInspector.UIString("Hash Algorithm"), sct.hashAlgorithm);
+ sctTable.addRow(WebInspector.UIString("Signature Algorithm"), sct.signatureAlgorithm);
+ sctTable.addRow(WebInspector.UIString("Signature Data"), sct.signatureData.replace(/(.{2})/g,"$1 "));
}
- originState.certificateDetailsPromise.then(displayCertificateDetails.bind(this), displayCertificateDetailsUnavailable);
+ // Add link to toggle between displaying of the summary of the SCT(s) and the detailed SCT(s).
+ var toggleSctsDetailsLink = sctSection.createChild("div", "link");
+ toggleSctsDetailsLink.classList.add("sct-toggle");
+ toggleSctsDetailsLink.textContent = WebInspector.UIString("Show full details");
+ function toggleSctDetailsDisplay()
+ {
+ var isDetailsShown = !sctTableWrapper.classList.contains("hidden");
+ if (isDetailsShown)
+ toggleSctsDetailsLink.textContent = WebInspector.UIString("Show full details");
+ else
+ toggleSctsDetailsLink.textContent = WebInspector.UIString("Hide full details");
+ sctSummaryTable.element().classList.toggle("hidden");
+ sctTableWrapper.classList.toggle("hidden");
+ }
+ toggleSctsDetailsLink.addEventListener("click", toggleSctDetailsDisplay, false);
var noteSection = this.element.createChild("div", "origin-view-section");
// TODO(lgarron): Fix the issue and then remove this section. See comment in SecurityPanel._processRequest().
@@ -931,13 +944,12 @@ WebInspector.SecurityOriginView = function(panel, origin, originState)
WebInspector.SecurityOriginView.prototype = {
/**
- * @param {!NetworkAgent.CertificateSubject} certificateSubject
+ * @param {!Array<string>} sanList
* *return {!Element}
*/
- _createSanDiv: function(certificateSubject)
+ _createSanDiv: function(sanList)
{
var sanDiv = createElement("div");
- var sanList = certificateSubject.sanDnsNames.concat(certificateSubject.sanIpAddresses);
if (sanList.length === 0) {
sanDiv.textContent = WebInspector.UIString("(N/A)");
sanDiv.classList.add("empty-san");

Powered by Google App Engine
This is Rietveld 408576698