blob: d909e3928fece6a2c7b8354219ae2640f4eca0cc [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 android.net.http.HttpException;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import java.nio.ByteBuffer;
@RequiresApi(api = 34)
@SuppressWarnings("Override")
class UrlRequestCallbackWrapper implements android.net.http.UrlRequest.Callback {
private final org.chromium.net.UrlRequest.Callback mBackend;
public UrlRequestCallbackWrapper(org.chromium.net.UrlRequest.Callback backend) {
this.mBackend = backend;
}
/**
* @see <a
* href="https://developer.android.com/training/basics/network-ops/reading-network-state#listening-events">Foo
* Bar</a>
*/
@Override
public void onRedirectReceived(android.net.http.UrlRequest request,
android.net.http.UrlResponseInfo info, String newLocationUrl) throws Exception {
CronetExceptionTranslationUtils.executeTranslatingCronetExceptions(() -> {
AndroidUrlResponseInfoWrapper specializedResponseInfo =
new AndroidUrlResponseInfoWrapper(info);
AndroidUrlRequestWrapper specializedRequest = new AndroidUrlRequestWrapper(request);
mBackend.onRedirectReceived(
specializedRequest, specializedResponseInfo, newLocationUrl);
return null;
}, Exception.class);
}
@Override
public void onResponseStarted(android.net.http.UrlRequest request,
android.net.http.UrlResponseInfo info) throws Exception {
CronetExceptionTranslationUtils.executeTranslatingCronetExceptions(() -> {
AndroidUrlResponseInfoWrapper specializedResponseInfo =
new AndroidUrlResponseInfoWrapper(info);
AndroidUrlRequestWrapper specializedRequest = new AndroidUrlRequestWrapper(request);
mBackend.onResponseStarted(specializedRequest, specializedResponseInfo);
return null;
}, Exception.class);
}
@Override
public void onReadCompleted(android.net.http.UrlRequest request,
android.net.http.UrlResponseInfo info, ByteBuffer byteBuffer) throws Exception {
CronetExceptionTranslationUtils.executeTranslatingCronetExceptions(() -> {
AndroidUrlResponseInfoWrapper specializedResponseInfo =
new AndroidUrlResponseInfoWrapper(info);
AndroidUrlRequestWrapper specializedRequest = new AndroidUrlRequestWrapper(request);
mBackend.onReadCompleted(specializedRequest, specializedResponseInfo, byteBuffer);
return null;
}, Exception.class);
}
@Override
public void onSucceeded(
android.net.http.UrlRequest request, android.net.http.UrlResponseInfo info) {
AndroidUrlResponseInfoWrapper specializedResponseInfo =
new AndroidUrlResponseInfoWrapper(info);
AndroidUrlRequestWrapper specializedRequest = new AndroidUrlRequestWrapper(request);
mBackend.onSucceeded(specializedRequest, specializedResponseInfo);
}
@Override
public void onFailed(android.net.http.UrlRequest request, android.net.http.UrlResponseInfo info,
HttpException error) {
AndroidUrlResponseInfoWrapper specializedResponseInfo =
new AndroidUrlResponseInfoWrapper(info);
AndroidUrlRequestWrapper specializedRequest = new AndroidUrlRequestWrapper(request);
mBackend.onFailed(specializedRequest, specializedResponseInfo,
CronetExceptionTranslationUtils.translateCheckedAndroidCronetException(error));
}
@Override
public void onCanceled(@NonNull android.net.http.UrlRequest request,
@Nullable android.net.http.UrlResponseInfo info) {
AndroidUrlResponseInfoWrapper specializedResponseInfo =
new AndroidUrlResponseInfoWrapper(info);
AndroidUrlRequestWrapper specializedRequest = new AndroidUrlRequestWrapper(request);
mBackend.onCanceled(specializedRequest, specializedResponseInfo);
}
}