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

Side by Side Diff: components/cronet/android/java/src/org/chromium/net/impl/UrlRequestBase.java

Issue 2339223002: Cronet API Refactoring (Closed)
Patch Set: Addressed Paul's comments + rebase Created 4 years, 2 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
OLDNEW
(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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698