Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(165)

Unified Diff: components/cronet/android/test/src/org/chromium/net/TestUploadDataStreamHandler.java

Issue 849903002: [Cronet] Upload support for async APIs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Move delegate destructor to implementation file to avoid chromium style error Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/cronet/android/test/src/org/chromium/net/TestUploadDataStreamHandler.java
diff --git a/components/cronet/android/test/src/org/chromium/net/TestUploadDataStreamHandler.java b/components/cronet/android/test/src/org/chromium/net/TestUploadDataStreamHandler.java
new file mode 100644
index 0000000000000000000000000000000000000000..9b7bb21e80b2a81554664d5374926b28d0ba0bc7
--- /dev/null
+++ b/components/cronet/android/test/src/org/chromium/net/TestUploadDataStreamHandler.java
@@ -0,0 +1,170 @@
+// Copyright 2015 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.net;
+
+import android.os.ConditionVariable;
+
+import junit.framework.Assert;
+
+import org.chromium.base.CalledByNative;
+import org.chromium.base.JNINamespace;
+import org.chromium.base.NativeClassQualifiedName;
+
+/**
+ * A wrapper class on top of the native net::UploadDataStream. This class is
+ * used in tests to drive the native UploadDataStream directly.
+ */
+@JNINamespace("cronet")
+public final class TestUploadDataStreamHandler {
+ private long mTestUploadDataStreamHandler;
+ private ConditionVariable mWaitInitCalled = new ConditionVariable();
+ private ConditionVariable mWaitInitComplete = new ConditionVariable();
+ private ConditionVariable mWaitReadComplete = new ConditionVariable();
+ private ConditionVariable mWaitResetComplete = new ConditionVariable();
+ // Waits for checkIfInitCallbackInvoked() returns result asynchronously.
+ private ConditionVariable mWaitCheckInit = new ConditionVariable();
+ // Waits for checkIfReadCallbackInvoked() returns result asynchronously.
+ private ConditionVariable mWaitCheckRead = new ConditionVariable();
+ // If true, init completes synchronously.
+ private boolean mInitCompletedSynchronously = false;
+ private String mData = "";
+
+ public TestUploadDataStreamHandler(final long uploadDataStream) {
+ mTestUploadDataStreamHandler =
+ nativeCreateTestUploadDataStreamHandler(uploadDataStream);
+ }
+
+ public void destroyNativeObjects() {
+ nativeDestroy(mTestUploadDataStreamHandler);
+ mTestUploadDataStreamHandler = 0;
+ }
+
+ /**
+ * Init and returns whether init completes synchronously.
+ */
+ public boolean init() {
+ mData = "";
+ nativeInit(mTestUploadDataStreamHandler);
+ mWaitInitCalled.block();
+ mWaitInitCalled.close();
+ return mInitCompletedSynchronously;
+ }
+
+ public void read() {
+ nativeRead(mTestUploadDataStreamHandler);
+ }
+
+ public void reset() {
+ mData = "";
+ nativeReset(mTestUploadDataStreamHandler);
+ mWaitResetComplete.block();
+ mWaitResetComplete.close();
+ }
+
+ /**
+ * Checks that {@link #onInitCompleted} has not invoked asynchronously
+ * by the native UploadDataStream.
+ */
+ public void checkInitCallbackNotInvoked() {
+ nativeCheckInitCallbackNotInvoked(mTestUploadDataStreamHandler);
+ mWaitCheckInit.block();
+ mWaitCheckInit.close();
+ }
+
+ /**
+ * Checks that {@link #onReadCompleted} has not been invoked asynchronously
+ * by the native UploadDataStream.
+ */
+ public void checkReadCallbackNotInvoked() {
+ nativeCheckReadCallbackNotInvoked(mTestUploadDataStreamHandler);
+ mWaitCheckRead.block();
+ mWaitCheckRead.close();
+ }
+
+ public String getData() {
+ return mData;
+ }
+
+ public void waitForReadComplete() {
+ mWaitReadComplete.block();
+ mWaitReadComplete.close();
+ }
+
+ public void waitForInitComplete() {
+ mWaitInitComplete.block();
+ mWaitInitComplete.close();
+ }
+
+ // Called on network thread.
+ @CalledByNative
+ private void onInitCalled(int res) {
+ if (res == 0) {
+ mInitCompletedSynchronously = true;
+ } else {
+ mInitCompletedSynchronously = false;
+ }
+ mWaitInitCalled.open();
+ }
+
+ // Called on network thread.
+ @CalledByNative
+ private void onReadCompleted(int bytesRead, String data) {
+ mData = data;
+ mWaitReadComplete.open();
+ }
+
+ // Called on network thread.
+ @CalledByNative
+ private void onInitCompleted(int res) {
+ // If init() completed synchronously, waitForInitComplete() will
+ // not be invoked in the test, so skip mWaitInitComplete.open().
+ if (!mInitCompletedSynchronously) {
+ mWaitInitComplete.open();
+ }
+ }
+
+ // Called on network thread.
+ @CalledByNative
+ private void onResetCompleted() {
+ mWaitResetComplete.open();
+ }
+
+ // Called on network thread.
+ @CalledByNative
+ private void onCheckInitCallbackNotInvoked(boolean initCallbackNotInvoked) {
+ Assert.assertTrue(initCallbackNotInvoked);
+ mWaitCheckInit.open();
+ }
+
+ // Called on network thread.
+ @CalledByNative
+ private void onCheckReadCallbackNotInvoked(boolean readCallbackNotInvoked) {
+ Assert.assertTrue(readCallbackNotInvoked);
+ mWaitCheckRead.open();
+ }
+
+ @NativeClassQualifiedName("TestUploadDataStreamHandler")
+ private native void nativeInit(long nativePtr);
+
+ @NativeClassQualifiedName("TestUploadDataStreamHandler")
+ private native void nativeRead(long nativePtr);
+
+ @NativeClassQualifiedName("TestUploadDataStreamHandler")
+ private native void nativeReset(long nativePtr);
+
+ @NativeClassQualifiedName("TestUploadDataStreamHandler")
+ private native void nativeCheckInitCallbackNotInvoked(
+ long nativePtr);
+
+ @NativeClassQualifiedName("TestUploadDataStreamHandler")
+ private native void nativeCheckReadCallbackNotInvoked(
+ long nativePtr);
+
+ @NativeClassQualifiedName("TestUploadDataStreamHandler")
+ private native void nativeDestroy(long nativePtr);
+
+ private native long nativeCreateTestUploadDataStreamHandler(
+ long uploadDataStream);
+}

Powered by Google App Engine
This is Rietveld 408576698