| 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 android.os.ConditionVariable; | 7 import android.os.ConditionVariable; |
| 8 | 8 |
| 9 import java.io.IOException; | 9 import java.io.IOException; |
| 10 import java.nio.ByteBuffer; | 10 import java.nio.ByteBuffer; |
| 11 import java.util.List; | 11 import java.util.List; |
| 12 import java.util.concurrent.Executor; | 12 import java.util.concurrent.Executor; |
| 13 | 13 |
| 14 /** | 14 /** |
| 15 * An UploadDataProvider that allows tests to invoke {@code onReadSucceeded} | 15 * An UploadDataProvider that allows tests to invoke {@code onReadSucceeded} |
| 16 * and {@code onRewindSucceeded} on the UploadDataSink directly. | 16 * and {@code onRewindSucceeded} on the UploadDataSink directly. |
| 17 * Chunked mode is not supported here, since the main interest is to test | 17 * Chunked mode is not supported here, since the main interest is to test |
| 18 * different order of init/read/rewind calls. | 18 * different order of init/read/rewind calls. |
| 19 */ | 19 */ |
| 20 class TestDrivenDataProvider implements UploadDataProvider { | 20 class TestDrivenDataProvider extends UploadDataProvider { |
| 21 private final Executor mExecutor; | 21 private final Executor mExecutor; |
| 22 private final List<byte[]> mReads; | 22 private final List<byte[]> mReads; |
| 23 private final ConditionVariable mWaitForReadRequest = | 23 private final ConditionVariable mWaitForReadRequest = |
| 24 new ConditionVariable(); | 24 new ConditionVariable(); |
| 25 private final ConditionVariable mWaitForRewindRequest = | 25 private final ConditionVariable mWaitForRewindRequest = |
| 26 new ConditionVariable(); | 26 new ConditionVariable(); |
| 27 // Lock used to synchronize access to mReadPending and mRewindPending. | 27 // Lock used to synchronize access to mReadPending and mRewindPending. |
| 28 private final Object mLock = new Object(); | 28 private final Object mLock = new Object(); |
| 29 | 29 |
| 30 private int mNextRead = 0; | 30 private int mNextRead = 0; |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 183 } | 183 } |
| 184 | 184 |
| 185 /** | 185 /** |
| 186 * Helper method to ensure no read or rewind is in progress. | 186 * Helper method to ensure no read or rewind is in progress. |
| 187 */ | 187 */ |
| 188 private void assertIdle() { | 188 private void assertIdle() { |
| 189 assertReadNotPending(); | 189 assertReadNotPending(); |
| 190 assertRewindNotPending(); | 190 assertRewindNotPending(); |
| 191 } | 191 } |
| 192 } | 192 } |
| OLD | NEW |