OLD | NEW |
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.support.annotation.Nullable; | 9 import android.support.annotation.Nullable; |
10 import android.util.Log; | 10 import android.util.Log; |
11 | 11 |
12 import java.io.File; | 12 import java.io.File; |
| 13 import java.io.IOException; |
13 import java.lang.annotation.Retention; | 14 import java.lang.annotation.Retention; |
14 import java.lang.annotation.RetentionPolicy; | 15 import java.lang.annotation.RetentionPolicy; |
15 import java.lang.reflect.Constructor; | 16 import java.lang.reflect.Constructor; |
16 import java.net.IDN; | 17 import java.net.IDN; |
17 import java.net.Proxy; | 18 import java.net.Proxy; |
18 import java.net.URL; | 19 import java.net.URL; |
19 import java.net.URLConnection; | 20 import java.net.URLConnection; |
20 import java.net.URLStreamHandlerFactory; | 21 import java.net.URLStreamHandlerFactory; |
21 import java.util.Collection; | 22 import java.util.Collection; |
| 23 import java.util.Collections; |
22 import java.util.Date; | 24 import java.util.Date; |
23 import java.util.HashSet; | 25 import java.util.HashSet; |
24 import java.util.LinkedList; | 26 import java.util.LinkedList; |
25 import java.util.List; | 27 import java.util.List; |
26 import java.util.Map; | 28 import java.util.Map; |
27 import java.util.Set; | 29 import java.util.Set; |
28 import java.util.concurrent.Executor; | 30 import java.util.concurrent.Executor; |
29 import java.util.regex.Pattern; | 31 import java.util.regex.Pattern; |
30 | 32 |
31 /** | 33 /** |
(...skipping 532 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
564 * priorities see {@link #createRequest(String, UrlRequest.Callback, | 566 * priorities see {@link #createRequest(String, UrlRequest.Callback, |
565 * Executor, int priority)}. | 567 * Executor, int priority)}. |
566 * | 568 * |
567 * @param url {@link URL} for the request. | 569 * @param url {@link URL} for the request. |
568 * @param callback callback object that gets invoked on different events. | 570 * @param callback callback object that gets invoked on different events. |
569 * @param executor {@link Executor} on which all callbacks will be invoked. | 571 * @param executor {@link Executor} on which all callbacks will be invoked. |
570 * @return new request. | 572 * @return new request. |
571 * @deprecated Use {@link UrlRequest.Builder#build}. | 573 * @deprecated Use {@link UrlRequest.Builder#build}. |
572 */ | 574 */ |
573 @Deprecated | 575 @Deprecated |
574 public abstract UrlRequest createRequest( | 576 public final UrlRequest createRequest( |
575 String url, UrlRequest.Callback callback, Executor executor); | 577 String url, UrlRequest.Callback callback, Executor executor) { |
| 578 return createRequest(url, callback, executor, UrlRequest.Builder.REQUEST
_PRIORITY_MEDIUM); |
| 579 } |
576 | 580 |
577 /** | 581 /** |
578 * Creates a {@link UrlRequest} object. All callbacks will | 582 * Creates a {@link UrlRequest} object. All callbacks will |
579 * be called on {@code executor}'s thread. {@code executor} must not run | 583 * be called on {@code executor}'s thread. {@code executor} must not run |
580 * tasks on the current thread to prevent blocking networking operations | 584 * tasks on the current thread to prevent blocking networking operations |
581 * and causing exceptions during shutdown. | 585 * and causing exceptions during shutdown. |
582 * | 586 * |
583 * @param url {@link URL} for the request. | 587 * @param url {@link URL} for the request. |
584 * @param callback callback object that gets invoked on different events. | 588 * @param callback callback object that gets invoked on different events. |
585 * @param executor {@link Executor} on which all callbacks will be invoked. | 589 * @param executor {@link Executor} on which all callbacks will be invoked. |
586 * @param priority priority of the request which should be one of the | 590 * @param priority priority of the request which should be one of the |
587 * {@link UrlRequest.Builder#REQUEST_PRIORITY_IDLE REQUEST_PRIORITY_
*} | 591 * {@link UrlRequest.Builder#REQUEST_PRIORITY_IDLE REQUEST_PRIORITY_
*} |
588 * values. | 592 * values. |
589 * @return new request. | 593 * @return new request. |
590 * @deprecated Use {@link UrlRequest.Builder#build}. | 594 * @deprecated Use {@link UrlRequest.Builder#build}. |
591 */ | 595 */ |
592 @Deprecated | 596 @Deprecated |
593 public abstract UrlRequest createRequest(String url, UrlRequest.Callback cal
lback, | 597 public final UrlRequest createRequest(String url, UrlRequest.Callback callba
ck, |
594 Executor executor, @UrlRequest.Builder.RequestPriority int priority)
; | 598 Executor executor, @UrlRequest.Builder.RequestPriority int priority)
{ |
| 599 return createRequest(url, callback, executor, priority, Collections.empt
yList()); |
| 600 } |
595 | 601 |
596 /** | 602 /** |
597 * Creates a {@link UrlRequest} object. All callbacks will | 603 * Creates a {@link UrlRequest} object. All callbacks will |
598 * be called on {@code executor}'s thread. {@code executor} must not run | 604 * be called on {@code executor}'s thread. {@code executor} must not run |
599 * tasks on the current thread to prevent blocking networking operations | 605 * tasks on the current thread to prevent blocking networking operations |
600 * and causing exceptions during shutdown. | 606 * and causing exceptions during shutdown. |
601 * | 607 * |
602 * @param url {@link URL} for the request. | 608 * @param url {@link URL} for the request. |
603 * @param callback callback object that gets invoked on different events. | 609 * @param callback callback object that gets invoked on different events. |
604 * @param executor {@link Executor} on which all callbacks will be invoked. | 610 * @param executor {@link Executor} on which all callbacks will be invoked. |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
774 | 780 |
775 /** | 781 /** |
776 * Establishes a new connection to the resource specified by the {@link URL}
{@code url}. | 782 * Establishes a new connection to the resource specified by the {@link URL}
{@code url}. |
777 * <p> | 783 * <p> |
778 * <b>Note:</b> Cronet's {@link java.net.HttpURLConnection} implementation i
s subject to certain | 784 * <b>Note:</b> Cronet's {@link java.net.HttpURLConnection} implementation i
s subject to certain |
779 * limitations, see {@link #createURLStreamHandlerFactory} for details. | 785 * limitations, see {@link #createURLStreamHandlerFactory} for details. |
780 * | 786 * |
781 * @param url URL of resource to connect to. | 787 * @param url URL of resource to connect to. |
782 * @return an {@link java.net.HttpURLConnection} instance implemented by thi
s CronetEngine. | 788 * @return an {@link java.net.HttpURLConnection} instance implemented by thi
s CronetEngine. |
783 */ | 789 */ |
784 public abstract URLConnection openConnection(URL url); | 790 public abstract URLConnection openConnection(URL url) throws IOException; |
785 | 791 |
786 /** | 792 /** |
787 * Establishes a new connection to the resource specified by the {@link URL}
{@code url} | 793 * Establishes a new connection to the resource specified by the {@link URL}
{@code url} |
788 * using the given proxy. | 794 * using the given proxy. |
789 * <p> | 795 * <p> |
790 * <b>Note:</b> Cronet's {@link java.net.HttpURLConnection} implementation i
s subject to certain | 796 * <b>Note:</b> Cronet's {@link java.net.HttpURLConnection} implementation i
s subject to certain |
791 * limitations, see {@link #createURLStreamHandlerFactory} for details. | 797 * limitations, see {@link #createURLStreamHandlerFactory} for details. |
792 * | 798 * |
793 * @param url URL of resource to connect to. | 799 * @param url URL of resource to connect to. |
794 * @param proxy proxy to use when establishing connection. | 800 * @param proxy proxy to use when establishing connection. |
795 * @return an {@link java.net.HttpURLConnection} instance implemented by thi
s CronetEngine. | 801 * @return an {@link java.net.HttpURLConnection} instance implemented by thi
s CronetEngine. |
796 * @hide | 802 * @hide |
797 * @deprecated Marked as deprecated because @hide doesn't properly hide but | 803 * @deprecated Marked as deprecated because @hide doesn't properly hide but |
798 * javadocs are built with nodeprecated="yes". | 804 * javadocs are built with nodeprecated="yes". |
799 * TODO(pauljensen): Expose once implemented, http://crbug.com/41811
1 | 805 * TODO(pauljensen): Expose once implemented, http://crbug.com/41811
1 |
800 */ | 806 */ |
801 @Deprecated | 807 @Deprecated |
802 @SuppressWarnings("DepAnn") | 808 @SuppressWarnings("DepAnn") |
803 public abstract URLConnection openConnection(URL url, Proxy proxy); | 809 public abstract URLConnection openConnection(URL url, Proxy proxy) throws IO
Exception; |
804 | 810 |
805 /** | 811 /** |
806 * Creates a {@link URLStreamHandlerFactory} to handle HTTP and HTTPS | 812 * Creates a {@link URLStreamHandlerFactory} to handle HTTP and HTTPS |
807 * traffic. An instance of this class can be installed via | 813 * traffic. An instance of this class can be installed via |
808 * {@link URL#setURLStreamHandlerFactory} thus using this CronetEngine by de
fault for | 814 * {@link URL#setURLStreamHandlerFactory} thus using this CronetEngine by de
fault for |
809 * all requests created via {@link URL#openConnection}. | 815 * all requests created via {@link URL#openConnection}. |
810 * <p> | 816 * <p> |
811 * Cronet does not use certain HTTP features provided via the system: | 817 * Cronet does not use certain HTTP features provided via the system: |
812 * <ul> | 818 * <ul> |
813 * <li>the HTTP cache installed via | 819 * <li>the HTTP cache installed via |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
846 @Deprecated | 852 @Deprecated |
847 public static CronetEngine createContext(Builder builder) { | 853 public static CronetEngine createContext(Builder builder) { |
848 CronetEngine cronetEngine = null; | 854 CronetEngine cronetEngine = null; |
849 if (builder.getUserAgent() == null) { | 855 if (builder.getUserAgent() == null) { |
850 builder.setUserAgent(builder.getDefaultUserAgent()); | 856 builder.setUserAgent(builder.getDefaultUserAgent()); |
851 } | 857 } |
852 if (!builder.legacyMode()) { | 858 if (!builder.legacyMode()) { |
853 cronetEngine = createCronetEngine(builder); | 859 cronetEngine = createCronetEngine(builder); |
854 } | 860 } |
855 if (cronetEngine == null) { | 861 if (cronetEngine == null) { |
856 // TODO(mef): Fallback to stub implementation. Once stub | 862 cronetEngine = new JavaCronetEngine(builder.getUserAgent()); |
857 // implementation is available merge with createCronetFactory. | |
858 cronetEngine = createCronetEngine(builder); | |
859 } | 863 } |
860 Log.i(TAG, "Using network stack: " + cronetEngine.getVersionString()); | 864 Log.i(TAG, "Using network stack: " + cronetEngine.getVersionString()); |
861 return cronetEngine; | 865 return cronetEngine; |
862 } | 866 } |
863 | 867 |
864 private static CronetEngine createCronetEngine(Builder builder) { | 868 private static CronetEngine createCronetEngine(Builder builder) { |
865 CronetEngine cronetEngine = null; | 869 CronetEngine cronetEngine = null; |
866 try { | 870 try { |
867 Class<? extends CronetEngine> engineClass = | 871 Class<? extends CronetEngine> engineClass = |
868 CronetEngine.class.getClassLoader() | 872 CronetEngine.class.getClassLoader() |
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1022 * Interface to listen for finished requests that were created via this Cron
etEngine instance. | 1026 * Interface to listen for finished requests that were created via this Cron
etEngine instance. |
1023 * | 1027 * |
1024 * @deprecated not really deprecated but hidden for now as it's a prototype. | 1028 * @deprecated not really deprecated but hidden for now as it's a prototype. |
1025 */ | 1029 */ |
1026 @Deprecated | 1030 @Deprecated |
1027 public interface RequestFinishedListener { // TODO(klm): Add a convenience a
bstract class. | 1031 public interface RequestFinishedListener { // TODO(klm): Add a convenience a
bstract class. |
1028 /** Invoked with request info. */ | 1032 /** Invoked with request info. */ |
1029 void onRequestFinished(UrlRequestInfo requestInfo); | 1033 void onRequestFinished(UrlRequestInfo requestInfo); |
1030 } | 1034 } |
1031 } | 1035 } |
OLD | NEW |