| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 package org.chromium.net; | 5 package org.chromium.net; |
| 6 | 6 |
| 7 import android.os.ConditionVariable; |
| 7 import android.os.ParcelFileDescriptor; | 8 import android.os.ParcelFileDescriptor; |
| 8 import android.os.StrictMode; | 9 import android.os.StrictMode; |
| 9 import android.test.suitebuilder.annotation.SmallTest; | 10 import android.test.suitebuilder.annotation.SmallTest; |
| 10 | 11 |
| 11 import org.chromium.base.annotations.SuppressFBWarnings; | 12 import org.chromium.base.annotations.SuppressFBWarnings; |
| 12 import org.chromium.base.test.util.Feature; | 13 import org.chromium.base.test.util.Feature; |
| 13 | 14 |
| 14 import java.io.File; | 15 import java.io.File; |
| 15 import java.io.FileOutputStream; | 16 import java.io.FileOutputStream; |
| 17 import java.io.IOException; |
| 18 import java.nio.ByteBuffer; |
| 16 | 19 |
| 17 /** Test the default provided implementations of {@link UploadDataProvider} */ | 20 /** Test the default provided implementations of {@link UploadDataProvider} */ |
| 18 public class UploadDataProvidersTest extends CronetTestBase { | 21 public class UploadDataProvidersTest extends CronetTestBase { |
| 19 private static final String LOREM = "Lorem ipsum dolor sit amet, consectetur
adipiscing elit. " | 22 private static final String LOREM = "Lorem ipsum dolor sit amet, consectetur
adipiscing elit. " |
| 20 + "Proin elementum, libero laoreet fringilla faucibus, metus tortor
vehicula ante, " | 23 + "Proin elementum, libero laoreet fringilla faucibus, metus tortor
vehicula ante, " |
| 21 + "lacinia lorem eros vel sapien."; | 24 + "lacinia lorem eros vel sapien."; |
| 22 private CronetTestFramework mTestFramework; | 25 private CronetTestFramework mTestFramework; |
| 23 private File mFile; | 26 private File mFile; |
| 24 private StrictMode.VmPolicy mOldVmPolicy; | 27 private StrictMode.VmPolicy mOldVmPolicy; |
| 25 | 28 |
| (...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 130 callback.getExecutor(), mTestFramework.mCronetEngine); | 133 callback.getExecutor(), mTestFramework.mCronetEngine); |
| 131 UploadDataProvider dataProvider = UploadDataProviders.create(LOREM.getBy
tes("UTF-8")); | 134 UploadDataProvider dataProvider = UploadDataProviders.create(LOREM.getBy
tes("UTF-8")); |
| 132 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); | 135 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); |
| 133 builder.addHeader("Content-Type", "useless/string"); | 136 builder.addHeader("Content-Type", "useless/string"); |
| 134 builder.build().start(); | 137 builder.build().start(); |
| 135 callback.blockForDone(); | 138 callback.blockForDone(); |
| 136 | 139 |
| 137 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 140 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
| 138 assertEquals(LOREM, callback.mResponseAsString); | 141 assertEquals(LOREM, callback.mResponseAsString); |
| 139 } | 142 } |
| 143 |
| 144 @SmallTest |
| 145 @Feature({"Cronet"}) |
| 146 public void testNoErrorWhenCanceledDuringStart() throws Exception { |
| 147 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 148 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
EchoBodyURL(), |
| 149 callback, callback.getExecutor(), mTestFramework.mCronetEngine); |
| 150 final ConditionVariable first = new ConditionVariable(); |
| 151 final ConditionVariable second = new ConditionVariable(); |
| 152 builder.addHeader("Content-Type", "useless/string"); |
| 153 builder.setUploadDataProvider(new UploadDataProvider() { |
| 154 @Override |
| 155 public long getLength() throws IOException { |
| 156 first.open(); |
| 157 second.block(); |
| 158 return 0; |
| 159 } |
| 160 |
| 161 @Override |
| 162 public void read(UploadDataSink uploadDataSink, ByteBuffer byteBuffe
r) |
| 163 throws IOException {} |
| 164 |
| 165 @Override |
| 166 public void rewind(UploadDataSink uploadDataSink) throws IOException
{} |
| 167 }, callback.getExecutor()); |
| 168 UrlRequest urlRequest = builder.build(); |
| 169 urlRequest.start(); |
| 170 first.block(); |
| 171 urlRequest.cancel(); |
| 172 second.open(); |
| 173 callback.blockForDone(); |
| 174 assertTrue(callback.mOnCanceledCalled); |
| 175 } |
| 176 |
| 177 @SmallTest |
| 178 @Feature({"Cronet"}) |
| 179 public void testNoErrorWhenExceptionDuringStart() throws Exception { |
| 180 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 181 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
EchoBodyURL(), |
| 182 callback, callback.getExecutor(), mTestFramework.mCronetEngine); |
| 183 final ConditionVariable first = new ConditionVariable(); |
| 184 final String exceptionMessage = "Bad Length"; |
| 185 builder.addHeader("Content-Type", "useless/string"); |
| 186 builder.setUploadDataProvider(new UploadDataProvider() { |
| 187 @Override |
| 188 public long getLength() throws IOException { |
| 189 first.open(); |
| 190 throw new IOException(exceptionMessage); |
| 191 } |
| 192 |
| 193 @Override |
| 194 public void read(UploadDataSink uploadDataSink, ByteBuffer byteBuffe
r) |
| 195 throws IOException {} |
| 196 |
| 197 @Override |
| 198 public void rewind(UploadDataSink uploadDataSink) throws IOException
{} |
| 199 }, callback.getExecutor()); |
| 200 UrlRequest urlRequest = builder.build(); |
| 201 urlRequest.start(); |
| 202 first.block(); |
| 203 callback.blockForDone(); |
| 204 assertFalse(callback.mOnCanceledCalled); |
| 205 assertEquals(UrlRequestError.LISTENER_EXCEPTION_THROWN, callback.mError.
getErrorCode()); |
| 206 assertEquals("Exception received from UploadDataProvider", callback.mErr
or.getMessage()); |
| 207 assertEquals(exceptionMessage, callback.mError.getCause().getMessage()); |
| 208 } |
| 140 } | 209 } |
| OLD | NEW |