1 // Copyright 2022 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 package org.chromium.net.apihelpers; 6 7 import androidx.annotation.Nullable; 8 9 import org.chromium.net.UrlResponseInfo; 10 11 import java.util.Objects; 12 13 /** 14 * A helper object encompassing the headers, body and metadata of a response to Cronet URL 15 * requests. 16 * 17 * @param <T> the response body type 18 */ 19 public class CronetResponse<T> { 20 /** The headers and other metadata of the response. */ 21 private final UrlResponseInfo mUrlResponseInfo; 22 23 /** The full body of the response, after performing a user-defined deserialization. */ 24 private final @Nullable T mResponseBody; 25 CronetResponse(UrlResponseInfo urlResponseInfo, @Nullable T responseBody)26 CronetResponse(UrlResponseInfo urlResponseInfo, @Nullable T responseBody) { 27 this.mUrlResponseInfo = urlResponseInfo; 28 this.mResponseBody = responseBody; 29 } 30 31 /** Returns the headers and other metadata of the response. */ getUrlResponseInfo()32 public UrlResponseInfo getUrlResponseInfo() { 33 return mUrlResponseInfo; 34 } 35 36 /** Returns the full body of the response, after performing a user-defined deserialization. */ getResponseBody()37 public @Nullable T getResponseBody() { 38 return mResponseBody; 39 } 40 41 @Override equals(Object o)42 public boolean equals(Object o) { 43 if (this == o) { 44 return true; 45 } 46 if (!(o instanceof CronetResponse)) { 47 return false; 48 } 49 CronetResponse<?> that = (CronetResponse<?>) o; 50 return Objects.equals(mUrlResponseInfo, that.mUrlResponseInfo) 51 && Objects.equals(mResponseBody, that.mResponseBody); 52 } 53 54 @Override hashCode()55 public int hashCode() { 56 return Objects.hash(mUrlResponseInfo, mResponseBody); 57 } 58 } 59