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