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

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

Issue 1100763002: Inject CanAddURLToHistory into TopSitesImpl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@prefs
Patch Set: Fix error introduced during rebase Created 5 years, 7 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
1 // Copyright 2015 The Chromium Authors. All rights reserved. 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 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.test.suitebuilder.annotation.SmallTest; 7 import android.test.suitebuilder.annotation.SmallTest;
8 8
9 import org.chromium.base.test.util.Feature; 9 import org.chromium.base.test.util.Feature;
10 10
11 import java.util.Arrays; 11 import java.util.Arrays;
12 import java.util.List; 12 import java.util.List;
13 import java.util.concurrent.ExecutorService; 13 import java.util.concurrent.ExecutorService;
14 import java.util.concurrent.Executors; 14 import java.util.concurrent.Executors;
15 15
16 /** 16 /**
17 * Tests that directly drive {@code CronetUploadDataStream} and 17 * Tests that directly drive {@code CronetUploadDataStream} and
18 * {@code UploadDataProvider} to simulate different ordering of reset, init, 18 * {@code UploadDataProvider} to simulate different ordering of reset, init,
19 * read, and rewind calls. 19 * read, and rewind calls.
20 */ 20 */
21 public class CronetUploadTest extends CronetTestBase { 21 public class CronetUploadTest extends CronetTestBase {
22 private TestDrivenDataProvider mDataProvider; 22 private TestDrivenDataProvider mDataProvider;
23 private CronetUploadDataStream mUploadDataStream; 23 private CronetUploadDataStream mUploadDataStream;
24 private TestUploadDataStreamHandler mHandler; 24 private TestUploadDataStreamHandler mHandler;
25 // Address of native CronetUploadDataStreamAdapter object.
26 private long mAdapter = 0;
27 25
28 @Override 26 @Override
29 protected void setUp() throws Exception { 27 protected void setUp() throws Exception {
30 super.setUp(); 28 super.setUp();
31 launchCronetTestApp(); 29 launchCronetTestApp();
32 ExecutorService executor = Executors.newSingleThreadExecutor(); 30 ExecutorService executor = Executors.newSingleThreadExecutor();
33 List<byte[]> reads = Arrays.asList("hello".getBytes()); 31 List<byte[]> reads = Arrays.asList("hello".getBytes());
34 mDataProvider = new TestDrivenDataProvider(executor, reads); 32 mDataProvider = new TestDrivenDataProvider(executor, reads);
35 mUploadDataStream = new CronetUploadDataStream(mDataProvider, executor); 33 mUploadDataStream = new CronetUploadDataStream(mDataProvider, executor);
36 mAdapter = mUploadDataStream.createAdapterForTesting(); 34 mHandler = new TestUploadDataStreamHandler(
37 mHandler = new TestUploadDataStreamHandler(mAdapter); 35 mUploadDataStream.createAdapterForTesting());
38 } 36 }
39 37
40 @Override 38 @Override
41 protected void tearDown() throws Exception { 39 protected void tearDown() throws Exception {
42 // Destroy handler's native objects. 40 // Destroy handler's native objects.
43 mHandler.destroyNativeObjects(); 41 mHandler.destroyNativeObjects();
44 super.tearDown(); 42 super.tearDown();
45 } 43 }
46 44
47 /** 45 /**
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 @SmallTest 232 @SmallTest
235 @Feature({"Cronet"}) 233 @Feature({"Cronet"})
236 public void testDestroyAdapterBeforeReadComplete() 234 public void testDestroyAdapterBeforeReadComplete()
237 throws Exception { 235 throws Exception {
238 // Start a read and wait for it to be pending. 236 // Start a read and wait for it to be pending.
239 assertTrue(mHandler.init()); 237 assertTrue(mHandler.init());
240 mHandler.read(); 238 mHandler.read();
241 mDataProvider.waitForReadRequest(); 239 mDataProvider.waitForReadRequest();
242 mHandler.checkReadCallbackNotInvoked(); 240 mHandler.checkReadCallbackNotInvoked();
243 241
244 // Destroy the C++ object, which should trigger the Java 242 // Destroy the C++ TestUploadDataStreamHandler. The handler owns the
245 // onAdapterDestroyed() which should block until the read completes. 243 // CronetUploadDataStreamAdapter, which this will cause it to destroy on
246 mAdapter = 0; 244 // the network thread. Destroying the adapter will result in calling
245 // the CronetUploadDataSteam's onAdapterDestroyed() method on its
246 // executor thread, which will then destroy the
247 // CronetUploadDataStreamDelegate.
248 mHandler.destroyNativeObjects();
247 249
248 // Make the read complete should not encounter a crash. 250 // Make the read complete should not encounter a crash.
249 mDataProvider.onReadSucceeded(mUploadDataStream); 251 mDataProvider.onReadSucceeded(mUploadDataStream);
250 252
251 assertEquals(0, mDataProvider.getNumRewindCalls()); 253 assertEquals(0, mDataProvider.getNumRewindCalls());
252 assertEquals(1, mDataProvider.getNumReadCalls()); 254 assertEquals(1, mDataProvider.getNumReadCalls());
253 } 255 }
254 256
255 /** 257 /**
256 * Tests that there is no crash when native CronetUploadDataStreamAdapter is 258 * Tests that there is no crash when native CronetUploadDataStreamAdapter is
(...skipping 18 matching lines...) Expand all
275 assertEquals(1, mDataProvider.getNumReadCalls()); 277 assertEquals(1, mDataProvider.getNumReadCalls());
276 assertEquals("hello", mHandler.getData()); 278 assertEquals("hello", mHandler.getData());
277 279
278 // Reset and then init, which should trigger a rewind. 280 // Reset and then init, which should trigger a rewind.
279 mHandler.reset(); 281 mHandler.reset();
280 assertEquals("", mHandler.getData()); 282 assertEquals("", mHandler.getData());
281 assertFalse(mHandler.init()); 283 assertFalse(mHandler.init());
282 mDataProvider.waitForRewindRequest(); 284 mDataProvider.waitForRewindRequest();
283 mHandler.checkInitCallbackNotInvoked(); 285 mHandler.checkInitCallbackNotInvoked();
284 286
285 // Destroy the C++ object, which should trigger the Java 287 // Destroy the C++ TestUploadDataStreamHandler. The handler owns the
286 // onAdapterDestroyed(). 288 // CronetUploadDataStreamAdapter, which this will cause it to destroy on
287 mAdapter = 0; 289 // the network thread. Destroying the adapter will result in calling
290 // the CronetUploadDataSteam's onAdapterDestroyed() method on its
291 // executor thread, which will then destroy the
292 // CronetUploadDataStreamDelegate.
293 mHandler.destroyNativeObjects();
288 294
289 // Signal rewind completes, and wait for init to complete. 295 // Signal rewind completes, and wait for init to complete.
290 mHandler.checkInitCallbackNotInvoked();
291 mDataProvider.onRewindSucceeded(mUploadDataStream); 296 mDataProvider.onRewindSucceeded(mUploadDataStream);
292 mHandler.waitForInitComplete();
293 mDataProvider.assertRewindNotPending();
294 297
295 assertEquals(1, mDataProvider.getNumRewindCalls()); 298 assertEquals(1, mDataProvider.getNumRewindCalls());
296 assertEquals(1, mDataProvider.getNumReadCalls()); 299 assertEquals(1, mDataProvider.getNumReadCalls());
297 } 300 }
298 } 301 }
OLDNEW
« no previous file with comments | « components/components_tests.gyp ('k') | components/cronet/android/test/src/org/chromium/net/TestUploadDataStreamHandler.java » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698