Index: Source/devtools/front_end/security/SecurityPanel.js |
diff --git a/Source/devtools/front_end/security/SecurityPanel.js b/Source/devtools/front_end/security/SecurityPanel.js |
index 721e9dcda969a1e6450e11ee929d42328151be5a..afcc54fe1f25012669b8680dedbba79b6cfe11c3 100644 |
--- a/Source/devtools/front_end/security/SecurityPanel.js |
+++ b/Source/devtools/front_end/security/SecurityPanel.js |
@@ -24,6 +24,10 @@ WebInspector.SecurityPanel = function() { |
this._mainView = new WebInspector.SecurityMainView(); |
this.showMainView(); |
+ this._origins = {}; |
dgozman
2015/08/19 01:51:35
Use Map.
lgarron
2015/08/19 02:24:24
Oooh, shiny. My first time using Map in Javascript
|
+ WebInspector.targetManager.addEventListener(WebInspector.TargetManager.Events.WillReloadPage, this._onWillReloadPage, this); |
+ WebInspector.targetManager.addEventListener(WebInspector.TargetManager.Events.Load, this._onLoadEventFired, this); |
+ |
WebInspector.targetManager.observeTargets(this); |
} |
@@ -72,6 +76,37 @@ WebInspector.SecurityPanel.prototype = { |
}, |
/** |
+ * @param {!WebInspector.Event} event |
+ */ |
+ _onResponseReceivedSecurityDetails: function(event) |
+ { |
+ var data = event.data; |
+ var origin = data.origin; |
+ var securityState = data.securityState; |
+ |
+ if (origin in this._origins) { |
+ this._origins[origin].securityState = this._securityStateMin(this._origins[origin].securityState, securityState); |
+ } else { |
+ // TODO(lgarron): Store a list of deduplicated different security details we have seen. |
+ this._origins[origin] = { |
+ securityState: securityState, |
+ securityDetails: data.securityDetails |
+ } |
+ } |
+ }, |
+ |
+ /** |
+ * @param {!SecurityAgent.SecurityState} stateA |
+ * @param {!SecurityAgent.SecurityState} stateB |
+ * @return {!SecurityAgent.SecurityState} |
+ */ |
+ _securityStateMin: function(stateA, stateB) |
+ { |
+ var ordering = ["unknown", "insecure", "http", "warning", "secure"]; |
+ return (ordering.indexOf(stateA) < ordering.indexOf(stateB)) ? stateA : stateB; |
+ }, |
+ |
+ /** |
* @override |
* @param {!WebInspector.Target} target |
*/ |
@@ -82,6 +117,10 @@ WebInspector.SecurityPanel.prototype = { |
this._securityModel = WebInspector.SecurityModel.fromTarget(target); |
this._securityModel.addEventListener(WebInspector.SecurityModel.EventTypes.SecurityStateChanged, this._onSecurityStateChanged, this); |
this._updateSecurityState(this._securityModel.securityState(), []); |
+ |
+ this._origins = {}; |
+ this._networkManager = target.networkManager; |
+ this._networkManager.addEventListener(WebInspector.NetworkManager.EventTypes.ResponseReceivedSecurityDetails, this._onResponseReceivedSecurityDetails, this); |
} |
}, |
@@ -94,11 +133,22 @@ WebInspector.SecurityPanel.prototype = { |
if (target === this._target) { |
this._securityModel.removeEventListener(WebInspector.SecurityModel.EventTypes.SecurityStateChanged, this._onSecurityStateChanged, this); |
delete this._securityModel; |
+ this._networkManager.removeEventListener(WebInspector.NetworkManager.EventTypes.ResponseReceivedSecurityDetails, this._onResponseReceivedSecurityDetails, this); |
+ delete this._networkManager; |
delete this._target; |
+ this._origins = {}; |
this._updateSecurityState(SecurityAgent.SecurityState.Unknown, []); |
} |
}, |
+ _onWillReloadPage: function() { |
dgozman
2015/08/19 01:51:35
{ on new line everywhere.
lgarron
2015/08/19 02:24:24
I try to avoid it, but I still do this out of habi
|
+ this._origins = {}; |
+ }, |
+ |
+ _onLoadEventFired: function() { |
dgozman
2015/08/19 01:51:35
You can call this |clear| and merge with previous
lgarron
2015/08/19 02:24:24
Done. Always happy to keep things DRY. :-)
|
+ this._origins = {}; |
+ }, |
+ |
__proto__: WebInspector.PanelWithSidebar.prototype |
} |