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 89b751538085166dd2f2f59339d20e06ed896149..7af776779b0220a3a5eda71d30cd6438d156237c 100644 |
| --- a/third_party/WebKit/Source/core/inspector/InspectorNetworkAgent.cpp |
| +++ b/third_party/WebKit/Source/core/inspector/InspectorNetworkAgent.cpp |
| @@ -725,7 +725,7 @@ void InspectorNetworkAgent::didReceiveResourceResponse( |
| // following didReceiveResponse as there will be no calls to didReceiveData |
| // from the network stack. |
| if (isNotModified && cachedResource && cachedResource->encodedSize()) |
| - didReceiveData(frame, identifier, 0, cachedResource->encodedSize(), 0); |
| + didReceiveData(frame, identifier, 0, cachedResource->encodedSize()); |
| } |
| static bool isErrorStatusCode(int statusCode) { |
| @@ -735,8 +735,7 @@ static bool isErrorStatusCode(int statusCode) { |
| void InspectorNetworkAgent::didReceiveData(LocalFrame*, |
| unsigned long identifier, |
| const char* data, |
| - int dataLength, |
| - int encodedDataLength) { |
| + int dataLength) { |
| String requestId = IdentifiersFactory::requestId(identifier); |
| if (data) { |
| @@ -750,8 +749,17 @@ void InspectorNetworkAgent::didReceiveData(LocalFrame*, |
| m_resourcesData->maybeAddResourceData(requestId, data, dataLength); |
| } |
| - frontend()->dataReceived(requestId, monotonicallyIncreasingTime(), dataLength, |
| - encodedDataLength); |
| + frontend()->dataReceived( |
| + requestId, monotonicallyIncreasingTime(), dataLength, |
| + m_resourcesData->getAndClearPendingEncodedDataLength(requestId)); |
| +} |
| + |
| +void InspectorNetworkAgent::didReceiveEncodedDataLength( |
| + LocalFrame*, |
| + unsigned long identifier, |
| + int encodedDataLength) { |
| + String requestId = IdentifiersFactory::requestId(identifier); |
| + m_resourcesData->addPendingEncodedDataLength(requestId, encodedDataLength); |
| } |
| void InspectorNetworkAgent::didFinishLoading(unsigned long identifier, |
| @@ -760,6 +768,14 @@ void InspectorNetworkAgent::didFinishLoading(unsigned long identifier, |
| String requestId = IdentifiersFactory::requestId(identifier); |
| NetworkResourcesData::ResourceData const* resourceData = |
| m_resourcesData->data(requestId); |
| + |
| + int pendingEncodedDataLength = |
| + m_resourcesData->getAndClearPendingEncodedDataLength(requestId); |
| + if (pendingEncodedDataLength > 0) { |
| + frontend()->dataReceived(requestId, monotonicallyIncreasingTime(), 0, |
|
dgozman
2016/12/06 18:29:31
This is unfortunate, but there is no way around it
|
| + pendingEncodedDataLength); |
| + } |
| + |
| if (resourceData && |
| (!resourceData->cachedResource() || |
| resourceData->cachedResource()->getDataBufferingPolicy() == |