| Index: components/cronet/android/test/src/org/chromium/cronet_test_apk/UploadDataStreamHandler.java
|
| diff --git a/components/cronet/android/test/src/org/chromium/cronet_test_apk/UploadDataStreamHandler.java b/components/cronet/android/test/src/org/chromium/cronet_test_apk/UploadDataStreamHandler.java
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..41c161602018741ce1586055d4ece11480eb1744
|
| --- /dev/null
|
| +++ b/components/cronet/android/test/src/org/chromium/cronet_test_apk/UploadDataStreamHandler.java
|
| @@ -0,0 +1,156 @@
|
| +// Copyright 2014 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +package org.chromium.cronet_test_apk;
|
| +
|
| +import android.os.ConditionVariable;
|
| +
|
| +import junit.framework.Assert;
|
| +
|
| +import org.chromium.base.CalledByNative;
|
| +import org.chromium.base.JNINamespace;
|
| +
|
| +/**
|
| + * A wrapper class on top of the native UploadDataStream. This class is used in
|
| + * tests to drive the native UploadDataStream directly.
|
| + */
|
| +@JNINamespace("cronet")
|
| +public final class UploadDataStreamHandler {
|
| + private long mUploadDataStreamHandler;
|
| + private ConditionVariable mWaitInitComplete;
|
| + private ConditionVariable mWaitInitCalled;
|
| + private ConditionVariable mWaitReadComplete;
|
| + private ConditionVariable mWaitResetComplete;
|
| + // Waits for checkIfInitCallbackInvoked() returns result asynchronously.
|
| + private ConditionVariable mWaitCheckInitCallback;
|
| + // Waits for checkIfReadCallbackInvoked() returns result asynchronously.
|
| + private ConditionVariable mWaitCheckReadCallback;
|
| + // If 0, it indicates init completes synchronously.
|
| + private int mInitSync = -1;
|
| + private String mData;
|
| +
|
| + public UploadDataStreamHandler(final long adapter) {
|
| + mWaitReadComplete = new ConditionVariable();
|
| + mWaitInitComplete = new ConditionVariable();
|
| + mWaitInitCalled = new ConditionVariable();
|
| + mWaitResetComplete = new ConditionVariable();
|
| + mWaitCheckInitCallback = new ConditionVariable();
|
| + mWaitCheckReadCallback = new ConditionVariable();
|
| + mData = "";
|
| + mUploadDataStreamHandler = nativeCreateUploadDataStreamHandler(adapter);
|
| + }
|
| +
|
| + public void destroyNativeObjects() {
|
| + nativeDestroy(mUploadDataStreamHandler);
|
| + mUploadDataStreamHandler = 0;
|
| + }
|
| +
|
| + /**
|
| + * Init and returns whether init completes synchronously.
|
| + */
|
| + public boolean init() {
|
| + mWaitInitCalled.close();
|
| + mData = "";
|
| + nativeInit(mUploadDataStreamHandler);
|
| + mWaitInitCalled.block();
|
| + if (mInitSync == 0) {
|
| + return true;
|
| + }
|
| + return false;
|
| + }
|
| +
|
| + public void read() {
|
| + nativeRead(mUploadDataStreamHandler);
|
| + }
|
| +
|
| + public void reset() {
|
| + mWaitResetComplete.close();
|
| + mData = "";
|
| + nativeReset(mUploadDataStreamHandler);
|
| + mWaitResetComplete.block();
|
| + }
|
| +
|
| + public void checkInitCallbackNotInvoked() {
|
| + mWaitCheckInitCallback.close();
|
| + nativeCheckInitCallbackNotInvoked(mUploadDataStreamHandler);
|
| + mWaitCheckInitCallback.block();
|
| + }
|
| +
|
| + public void checkReadCallbackNotInvoked() {
|
| + mWaitCheckReadCallback.close();
|
| + nativeCheckReadCallbackNotInvoked(mUploadDataStreamHandler);
|
| + mWaitCheckReadCallback.block();
|
| + }
|
| +
|
| + public String getData() {
|
| + return mData;
|
| + }
|
| +
|
| + public void waitForReadComplete() {
|
| + mWaitReadComplete.block();
|
| + }
|
| +
|
| + public void resetWaitForReadComplete() {
|
| + mWaitReadComplete.close();
|
| + }
|
| +
|
| + public void resetWaitForInitComplete() {
|
| + mWaitInitComplete.close();
|
| + }
|
| +
|
| + public void waitForInitComplete() {
|
| + mWaitInitComplete.block();
|
| + }
|
| +
|
| + // Called on network thread.
|
| + @CalledByNative
|
| + private void onInitCalled(int res) {
|
| + mInitSync = res;
|
| + mWaitInitCalled.open();
|
| + }
|
| +
|
| + @CalledByNative
|
| + // Called on network thread.
|
| + private void onReadCompleted(int bytesRead, String data) {
|
| + mData = data;
|
| + mWaitReadComplete.open();
|
| + }
|
| +
|
| + @CalledByNative
|
| + // Called on network thread.
|
| + private void onInitCompleted(int res) {
|
| + mWaitInitComplete.open();
|
| + }
|
| +
|
| + @CalledByNative
|
| + // Called on network thread.
|
| + private void onResetCompleted() {
|
| + mWaitResetComplete.open();
|
| + }
|
| +
|
| + @CalledByNative
|
| + // Called on network thread.
|
| + private void onCheckInitCallbackNotInvoked(boolean initCallbackNotInvoked) {
|
| + Assert.assertTrue(initCallbackNotInvoked);
|
| + mWaitCheckInitCallback.open();
|
| + }
|
| +
|
| + @CalledByNative
|
| + // Called on network thread.
|
| + private void onCheckReadCallbackNotInvoked(boolean readCallbackNotInvoked) {
|
| + Assert.assertTrue(readCallbackNotInvoked);
|
| + mWaitCheckReadCallback.open();
|
| + }
|
| +
|
| + private static native void nativeInit(long uploadDataStreamHandler);
|
| + private static native void nativeRead(long uploadDataStreamHandler);
|
| + private static native void nativeReset(long uploadDataStreamHandler);
|
| + private static native void nativeCheckInitCallbackNotInvoked(
|
| + long uploadDataStreamHandler);
|
| + private static native void nativeCheckReadCallbackNotInvoked(
|
| + long uploadDataStreamHandler);
|
| + private static native void nativeDestroy(long uploadDataStreamHandler);
|
| + private native long nativeCreateUploadDataStreamHandler(
|
| + long uploadDataStreamHandler);
|
| +}
|
|
|