blob: 5c141c4c768bbb6fbe89b2fd5b3668e59249bdbf [file] [log] [blame]
// Copyright 2014 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.urlconnection;
import android.net.http.ExperimentalHttpEngine;
import androidx.annotation.VisibleForTesting;
import java.io.IOException;
import java.net.Proxy;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLStreamHandler;
/**
* A {@link URLStreamHandler} that handles HTTP and HTTPS connections. One can use this class to
* create {@link java.net.HttpURLConnection} instances implemented by Cronet; for example: <pre>
*
* CronetHttpURLStreamHandler streamHandler = new CronetHttpURLStreamHandler(myContext);
* HttpURLConnection connection = (HttpURLConnection)streamHandler.openConnection(
* new URL("http://chromium.org"));</pre>
* <b>Note:</b> Cronet's {@code HttpURLConnection} implementation is subject to some limitations
* listed {@link CronetURLStreamHandlerFactory here}.
*/
@VisibleForTesting
public class CronetHttpURLStreamHandler extends URLStreamHandler {
private final ExperimentalHttpEngine mCronetEngine;
public CronetHttpURLStreamHandler(ExperimentalHttpEngine cronetEngine) {
mCronetEngine = cronetEngine;
}
/**
* Establishes a new connection to the resource specified by the {@link URL} {@code url}.
* @return an {@link java.net.HttpURLConnection} instance implemented by Cronet.
*/
@Override
public URLConnection openConnection(URL url) throws IOException {
return mCronetEngine.openConnection(url);
}
/**
* Establishes a new connection to the resource specified by the {@link URL} {@code url}
* using the given proxy.
* @return an {@link java.net.HttpURLConnection} instance implemented by Cronet.
*/
@Override
public URLConnection openConnection(URL url, Proxy proxy) throws IOException {
return mCronetEngine.openConnection(url, proxy);
}
}