Chromium Code Reviews| Index: third_party/WebKit/Source/core/inspector/InspectorNetworkAgent.cpp |
| diff --git a/third_party/WebKit/Source/core/inspector/InspectorNetworkAgent.cpp b/third_party/WebKit/Source/core/inspector/InspectorNetworkAgent.cpp |
| index c23cd6e6b90876686d037f4016f1a7853edc7309..87dcfb7b0d11f0e4687410daff48b272ed4c9ca2 100644 |
| --- a/third_party/WebKit/Source/core/inspector/InspectorNetworkAgent.cpp |
| +++ b/third_party/WebKit/Source/core/inspector/InspectorNetworkAgent.cpp |
| @@ -315,7 +315,7 @@ static std::unique_ptr<protocol::Network::Request> buildObjectForResourceRequest |
| return requestObject; |
| } |
| -static std::unique_ptr<protocol::Network::Response> buildObjectForResourceResponse(const ResourceResponse& response, Resource* cachedResource = nullptr, bool* isEmpty = nullptr) |
| +static std::unique_ptr<protocol::Network::Response> buildObjectForResourceResponse(const ResourceResponse& response, HashMap<unsigned, AtomicString>* certificateMap, Resource* cachedResource = nullptr, bool* isEmpty = nullptr) |
| { |
| if (response.isNull()) |
| return nullptr; |
| @@ -420,6 +420,12 @@ static std::unique_ptr<protocol::Network::Response> buildObjectForResourceRespon |
| const ResourceResponse::SecurityDetails* responseSecurityDetails = response.getSecurityDetails(); |
| + std::unique_ptr<protocol::Array<String>> sanList = protocol::Array<String>::create(); |
| + for (auto const& san : responseSecurityDetails->sanList) |
| + sanList->addItem(san); |
| + |
| + certificateMap->add(responseSecurityDetails->certificate.impl()->existingHash(), responseSecurityDetails->certificate); |
| + |
| std::unique_ptr<protocol::Array<protocol::Network::SignedCertificateTimestamp>> signedCertificateTimestampList = protocol::Array<protocol::Network::SignedCertificateTimestamp>::create(); |
| for (auto const& sct : responseSecurityDetails->sctList) { |
| std::unique_ptr<protocol::Network::SignedCertificateTimestamp> signedCertificateTimestamp = protocol::Network::SignedCertificateTimestamp::create() |
| @@ -439,8 +445,14 @@ static std::unique_ptr<protocol::Network::Response> buildObjectForResourceRespon |
| .setProtocol(responseSecurityDetails->protocol) |
| .setKeyExchange(responseSecurityDetails->keyExchange) |
| .setCipher(responseSecurityDetails->cipher) |
| - .setCertificateId(responseSecurityDetails->certID) |
| + .setSubjectName(responseSecurityDetails->subjectName) |
| + .setSanList(std::move(sanList)) |
| + .setIssuer(responseSecurityDetails->issuer) |
| + .setValidFrom(responseSecurityDetails->validFrom) |
| + .setValidTo(responseSecurityDetails->validTo) |
| + .setCertificateId(0) // Keep this in protocol for compatability. |
|
jam
2016/08/31 22:13:28
Pavel: I tried to remove this from the protocol, b
pfeldman
2016/08/31 23:08:45
I'll take a look at it.
|
| .setSignedCertificateTimestampList(std::move(signedCertificateTimestampList)) |
| + .setCertificateHash(responseSecurityDetails->certificate.impl()->existingHash()) |
| .build(); |
| if (responseSecurityDetails->mac.length() > 0) |
| securityDetails->setMac(responseSecurityDetails->mac); |
| @@ -524,7 +536,7 @@ void InspectorNetworkAgent::willSendRequestInternal(LocalFrame* frame, unsigned |
| requestInfo->setMixedContentType(mixedContentTypeForContextType(MixedContentChecker::contextTypeForInspector(frame, request))); |
| String resourceType = InspectorPageAgent::resourceTypeJson(type); |
| - frontend()->requestWillBeSent(requestId, frameId, loaderId, urlWithoutFragment(loader->url()).getString(), std::move(requestInfo), monotonicallyIncreasingTime(), currentTime(), std::move(initiatorObject), buildObjectForResourceResponse(redirectResponse), resourceType); |
| + frontend()->requestWillBeSent(requestId, frameId, loaderId, urlWithoutFragment(loader->url()).getString(), std::move(requestInfo), monotonicallyIncreasingTime(), currentTime(), std::move(initiatorObject), buildObjectForResourceResponse(redirectResponse, &m_certificateHashMap), resourceType); |
| if (m_pendingXHRReplayData && !m_pendingXHRReplayData->async()) |
| frontend()->flush(); |
| } |
| @@ -574,7 +586,7 @@ void InspectorNetworkAgent::didReceiveResourceResponse(LocalFrame* frame, unsign |
| bool isNotModified = response.httpStatusCode() == 304; |
| bool resourceIsEmpty = true; |
| - std::unique_ptr<protocol::Network::Response> resourceResponse = buildObjectForResourceResponse(response, cachedResource, &resourceIsEmpty); |
| + std::unique_ptr<protocol::Network::Response> resourceResponse = buildObjectForResourceResponse(response, &m_certificateHashMap, cachedResource, &resourceIsEmpty); |
| InspectorPageAgent::ResourceType type = cachedResource ? InspectorPageAgent::cachedResourceType(*cachedResource) : InspectorPageAgent::OtherResource; |
| // Override with already discovered resource type. |
| @@ -1120,6 +1132,13 @@ void InspectorNetworkAgent::setDataSizeLimitsForTest(ErrorString*, int maxTotal, |
| m_resourcesData->setResourcesDataSizeLimits(maxTotal, maxResource); |
| } |
| +void InspectorNetworkAgent::showCertificateViewer(ErrorString*, int certificateHash) |
| +{ |
| + unsigned hash = static_cast<unsigned>(certificateHash); |
| + DCHECK(m_certificateHashMap.contains(hash)); |
| + m_client->showCertificateViewer(m_certificateHashMap.get(hash)); |
| +} |
| + |
| void InspectorNetworkAgent::didCommitLoad(LocalFrame* frame, DocumentLoader* loader) |
| { |
| if (loader->frame() != m_inspectedFrames->root()) |
| @@ -1172,8 +1191,9 @@ void InspectorNetworkAgent::removeFinishedReplayXHRFired(TimerBase*) |
| m_replayXHRsToBeDeleted.clear(); |
| } |
| -InspectorNetworkAgent::InspectorNetworkAgent(InspectedFrames* inspectedFrames) |
| - : m_inspectedFrames(inspectedFrames) |
| +InspectorNetworkAgent::InspectorNetworkAgent(Client* client, InspectedFrames* inspectedFrames) |
| + : m_client(client) |
| + , m_inspectedFrames(inspectedFrames) |
| , m_resourcesData(NetworkResourcesData::create(maximumTotalBufferSize, maximumResourceBufferSize)) |
| , m_pendingRequest(nullptr) |
| , m_isRecalculatingStyle(false) |