OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 package org.chromium.net.impl; | |
5 | |
6 import android.support.annotation.IntDef; | |
7 | |
8 import static org.chromium.net.UrlRequest.Status.CONNECTING; | |
9 import static org.chromium.net.UrlRequest.Status.DOWNLOADING_PROXY_SCRIPT; | |
10 import static org.chromium.net.UrlRequest.Status.ESTABLISHING_PROXY_TUNNEL; | |
11 import static org.chromium.net.UrlRequest.Status.IDLE; | |
12 import static org.chromium.net.UrlRequest.Status.INVALID; | |
13 import static org.chromium.net.UrlRequest.Status.READING_RESPONSE; | |
14 import static org.chromium.net.UrlRequest.Status.RESOLVING_HOST; | |
15 import static org.chromium.net.UrlRequest.Status.RESOLVING_HOST_IN_PROXY_SCRIPT; | |
16 import static org.chromium.net.UrlRequest.Status.RESOLVING_PROXY_FOR_URL; | |
17 import static org.chromium.net.UrlRequest.Status.SENDING_REQUEST; | |
18 import static org.chromium.net.UrlRequest.Status.SSL_HANDSHAKE; | |
19 import static org.chromium.net.UrlRequest.Status.WAITING_FOR_AVAILABLE_SOCKET; | |
20 import static org.chromium.net.UrlRequest.Status.WAITING_FOR_CACHE; | |
21 import static org.chromium.net.UrlRequest.Status.WAITING_FOR_DELEGATE; | |
22 import static org.chromium.net.UrlRequest.Status.WAITING_FOR_RESPONSE; | |
23 import static org.chromium.net.UrlRequest.Status.WAITING_FOR_STALLED_SOCKET_POOL ; | |
24 | |
25 import org.chromium.net.ExperimentalUrlRequest; | |
26 import org.chromium.net.UploadDataProvider; | |
27 import org.chromium.net.UrlRequest; | |
28 | |
29 import java.lang.annotation.Retention; | |
30 import java.lang.annotation.RetentionPolicy; | |
31 import java.util.concurrent.Executor; | |
32 | |
33 /** | |
34 * Base class for classes that implement {@link UrlRequest} including experiment al | |
35 * features. {@link CronetUrlRequest} and {@link JavaUrlRequest} extends this cl ass. | |
36 */ | |
37 public abstract class UrlRequestBase extends ExperimentalUrlRequest { | |
38 /** | |
39 * Sets the HTTP method verb to use for this request. Must be done before | |
40 * request has started. | |
41 * | |
42 * <p>The default when this method is not called is "GET" if the request has | |
43 * no body or "POST" if it does. | |
44 * | |
45 * @param method "GET", "HEAD", "DELETE", "POST" or "PUT". | |
46 */ | |
47 protected abstract void setHttpMethod(String method); | |
48 | |
49 /** | |
50 * Adds a request header. Must be done before request has started. | |
51 * | |
52 * @param header header name. | |
53 * @param value header value. | |
54 */ | |
55 protected abstract void addHeader(String header, String value); | |
56 | |
57 /** | |
58 * Sets upload data provider. Must be done before request has started. May o nly be | |
59 * invoked once per request. Switches method to "POST" if not explicitly | |
60 * set. Starting the request will throw an exception if a Content-Type | |
61 * header is not set. | |
62 * | |
63 * @param uploadDataProvider responsible for providing the upload data. | |
64 * @param executor All {@code uploadDataProvider} methods will be invoked | |
65 * using this {@code Executor}. May optionally be the same | |
66 * {@code Executor} the request itself is using. | |
67 */ | |
68 protected abstract void setUploadDataProvider( | |
69 UploadDataProvider uploadDataProvider, Executor executor); | |
70 | |
71 /** | |
72 * Possible URL Request statuses. | |
73 */ | |
74 public static class StatusConverter { | |
pauljensen
2016/10/03 15:22:38
why wrap in a class?
kapishnikov
2016/10/03 23:49:28
Good point. Done.
| |
75 @IntDef({ | |
76 INVALID, IDLE, WAITING_FOR_STALLED_SOCKET_POOL, WAITING_FOR_AVAI LABLE_SOCKET, | |
77 WAITING_FOR_DELEGATE, WAITING_FOR_CACHE, DOWNLOADING_PROXY_SCRIP T, | |
78 RESOLVING_PROXY_FOR_URL, RESOLVING_HOST_IN_PROXY_SCRIPT, ESTABLI SHING_PROXY_TUNNEL, | |
79 RESOLVING_HOST, CONNECTING, SSL_HANDSHAKE, SENDING_REQUEST, WAIT ING_FOR_RESPONSE, | |
80 READING_RESPONSE, | |
81 }) | |
82 @Retention(RetentionPolicy.SOURCE) | |
83 public @interface StatusValues {} | |
84 | |
85 /** | |
86 * Convert a LoadState int to one of values listed above. | |
87 * @param loadState a LoadState to convert. | |
88 * @return static int Status. | |
89 */ | |
90 @StatusValues | |
91 public static int convertLoadState(int loadState) { | |
92 assert loadState >= LoadState.IDLE && loadState <= LoadState.READING _RESPONSE; | |
93 switch (loadState) { | |
94 case (LoadState.IDLE): | |
95 return IDLE; | |
96 | |
97 case (LoadState.WAITING_FOR_STALLED_SOCKET_POOL): | |
98 return WAITING_FOR_STALLED_SOCKET_POOL; | |
99 | |
100 case (LoadState.WAITING_FOR_AVAILABLE_SOCKET): | |
101 return WAITING_FOR_AVAILABLE_SOCKET; | |
102 | |
103 case (LoadState.WAITING_FOR_DELEGATE): | |
104 return WAITING_FOR_DELEGATE; | |
105 | |
106 case (LoadState.WAITING_FOR_CACHE): | |
107 return WAITING_FOR_CACHE; | |
108 | |
109 case (LoadState.DOWNLOADING_PROXY_SCRIPT): | |
110 return DOWNLOADING_PROXY_SCRIPT; | |
111 | |
112 case (LoadState.RESOLVING_PROXY_FOR_URL): | |
113 return RESOLVING_PROXY_FOR_URL; | |
114 | |
115 case (LoadState.RESOLVING_HOST_IN_PROXY_SCRIPT): | |
116 return RESOLVING_HOST_IN_PROXY_SCRIPT; | |
117 | |
118 case (LoadState.ESTABLISHING_PROXY_TUNNEL): | |
119 return ESTABLISHING_PROXY_TUNNEL; | |
120 | |
121 case (LoadState.RESOLVING_HOST): | |
122 return RESOLVING_HOST; | |
123 | |
124 case (LoadState.CONNECTING): | |
125 return CONNECTING; | |
126 | |
127 case (LoadState.SSL_HANDSHAKE): | |
128 return SSL_HANDSHAKE; | |
129 | |
130 case (LoadState.SENDING_REQUEST): | |
131 return SENDING_REQUEST; | |
132 | |
133 case (LoadState.WAITING_FOR_RESPONSE): | |
134 return WAITING_FOR_RESPONSE; | |
135 | |
136 case (LoadState.READING_RESPONSE): | |
137 return READING_RESPONSE; | |
138 | |
139 default: | |
140 // A load state is retrieved but there is no corresponding | |
141 // request status. This most likely means that the mapping i s | |
142 // incorrect. | |
143 throw new IllegalArgumentException("No request status found. "); | |
144 } | |
145 } | |
146 } | |
147 } | |
OLD | NEW |