| /* |
| * Copyright (C) 2021 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package libcore.net.http; |
| |
| import libcore.api.CorePlatformApi; |
| |
| import java.io.IOException; |
| import java.net.Proxy; |
| import java.net.URL; |
| import java.net.URLConnection; |
| import java.util.concurrent.TimeUnit; |
| |
| import javax.net.SocketFactory; |
| import libcore.util.NonNull; |
| |
| /** |
| * A HttpURLConnectionFactory that supports some configuration on a per-factory or per-connection |
| * basis. The per-factory configuration is <b>optional</b>; if not set, global configuration or |
| * default behavior is used. |
| * |
| * @hide |
| */ |
| @CorePlatformApi(status = CorePlatformApi.Status.STABLE) |
| public class HttpURLConnectionFactory { |
| private final com.android.okhttp.internalandroidapi.HttpURLConnectionFactory mFactory; |
| |
| /** |
| * Create a new {@link HttpURLConnectionFactory} instance. |
| */ |
| @CorePlatformApi(status = CorePlatformApi.Status.STABLE) |
| @NonNull public static HttpURLConnectionFactory createInstance() { |
| return new HttpURLConnectionFactory(); |
| } |
| |
| HttpURLConnectionFactory() { |
| mFactory = new com.android.okhttp.internalandroidapi.HttpURLConnectionFactory(); |
| } |
| |
| /** |
| * Sets a new ConnectionPool, specific to this HttpURLConnectionFactory and for all future |
| * connections created by {@link #openConnection}, with the given configuration. |
| * |
| * @param maxIdleConnections The maximum number of idle connections to each to keep in the pool. |
| * @param keepAliveDuration Time to keep the connection alive in the pool before closing it. |
| * @param timeUnit The time unit of keep alive duration. |
| */ |
| @CorePlatformApi(status = CorePlatformApi.Status.STABLE) |
| public void setNewConnectionPool(int maxIdleConnections, long keepAliveDuration, |
| @NonNull TimeUnit timeUnit) { |
| mFactory.setNewConnectionPool(maxIdleConnections, keepAliveDuration, timeUnit); |
| } |
| |
| /** |
| * Sets a new dns resolver. |
| * |
| * @param dns the dns resolver for looking up. |
| */ |
| @CorePlatformApi(status = CorePlatformApi.Status.STABLE) |
| public void setDns(@NonNull Dns dns) { |
| mFactory.setDns(dns); |
| } |
| |
| /** |
| * Opens a connection using the specified SocketFactory and the specified proxy |
| * settings, overriding any system wide configuration. |
| * |
| * @param url The target URL that connection opens on. |
| * @param socketFactory The socket factory used to create connections. |
| * @param proxy The proxy settings used to create connections. |
| * |
| * @return An {@link java.net.URLConnection} using given SocketFactory, proxy settings and |
| * configuration. |
| */ |
| @CorePlatformApi(status = CorePlatformApi.Status.STABLE) |
| public URLConnection openConnection(@NonNull URL url, @NonNull SocketFactory socketFactory, |
| @NonNull Proxy proxy) throws IOException { |
| return mFactory.openConnection(url, socketFactory, proxy); |
| } |
| } |