• 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.Network;
11 
12 import androidx.annotation.RequiresExtension;
13 
14 import org.chromium.net.CronetEngine;
15 
16 import java.util.concurrent.Executor;
17 
18 @RequiresExtension(extension = EXT_API_LEVEL, version = EXT_VERSION)
19 class AndroidUrlRequestBuilderWrapper extends org.chromium.net.ExperimentalUrlRequest.Builder {
20     private final android.net.http.UrlRequest.Builder mBackend;
21 
AndroidUrlRequestBuilderWrapper(android.net.http.UrlRequest.Builder backend)22     public AndroidUrlRequestBuilderWrapper(android.net.http.UrlRequest.Builder backend) {
23         this.mBackend = backend;
24     }
25 
26     @Override
setHttpMethod(String method)27     public org.chromium.net.ExperimentalUrlRequest.Builder setHttpMethod(String method) {
28         mBackend.setHttpMethod(method);
29         return this;
30     }
31 
32     @Override
addHeader(String header, String value)33     public org.chromium.net.ExperimentalUrlRequest.Builder addHeader(String header, String value) {
34         mBackend.addHeader(header, value);
35         return this;
36     }
37 
38     @Override
disableCache()39     public org.chromium.net.ExperimentalUrlRequest.Builder disableCache() {
40         mBackend.setCacheDisabled(true);
41         return this;
42     }
43 
44     @Override
setPriority(int priority)45     public org.chromium.net.ExperimentalUrlRequest.Builder setPriority(int priority) {
46         mBackend.setPriority(priority);
47         return this;
48     }
49 
50     @Override
setUploadDataProvider( org.chromium.net.UploadDataProvider uploadDataProvider, Executor executor)51     public org.chromium.net.ExperimentalUrlRequest.Builder setUploadDataProvider(
52             org.chromium.net.UploadDataProvider uploadDataProvider, Executor executor) {
53         mBackend.setUploadDataProvider(
54                 new AndroidUploadDataProviderWrapper(uploadDataProvider), executor);
55         return this;
56     }
57 
58     @Override
allowDirectExecutor()59     public org.chromium.net.ExperimentalUrlRequest.Builder allowDirectExecutor() {
60         mBackend.setDirectExecutorAllowed(true);
61         return this;
62     }
63 
64     @Override
bindToNetwork(long networkHandle)65     public org.chromium.net.ExperimentalUrlRequest.Builder bindToNetwork(long networkHandle) {
66         // Network#fromNetworkHandle throws IAE if networkHandle does not translate to a valid
67         // Network. Though, this can only happen if we're given a fake networkHandle (in which case
68         // we will throw, which is fine).
69         Network network =
70                 networkHandle == CronetEngine.UNBIND_NETWORK_HANDLE
71                         ? null
72                         : Network.fromNetworkHandle(networkHandle);
73         mBackend.bindToNetwork(network);
74         return this;
75     }
76 
77     @Override
build()78     public org.chromium.net.ExperimentalUrlRequest build() {
79         return new AndroidUrlRequestWrapper(mBackend.build());
80     }
81 }
82