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

Unified Diff: third_party/WebKit/Source/core/inspector/InspectorNetworkAgent.cpp

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/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)

Powered by Google App Engine
This is Rietveld 408576698