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

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

Issue 2339223002: Cronet API Refactoring (Closed)
Patch Set: Rebase & Conflict Resolution Created 4 years, 1 month 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 @IntDef({
75 INVALID, IDLE, WAITING_FOR_STALLED_SOCKET_POOL, WAITING_FOR_AVAILABL E_SOCKET,
76 WAITING_FOR_DELEGATE, WAITING_FOR_CACHE, DOWNLOADING_PROXY_SCRIPT,
77 RESOLVING_PROXY_FOR_URL, RESOLVING_HOST_IN_PROXY_SCRIPT, ESTABLISHIN G_PROXY_TUNNEL,
78 RESOLVING_HOST, CONNECTING, SSL_HANDSHAKE, SENDING_REQUEST, WAITING_ FOR_RESPONSE,
79 READING_RESPONSE,
80 })
81 @Retention(RetentionPolicy.SOURCE)
82 public @interface StatusValues {}
83
84 /**
85 * Convert a LoadState int to one of values listed above.
86 * @param loadState a LoadState to convert.
87 * @return static int Status.
88 */
89 @StatusValues
90 public static int convertLoadState(int loadState) {
91 assert loadState >= LoadState.IDLE && loadState <= LoadState.READING_RES PONSE;
92 switch (loadState) {
93 case (LoadState.IDLE):
94 return IDLE;
95
96 case (LoadState.WAITING_FOR_STALLED_SOCKET_POOL):
97 return WAITING_FOR_STALLED_SOCKET_POOL;
98
99 case (LoadState.WAITING_FOR_AVAILABLE_SOCKET):
100 return WAITING_FOR_AVAILABLE_SOCKET;
101
102 case (LoadState.WAITING_FOR_DELEGATE):
103 return WAITING_FOR_DELEGATE;
104
105 case (LoadState.WAITING_FOR_CACHE):
106 return WAITING_FOR_CACHE;
107
108 case (LoadState.DOWNLOADING_PROXY_SCRIPT):
109 return DOWNLOADING_PROXY_SCRIPT;
110
111 case (LoadState.RESOLVING_PROXY_FOR_URL):
112 return RESOLVING_PROXY_FOR_URL;
113
114 case (LoadState.RESOLVING_HOST_IN_PROXY_SCRIPT):
115 return RESOLVING_HOST_IN_PROXY_SCRIPT;
116
117 case (LoadState.ESTABLISHING_PROXY_TUNNEL):
118 return ESTABLISHING_PROXY_TUNNEL;
119
120 case (LoadState.RESOLVING_HOST):
121 return RESOLVING_HOST;
122
123 case (LoadState.CONNECTING):
124 return CONNECTING;
125
126 case (LoadState.SSL_HANDSHAKE):
127 return SSL_HANDSHAKE;
128
129 case (LoadState.SENDING_REQUEST):
130 return SENDING_REQUEST;
131
132 case (LoadState.WAITING_FOR_RESPONSE):
133 return WAITING_FOR_RESPONSE;
134
135 case (LoadState.READING_RESPONSE):
136 return READING_RESPONSE;
137
138 default:
139 // A load state is retrieved but there is no corresponding
140 // request status. This most likely means that the mapping is
141 // incorrect.
142 throw new IllegalArgumentException("No request status found.");
143 }
144 }
145 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698