in stetho/src/main/java/com/facebook/stetho/inspector/network/NetworkEventReporterImpl.java [206:251]
public InputStream interpretResponseStream(
String requestId,
@Nullable String contentType,
@Nullable String contentEncoding,
@Nullable InputStream availableInputStream,
ResponseHandler responseHandler) {
NetworkPeerManager peerManager = getPeerManagerIfEnabled();
if (peerManager != null) {
if (availableInputStream == null) {
responseHandler.onEOF();
return null;
}
Page.ResourceType resourceType =
contentType != null ?
getResourceTypeHelper().determineResourceType(contentType) :
null;
// There's this weird logic at play that only knows how to base64 decode certain kinds of
// resources.
boolean base64Encode = false;
if (resourceType != null && resourceType == Page.ResourceType.IMAGE) {
base64Encode = true;
}
try {
OutputStream fileOutputStream =
peerManager.getResponseBodyFileManager().openResponseBodyFile(
requestId,
base64Encode);
return DecompressionHelper.teeInputWithDecompression(
peerManager,
requestId,
availableInputStream,
fileOutputStream,
contentEncoding,
responseHandler);
} catch (IOException e) {
CLog.writeToConsole(
peerManager,
Console.MessageLevel.ERROR,
Console.MessageSource.NETWORK,
"Error writing response body data for request #" + requestId);
}
}
return availableInputStream;
}