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

Side by Side Diff: components/cronet/android/test/src/org/chromium/net/UploadDataStreamHandler.java

Issue 849903002: [Cronet] Upload support for async APIs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Added throws IOException to UploadDataProvider 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 unified diff | Download patch
OLDNEW
(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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698