Chromium Code Reviews| 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 { | |
| 
 
mmenke
2015/02/18 17:08:41
optional:  Maybe TestUploadDataStreamHandler?  Thi
 
xunjieli
2015/02/19 14:59:11
Done. Good idea!
 
 | |
| 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; | |
| 
 
mmenke
2015/02/18 17:08:41
optional:  Suggest removing the "Callback" from th
 
xunjieli
2015/02/19 14:59:11
Done.
 
 | |
| 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 = ""; | |
| 
 
mmenke
2015/02/18 17:08:41
Should probably inline all these initializations a
 
xunjieli
2015/02/19 14:59:11
Done.
 
 | |
| 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() { | |
| 
 
mmenke
2015/02/18 21:06:23
Rather than have these close() methods, couldn't y
 
xunjieli
2015/02/19 14:59:11
Done. Great idea! Thanks for the suggestion. Defin
 
 | |
| 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 |