OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.net; | 5 package org.chromium.net; |
6 | 6 |
7 import org.chromium.base.CalledByNative; | 7 import org.chromium.base.CalledByNative; |
8 import org.chromium.base.JNINamespace; | 8 import org.chromium.base.JNINamespace; |
9 import org.chromium.base.NativeClassQualifiedName; | 9 import org.chromium.base.NativeClassQualifiedName; |
10 | 10 |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
109 } catch (Exception exception) { | 109 } catch (Exception exception) { |
110 onError(exception); | 110 onError(exception); |
111 } | 111 } |
112 } | 112 } |
113 }; | 113 }; |
114 mExecutor.execute(task); | 114 mExecutor.execute(task); |
115 } | 115 } |
116 | 116 |
117 /** | 117 /** |
118 * Called by native code to destroy the native adapter delegate, when the | 118 * Called by native code to destroy the native adapter delegate, when the |
119 * adapter is destroyed. | 119 * adapter is destroyed. |
xunjieli
2015/05/08 20:11:27
nit: need to update the comment.
mmenke
2015/05/08 20:24:19
Done.
| |
120 */ | 120 */ |
121 @SuppressWarnings("unused") | 121 @SuppressWarnings("unused") |
122 @CalledByNative | 122 @CalledByNative |
123 void onAdapterDestroyed() { | 123 void onUploadDataStreamDestroyed() { |
124 Runnable task = new Runnable() { | 124 Runnable task = new Runnable() { |
125 @Override | 125 @Override |
126 public void run() { | 126 public void run() { |
127 destroyDelegate(); | 127 destroyDelegate(); |
128 } | 128 } |
129 }; | 129 }; |
130 | 130 |
131 mExecutor.execute(task); | 131 mExecutor.execute(task); |
132 } | 132 } |
133 | 133 |
134 /** | 134 /** |
135 * Helper method called when an exception occurred. This method resets | 135 * Helper method called when an exception occurred. This method resets |
136 * states and propagates the error to the request. | 136 * states and propagates the error to the request. |
137 */ | 137 */ |
138 private void onError(Exception exception) { | 138 private void onError(Exception exception) { |
139 synchronized (mLock) { | 139 synchronized (mLock) { |
140 if (!mReading && !mRewinding) { | 140 if (!mReading && !mRewinding) { |
141 throw new IllegalStateException( | 141 throw new IllegalStateException( |
142 "There is no read or rewind in progress."); | 142 "There is no read or rewind in progress."); |
143 } | 143 } |
144 mReading = false; | 144 mReading = false; |
145 mRewinding = false; | 145 mRewinding = false; |
146 mByteBuffer = null; | 146 mByteBuffer = null; |
147 destroyDelegateIfPostponed(); | 147 destroyDelegateIfPostponed(); |
148 } | 148 } |
149 | 149 |
150 // Just fail the request - simpler to fail directly, and | 150 // Just fail the request - simpler to fail directly, and |
151 // UploadDataStream only supports failing during initialization, not | 151 // UploadDataStream only supports failing during initialization, not |
152 // while reading. This should be safe, even if we deleted the adapter, | 152 // while reading. This should be safe, even if we deleted the adapter, |
xunjieli
2015/05/08 20:11:27
nit: s/"adapter"/"native UploadDataStream" to matc
mmenke
2015/05/08 20:24:19
Done.
| |
153 // because in that case, the request has already been cancelled. | 153 // because in that case, the request has already been cancelled. |
154 mRequest.onUploadException(exception); | 154 mRequest.onUploadException(exception); |
155 } | 155 } |
156 | 156 |
157 @Override | 157 @Override |
158 public void onReadSucceeded(boolean lastChunk) { | 158 public void onReadSucceeded(boolean lastChunk) { |
159 synchronized (mLock) { | 159 synchronized (mLock) { |
160 if (!mReading) { | 160 if (!mReading) { |
161 throw new IllegalStateException("Non-existent read succeeded."); | 161 throw new IllegalStateException("Non-existent read succeeded."); |
162 } | 162 } |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
259 * an interface with just this method, to minimize CronetURLRequest's | 259 * an interface with just this method, to minimize CronetURLRequest's |
260 * dependencies on each upload stream type. | 260 * dependencies on each upload stream type. |
261 */ | 261 */ |
262 void attachToRequest(CronetUrlRequest request, long requestAdapter) { | 262 void attachToRequest(CronetUrlRequest request, long requestAdapter) { |
263 mRequest = request; | 263 mRequest = request; |
264 mUploadDataStreamDelegate = | 264 mUploadDataStreamDelegate = |
265 nativeAttachUploadDataToRequest(requestAdapter, mLength); | 265 nativeAttachUploadDataToRequest(requestAdapter, mLength); |
266 } | 266 } |
267 | 267 |
268 /** | 268 /** |
269 * Creates a native UploadDataStreamDelegate and UploadDataStreamAdapter | 269 * Creates a native CronetUploadDataStreamDelegate and |
270 * for testing. | 270 * CronetUploadDataStream for testing. |
271 * @return the address of the native CronetUploadDataStreamAdapter object. | 271 * @return the address of the native CronetUploadDataStream object. |
272 */ | 272 */ |
273 public long createAdapterForTesting() { | 273 public long createUploadDataStreamForTesting() { |
274 mUploadDataStreamDelegate = nativeCreateDelegateForTesting(); | 274 mUploadDataStreamDelegate = nativeCreateDelegateForTesting(); |
275 return nativeCreateAdapterForTesting(mLength, mUploadDataStreamDelegate) ; | 275 return nativeCreateUploadDataStreamForTesting(mLength, |
276 mUploadDataStreamDelegate); | |
276 } | 277 } |
277 | 278 |
278 // Native methods are implemented in upload_data_stream_adapter.cc. | 279 // Native methods are implemented in upload_data_stream_adapter.cc. |
xunjieli
2015/05/08 20:11:27
nit: need to update file name here.
mmenke
2015/05/08 20:24:18
Done.
| |
279 | 280 |
280 private native long nativeAttachUploadDataToRequest(long urlRequestAdapter, | 281 private native long nativeAttachUploadDataToRequest(long urlRequestAdapter, |
281 long length); | 282 long length); |
282 | 283 |
283 private native long nativeCreateDelegateForTesting(); | 284 private native long nativeCreateDelegateForTesting(); |
284 | 285 |
285 private native long nativeCreateAdapterForTesting(long length, | 286 private native long nativeCreateUploadDataStreamForTesting(long length, |
286 long delegate); | 287 long delegate); |
287 | 288 |
288 @NativeClassQualifiedName("CronetUploadDataStreamDelegate") | 289 @NativeClassQualifiedName("CronetUploadDataStreamDelegate") |
289 private native void nativeOnReadSucceeded(long nativePtr, | 290 private native void nativeOnReadSucceeded(long nativePtr, |
290 int bytesRead, boolean finalChunk); | 291 int bytesRead, boolean finalChunk); |
291 | 292 |
292 @NativeClassQualifiedName("CronetUploadDataStreamDelegate") | 293 @NativeClassQualifiedName("CronetUploadDataStreamDelegate") |
293 private native void nativeOnRewindSucceeded(long nativePtr); | 294 private native void nativeOnRewindSucceeded(long nativePtr); |
294 | 295 |
295 private static native void nativeDestroyDelegate( | 296 private static native void nativeDestroyDelegate( |
296 long uploadDataStreamDelegate); | 297 long uploadDataStreamDelegate); |
297 } | 298 } |
OLD | NEW |