public abstract class **InMemoryTransformCronetCallback** extends [ImplicitFlowControlCallback](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ImplicitFlowControlCallback.html)  

|---|---|---|
| Known Direct Subclasses [ByteArrayCronetCallback](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ByteArrayCronetCallback.html), [JsonCronetCallback](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/JsonCronetCallback.html), [StringCronetCallback](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/StringCronetCallback.html) |---------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | [ByteArrayCronetCallback](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ByteArrayCronetCallback.html) | A specialization of [InMemoryTransformCronetCallback](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/InMemoryTransformCronetCallback.html) which returns the body bytes verbatim without any interpretation. | | [JsonCronetCallback](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/JsonCronetCallback.html)           | A specialization of [InMemoryTransformCronetCallback](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/InMemoryTransformCronetCallback.html) that interprets the response body as JSON.                        | | [StringCronetCallback](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/StringCronetCallback.html)       | A specialization of [InMemoryTransformCronetCallback](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/InMemoryTransformCronetCallback.html) that interprets the response body as a string.                    | |||

An abstract Cronet callback that reads the entire body to memory and optionally deserializes the
body before passing it back to the issuer of the HTTP request.

The requester can subscribe for updates about the request by adding completion mListeners on
the callback. When the request reaches a terminal state, the mListeners are informed in order of
addition.  

### Public Constructor Summary

