| OLD | NEW |
| (Empty) | |
| 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 |
| 3 // found in the LICENSE file. |
| 4 |
| 5 package org.chromium.net; |
| 6 |
| 7 import android.os.ConditionVariable; |
| 8 |
| 9 import junit.framework.Assert; |
| 10 |
| 11 import org.chromium.base.CalledByNative; |
| 12 import org.chromium.base.JNINamespace; |
| 13 import org.chromium.base.NativeClassQualifiedName; |
| 14 |
| 15 /** |
| 16 * A wrapper class on top of the native UploadDataStream. This class is used in |
| 17 * tests to drive the native UploadDataStream directly. |
| 18 */ |
| 19 @JNINamespace("cronet") |
| 20 public final class UploadDataStreamHandler { |
| 21 private long mUploadDataStreamHandler; |
| 22 private ConditionVariable mWaitInitComplete; |
| 23 private ConditionVariable mWaitInitCalled; |
| 24 private ConditionVariable mWaitReadComplete; |
| 25 private ConditionVariable mWaitResetComplete; |
| 26 // Waits for checkIfInitCallbackInvoked() returns result asynchronously. |
| 27 private ConditionVariable mWaitCheckInitCallback; |
| 28 // Waits for checkIfReadCallbackInvoked() returns result asynchronously. |
| 29 private ConditionVariable mWaitCheckReadCallback; |
| 30 // If true, init completes synchronously. |
| 31 private boolean mInitCompletedSynchronously = false; |
| 32 private String mData; |
| 33 |
| 34 public UploadDataStreamHandler(final long adapter) { |
| 35 mWaitReadComplete = new ConditionVariable(); |
| 36 mWaitInitComplete = new ConditionVariable(); |
| 37 mWaitInitCalled = new ConditionVariable(); |
| 38 mWaitResetComplete = new ConditionVariable(); |
| 39 mWaitCheckInitCallback = new ConditionVariable(); |
| 40 mWaitCheckReadCallback = new ConditionVariable(); |
| 41 mData = ""; |
| 42 mUploadDataStreamHandler = nativeCreateUploadDataStreamHandler(adapter); |
| 43 } |
| 44 |
| 45 public void destroyNativeObjects() { |
| 46 nativeDestroy(mUploadDataStreamHandler); |
| 47 mUploadDataStreamHandler = 0; |
| 48 } |
| 49 |
| 50 /** |
| 51 * Init and returns whether init completes synchronously. |
| 52 */ |
| 53 public boolean init() { |
| 54 mWaitInitCalled.close(); |
| 55 mData = ""; |
| 56 nativeInit(mUploadDataStreamHandler); |
| 57 mWaitInitCalled.block(); |
| 58 return mInitCompletedSynchronously; |
| 59 } |
| 60 |
| 61 public void read() { |
| 62 nativeRead(mUploadDataStreamHandler); |
| 63 } |
| 64 |
| 65 public void reset() { |
| 66 mWaitResetComplete.close(); |
| 67 mData = ""; |
| 68 nativeReset(mUploadDataStreamHandler); |
| 69 mWaitResetComplete.block(); |
| 70 } |
| 71 |
| 72 public void checkInitCallbackNotInvoked() { |
| 73 mWaitCheckInitCallback.close(); |
| 74 nativeCheckInitCallbackNotInvoked(mUploadDataStreamHandler); |
| 75 mWaitCheckInitCallback.block(); |
| 76 } |
| 77 |
| 78 public void checkReadCallbackNotInvoked() { |
| 79 mWaitCheckReadCallback.close(); |
| 80 nativeCheckReadCallbackNotInvoked(mUploadDataStreamHandler); |
| 81 mWaitCheckReadCallback.block(); |
| 82 } |
| 83 |
| 84 public String getData() { |
| 85 return mData; |
| 86 } |
| 87 |
| 88 public void waitForReadComplete() { |
| 89 mWaitReadComplete.block(); |
| 90 } |
| 91 |
| 92 public void resetWaitForReadComplete() { |
| 93 mWaitReadComplete.close(); |
| 94 } |
| 95 |
| 96 public void resetWaitForInitComplete() { |
| 97 mWaitInitComplete.close(); |
| 98 } |
| 99 |
| 100 public void waitForInitComplete() { |
| 101 mWaitInitComplete.block(); |
| 102 } |
| 103 |
| 104 // Called on network thread. |
| 105 @CalledByNative |
| 106 private void onInitCalled(int res) { |
| 107 if (res == 0) { |
| 108 mInitCompletedSynchronously = true; |
| 109 } else { |
| 110 mInitCompletedSynchronously = false; |
| 111 } |
| 112 mWaitInitCalled.open(); |
| 113 } |
| 114 |
| 115 @CalledByNative |
| 116 // Called on network thread. |
| 117 private void onReadCompleted(int bytesRead, String data) { |
| 118 mData = data; |
| 119 mWaitReadComplete.open(); |
| 120 } |
| 121 |
| 122 @CalledByNative |
| 123 // Called on network thread. |
| 124 private void onInitCompleted(int res) { |
| 125 mWaitInitComplete.open(); |
| 126 } |
| 127 |
| 128 @CalledByNative |
| 129 // Called on network thread. |
| 130 private void onResetCompleted() { |
| 131 mWaitResetComplete.open(); |
| 132 } |
| 133 |
| 134 @CalledByNative |
| 135 // Called on network thread. |
| 136 private void onCheckInitCallbackNotInvoked(boolean initCallbackNotInvoked) { |
| 137 Assert.assertTrue(initCallbackNotInvoked); |
| 138 mWaitCheckInitCallback.open(); |
| 139 } |
| 140 |
| 141 @CalledByNative |
| 142 // Called on network thread. |
| 143 private void onCheckReadCallbackNotInvoked(boolean readCallbackNotInvoked) { |
| 144 Assert.assertTrue(readCallbackNotInvoked); |
| 145 mWaitCheckReadCallback.open(); |
| 146 } |
| 147 |
| 148 @NativeClassQualifiedName("UploadDataStreamHandler") |
| 149 private native void nativeInit(long nativePtr); |
| 150 |
| 151 @NativeClassQualifiedName("UploadDataStreamHandler") |
| 152 private native void nativeRead(long nativePtr); |
| 153 |
| 154 @NativeClassQualifiedName("UploadDataStreamHandler") |
| 155 private native void nativeReset(long nativePtr); |
| 156 |
| 157 @NativeClassQualifiedName("UploadDataStreamHandler") |
| 158 private native void nativeCheckInitCallbackNotInvoked( |
| 159 long nativePtr); |
| 160 |
| 161 @NativeClassQualifiedName("UploadDataStreamHandler") |
| 162 private native void nativeCheckReadCallbackNotInvoked( |
| 163 long nativePtr); |
| 164 |
| 165 @NativeClassQualifiedName("UploadDataStreamHandler") |
| 166 private native void nativeDestroy(long nativePtr); |
| 167 |
| 168 private native long nativeCreateUploadDataStreamHandler( |
| 169 long uploadDataStreamAdapter); |
| 170 } |
| OLD | NEW |