blob: aa8ecf182a9a4dbb30bbf4b7d27042d8caa6b87e [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package org.chromium.net.impl;
import static org.chromium.net.impl.HttpEngineNativeProvider.EXT_API_LEVEL;
import static org.chromium.net.impl.HttpEngineNativeProvider.EXT_VERSION;
import android.net.http.HttpException;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresExtension;
import java.nio.ByteBuffer;
import java.util.Objects;
@RequiresExtension(extension = EXT_API_LEVEL, version = EXT_VERSION)
@SuppressWarnings("Override")
class AndroidBidirectionalStreamCallbackWrapper implements
android.net.http.BidirectionalStream.Callback {
private final org.chromium.net.BidirectionalStream.Callback mBackend;
public AndroidBidirectionalStreamCallbackWrapper(
org.chromium.net.BidirectionalStream.Callback backend) {
Objects.requireNonNull(backend, "Callback is required.");
this.mBackend = backend;
}
@Override
public void onStreamReady(android.net.http.BidirectionalStream bidirectionalStream) {
AndroidBidirectionalStreamWrapper stream =
new AndroidBidirectionalStreamWrapper(bidirectionalStream);
mBackend.onStreamReady(stream);
}
@Override
public void onResponseHeadersReceived(
android.net.http.BidirectionalStream bidirectionalStream,
android.net.http.UrlResponseInfo urlResponseInfo) {
AndroidUrlResponseInfoWrapper specializedResponseInfo =
AndroidUrlResponseInfoWrapper.createForBidirectionalStream(urlResponseInfo);
AndroidBidirectionalStreamWrapper specializedStream =
new AndroidBidirectionalStreamWrapper(bidirectionalStream);
mBackend.onResponseHeadersReceived(specializedStream, specializedResponseInfo);
}
@Override
public void onReadCompleted(
android.net.http.BidirectionalStream bidirectionalStream,
android.net.http.UrlResponseInfo urlResponseInfo,
ByteBuffer byteBuffer,
boolean endOfStream) {
AndroidUrlResponseInfoWrapper specializedResponseInfo =
AndroidUrlResponseInfoWrapper.createForBidirectionalStream(urlResponseInfo);
AndroidBidirectionalStreamWrapper specializedStream =
new AndroidBidirectionalStreamWrapper(bidirectionalStream);
mBackend.onReadCompleted(
specializedStream, specializedResponseInfo, byteBuffer, endOfStream);
}
@Override
public void onWriteCompleted(
android.net.http.BidirectionalStream bidirectionalStream,
android.net.http.UrlResponseInfo urlResponseInfo,
ByteBuffer byteBuffer,
boolean endOfStream) {
AndroidUrlResponseInfoWrapper specializedResponseInfo =
AndroidUrlResponseInfoWrapper.createForBidirectionalStream(urlResponseInfo);
AndroidBidirectionalStreamWrapper specializedStream =
new AndroidBidirectionalStreamWrapper(bidirectionalStream);
mBackend.onWriteCompleted(
specializedStream, specializedResponseInfo, byteBuffer, endOfStream);
}
@Override
public void onResponseTrailersReceived(
@NonNull android.net.http.BidirectionalStream bidirectionalStream,
@NonNull android.net.http.UrlResponseInfo urlResponseInfo,
@NonNull android.net.http.HeaderBlock headerBlock) {
AndroidUrlResponseInfoWrapper specializedResponseInfo =
AndroidUrlResponseInfoWrapper.createForBidirectionalStream(urlResponseInfo);
AndroidBidirectionalStreamWrapper specializedStream =
new AndroidBidirectionalStreamWrapper(bidirectionalStream);
AndroidHeaderBlockWrapper specializedHeaderBlock =
new AndroidHeaderBlockWrapper(headerBlock);
mBackend.onResponseTrailersReceived(
specializedStream, specializedResponseInfo, specializedHeaderBlock);
}
@Override
public void onSucceeded(
android.net.http.BidirectionalStream bidirectionalStream,
android.net.http.UrlResponseInfo urlResponseInfo) {
AndroidUrlResponseInfoWrapper specializedResponseInfo =
AndroidUrlResponseInfoWrapper.createForBidirectionalStream(urlResponseInfo);
AndroidBidirectionalStreamWrapper specializedStream =
new AndroidBidirectionalStreamWrapper(bidirectionalStream);
mBackend.onSucceeded(specializedStream, specializedResponseInfo);
}
@Override
public void onFailed(
android.net.http.BidirectionalStream bidirectionalStream,
android.net.http.UrlResponseInfo urlResponseInfo,
HttpException e) {
AndroidUrlResponseInfoWrapper specializedResponseInfo =
AndroidUrlResponseInfoWrapper.createForBidirectionalStream(urlResponseInfo);
AndroidBidirectionalStreamWrapper specializedStream =
new AndroidBidirectionalStreamWrapper(bidirectionalStream);
mBackend.onFailed(
specializedStream,
specializedResponseInfo,
CronetExceptionTranslationUtils.translateCheckedAndroidCronetException(e));
}
@Override
public void onCanceled(
@NonNull android.net.http.BidirectionalStream bidirectionalStream,
@Nullable android.net.http.UrlResponseInfo urlResponseInfo) {
AndroidUrlResponseInfoWrapper specializedResponseInfo =
AndroidUrlResponseInfoWrapper.createForBidirectionalStream(urlResponseInfo);
AndroidBidirectionalStreamWrapper specializedStream =
new AndroidBidirectionalStreamWrapper(bidirectionalStream);
mBackend.onCanceled(specializedStream, specializedResponseInfo);
}
}