| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 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 | 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 android.util.Log; | 7 import android.util.Log; |
| 8 | 8 |
| 9 import org.chromium.base.VisibleForTesting; | 9 import org.chromium.base.VisibleForTesting; |
| 10 import org.chromium.base.annotations.CalledByNative; | 10 import org.chromium.base.annotations.CalledByNative; |
| (...skipping 218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 229 } | 229 } |
| 230 } | 230 } |
| 231 | 231 |
| 232 @Override | 232 @Override |
| 233 public void read(ByteBuffer buffer) { | 233 public void read(ByteBuffer buffer) { |
| 234 synchronized (mUrlRequestAdapterLock) { | 234 synchronized (mUrlRequestAdapterLock) { |
| 235 if (buffer.position() >= buffer.capacity()) { | 235 if (buffer.position() >= buffer.capacity()) { |
| 236 throw new IllegalArgumentException( | 236 throw new IllegalArgumentException( |
| 237 "ByteBuffer is already full."); | 237 "ByteBuffer is already full."); |
| 238 } | 238 } |
| 239 Preconditions.checkDirect(buffer); |
| 239 | 240 |
| 240 if (!mWaitingOnRead) { | 241 if (!mWaitingOnRead) { |
| 241 throw new IllegalStateException("Unexpected read attempt."); | 242 throw new IllegalStateException("Unexpected read attempt."); |
| 242 } | 243 } |
| 243 mWaitingOnRead = false; | 244 mWaitingOnRead = false; |
| 244 mLegacyReadByteBufferAdjustment = true; | 245 mLegacyReadByteBufferAdjustment = true; |
| 245 | 246 |
| 246 if (isDone()) { | 247 if (isDone()) { |
| 247 return; | 248 return; |
| 248 } | 249 } |
| 249 | 250 |
| 250 // Indicate buffer has no new data. This is primarily to make it | 251 // Indicate buffer has no new data. This is primarily to make it |
| 251 // clear the buffer has no data in the failure and completion cases. | 252 // clear the buffer has no data in the failure and completion cases. |
| 252 buffer.limit(buffer.position()); | 253 buffer.limit(buffer.position()); |
| 253 | 254 |
| 254 if (!nativeReadData(mUrlRequestAdapter, buffer, buffer.position(), | 255 if (!nativeReadData(mUrlRequestAdapter, buffer, buffer.position(), |
| 255 buffer.capacity())) { | 256 buffer.capacity())) { |
| 256 // Still waiting on read. This is just to have consistent | 257 // Still waiting on read. This is just to have consistent |
| 257 // behavior with the other error cases. | 258 // behavior with the other error cases. |
| 258 mWaitingOnRead = true; | 259 mWaitingOnRead = true; |
| 259 // Since accessing byteBuffer's memory failed, it's presumably | 260 throw new IllegalArgumentException("Unable to call native read")
; |
| 260 // not a direct ByteBuffer. | |
| 261 throw new IllegalArgumentException( | |
| 262 "byteBuffer must be a direct ByteBuffer."); | |
| 263 } | 261 } |
| 264 } | 262 } |
| 265 } | 263 } |
| 266 | 264 |
| 267 @Override | 265 @Override |
| 268 public void readNew(ByteBuffer buffer) { | 266 public void readNew(ByteBuffer buffer) { |
| 267 Preconditions.checkHasRemaining(buffer); |
| 268 Preconditions.checkDirect(buffer); |
| 269 synchronized (mUrlRequestAdapterLock) { | 269 synchronized (mUrlRequestAdapterLock) { |
| 270 if (!buffer.hasRemaining()) { | |
| 271 throw new IllegalArgumentException("ByteBuffer is already full."
); | |
| 272 } | |
| 273 | |
| 274 if (!mWaitingOnRead) { | 270 if (!mWaitingOnRead) { |
| 275 throw new IllegalStateException("Unexpected read attempt."); | 271 throw new IllegalStateException("Unexpected read attempt."); |
| 276 } | 272 } |
| 277 mWaitingOnRead = false; | 273 mWaitingOnRead = false; |
| 278 mLegacyReadByteBufferAdjustment = false; | 274 mLegacyReadByteBufferAdjustment = false; |
| 279 | 275 |
| 280 if (isDone()) { | 276 if (isDone()) { |
| 281 return; | 277 return; |
| 282 } | 278 } |
| 283 | 279 |
| 284 if (!nativeReadData(mUrlRequestAdapter, buffer, buffer.position(), b
uffer.limit())) { | 280 if (!nativeReadData(mUrlRequestAdapter, buffer, buffer.position(), b
uffer.limit())) { |
| 285 // Still waiting on read. This is just to have consistent | 281 // Still waiting on read. This is just to have consistent |
| 286 // behavior with the other error cases. | 282 // behavior with the other error cases. |
| 287 mWaitingOnRead = true; | 283 mWaitingOnRead = true; |
| 288 // Since accessing byteBuffer's memory failed, it's presumably | 284 throw new IllegalArgumentException("Unable to call native read")
; |
| 289 // not a direct ByteBuffer. | |
| 290 throw new IllegalArgumentException("byteBuffer must be a direct
ByteBuffer."); | |
| 291 } | 285 } |
| 292 } | 286 } |
| 293 } | 287 } |
| 294 | 288 |
| 295 @Override | 289 @Override |
| 296 public void cancel() { | 290 public void cancel() { |
| 297 synchronized (mUrlRequestAdapterLock) { | 291 synchronized (mUrlRequestAdapterLock) { |
| 298 if (isDone() || !mStarted) { | 292 if (isDone() || !mStarted) { |
| 299 return; | 293 return; |
| 300 } | 294 } |
| (...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 710 | 704 |
| 711 @NativeClassQualifiedName("CronetURLRequestAdapter") | 705 @NativeClassQualifiedName("CronetURLRequestAdapter") |
| 712 private native String nativeGetProxyServer(long nativePtr); | 706 private native String nativeGetProxyServer(long nativePtr); |
| 713 | 707 |
| 714 @NativeClassQualifiedName("CronetURLRequestAdapter") | 708 @NativeClassQualifiedName("CronetURLRequestAdapter") |
| 715 private native void nativeGetStatus(long nativePtr, UrlRequest.StatusListene
r listener); | 709 private native void nativeGetStatus(long nativePtr, UrlRequest.StatusListene
r listener); |
| 716 | 710 |
| 717 @NativeClassQualifiedName("CronetURLRequestAdapter") | 711 @NativeClassQualifiedName("CronetURLRequestAdapter") |
| 718 private native boolean nativeGetWasCached(long nativePtr); | 712 private native boolean nativeGetWasCached(long nativePtr); |
| 719 } | 713 } |
| OLD | NEW |