Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(333)

Side by Side Diff: components/cronet/android/api/src/org/chromium/net/CronetEngine.java

Issue 1492583002: Add HttpUrlConnection backed implementation of CronetEngine. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase on HEAD Created 5 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.net; 5 package org.chromium.net;
6 6
7 import android.content.Context; 7 import android.content.Context;
8 import android.support.annotation.IntDef; 8 import android.support.annotation.IntDef;
9 import android.util.Log; 9 import android.util.Log;
10 10
11 import java.io.File; 11 import java.io.File;
12 import java.io.IOException;
12 import java.lang.annotation.Retention; 13 import java.lang.annotation.Retention;
13 import java.lang.annotation.RetentionPolicy; 14 import java.lang.annotation.RetentionPolicy;
14 import java.lang.reflect.Constructor; 15 import java.lang.reflect.Constructor;
15 import java.net.IDN; 16 import java.net.IDN;
16 import java.net.Proxy; 17 import java.net.Proxy;
17 import java.net.URL; 18 import java.net.URL;
18 import java.net.URLConnection; 19 import java.net.URLConnection;
19 import java.net.URLStreamHandlerFactory; 20 import java.net.URLStreamHandlerFactory;
20 import java.util.Date; 21 import java.util.Date;
21 import java.util.HashSet; 22 import java.util.HashSet;
(...skipping 539 matching lines...) Expand 10 before | Expand all | Expand 10 after
561 * priorities see {@link #createRequest(String, UrlRequest.Callback, 562 * priorities see {@link #createRequest(String, UrlRequest.Callback,
562 * Executor, int priority)}. 563 * Executor, int priority)}.
563 * 564 *
564 * @param url {@link URL} for the request. 565 * @param url {@link URL} for the request.
565 * @param callback callback object that gets invoked on different events. 566 * @param callback callback object that gets invoked on different events.
566 * @param executor {@link Executor} on which all callbacks will be invoked. 567 * @param executor {@link Executor} on which all callbacks will be invoked.
567 * @return new request. 568 * @return new request.
568 * @deprecated Use {@link UrlRequest.Builder#build}. 569 * @deprecated Use {@link UrlRequest.Builder#build}.
569 */ 570 */
570 @Deprecated 571 @Deprecated
571 public abstract UrlRequest createRequest( 572 public final UrlRequest createRequest(
572 String url, UrlRequest.Callback callback, Executor executor); 573 String url, UrlRequest.Callback callback, Executor executor) {
574 return createRequest(url, callback, executor, UrlRequest.Builder.REQUEST _PRIORITY_MEDIUM);
575 }
573 576
574 /** 577 /**
575 * Creates a {@link UrlRequest} object. All callbacks will 578 * Creates a {@link UrlRequest} object. All callbacks will
576 * be called on {@code executor}'s thread. {@code executor} must not run 579 * be called on {@code executor}'s thread. {@code executor} must not run
577 * tasks on the current thread to prevent blocking networking operations 580 * tasks on the current thread to prevent blocking networking operations
578 * and causing exceptions during shutdown. 581 * and causing exceptions during shutdown.
579 * 582 *
580 * @param url {@link URL} for the request. 583 * @param url {@link URL} for the request.
581 * @param callback callback object that gets invoked on different events. 584 * @param callback callback object that gets invoked on different events.
582 * @param executor {@link Executor} on which all callbacks will be invoked. 585 * @param executor {@link Executor} on which all callbacks will be invoked.
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
753 756
754 /** 757 /**
755 * Establishes a new connection to the resource specified by the {@link URL} {@code url}. 758 * Establishes a new connection to the resource specified by the {@link URL} {@code url}.
756 * <p> 759 * <p>
757 * <b>Note:</b> Cronet's {@link java.net.HttpURLConnection} implementation i s subject to certain 760 * <b>Note:</b> Cronet's {@link java.net.HttpURLConnection} implementation i s subject to certain
758 * limitations, see {@link #createURLStreamHandlerFactory} for details. 761 * limitations, see {@link #createURLStreamHandlerFactory} for details.
759 * 762 *
760 * @param url URL of resource to connect to. 763 * @param url URL of resource to connect to.
761 * @return an {@link java.net.HttpURLConnection} instance implemented by thi s CronetEngine. 764 * @return an {@link java.net.HttpURLConnection} instance implemented by thi s CronetEngine.
762 */ 765 */
763 public abstract URLConnection openConnection(URL url); 766 public abstract URLConnection openConnection(URL url) throws IOException;
764 767
765 /** 768 /**
766 * Establishes a new connection to the resource specified by the {@link URL} {@code url} 769 * Establishes a new connection to the resource specified by the {@link URL} {@code url}
767 * using the given proxy. 770 * using the given proxy.
768 * <p> 771 * <p>
769 * <b>Note:</b> Cronet's {@link java.net.HttpURLConnection} implementation i s subject to certain 772 * <b>Note:</b> Cronet's {@link java.net.HttpURLConnection} implementation i s subject to certain
770 * limitations, see {@link #createURLStreamHandlerFactory} for details. 773 * limitations, see {@link #createURLStreamHandlerFactory} for details.
771 * 774 *
772 * @param url URL of resource to connect to. 775 * @param url URL of resource to connect to.
773 * @param proxy proxy to use when establishing connection. 776 * @param proxy proxy to use when establishing connection.
774 * @return an {@link java.net.HttpURLConnection} instance implemented by thi s CronetEngine. 777 * @return an {@link java.net.HttpURLConnection} instance implemented by thi s CronetEngine.
775 * @hide 778 * @hide
776 * @deprecated Marked as deprecated because @hide doesn't properly hide but 779 * @deprecated Marked as deprecated because @hide doesn't properly hide but
777 * javadocs are built with nodeprecated="yes". 780 * javadocs are built with nodeprecated="yes".
778 * TODO(pauljensen): Expose once implemented, http://crbug.com/41811 1 781 * TODO(pauljensen): Expose once implemented, http://crbug.com/41811 1
779 */ 782 */
780 @SuppressWarnings("DepAnn") public abstract URLConnection openConnection(URL url, Proxy proxy); 783 @SuppressWarnings("DepAnn")
784 public abstract URLConnection openConnection(URL url, Proxy proxy) throws IO Exception;
781 785
782 /** 786 /**
783 * Creates a {@link URLStreamHandlerFactory} to handle HTTP and HTTPS 787 * Creates a {@link URLStreamHandlerFactory} to handle HTTP and HTTPS
784 * traffic. An instance of this class can be installed via 788 * traffic. An instance of this class can be installed via
785 * {@link URL#setURLStreamHandlerFactory} thus using this CronetEngine by de fault for 789 * {@link URL#setURLStreamHandlerFactory} thus using this CronetEngine by de fault for
786 * all requests created via {@link URL#openConnection}. 790 * all requests created via {@link URL#openConnection}.
787 * <p> 791 * <p>
788 * Cronet does not use certain HTTP features provided via the system: 792 * Cronet does not use certain HTTP features provided via the system:
789 * <ul> 793 * <ul>
790 * <li>the HTTP cache installed via 794 * <li>the HTTP cache installed via
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
823 @Deprecated 827 @Deprecated
824 public static CronetEngine createContext(Builder builder) { 828 public static CronetEngine createContext(Builder builder) {
825 CronetEngine cronetEngine = null; 829 CronetEngine cronetEngine = null;
826 if (builder.getUserAgent() == null) { 830 if (builder.getUserAgent() == null) {
827 builder.setUserAgent(builder.getDefaultUserAgent()); 831 builder.setUserAgent(builder.getDefaultUserAgent());
828 } 832 }
829 if (!builder.legacyMode()) { 833 if (!builder.legacyMode()) {
830 cronetEngine = createCronetEngine(builder); 834 cronetEngine = createCronetEngine(builder);
831 } 835 }
832 if (cronetEngine == null) { 836 if (cronetEngine == null) {
833 // TODO(mef): Fallback to stub implementation. Once stub 837 cronetEngine = new JavaCronetEngine(builder.getUserAgent());
834 // implementation is available merge with createCronetFactory.
835 cronetEngine = createCronetEngine(builder);
836 } 838 }
837 Log.i(TAG, "Using network stack: " + cronetEngine.getVersionString()); 839 Log.i(TAG, "Using network stack: " + cronetEngine.getVersionString());
838 return cronetEngine; 840 return cronetEngine;
839 } 841 }
840 842
841 private static CronetEngine createCronetEngine(Builder builder) { 843 private static CronetEngine createCronetEngine(Builder builder) {
842 CronetEngine cronetEngine = null; 844 CronetEngine cronetEngine = null;
843 try { 845 try {
844 Class<? extends CronetEngine> engineClass = 846 Class<? extends CronetEngine> engineClass =
845 CronetEngine.class.getClassLoader() 847 CronetEngine.class.getClassLoader()
846 .loadClass(CRONET_URL_REQUEST_CONTEXT) 848 .loadClass(CRONET_URL_REQUEST_CONTEXT)
847 .asSubclass(CronetEngine.class); 849 .asSubclass(CronetEngine.class);
848 Constructor<? extends CronetEngine> constructor = 850 Constructor<? extends CronetEngine> constructor =
849 engineClass.getConstructor(Builder.class); 851 engineClass.getConstructor(Builder.class);
850 CronetEngine possibleEngine = constructor.newInstance(builder); 852 CronetEngine possibleEngine = constructor.newInstance(builder);
851 if (possibleEngine.isEnabled()) { 853 if (possibleEngine.isEnabled()) {
852 cronetEngine = possibleEngine; 854 cronetEngine = possibleEngine;
853 } 855 }
854 } catch (ClassNotFoundException e) { 856 } catch (ClassNotFoundException e) {
855 // Leave as null. 857 // Leave as null.
856 } catch (Exception e) { 858 } catch (Exception e) {
857 throw new IllegalStateException("Cannot instantiate: " + CRONET_URL_ REQUEST_CONTEXT, e); 859 throw new IllegalStateException("Cannot instantiate: " + CRONET_URL_ REQUEST_CONTEXT, e);
858 } 860 }
859 return cronetEngine; 861 return cronetEngine;
860 } 862 }
861 } 863 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698