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

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: Update tests and header ordering. 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 org.json.JSONArray; 11 import org.json.JSONArray;
12 import org.json.JSONException; 12 import org.json.JSONException;
13 import org.json.JSONObject; 13 import org.json.JSONObject;
14 14
15 import java.io.File; 15 import java.io.File;
16 import java.io.IOException;
16 import java.lang.annotation.Retention; 17 import java.lang.annotation.Retention;
17 import java.lang.annotation.RetentionPolicy; 18 import java.lang.annotation.RetentionPolicy;
18 import java.lang.reflect.Constructor; 19 import java.lang.reflect.Constructor;
19 import java.net.Proxy; 20 import java.net.Proxy;
20 import java.net.URL; 21 import java.net.URL;
21 import java.net.URLConnection; 22 import java.net.URLConnection;
22 import java.net.URLStreamHandlerFactory; 23 import java.net.URLStreamHandlerFactory;
23 import java.util.List; 24 import java.util.List;
24 import java.util.Map; 25 import java.util.Map;
25 import java.util.concurrent.Executor; 26 import java.util.concurrent.Executor;
(...skipping 561 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 588
588 /** 589 /**
589 * Establishes a new connection to the resource specified by the {@link URL} {@code url}. 590 * Establishes a new connection to the resource specified by the {@link URL} {@code url}.
590 * <p> 591 * <p>
591 * <b>Note:</b> Cronet's {@link java.net.HttpURLConnection} implementation i s subject to certain 592 * <b>Note:</b> Cronet's {@link java.net.HttpURLConnection} implementation i s subject to certain
592 * limitations, see {@link #createURLStreamHandlerFactory} for details. 593 * limitations, see {@link #createURLStreamHandlerFactory} for details.
593 * 594 *
594 * @param url URL of resource to connect to. 595 * @param url URL of resource to connect to.
595 * @return an {@link java.net.HttpURLConnection} instance implemented by thi s CronetEngine. 596 * @return an {@link java.net.HttpURLConnection} instance implemented by thi s CronetEngine.
596 */ 597 */
597 public abstract URLConnection openConnection(URL url); 598 public abstract URLConnection openConnection(URL url) throws IOException;
598 599
599 /** 600 /**
600 * Establishes a new connection to the resource specified by the {@link URL} {@code url} 601 * Establishes a new connection to the resource specified by the {@link URL} {@code url}
601 * using the given proxy. 602 * using the given proxy.
602 * <p> 603 * <p>
603 * <b>Note:</b> Cronet's {@link java.net.HttpURLConnection} implementation i s subject to certain 604 * <b>Note:</b> Cronet's {@link java.net.HttpURLConnection} implementation i s subject to certain
604 * limitations, see {@link #createURLStreamHandlerFactory} for details. 605 * limitations, see {@link #createURLStreamHandlerFactory} for details.
605 * 606 *
606 * @param url URL of resource to connect to. 607 * @param url URL of resource to connect to.
607 * @param proxy proxy to use when establishing connection. 608 * @param proxy proxy to use when establishing connection.
608 * @return an {@link java.net.HttpURLConnection} instance implemented by thi s CronetEngine. 609 * @return an {@link java.net.HttpURLConnection} instance implemented by thi s CronetEngine.
609 * @hide 610 * @hide
610 * @deprecated Marked as deprecated because @hide doesn't properly hide but 611 * @deprecated Marked as deprecated because @hide doesn't properly hide but
611 * javadocs are built with nodeprecated="yes". 612 * javadocs are built with nodeprecated="yes".
612 * TODO(pauljensen): Expose once implemented, http://crbug.com/41811 1 613 * TODO(pauljensen): Expose once implemented, http://crbug.com/41811 1
613 */ 614 */
614 @SuppressWarnings("DepAnn") public abstract URLConnection openConnection(URL url, Proxy proxy); 615 @SuppressWarnings("DepAnn")
616 public abstract URLConnection openConnection(URL url, Proxy proxy) throws IO Exception;
615 617
616 /** 618 /**
617 * Creates a {@link URLStreamHandlerFactory} to handle HTTP and HTTPS 619 * Creates a {@link URLStreamHandlerFactory} to handle HTTP and HTTPS
618 * traffic. An instance of this class can be installed via 620 * traffic. An instance of this class can be installed via
619 * {@link URL#setURLStreamHandlerFactory} thus using this CronetEngine by de fault for 621 * {@link URL#setURLStreamHandlerFactory} thus using this CronetEngine by de fault for
620 * all requests created via {@link URL#openConnection}. 622 * all requests created via {@link URL#openConnection}.
621 * <p> 623 * <p>
622 * Cronet does not use certain HTTP features provided via the system: 624 * Cronet does not use certain HTTP features provided via the system:
623 * <ul> 625 * <ul>
624 * <li>the HTTP cache installed via 626 * <li>the HTTP cache installed via
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
657 @Deprecated 659 @Deprecated
658 public static CronetEngine createContext(Builder builder) { 660 public static CronetEngine createContext(Builder builder) {
659 CronetEngine cronetEngine = null; 661 CronetEngine cronetEngine = null;
660 if (builder.getUserAgent().isEmpty()) { 662 if (builder.getUserAgent().isEmpty()) {
661 builder.setUserAgent(builder.getDefaultUserAgent()); 663 builder.setUserAgent(builder.getDefaultUserAgent());
662 } 664 }
663 if (!builder.legacyMode()) { 665 if (!builder.legacyMode()) {
664 cronetEngine = createCronetEngine(builder); 666 cronetEngine = createCronetEngine(builder);
665 } 667 }
666 if (cronetEngine == null) { 668 if (cronetEngine == null) {
667 // TODO(mef): Fallback to stub implementation. Once stub 669 cronetEngine = new JavaCronetEngine(builder.getUserAgent());
668 // implementation is available merge with createCronetFactory.
669 cronetEngine = createCronetEngine(builder);
670 } 670 }
671 Log.i(TAG, "Using network stack: " + cronetEngine.getVersionString()); 671 Log.i(TAG, "Using network stack: " + cronetEngine.getVersionString());
672 return cronetEngine; 672 return cronetEngine;
673 } 673 }
674 674
675 private static CronetEngine createCronetEngine(Builder builder) { 675 private static CronetEngine createCronetEngine(Builder builder) {
676 CronetEngine cronetEngine = null; 676 CronetEngine cronetEngine = null;
677 try { 677 try {
678 Class<? extends CronetEngine> engineClass = 678 Class<? extends CronetEngine> engineClass =
679 CronetEngine.class.getClassLoader() 679 CronetEngine.class.getClassLoader()
680 .loadClass(CRONET_URL_REQUEST_CONTEXT) 680 .loadClass(CRONET_URL_REQUEST_CONTEXT)
681 .asSubclass(CronetEngine.class); 681 .asSubclass(CronetEngine.class);
682 Constructor<? extends CronetEngine> constructor = 682 Constructor<? extends CronetEngine> constructor =
683 engineClass.getConstructor(Builder.class); 683 engineClass.getConstructor(Builder.class);
684 CronetEngine possibleEngine = constructor.newInstance(builder); 684 CronetEngine possibleEngine = constructor.newInstance(builder);
685 if (possibleEngine.isEnabled()) { 685 if (possibleEngine.isEnabled()) {
686 cronetEngine = possibleEngine; 686 cronetEngine = possibleEngine;
687 } 687 }
688 } catch (ClassNotFoundException e) { 688 } catch (ClassNotFoundException e) {
689 // Leave as null. 689 // Leave as null.
690 } catch (Exception e) { 690 } catch (Exception e) {
691 throw new IllegalStateException("Cannot instantiate: " + CRONET_URL_ REQUEST_CONTEXT, e); 691 throw new IllegalStateException("Cannot instantiate: " + CRONET_URL_ REQUEST_CONTEXT, e);
692 } 692 }
693 return cronetEngine; 693 return cronetEngine;
694 } 694 }
695 } 695 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698