| 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.ConditionVariable; |
| 8 import android.os.ParcelFileDescriptor; | 8 import android.os.ParcelFileDescriptor; |
| 9 import android.os.StrictMode; | 9 import android.os.StrictMode; |
| 10 import android.test.suitebuilder.annotation.SmallTest; | 10 import android.test.suitebuilder.annotation.SmallTest; |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 65 super.tearDown(); | 65 super.tearDown(); |
| 66 } finally { | 66 } finally { |
| 67 StrictMode.setVmPolicy(mOldVmPolicy); | 67 StrictMode.setVmPolicy(mOldVmPolicy); |
| 68 } | 68 } |
| 69 } | 69 } |
| 70 | 70 |
| 71 @SmallTest | 71 @SmallTest |
| 72 @Feature({"Cronet"}) | 72 @Feature({"Cronet"}) |
| 73 public void testFileProvider() throws Exception { | 73 public void testFileProvider() throws Exception { |
| 74 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 74 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 75 UrlRequest.Builder builder = | 75 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( |
| 76 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(),
callback, | 76 NativeTestServer.getRedirectToEchoBody(), callback, callback.get
Executor()); |
| 77 callback.getExecutor(), mTestFramework.mCronetEngine); | |
| 78 UploadDataProvider dataProvider = UploadDataProviders.create(mFile); | 77 UploadDataProvider dataProvider = UploadDataProviders.create(mFile); |
| 79 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); | 78 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); |
| 80 builder.addHeader("Content-Type", "useless/string"); | 79 builder.addHeader("Content-Type", "useless/string"); |
| 81 builder.build().start(); | 80 builder.build().start(); |
| 82 callback.blockForDone(); | 81 callback.blockForDone(); |
| 83 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 82 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
| 84 assertEquals(LOREM, callback.mResponseAsString); | 83 assertEquals(LOREM, callback.mResponseAsString); |
| 85 } | 84 } |
| 86 | 85 |
| 87 @SmallTest | 86 @SmallTest |
| 88 @Feature({"Cronet"}) | 87 @Feature({"Cronet"}) |
| 89 public void testFileDescriptorProvider() throws Exception { | 88 public void testFileDescriptorProvider() throws Exception { |
| 90 ParcelFileDescriptor descriptor = | 89 ParcelFileDescriptor descriptor = |
| 91 ParcelFileDescriptor.open(mFile, ParcelFileDescriptor.MODE_READ_
ONLY); | 90 ParcelFileDescriptor.open(mFile, ParcelFileDescriptor.MODE_READ_
ONLY); |
| 92 assertTrue(descriptor.getFileDescriptor().valid()); | 91 assertTrue(descriptor.getFileDescriptor().valid()); |
| 93 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 92 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 94 UrlRequest.Builder builder = | 93 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( |
| 95 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(),
callback, | 94 NativeTestServer.getRedirectToEchoBody(), callback, callback.get
Executor()); |
| 96 callback.getExecutor(), mTestFramework.mCronetEngine); | |
| 97 UploadDataProvider dataProvider = UploadDataProviders.create(descriptor)
; | 95 UploadDataProvider dataProvider = UploadDataProviders.create(descriptor)
; |
| 98 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); | 96 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); |
| 99 builder.addHeader("Content-Type", "useless/string"); | 97 builder.addHeader("Content-Type", "useless/string"); |
| 100 builder.build().start(); | 98 builder.build().start(); |
| 101 callback.blockForDone(); | 99 callback.blockForDone(); |
| 102 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 100 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
| 103 assertEquals(LOREM, callback.mResponseAsString); | 101 assertEquals(LOREM, callback.mResponseAsString); |
| 104 } | 102 } |
| 105 | 103 |
| 106 @SmallTest | 104 @SmallTest |
| 107 @Feature({"Cronet"}) | 105 @Feature({"Cronet"}) |
| 108 public void testBadFileDescriptorProvider() throws Exception { | 106 public void testBadFileDescriptorProvider() throws Exception { |
| 109 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 107 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 110 UrlRequest.Builder builder = | 108 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( |
| 111 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(),
callback, | 109 NativeTestServer.getRedirectToEchoBody(), callback, callback.get
Executor()); |
| 112 callback.getExecutor(), mTestFramework.mCronetEngine); | |
| 113 ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe(); | 110 ParcelFileDescriptor[] pipe = ParcelFileDescriptor.createPipe(); |
| 114 try { | 111 try { |
| 115 UploadDataProvider dataProvider = UploadDataProviders.create(pipe[0]
); | 112 UploadDataProvider dataProvider = UploadDataProviders.create(pipe[0]
); |
| 116 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); | 113 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); |
| 117 builder.addHeader("Content-Type", "useless/string"); | 114 builder.addHeader("Content-Type", "useless/string"); |
| 118 builder.build().start(); | 115 builder.build().start(); |
| 119 callback.blockForDone(); | 116 callback.blockForDone(); |
| 120 | 117 |
| 121 assertTrue(callback.mError.getCause() instanceof IllegalArgumentExce
ption); | 118 assertTrue(callback.mError.getCause() instanceof IllegalArgumentExce
ption); |
| 122 } finally { | 119 } finally { |
| 123 pipe[1].close(); | 120 pipe[1].close(); |
| 124 } | 121 } |
| 125 } | 122 } |
| 126 | 123 |
| 127 @SmallTest | 124 @SmallTest |
| 128 @Feature({"Cronet"}) | 125 @Feature({"Cronet"}) |
| 129 public void testBufferProvider() throws Exception { | 126 public void testBufferProvider() throws Exception { |
| 130 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 127 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 131 UrlRequest.Builder builder = | 128 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( |
| 132 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(),
callback, | 129 NativeTestServer.getRedirectToEchoBody(), callback, callback.get
Executor()); |
| 133 callback.getExecutor(), mTestFramework.mCronetEngine); | |
| 134 UploadDataProvider dataProvider = UploadDataProviders.create(LOREM.getBy
tes("UTF-8")); | 130 UploadDataProvider dataProvider = UploadDataProviders.create(LOREM.getBy
tes("UTF-8")); |
| 135 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); | 131 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); |
| 136 builder.addHeader("Content-Type", "useless/string"); | 132 builder.addHeader("Content-Type", "useless/string"); |
| 137 builder.build().start(); | 133 builder.build().start(); |
| 138 callback.blockForDone(); | 134 callback.blockForDone(); |
| 139 | 135 |
| 140 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 136 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
| 141 assertEquals(LOREM, callback.mResponseAsString); | 137 assertEquals(LOREM, callback.mResponseAsString); |
| 142 } | 138 } |
| 143 | 139 |
| 144 @SmallTest | 140 @SmallTest |
| 145 @Feature({"Cronet"}) | 141 @Feature({"Cronet"}) |
| 146 public void testNoErrorWhenCanceledDuringStart() throws Exception { | 142 public void testNoErrorWhenCanceledDuringStart() throws Exception { |
| 147 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 143 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 148 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
EchoBodyURL(), | 144 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( |
| 149 callback, callback.getExecutor(), mTestFramework.mCronetEngine); | 145 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto
r()); |
| 150 final ConditionVariable first = new ConditionVariable(); | 146 final ConditionVariable first = new ConditionVariable(); |
| 151 final ConditionVariable second = new ConditionVariable(); | 147 final ConditionVariable second = new ConditionVariable(); |
| 152 builder.addHeader("Content-Type", "useless/string"); | 148 builder.addHeader("Content-Type", "useless/string"); |
| 153 builder.setUploadDataProvider(new UploadDataProvider() { | 149 builder.setUploadDataProvider(new UploadDataProvider() { |
| 154 @Override | 150 @Override |
| 155 public long getLength() throws IOException { | 151 public long getLength() throws IOException { |
| 156 first.open(); | 152 first.open(); |
| 157 second.block(); | 153 second.block(); |
| 158 return 0; | 154 return 0; |
| 159 } | 155 } |
| (...skipping 11 matching lines...) Expand all Loading... |
| 171 urlRequest.cancel(); | 167 urlRequest.cancel(); |
| 172 second.open(); | 168 second.open(); |
| 173 callback.blockForDone(); | 169 callback.blockForDone(); |
| 174 assertTrue(callback.mOnCanceledCalled); | 170 assertTrue(callback.mOnCanceledCalled); |
| 175 } | 171 } |
| 176 | 172 |
| 177 @SmallTest | 173 @SmallTest |
| 178 @Feature({"Cronet"}) | 174 @Feature({"Cronet"}) |
| 179 public void testNoErrorWhenExceptionDuringStart() throws Exception { | 175 public void testNoErrorWhenExceptionDuringStart() throws Exception { |
| 180 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 176 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 181 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get
EchoBodyURL(), | 177 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( |
| 182 callback, callback.getExecutor(), mTestFramework.mCronetEngine); | 178 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto
r()); |
| 183 final ConditionVariable first = new ConditionVariable(); | 179 final ConditionVariable first = new ConditionVariable(); |
| 184 final String exceptionMessage = "Bad Length"; | 180 final String exceptionMessage = "Bad Length"; |
| 185 builder.addHeader("Content-Type", "useless/string"); | 181 builder.addHeader("Content-Type", "useless/string"); |
| 186 builder.setUploadDataProvider(new UploadDataProvider() { | 182 builder.setUploadDataProvider(new UploadDataProvider() { |
| 187 @Override | 183 @Override |
| 188 public long getLength() throws IOException { | 184 public long getLength() throws IOException { |
| 189 first.open(); | 185 first.open(); |
| 190 throw new IOException(exceptionMessage); | 186 throw new IOException(exceptionMessage); |
| 191 } | 187 } |
| 192 | 188 |
| 193 @Override | 189 @Override |
| 194 public void read(UploadDataSink uploadDataSink, ByteBuffer byteBuffe
r) | 190 public void read(UploadDataSink uploadDataSink, ByteBuffer byteBuffe
r) |
| 195 throws IOException {} | 191 throws IOException {} |
| 196 | 192 |
| 197 @Override | 193 @Override |
| 198 public void rewind(UploadDataSink uploadDataSink) throws IOException
{} | 194 public void rewind(UploadDataSink uploadDataSink) throws IOException
{} |
| 199 }, callback.getExecutor()); | 195 }, callback.getExecutor()); |
| 200 UrlRequest urlRequest = builder.build(); | 196 UrlRequest urlRequest = builder.build(); |
| 201 urlRequest.start(); | 197 urlRequest.start(); |
| 202 first.block(); | 198 first.block(); |
| 203 callback.blockForDone(); | 199 callback.blockForDone(); |
| 204 assertFalse(callback.mOnCanceledCalled); | 200 assertFalse(callback.mOnCanceledCalled); |
| 205 assertEquals(UrlRequestError.LISTENER_EXCEPTION_THROWN, callback.mError.
getErrorCode()); | 201 assertEquals(UrlRequestException.ERROR_LISTENER_EXCEPTION_THROWN, |
| 202 callback.mError.getErrorCode()); |
| 206 assertEquals("Exception received from UploadDataProvider", callback.mErr
or.getMessage()); | 203 assertEquals("Exception received from UploadDataProvider", callback.mErr
or.getMessage()); |
| 207 assertEquals(exceptionMessage, callback.mError.getCause().getMessage()); | 204 assertEquals(exceptionMessage, callback.mError.getCause().getMessage()); |
| 208 } | 205 } |
| 209 | 206 |
| 210 @SmallTest | 207 @SmallTest |
| 211 @Feature({"Cronet"}) | 208 @Feature({"Cronet"}) |
| 212 // Tests that creating a ByteBufferUploadProvider using a byte array with an | 209 // Tests that creating a ByteBufferUploadProvider using a byte array with an |
| 213 // offset gives a ByteBuffer with position 0. crbug.com/603124. | 210 // offset gives a ByteBuffer with position 0. crbug.com/603124. |
| 214 public void testCreateByteBufferUploadWithArrayOffset() throws Exception { | 211 public void testCreateByteBufferUploadWithArrayOffset() throws Exception { |
| 215 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 212 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 216 // This URL will trigger a rewind(). | 213 // This URL will trigger a rewind(). |
| 217 UrlRequest.Builder builder = | 214 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( |
| 218 new UrlRequest.Builder(NativeTestServer.getRedirectToEchoBody(),
callback, | 215 NativeTestServer.getRedirectToEchoBody(), callback, callback.get
Executor()); |
| 219 callback.getExecutor(), mTestFramework.mCronetEngine); | |
| 220 builder.addHeader("Content-Type", "useless/string"); | 216 builder.addHeader("Content-Type", "useless/string"); |
| 221 byte[] uploadData = LOREM.getBytes("UTF-8"); | 217 byte[] uploadData = LOREM.getBytes("UTF-8"); |
| 222 int offset = 5; | 218 int offset = 5; |
| 223 byte[] uploadDataWithPadding = new byte[uploadData.length + offset]; | 219 byte[] uploadDataWithPadding = new byte[uploadData.length + offset]; |
| 224 System.arraycopy(uploadData, 0, uploadDataWithPadding, offset, uploadDat
a.length); | 220 System.arraycopy(uploadData, 0, uploadDataWithPadding, offset, uploadDat
a.length); |
| 225 UploadDataProvider dataProvider = | 221 UploadDataProvider dataProvider = |
| 226 UploadDataProviders.create(uploadDataWithPadding, offset, upload
Data.length); | 222 UploadDataProviders.create(uploadDataWithPadding, offset, upload
Data.length); |
| 227 assertEquals(uploadData.length, dataProvider.getLength()); | 223 assertEquals(uploadData.length, dataProvider.getLength()); |
| 228 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); | 224 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); |
| 229 UrlRequest urlRequest = builder.build(); | 225 UrlRequest urlRequest = builder.build(); |
| 230 urlRequest.start(); | 226 urlRequest.start(); |
| 231 callback.blockForDone(); | 227 callback.blockForDone(); |
| 232 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 228 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
| 233 assertEquals(LOREM, callback.mResponseAsString); | 229 assertEquals(LOREM, callback.mResponseAsString); |
| 234 } | 230 } |
| 235 } | 231 } |
| OLD | NEW |