OLD | NEW |
| (Empty) |
1 // Copyright 2014 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 | |
5 package org.chromium.net; | |
6 | |
7 import java.io.IOException; | |
8 | |
9 /** | |
10 * @deprecated Use {@link CronetException} instead. | |
11 * {@hide This class will be removed after complete transition to CronetExceptio
n}. | |
12 */ | |
13 @Deprecated | |
14 public class UrlRequestException extends IOException { | |
15 /** | |
16 * Error code indicating this class wraps an exception thrown by {@link UrlR
equest.Callback} or | |
17 * {@link UploadDataProvider}. Wrapped exception can be retrieved using | |
18 * {@link IOException#getCause}. | |
19 */ | |
20 public static final int ERROR_LISTENER_EXCEPTION_THROWN = 0; | |
21 /** | |
22 * Error code indicating the host being sent the request could not be resolv
ed to an IP address. | |
23 */ | |
24 public static final int ERROR_HOSTNAME_NOT_RESOLVED = 1; | |
25 /** | |
26 * Error code indicating the device was not connected to any network. | |
27 */ | |
28 public static final int ERROR_INTERNET_DISCONNECTED = 2; | |
29 /** | |
30 * Error code indicating that as the request was processed the network confi
guration changed. | |
31 */ | |
32 public static final int ERROR_NETWORK_CHANGED = 3; | |
33 /** | |
34 * Error code indicating a timeout expired. Timeouts expiring while attempti
ng to connect will | |
35 * be reported as the more specific {@link #ERROR_CONNECTION_TIMED_OUT}. | |
36 */ | |
37 public static final int ERROR_TIMED_OUT = 4; | |
38 /** | |
39 * Error code indicating the connection was closed unexpectedly. | |
40 */ | |
41 public static final int ERROR_CONNECTION_CLOSED = 5; | |
42 /** | |
43 * Error code indicating the connection attempt timed out. | |
44 */ | |
45 public static final int ERROR_CONNECTION_TIMED_OUT = 6; | |
46 /** | |
47 * Error code indicating the connection attempt was refused. | |
48 */ | |
49 public static final int ERROR_CONNECTION_REFUSED = 7; | |
50 /** | |
51 * Error code indicating the connection was unexpectedly reset. | |
52 */ | |
53 public static final int ERROR_CONNECTION_RESET = 8; | |
54 /** | |
55 * Error code indicating the IP address being contacted is unreachable, mean
ing there is no | |
56 * route to the specified host or network. | |
57 */ | |
58 public static final int ERROR_ADDRESS_UNREACHABLE = 9; | |
59 /** | |
60 * Error code indicating an error related to the <a href="https://www.chromi
um.org/quic"> | |
61 * QUIC</a> protocol. When {@link #getErrorCode} returns this code, this exc
eption can be cast | |
62 * to {@link QuicException} for more information. | |
63 */ | |
64 public static final int ERROR_QUIC_PROTOCOL_FAILED = 10; | |
65 /** | |
66 * Error code indicating another type of error was encountered. | |
67 * {@link #getCronetInternalErrorCode} can be consulted to get a more specif
ic cause. | |
68 */ | |
69 public static final int ERROR_OTHER = 11; | |
70 | |
71 // Error code, one of ERROR_* | |
72 private final int mErrorCode; | |
73 // Cronet internal error code. | |
74 private final int mCronetInternalErrorCode; | |
75 | |
76 public UrlRequestException(CronetException error) { | |
77 super(error.getMessage(), error.getCause()); | |
78 if (error instanceof NetworkException) { | |
79 mErrorCode = ((NetworkException) error).getErrorCode(); | |
80 mCronetInternalErrorCode = ((NetworkException) error).getCronetInter
nalErrorCode(); | |
81 } else { | |
82 mErrorCode = 0; | |
83 mCronetInternalErrorCode = ERROR_LISTENER_EXCEPTION_THROWN; | |
84 } | |
85 } | |
86 | |
87 /** | |
88 * Returns error code, one of {@link #ERROR_LISTENER_EXCEPTION_THROWN ERROR_
*}. | |
89 * | |
90 * @return error code, one of {@link #ERROR_LISTENER_EXCEPTION_THROWN ERROR_
*}. | |
91 */ | |
92 public int getErrorCode() { | |
93 return mErrorCode; | |
94 } | |
95 | |
96 /** | |
97 * Returns a Cronet internal error code. This may provide more specific erro
r | |
98 * diagnosis than {@link #getErrorCode}, but the constant values are not exp
osed to Java and | |
99 * may change over time. See | |
100 * <a href=https://chromium.googlesource.com/chromium/src/+/master/net/base/
net_error_list.h> | |
101 * here</a> for the lastest list of values. | |
102 * | |
103 * @return Cronet internal error code. | |
104 */ | |
105 public int getCronetInternalErrorCode() { | |
106 return mCronetInternalErrorCode; | |
107 } | |
108 | |
109 /** | |
110 * Returns {@code true} if retrying this request right away might succeed, {
@code false} | |
111 * otherwise. For example returns {@code true} when {@link #getErrorCode} re
turns | |
112 * {@link #ERROR_NETWORK_CHANGED} because trying the request might succeed u
sing the new | |
113 * network configuration, but {@code false} when {@code getErrorCode()} retu
rns | |
114 * {@link #ERROR_INTERNET_DISCONNECTED} because retrying the request right a
way will | |
115 * encounter the same failure (instead retrying should be delayed until devi
ce regains | |
116 * network connectivity). Returns {@code false} when {@code getErrorCode()}
returns | |
117 * {@link #ERROR_LISTENER_EXCEPTION_THROWN}. | |
118 * | |
119 * @return {@code true} if retrying this request right away might succeed, {
@code false} | |
120 * otherwise. | |
121 */ | |
122 public boolean immediatelyRetryable() { | |
123 switch (mErrorCode) { | |
124 case ERROR_LISTENER_EXCEPTION_THROWN: | |
125 case ERROR_HOSTNAME_NOT_RESOLVED: | |
126 case ERROR_INTERNET_DISCONNECTED: | |
127 case ERROR_CONNECTION_REFUSED: | |
128 case ERROR_ADDRESS_UNREACHABLE: | |
129 case ERROR_OTHER: | |
130 default: | |
131 return false; | |
132 case ERROR_NETWORK_CHANGED: | |
133 case ERROR_TIMED_OUT: | |
134 case ERROR_CONNECTION_CLOSED: | |
135 case ERROR_CONNECTION_TIMED_OUT: | |
136 case ERROR_CONNECTION_RESET: | |
137 return true; | |
138 } | |
139 } | |
140 } | |
OLD | NEW |