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

Side by Side Diff: components/cronet/README.md

Issue 1307863006: [Cronet] Change interface APIs to abstract classes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: address Helen's comments Created 5 years, 3 months 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
« no previous file with comments | « no previous file | components/cronet/android/java/src/org/chromium/net/StatusListener.java » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Quick Start Guide to Using Cronet 1 # Quick Start Guide to Using Cronet
2 Cronet is the networking stack of Chromium put into a library for use on 2 Cronet is the networking stack of Chromium put into a library for use on
3 mobile. This is the same networking stack that is used in the Chrome browser 3 mobile. This is the same networking stack that is used in the Chrome browser
4 by over a billion people. It offers an easy-to-use, high performance, 4 by over a billion people. It offers an easy-to-use, high performance,
5 standards-compliant, and secure way to perform HTTP requests. Cronet has support 5 standards-compliant, and secure way to perform HTTP requests. Cronet has support
6 for both Android and iOS. On Android, Cronet offers its own Java asynchronous 6 for both Android and iOS. On Android, Cronet offers its own Java asynchronous
7 API as well as support for the [java.net.HttpURLConnection] API. 7 API as well as support for the [java.net.HttpURLConnection] API.
8 This document gives a brief introduction to using these two Java APIs. 8 This document gives a brief introduction to using these two Java APIs.
9 9
10 ### Basics 10 ### Basics
11 First you will need to implement the `UrlRequestListener` interface to handle 11 First you will need to implement a subclass of `UrlRequestListener` to handle
12 events during the lifetime of a request. For example: 12 events during the lifetime of a request. For example:
13 13
14 class MyListener implements UrlRequestListener { 14 class MyListener extends UrlRequestListener {
15 @Override 15 @Override
16 public void onReceivedRedirect(UrlRequest request, 16 public void onReceivedRedirect(UrlRequest request,
17 ResponseInfo responseInfo, String newLocationUrl) { 17 ResponseInfo responseInfo, String newLocationUrl) {
18 if (followRedirect) { 18 if (followRedirect) {
19 // Let's tell Cronet to follow the redirect! 19 // Let's tell Cronet to follow the redirect!
20 mRequest.followRedirect(); 20 mRequest.followRedirect();
21 } else { 21 } else {
22 // Not worth following the redirect? Abandon the request. 22 // Not worth following the redirect? Abandon the request.
23 mRequest.cancel(); 23 mRequest.cancel();
24 } 24 }
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 70
71 UrlRequestContextConfig myConfig = new UrlRequestContextConfig(); 71 UrlRequestContextConfig myConfig = new UrlRequestContextConfig();
72 CronetUrlRequestContext myRequestContext = 72 CronetUrlRequestContext myRequestContext =
73 new CronetUrlRequestContext(getContext(), myConfig); 73 new CronetUrlRequestContext(getContext(), myConfig);
74 Executor executor = Executors.newSingleThreadExecutor(); 74 Executor executor = Executors.newSingleThreadExecutor();
75 MyListener listener = new MyListener(); 75 MyListener listener = new MyListener();
76 UrlRequest request = myRequestContext.createRequest( 76 UrlRequest request = myRequestContext.createRequest(
77 "https://www.example.com", listener, executor); 77 "https://www.example.com", listener, executor);
78 request.start(); 78 request.start();
79 79
80 In the above example, `MyListener` implements the `UrlRequestListener` 80 In the above example, `MyListener` implements a subclass of
81 interface. The request is started asynchronously. When the response is ready 81 `UrlRequestListener`. The request is started asynchronously. When the response
82 (fully or partially), and in the event of failures or redirects, 82 is ready (fully or partially), and in the event of failures or redirects,
83 `listener`'s methods will be invoked on `executor`'s thread to inform the 83 `listener`'s methods will be invoked on `executor`'s thread to inform the
84 client of the request state and/or response information. 84 client of the request state and/or response information.
85 85
86 ### Downloading Data 86 ### Downloading Data
87 When Cronet fetches response headers from the server or gets them from the 87 When Cronet fetches response headers from the server or gets them from the
88 cache, `UrlRequestListener.onResponseStarted` will be invoked. To read the 88 cache, `UrlRequestListener.onResponseStarted` will be invoked. To read the
89 response body, the client should call `UrlRequest.read` and supply a 89 response body, the client should call `UrlRequest.read` and supply a
90 [ByteBuffer] for Cronet to fill. Once a portion or all of 90 [ByteBuffer] for Cronet to fill. Once a portion or all of
91 the response body is read, `UrlRequestListener.onReadCompleted` will be invoked. 91 the response body is read, `UrlRequestListener.onReadCompleted` will be invoked.
92 The client may consume the data, or copy the contents of the `byteBuffer` 92 The client may consume the data, or copy the contents of the `byteBuffer`
93 elsewhere for use later. The data in `byteBuffer` is only guaranteed to be 93 elsewhere for use later. The data in `byteBuffer` is only guaranteed to be
94 valid for the duration of the `UrlRequestListener.onReadCompleted` callback. 94 valid for the duration of the `UrlRequestListener.onReadCompleted` callback.
xunjieli 2015/09/11 16:26:35 Maybe we should delete "The data in `byteBuffer` i
pauljensen 2015/09/11 18:54:40 I assume this sentence is left over from before we
xunjieli 2015/09/11 19:01:42 Acknowledged.
95 Once the client is ready to consume more data, the client should call 95 Once the client is ready to consume more data, the client should call
96 `UrlRequest.read` again. The process continues until 96 `UrlRequest.read` again. The process continues until
97 `UrlRequestListener.onSucceeded` or `UrlRequestListener.onFailed` is invoked, 97 `UrlRequestListener.onSucceeded` or `UrlRequestListener.onFailed` is invoked,
98 which signals the completion of the request. 98 which signals the completion of the request.
99 99
100 ### Uploading Data 100 ### Uploading Data
101 MyUploadDataProvider myUploadDataProvider = new MyUploadDataProvider(); 101 MyUploadDataProvider myUploadDataProvider = new MyUploadDataProvider();
102 request.setHttpMethod("POST"); 102 request.setHttpMethod("POST");
103 request.setUploadDataProvider(myUploadDataProvider, executor); 103 request.setUploadDataProvider(myUploadDataProvider, executor);
104 request.start(); 104 request.start();
105 105
106 In the above example, `MyUploadDataProvider` implements the 106 In the above example, `MyUploadDataProvider` implements a subclass of
107 `UploadDataProvider` interface. When Cronet is ready to send the request body, 107 `UploadDataProvider`. When Cronet is ready to send the request body,
108 `myUploadDataProvider.read(UploadDataSink uploadDataSink, 108 `myUploadDataProvider.read(UploadDataSink uploadDataSink,
109 ByteBuffer byteBuffer)` will be invoked. The client will need to write the 109 ByteBuffer byteBuffer)` will be invoked. The client will need to write the
110 request body into `byteBuffer`. Once the client is done writing into 110 request body into `byteBuffer`. Once the client is done writing into
111 `byteBuffer`, the client can let Cronet know by calling 111 `byteBuffer`, the client can let Cronet know by calling
112 `uploadDataSink.onReadSucceeded`. If the request body doesn't fit into 112 `uploadDataSink.onReadSucceeded`. If the request body doesn't fit into
113 `byteBuffer`, the client can continue writing when `UploadDataProvider.read` is 113 `byteBuffer`, the client can continue writing when `UploadDataProvider.read` is
114 invoked again. For more details, please see the API reference. 114 invoked again. For more details, please see the API reference.
115 115
116 ### <a id=configuring-cronet></a> Configuring Cronet 116 ### <a id=configuring-cronet></a> Configuring Cronet
117 Various configuration options are available via the `UrlRequestContextConfig` 117 Various configuration options are available via the `UrlRequestContextConfig`
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 see {@link org.chromium.net.urlconnection.CronetURLStreamHandlerFactory} for 160 see {@link org.chromium.net.urlconnection.CronetURLStreamHandlerFactory} for
161 more information). 161 more information).
162 You can configure Cronet and control caching through the 162 You can configure Cronet and control caching through the
163 `UrlRequestContextConfig` instance, `myConfig` 163 `UrlRequestContextConfig` instance, `myConfig`
164 (See [Configuring Cronet](#configuring-cronet) section), before you pass it 164 (See [Configuring Cronet](#configuring-cronet) section), before you pass it
165 into the `CronetURLStreamHandlerFactory` constructor. 165 into the `CronetURLStreamHandlerFactory` constructor.
166 166
167 [ByteBuffer]: https://developer.android.com/reference/java/nio/ByteBuffer.html 167 [ByteBuffer]: https://developer.android.com/reference/java/nio/ByteBuffer.html
168 [chrome://net-internals#import]: chrome://net-internals#import 168 [chrome://net-internals#import]: chrome://net-internals#import
169 [java.net.HttpURLConnection]: https://developer.android.com/reference/java/net/H ttpURLConnection.html 169 [java.net.HttpURLConnection]: https://developer.android.com/reference/java/net/H ttpURLConnection.html
OLDNEW
« no previous file with comments | « no previous file | components/cronet/android/java/src/org/chromium/net/StatusListener.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698