Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 /** | 5 /** |
| 6 * @constructor | 6 * @constructor |
| 7 * @extends {WebInspector.PanelWithSidebar} | 7 * @extends {WebInspector.PanelWithSidebar} |
| 8 * @implements {WebInspector.TargetManager.Observer} | 8 * @implements {WebInspector.TargetManager.Observer} |
| 9 */ | 9 */ |
| 10 WebInspector.SecurityPanel = function() | 10 WebInspector.SecurityPanel = function() |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 50 * @property {?NetworkAgent.CertificateDetails} securityDetails.certificateDetai ls - Certificate details of the origin (attached to security details), if availa ble. | 50 * @property {?NetworkAgent.CertificateDetails} securityDetails.certificateDetai ls - Certificate details of the origin (attached to security details), if availa ble. |
| 51 * @property {?WebInspector.SecurityOriginView} originView - Current SecurityOri ginView corresponding to origin. | 51 * @property {?WebInspector.SecurityOriginView} originView - Current SecurityOri ginView corresponding to origin. |
| 52 */ | 52 */ |
| 53 WebInspector.SecurityPanel.OriginState; | 53 WebInspector.SecurityPanel.OriginState; |
| 54 | 54 |
| 55 WebInspector.SecurityPanel.prototype = { | 55 WebInspector.SecurityPanel.prototype = { |
| 56 | 56 |
| 57 /** | 57 /** |
| 58 * @param {!SecurityAgent.SecurityState} newSecurityState | 58 * @param {!SecurityAgent.SecurityState} newSecurityState |
| 59 * @param {!Array<!SecurityAgent.SecurityStateExplanation>} explanations | 59 * @param {!Array<!SecurityAgent.SecurityStateExplanation>} explanations |
| 60 * @param {!SecurityAgent.MixedContentStatus=} mixedContentStatus | |
|
lgarron
2015/09/04 00:44:35
@param {?SecurityAgent.MixedContentStatus} mixedCo
estark
2015/09/04 02:45:30
Done.
| |
| 61 * @param {boolean=} schemeIsCryptographic | |
|
lgarron
2015/09/04 00:44:35
Hmm, so, I believe JSDoc won't allow an nullable b
estark
2015/09/04 02:45:30
Converted schemeIsCryptographic to a boolean in Se
| |
| 60 */ | 62 */ |
| 61 _updateSecurityState: function(newSecurityState, explanations) | 63 _updateSecurityState: function(newSecurityState, explanations, mixedContentS tatus, schemeIsCryptographic) |
| 62 { | 64 { |
| 63 this._sidebarMainViewElement.setSecurityState(newSecurityState); | 65 this._sidebarMainViewElement.setSecurityState(newSecurityState); |
| 64 this._mainView.updateSecurityState(newSecurityState, explanations); | 66 this._mainView.updateSecurityState(newSecurityState, explanations, mixed ContentStatus, schemeIsCryptographic); |
| 65 }, | 67 }, |
| 66 | 68 |
| 67 /** | 69 /** |
| 68 * @param {!WebInspector.Event} event | 70 * @param {!WebInspector.Event} event |
| 69 */ | 71 */ |
| 70 _onSecurityStateChanged: function(event) | 72 _onSecurityStateChanged: function(event) |
| 71 { | 73 { |
| 72 var securityState = /** @type {!SecurityAgent.SecurityState} */ (event.d ata.securityState); | 74 var securityState = /** @type {!SecurityAgent.SecurityState} */ (event.d ata.securityState); |
| 73 var explanations = /** @type {!Array<!SecurityAgent.SecurityStateExplana tion>} */ (event.data.explanations); | 75 var explanations = /** @type {!Array<!SecurityAgent.SecurityStateExplana tion>} */ (event.data.explanations); |
| 74 this._updateSecurityState(securityState, explanations); | 76 this._updateSecurityState(securityState, explanations, event.data.mixedC ontentStatus, event.data.schemeIsCryptographic); |
|
lgarron
2015/09/04 00:44:35
I believe DevTools convention is to cast these (li
estark
2015/09/04 02:45:31
Done.
| |
| 75 }, | 77 }, |
| 76 | 78 |
| 77 showMainView: function() | 79 showMainView: function() |
| 78 { | 80 { |
| 79 this._setVisibleView(this._mainView); | 81 this._setVisibleView(this._mainView); |
| 80 }, | 82 }, |
| 81 | 83 |
| 82 /** | 84 /** |
| 83 * @param {!WebInspector.SecurityPanel.Origin} origin | 85 * @param {!WebInspector.SecurityPanel.Origin} origin |
| 84 */ | 86 */ |
| (...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 325 text.createChild("div", "security-summary-section-title").textContent = WebI nspector.UIString("Security Overview"); | 327 text.createChild("div", "security-summary-section-title").textContent = WebI nspector.UIString("Security Overview"); |
| 326 this._summaryExplanation = text.createChild("div", "security-explanation"); | 328 this._summaryExplanation = text.createChild("div", "security-explanation"); |
| 327 | 329 |
| 328 this._securityExplanations = this.element.createChild("div", "security-expla nation-list"); | 330 this._securityExplanations = this.element.createChild("div", "security-expla nation-list"); |
| 329 | 331 |
| 330 } | 332 } |
| 331 | 333 |
| 332 WebInspector.SecurityMainView.prototype = { | 334 WebInspector.SecurityMainView.prototype = { |
| 333 /** | 335 /** |
| 334 * @param {!SecurityAgent.SecurityStateExplanation} explanation | 336 * @param {!SecurityAgent.SecurityStateExplanation} explanation |
| 337 * @return {!Element} | |
| 335 */ | 338 */ |
| 336 _addExplanation: function(explanation) | 339 _addExplanation: function(explanation) |
| 337 { | 340 { |
| 338 var explanationSection = this._securityExplanations.createChild("div", " security-section"); | 341 var explanationSection = this._securityExplanations.createChild("div", " security-section"); |
| 339 explanationSection.classList.add("security-explanation"); | 342 explanationSection.classList.add("security-explanation"); |
| 340 | 343 |
| 341 explanationSection.createChild("div", "lock-icon").classList.add("lock-i con-" + explanation.securityState); | 344 explanationSection.createChild("div", "lock-icon").classList.add("lock-i con-" + explanation.securityState); |
| 342 var text = explanationSection.createChild("div", "security-section-text" ); | 345 var text = explanationSection.createChild("div", "security-section-text" ); |
| 343 text.createChild("div", "security-section-title").textContent = explanat ion.summary; | 346 text.createChild("div", "security-section-title").textContent = explanat ion.summary; |
| 344 text.createChild("div", "security-explanation").textContent = explanatio n.description; | 347 text.createChild("div", "security-explanation").textContent = explanatio n.description; |
| 348 return text; | |
| 345 }, | 349 }, |
| 346 | 350 |
| 347 /** | 351 /** |
| 348 * @param {!SecurityAgent.SecurityState} newSecurityState | 352 * @param {!SecurityAgent.SecurityState} newSecurityState |
| 349 * @param {!Array<!SecurityAgent.SecurityStateExplanation>} explanations | 353 * @param {!Array<!SecurityAgent.SecurityStateExplanation>} explanations |
| 354 * @param {!SecurityAgent.MixedContentStatus=} mixedContentStatus | |
| 355 * @param {boolean=} schemeIsCryptographic | |
| 350 */ | 356 */ |
| 351 updateSecurityState: function(newSecurityState, explanations) | 357 updateSecurityState: function(newSecurityState, explanations, mixedContentSt atus, schemeIsCryptographic) |
| 352 { | 358 { |
| 353 // Remove old state. | 359 // Remove old state. |
| 354 // It's safe to call this even when this._securityState is undefined. | 360 // It's safe to call this even when this._securityState is undefined. |
| 355 this._summarylockIcon.classList.remove("lock-icon-" + this._securityStat e); | 361 this._summarylockIcon.classList.remove("lock-icon-" + this._securityStat e); |
| 356 this._summaryExplanation.classList.remove("security-state-" + this._secu rityState); | 362 this._summaryExplanation.classList.remove("security-state-" + this._secu rityState); |
| 357 | 363 |
| 358 // Add new state. | 364 // Add new state. |
| 359 this._securityState = newSecurityState; | 365 this._securityState = newSecurityState; |
| 360 this._summarylockIcon.classList.add("lock-icon-" + this._securityState); | 366 this._summarylockIcon.classList.add("lock-icon-" + this._securityState); |
| 361 this._summaryExplanation.classList.add("security-state-" + this._securit yState); | 367 this._summaryExplanation.classList.add("security-state-" + this._securit yState); |
| 362 var summaryExplanationStrings = { | 368 var summaryExplanationStrings = { |
| 363 "unknown": WebInspector.UIString("This security of this page is unk nown."), | 369 "unknown": WebInspector.UIString("This security of this page is unk nown."), |
| 364 "insecure": WebInspector.UIString("This page is insecure (broken HTT PS)."), | 370 "insecure": WebInspector.UIString("This page is insecure (broken HTT PS)."), |
| 365 "neutral": WebInspector.UIString("This page is not secure."), | 371 "neutral": WebInspector.UIString("This page is not secure."), |
| 366 "secure": WebInspector.UIString("This page is secure (valid HTTPS) .") | 372 "secure": WebInspector.UIString("This page is secure (valid HTTPS) .") |
| 367 } | 373 } |
| 368 this._summaryExplanation.textContent = summaryExplanationStrings[this._s ecurityState]; | 374 this._summaryExplanation.textContent = summaryExplanationStrings[this._s ecurityState]; |
| 369 | 375 |
| 370 this._securityExplanations.removeChildren(); | 376 this._securityExplanations.removeChildren(); |
| 371 for (var explanation of explanations) | 377 for (var explanation of explanations) |
| 372 this._addExplanation(explanation); | 378 this._addExplanation(explanation); |
| 379 | |
| 380 if (schemeIsCryptographic && mixedContentStatus) { | |
| 381 var mixedContentExplanation; | |
|
pfeldman
2015/09/03 23:48:48
4 space indent.
estark
2015/09/04 02:45:30
Done.
| |
| 382 if (mixedContentStatus.ranInsecureContent) { | |
| 383 mixedContentExplanation = { | |
|
pfeldman
2015/09/03 23:48:48
These plain JS objects are always compiler-unfrien
lgarron
2015/09/04 00:44:35
estark@: It seems I forgot to do this when I added
estark
2015/09/04 02:45:30
Not sure if I did this right, PTAL.
| |
| 384 "securityState": mixedContentStatus.ranInsecureContentStyle, | |
| 385 "summary": WebInspector.UIString("Active Mixed Content"), | |
| 386 "description": WebInspector.UIString("You have recently allowed in secure content (such as scripts or iframes) to run on this site.") | |
| 387 } | |
| 388 } else if (mixedContentStatus.displayedInsecureContent) { | |
| 389 mixedContentExplanation = { | |
| 390 "securityState": mixedContentStatus.displayedInsecureContentStyle, | |
| 391 "summary": WebInspector.UIString("Mixed Content"), | |
| 392 "description": WebInspector.UIString("The site includes HTTP resou rces.") | |
| 393 } | |
| 394 } | |
| 395 if (mixedContentExplanation) { | |
|
lgarron
2015/09/04 00:44:35
I don't know if if's done anywhere in DevTools, bu
estark
2015/09/04 02:45:30
Done (conditioned the whole block around displayed
| |
| 396 var requestsAnchor = this._addExplanation(mixedContentExplanation).c reateChild("div", "security-mixed-content link"); | |
| 397 requestsAnchor.textContent = WebInspector.UIString("View requests in Network Panel"); | |
| 398 requestsAnchor.href = ""; | |
| 399 requestsAnchor.addEventListener("click", mixedContentStatus.ranInsec ureContent ? showBlockOverriddenMixedContentInNetworkPanel : showDisplayedMixedC ontentInNetworkPanel, false); | |
| 400 } | |
| 401 } | |
| 402 | |
| 403 function showDisplayedMixedContentInNetworkPanel(e) { | |
|
pfeldman
2015/09/03 23:48:48
{ goes next line, missing annotation.
estark
2015/09/04 02:45:30
Done.
| |
| 404 e.consume(); | |
| 405 WebInspector.NetworkPanel.revealAndFilter(WebInspector.NetworkLogView. FilterType.MixedContent, "displayed"); | |
| 406 } | |
| 407 | |
| 408 function showBlockOverriddenMixedContentInNetworkPanel(e) { | |
|
pfeldman
2015/09/03 23:48:48
ditto
estark
2015/09/04 02:45:30
Done.
| |
| 409 e.consume(); | |
| 410 WebInspector.NetworkPanel.revealAndFilter(WebInspector.NetworkLogView. FilterType.MixedContent, "block-overridden"); | |
| 411 } | |
| 373 }, | 412 }, |
| 374 | 413 |
| 375 __proto__: WebInspector.VBox.prototype | 414 __proto__: WebInspector.VBox.prototype |
| 376 } | 415 } |
| 377 | 416 |
| 378 /** | 417 /** |
| 379 * @constructor | 418 * @constructor |
| 380 * @extends {WebInspector.VBox} | 419 * @extends {WebInspector.VBox} |
| 381 * @param {!WebInspector.SecurityPanel} panel | 420 * @param {!WebInspector.SecurityPanel} panel |
| 382 * @param {!WebInspector.SecurityPanel.Origin} origin | 421 * @param {!WebInspector.SecurityPanel.Origin} origin |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 511 row.createChild("div").textContent = WebInspector.UIString(key); | 550 row.createChild("div").textContent = WebInspector.UIString(key); |
| 512 | 551 |
| 513 var valueDiv = row.createChild("div"); | 552 var valueDiv = row.createChild("div"); |
| 514 if (value instanceof HTMLDivElement) { | 553 if (value instanceof HTMLDivElement) { |
| 515 valueDiv.appendChild(value); | 554 valueDiv.appendChild(value); |
| 516 } else { | 555 } else { |
| 517 valueDiv.textContent = value; | 556 valueDiv.textContent = value; |
| 518 } | 557 } |
| 519 } | 558 } |
| 520 } | 559 } |
| 521 | |
|
lgarron
2015/09/04 00:44:35
Nit: unnecessary whitespace change.
estark
2015/09/04 02:45:30
Done.
| |
| OLD | NEW |