• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2023 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.impl;
6 
7 import static org.chromium.net.impl.HttpEngineNativeProvider.EXT_API_LEVEL;
8 import static org.chromium.net.impl.HttpEngineNativeProvider.EXT_VERSION;
9 
10 import android.net.http.HttpException;
11 
12 import androidx.annotation.NonNull;
13 import androidx.annotation.Nullable;
14 
15 import androidx.annotation.RequiresExtension;
16 import java.nio.ByteBuffer;
17 import java.util.Objects;
18 
19 @RequiresExtension(extension = EXT_API_LEVEL, version = EXT_VERSION)
20 @SuppressWarnings("Override")
21 class AndroidUrlRequestCallbackWrapper implements android.net.http.UrlRequest.Callback {
22     private final org.chromium.net.UrlRequest.Callback mBackend;
23 
AndroidUrlRequestCallbackWrapper(org.chromium.net.UrlRequest.Callback backend)24     public AndroidUrlRequestCallbackWrapper(org.chromium.net.UrlRequest.Callback backend) {
25         Objects.requireNonNull(backend, "Callback is required.");
26         this.mBackend = backend;
27     }
28 
29     /**
30      * @see <a
31      *     href="https://developer.android.com/training/basics/network-ops/reading-network-state#listening-events">Foo
32      *     Bar</a>
33      */
34     @Override
onRedirectReceived( android.net.http.UrlRequest request, android.net.http.UrlResponseInfo info, String newLocationUrl)35     public void onRedirectReceived(
36             android.net.http.UrlRequest request,
37             android.net.http.UrlResponseInfo info,
38             String newLocationUrl)
39             throws Exception {
40         CronetExceptionTranslationUtils.executeTranslatingCronetExceptions(
41                 () -> {
42                     AndroidUrlResponseInfoWrapper specializedResponseInfo =
43                             AndroidUrlResponseInfoWrapper.createForUrlRequest(info);
44                     AndroidUrlRequestWrapper specializedRequest =
45                             new AndroidUrlRequestWrapper(request);
46                     mBackend.onRedirectReceived(
47                             specializedRequest, specializedResponseInfo, newLocationUrl);
48                     return null;
49                 },
50                 Exception.class);
51     }
52 
53     @Override
onResponseStarted( android.net.http.UrlRequest request, android.net.http.UrlResponseInfo info)54     public void onResponseStarted(
55             android.net.http.UrlRequest request, android.net.http.UrlResponseInfo info)
56             throws Exception {
57         CronetExceptionTranslationUtils.executeTranslatingCronetExceptions(
58                 () -> {
59                     AndroidUrlResponseInfoWrapper specializedResponseInfo =
60                             AndroidUrlResponseInfoWrapper.createForUrlRequest(info);
61                     AndroidUrlRequestWrapper specializedRequest =
62                             new AndroidUrlRequestWrapper(request);
63                     mBackend.onResponseStarted(specializedRequest, specializedResponseInfo);
64                     return null;
65                 },
66                 Exception.class);
67     }
68 
69     @Override
onReadCompleted( android.net.http.UrlRequest request, android.net.http.UrlResponseInfo info, ByteBuffer byteBuffer)70     public void onReadCompleted(
71             android.net.http.UrlRequest request,
72             android.net.http.UrlResponseInfo info,
73             ByteBuffer byteBuffer)
74             throws Exception {
75         CronetExceptionTranslationUtils.executeTranslatingCronetExceptions(
76                 () -> {
77                     AndroidUrlResponseInfoWrapper specializedResponseInfo =
78                             AndroidUrlResponseInfoWrapper.createForUrlRequest(info);
79                     AndroidUrlRequestWrapper specializedRequest =
80                             new AndroidUrlRequestWrapper(request);
81                     mBackend.onReadCompleted(
82                             specializedRequest, specializedResponseInfo, byteBuffer);
83                     return null;
84                 },
85                 Exception.class);
86     }
87 
88     @Override
onSucceeded( android.net.http.UrlRequest request, android.net.http.UrlResponseInfo info)89     public void onSucceeded(
90             android.net.http.UrlRequest request, android.net.http.UrlResponseInfo info) {
91         AndroidUrlResponseInfoWrapper specializedResponseInfo =
92                 AndroidUrlResponseInfoWrapper.createForUrlRequest(info);
93         AndroidUrlRequestWrapper specializedRequest = new AndroidUrlRequestWrapper(request);
94         mBackend.onSucceeded(specializedRequest, specializedResponseInfo);
95     }
96 
97     @Override
onFailed( android.net.http.UrlRequest request, android.net.http.UrlResponseInfo info, HttpException error)98     public void onFailed(
99             android.net.http.UrlRequest request,
100             android.net.http.UrlResponseInfo info,
101             HttpException error) {
102         AndroidUrlResponseInfoWrapper specializedResponseInfo =
103                 AndroidUrlResponseInfoWrapper.createForUrlRequest(info);
104         AndroidUrlRequestWrapper specializedRequest = new AndroidUrlRequestWrapper(request);
105         mBackend.onFailed(
106                 specializedRequest,
107                 specializedResponseInfo,
108                 CronetExceptionTranslationUtils.translateCheckedAndroidCronetException(error));
109     }
110 
111     @Override
onCanceled( @onNull android.net.http.UrlRequest request, @Nullable android.net.http.UrlResponseInfo info)112     public void onCanceled(
113             @NonNull android.net.http.UrlRequest request,
114             @Nullable android.net.http.UrlResponseInfo info) {
115         AndroidUrlResponseInfoWrapper specializedResponseInfo =
116                 AndroidUrlResponseInfoWrapper.createForUrlRequest(info);
117         AndroidUrlRequestWrapper specializedRequest = new AndroidUrlRequestWrapper(request);
118         mBackend.onCanceled(specializedRequest, specializedResponseInfo);
119     }
120 }
121