|---|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|   | [InMemoryTransformCronetCallback](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/InMemoryTransformCronetCallback.html#InMemoryTransformCronetCallback())() |

### Public Method Summary

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [ImplicitFlowControlCallback](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ImplicitFlowControlCallback.html) | [addCompletionListener](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/InMemoryTransformCronetCallback.html#addCompletionListener(org.chromium.net.apihelpers.CronetRequestCompletionListener<?%20super%20T>))([CronetRequestCompletionListener](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/CronetRequestCompletionListener.html)\<? super T\> listener) Adds a completion listener. |

### Protected Method Summary

|------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| final void | [onBodyChunkRead](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/InMemoryTransformCronetCallback.html#onBodyChunkRead(org.chromium.net.UrlResponseInfo,%20java.nio.ByteBuffer))([UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info, ByteBuffer bodyChunk) Invoked whenever part of the response body has been read.                                                                                                                                                                                                                                           |
| final void | [onCanceled](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/InMemoryTransformCronetCallback.html#onCanceled(org.chromium.net.UrlResponseInfo))([UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info) Invoked if request was canceled via [UrlRequest.cancel()](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.html#cancel()).                                                                                                                                                                                  |
| final void | [onFailed](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/InMemoryTransformCronetCallback.html#onFailed(org.chromium.net.UrlResponseInfo,%20org.chromium.net.CronetException))([UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info, [CronetException](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/CronetException.html) exception) Invoked if request failed for any reason after [UrlRequest.start()](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.html#start()). |
| final void | [onResponseStarted](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/InMemoryTransformCronetCallback.html#onResponseStarted(org.chromium.net.UrlResponseInfo))([UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info) Invoked when the final set of headers, after all redirects, is received.                                                                                                                                                                                                                                                                     |
| final void | [onSucceeded](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/InMemoryTransformCronetCallback.html#onSucceeded(org.chromium.net.UrlResponseInfo))([UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info) Invoked when request is completed successfully.                                                                                                                                                                                                                                                                                                          |
| abstract T | [transformBodyBytes](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/InMemoryTransformCronetCallback.html#transformBodyBytes(org.chromium.net.UrlResponseInfo,%20byte[]))([UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info, byte\[\] bodyBytes) Transforms (deserializes) the plain full body into a user-defined object.                                                                                                                                                                                                                                    |

### Inherited Method Summary

From class [org.chromium.net.apihelpers.ImplicitFlowControlCallback](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ImplicitFlowControlCallback.html)  

|------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| abstract void    | [onBodyChunkRead](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ImplicitFlowControlCallback.html#onBodyChunkRead(org.chromium.net.UrlResponseInfo,%20java.nio.ByteBuffer))([UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info, ByteBuffer bodyChunk) Invoked whenever part of the response body has been read.                                                                                                                                                                                                                                                                                                                                                                                                  |
| abstract void    | [onCanceled](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ImplicitFlowControlCallback.html#onCanceled(org.chromium.net.UrlResponseInfo))([UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info) Invoked if request was canceled via [UrlRequest.cancel()](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.html#cancel()).                                                                                                                                                                                                                                                                                                                                         |
| final void       | [onCanceled](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ImplicitFlowControlCallback.html#onCanceled(org.chromium.net.UrlRequest,%20org.chromium.net.UrlResponseInfo))([UrlRequest](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.html) request, [UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info) Invoked if request was canceled via [UrlRequest.cancel()](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.html#cancel()).                                                                                                                                                                              |
| final void       | [onFailed](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ImplicitFlowControlCallback.html#onFailed(org.chromium.net.UrlRequest,%20org.chromium.net.UrlResponseInfo,%20org.chromium.net.CronetException))([UrlRequest](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.html) request, [UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info, [CronetException](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/CronetException.html) error) Invoked if request failed for any reason after [UrlRequest.start()](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.html#start()). |
| abstract void    | [onFailed](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ImplicitFlowControlCallback.html#onFailed(org.chromium.net.UrlResponseInfo,%20org.chromium.net.CronetException))([UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info, [CronetException](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/CronetException.html) exception) Invoked if request failed for any reason after [UrlRequest.start()](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.html#start()).                                                                                                                                                        |
| final void       | [onReadCompleted](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ImplicitFlowControlCallback.html#onReadCompleted(org.chromium.net.UrlRequest,%20org.chromium.net.UrlResponseInfo,%20java.nio.ByteBuffer))([UrlRequest](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.html) request, [UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info, ByteBuffer byteBuffer) Invoked whenever part of the response body has been read.                                                                                                                                                                                                                                      |
| final void       | [onRedirectReceived](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ImplicitFlowControlCallback.html#onRedirectReceived(org.chromium.net.UrlRequest,%20org.chromium.net.UrlResponseInfo,%20java.lang.String))([UrlRequest](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.html) request, [UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info, String newLocationUrl) Invoked whenever a redirect is encountered.                                                                                                                                                                                                                                                 |
| abstract void    | [onResponseStarted](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ImplicitFlowControlCallback.html#onResponseStarted(org.chromium.net.UrlResponseInfo))([UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info) Invoked when the final set of headers, after all redirects, is received.                                                                                                                                                                                                                                                                                                                                                                                                                            |
| final void       | [onResponseStarted](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ImplicitFlowControlCallback.html#onResponseStarted(org.chromium.net.UrlRequest,%20org.chromium.net.UrlResponseInfo))([UrlRequest](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.html) request, [UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info) Invoked when the final set of headers, after all redirects, is received.                                                                                                                                                                                                                                                                 |
| final void       | [onSucceeded](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ImplicitFlowControlCallback.html#onSucceeded(org.chromium.net.UrlRequest,%20org.chromium.net.UrlResponseInfo))([UrlRequest](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.html) request, [UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info) Invoked when request is completed successfully.                                                                                                                                                                                                                                                                                                      |
| abstract void    | [onSucceeded](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ImplicitFlowControlCallback.html#onSucceeded(org.chromium.net.UrlResponseInfo))([UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info) Invoked when request is completed successfully.                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| abstract boolean | [shouldFollowRedirect](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ImplicitFlowControlCallback.html#shouldFollowRedirect(org.chromium.net.UrlResponseInfo,%20java.lang.String))([UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info, String newLocationUrl) Invoked whenever a redirect is encountered.                                                                                                                                                                                                                                                                                                                                                                                                        |

From class [org.chromium.net.UrlRequest.Callback](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback.html)  

|---------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| void          | [onCanceled](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback.html#onCanceled(org.chromium.net.UrlRequest,%20org.chromium.net.UrlResponseInfo))([UrlRequest](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.html) request, [UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info) Invoked if request was canceled via [UrlRequest.cancel()](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.html#cancel()).                                                                                                                                                                              |
| abstract void | [onFailed](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback.html#onFailed(org.chromium.net.UrlRequest,%20org.chromium.net.UrlResponseInfo,%20org.chromium.net.CronetException))([UrlRequest](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.html) request, [UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info, [CronetException](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/CronetException.html) error) Invoked if request failed for any reason after [UrlRequest.start()](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.html#start()). |
| abstract void | [onReadCompleted](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback.html#onReadCompleted(org.chromium.net.UrlRequest,%20org.chromium.net.UrlResponseInfo,%20java.nio.ByteBuffer))([UrlRequest](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.html) request, [UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info, ByteBuffer byteBuffer) Invoked whenever part of the response body has been read.                                                                                                                                                                                                                                      |
| abstract void | [onRedirectReceived](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback.html#onRedirectReceived(org.chromium.net.UrlRequest,%20org.chromium.net.UrlResponseInfo,%20java.lang.String))([UrlRequest](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.html) request, [UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info, String newLocationUrl) Invoked whenever a redirect is encountered.                                                                                                                                                                                                                                                 |
| abstract void | [onResponseStarted](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback.html#onResponseStarted(org.chromium.net.UrlRequest,%20org.chromium.net.UrlResponseInfo))([UrlRequest](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.html) request, [UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info) Invoked when the final set of headers, after all redirects, is received.                                                                                                                                                                                                                                                                 |
| abstract void | [onSucceeded](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback.html#onSucceeded(org.chromium.net.UrlRequest,%20org.chromium.net.UrlResponseInfo))([UrlRequest](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.html) request, [UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info) Invoked when request is completed successfully.                                                                                                                                                                                                                                                                                                      |

From class java.lang.Object  

|------------------|---------------------------|
| Object           | clone()                   |
| boolean          | equals(Object arg0)       |
| void             | finalize()                |
| final Class\<?\> | getClass()                |
| int              | hashCode()                |
| final void       | notify()                  |
| final void       | notifyAll()               |
| String           | toString()                |
| final void       | wait(long arg0, int arg1) |
| final void       | wait(long arg0)           |
| final void       | wait()                    |

## Public Constructors

#### public
**InMemoryTransformCronetCallback**
()

<br />

## Public Methods

#### public [ImplicitFlowControlCallback](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/ImplicitFlowControlCallback.html)
**addCompletionListener**
([CronetRequestCompletionListener](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/CronetRequestCompletionListener.html)\<? super T\> listener)

Adds a completion listener. All listeners are informed when the request reaches a terminal
state, in order of addition. If a listener is added multiple times, it will only be called
once according to the first time it was added.  

##### Parameters

| listener |   |
|----------|---|

##### See Also

- [CronetRequestCompletionListener](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/apihelpers/CronetRequestCompletionListener.html)

## Protected Methods

#### protected final void
**onBodyChunkRead**
([UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info, ByteBuffer bodyChunk)

Invoked whenever part of the response body has been read. Only part of the buffer may be
populated, even if the entire response body has not yet been consumed. The buffer is ready
for reading. Buffers are reused internally so the implementing class shouldn't store the
buffer or use it anywhere else than in the implementation of this method.  

##### Parameters

|   info    |                      Response information.                       |
| bodyChunk | The buffer that contains the received data, flipped for reading. |
|-----------|------------------------------------------------------------------|

##### Throws

| Exception |   |
|-----------|---|

#### protected final void
**onCanceled**
([UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info)

Invoked if request was canceled via [UrlRequest.cancel()](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.html#cancel()). Once invoked, no other [UrlRequest.Callback](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback.html) methods will be invoked.  

##### Parameters

| info | Response information. May be `null` if no response was received. |
|------|------------------------------------------------------------------|

#### protected final void
**onFailed**
([UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info, [CronetException](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/CronetException.html) exception)

Invoked if request failed for any reason after [UrlRequest.start()](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.html#start()). Once invoked, no
other
[UrlRequest.Callback](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback.html) methods will be invoked. `error` provides information about
the failure.  

##### Parameters

|   info    | Response information. May be `null` if no response was received. |
| exception |                     information about error.                     |
|-----------|------------------------------------------------------------------|

#### protected final void
**onResponseStarted**
([UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info)

Invoked when the final set of headers, after all redirects, is received. Will only be invoked
once for each request. It's guaranteed that Cronet doesn't start reading the body until this
method returns.  

##### Parameters

| info | Response information. |
|------|-----------------------|

#### protected final void
**onSucceeded**
([UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info)

Invoked when request is completed successfully. Once invoked, no other [UrlRequest.Callback](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlRequest.Callback.html) methods will be invoked.  

##### Parameters

| info | Response information. |
|------|-----------------------|

#### protected abstract T
**transformBodyBytes**
([UrlResponseInfo](https://developer.android.com/develop/connectivity/cronet/reference/org/chromium/net/UrlResponseInfo.html) info, byte\[\] bodyBytes)

Transforms (deserializes) the plain full body into a user-defined object.

It is assumed that the implementing classes handle edge cases (such as empty and malformed
bodies) appropriately. Cronet doesn't inspects the objects and passes them (or any
exceptions) along to the issuer of the request.  

##### Parameters

|   info    |   |
| bodyBytes |   |
|-----------|---|