| Index: android_webview/javatests/src/org/chromium/android_webview/test/crash/MinidumpUploaderTest.java
|
| diff --git a/android_webview/javatests/src/org/chromium/android_webview/test/crash/MinidumpUploaderTest.java b/android_webview/javatests/src/org/chromium/android_webview/test/crash/MinidumpUploaderTest.java
|
| index 20d4d703e40865b757feca9e6dde97ce75b0e7cc..e38a6210963b9354396fe0e0ca39cfd5044770b7 100644
|
| --- a/android_webview/javatests/src/org/chromium/android_webview/test/crash/MinidumpUploaderTest.java
|
| +++ b/android_webview/javatests/src/org/chromium/android_webview/test/crash/MinidumpUploaderTest.java
|
| @@ -4,8 +4,6 @@
|
|
|
| package org.chromium.android_webview.test.crash;
|
|
|
| -import static org.chromium.base.test.util.ScalableTimeout.scaleTimeout;
|
| -
|
| import android.os.ParcelFileDescriptor;
|
| import android.support.test.filters.MediumTest;
|
| import android.webkit.ValueCallback;
|
| @@ -19,9 +17,11 @@ import org.chromium.components.minidump_uploader.CrashFileManager;
|
| import org.chromium.components.minidump_uploader.CrashTestCase;
|
| import org.chromium.components.minidump_uploader.MinidumpUploadCallable;
|
| import org.chromium.components.minidump_uploader.MinidumpUploadCallableTest;
|
| +import org.chromium.components.minidump_uploader.MinidumpUploadTestUtility;
|
| import org.chromium.components.minidump_uploader.MinidumpUploader;
|
| import org.chromium.components.minidump_uploader.MinidumpUploaderDelegate;
|
| import org.chromium.components.minidump_uploader.MinidumpUploaderImpl;
|
| +import org.chromium.components.minidump_uploader.TestMinidumpUploaderImpl;
|
| import org.chromium.components.minidump_uploader.util.CrashReportingPermissionManager;
|
| import org.chromium.components.minidump_uploader.util.HttpURLConnectionFactory;
|
|
|
| @@ -37,7 +37,6 @@ import java.net.URL;
|
| import java.util.ArrayList;
|
| import java.util.List;
|
| import java.util.concurrent.CountDownLatch;
|
| -import java.util.concurrent.TimeUnit;
|
|
|
| /**
|
| * Instrumentation tests for MinidumpUploader.
|
| @@ -46,8 +45,6 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| private static final String TAG = "MinidumpUploaderTest";
|
| private static final String BOUNDARY = "TESTBOUNDARY";
|
|
|
| - private static final long TIME_OUT_MILLIS = 3000;
|
| -
|
| @Override
|
| protected File getExistingCacheDir() {
|
| return CrashReceiverService.getOrCreateWebViewCrashDir();
|
| @@ -72,44 +69,12 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| }
|
| }
|
|
|
| - private class TestMinidumpUploaderImpl extends MinidumpUploaderImpl {
|
| - private final CrashReportingPermissionManager mPermissionManager;
|
| -
|
| - TestMinidumpUploaderImpl(CrashReportingPermissionManager permissionManager) {
|
| - super(new AwMinidumpUploaderDelegate());
|
| - mPermissionManager = permissionManager;
|
| - }
|
| -
|
| - TestMinidumpUploaderImpl(MinidumpUploaderDelegate delegate,
|
| - CrashReportingPermissionManager permissionManager) {
|
| - super(delegate);
|
| - mPermissionManager = permissionManager;
|
| - }
|
| -
|
| - @Override
|
| - public CrashFileManager createCrashFileManager(File crashDir) {
|
| - return new CrashFileManager(crashDir) {
|
| - @Override
|
| - public void cleanOutAllNonFreshMinidumpFiles() {}
|
| - };
|
| - }
|
| -
|
| - @Override
|
| - public MinidumpUploadCallable createMinidumpUploadCallable(
|
| - File minidumpFile, File logfile) {
|
| - return new MinidumpUploadCallable(minidumpFile, logfile,
|
| - new MinidumpUploadCallableTest.TestHttpURLConnectionFactory(),
|
| - mPermissionManager);
|
| - }
|
| - }
|
| -
|
| /**
|
| * Test to ensure the minidump uploading mechanism behaves as expected when we fail to upload
|
| * minidumps.
|
| */
|
| @MediumTest
|
| public void testFailUploadingMinidumps() throws IOException {
|
| - PlatformServiceBridge.injectInstance(new TestPlatformServiceBridge(true));
|
| final CrashReportingPermissionManager permManager =
|
| new MockCrashReportingPermissionManager() {
|
| {
|
| @@ -119,7 +84,8 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| mIsEnabledForTests = false;
|
| }
|
| };
|
| - MinidumpUploader minidumpUploader = new TestMinidumpUploaderImpl(permManager);
|
| + MinidumpUploader minidumpUploader =
|
| + new TestMinidumpUploaderImpl(getExistingCacheDir(), permManager);
|
|
|
| File firstFile = createMinidumpFileInCrashDir("1_abc.dmp0");
|
| File secondFile = createMinidumpFileInCrashDir("12_abc.dmp0");
|
| @@ -134,7 +100,8 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| File expectedJustBelowMaxTriesFile = new File(mCrashDir,
|
| justBelowMaxTriesFile.getName().replace(triesBelowMaxString, maxTriesString));
|
|
|
| - uploadMinidumpsSync(minidumpUploader, true /* expectReschedule */);
|
| + MinidumpUploadTestUtility.uploadMinidumpsSync(
|
| + minidumpUploader, true /* expectReschedule */);
|
| assertFalse(firstFile.exists());
|
| assertFalse(secondFile.exists());
|
| assertFalse(justBelowMaxTriesFile.exists());
|
| @@ -146,55 +113,6 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| }
|
|
|
| /**
|
| - * Utility method for running {@param minidumpUploader}.uploadAllMinidumps on the UI thread to
|
| - * avoid breaking any assertions about running on the UI thread.
|
| - */
|
| - private static void uploadAllMinidumpsOnUiThread(final MinidumpUploader minidumpUploader,
|
| - final MinidumpUploader.UploadsFinishedCallback uploadsFinishedCallback) {
|
| - uploadAllMinidumpsOnUiThread(
|
| - minidumpUploader, uploadsFinishedCallback, false /* blockUntilJobPosted */);
|
| - }
|
| -
|
| - private static void uploadAllMinidumpsOnUiThread(final MinidumpUploader minidumpUploader,
|
| - final MinidumpUploader.UploadsFinishedCallback uploadsFinishedCallback,
|
| - boolean blockUntilJobPosted) {
|
| - final CountDownLatch jobPostedLatch = new CountDownLatch(1);
|
| - ThreadUtils.runOnUiThread(new Runnable() {
|
| - @Override
|
| - public void run() {
|
| - minidumpUploader.uploadAllMinidumps(uploadsFinishedCallback);
|
| - jobPostedLatch.countDown();
|
| - }
|
| - });
|
| - if (blockUntilJobPosted) {
|
| - try {
|
| - jobPostedLatch.await();
|
| - } catch (InterruptedException e) {
|
| - throw new RuntimeException(e);
|
| - }
|
| - }
|
| - }
|
| -
|
| - private static void uploadMinidumpsSync(
|
| - MinidumpUploader minidumpUploader, final boolean expectReschedule) {
|
| - final CountDownLatch uploadsFinishedLatch = new CountDownLatch(1);
|
| - uploadAllMinidumpsOnUiThread(
|
| - minidumpUploader, new MinidumpUploader.UploadsFinishedCallback() {
|
| - @Override
|
| - public void uploadsFinished(boolean reschedule) {
|
| - assertEquals(expectReschedule, reschedule);
|
| - uploadsFinishedLatch.countDown();
|
| - }
|
| - });
|
| - try {
|
| - assertTrue(uploadsFinishedLatch.await(
|
| - scaleTimeout(TIME_OUT_MILLIS), TimeUnit.MILLISECONDS));
|
| - } catch (InterruptedException e) {
|
| - throw new RuntimeException(e);
|
| - }
|
| - }
|
| -
|
| - /**
|
| * Ensure MinidumpUploaderImpl doesn't crash even if the WebView Crash dir doesn't exist (could
|
| * happen e.g. if a Job persists across WebView-updates?
|
| *
|
| @@ -212,7 +130,13 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| new MockCrashReportingPermissionManager() {
|
| { mIsEnabledForTests = true; }
|
| };
|
| - MinidumpUploader minidumpUploader = new TestMinidumpUploaderImpl(permManager);
|
| + MinidumpUploader minidumpUploader =
|
| + new TestMinidumpUploaderImpl(new AwMinidumpUploaderDelegate() {
|
| + @Override
|
| + public CrashReportingPermissionManager createCrashReportingPermissionManager() {
|
| + return permManager;
|
| + }
|
| + });
|
|
|
| File firstFile = createMinidumpFileInCrashDir("1_abc.dmp0");
|
| File secondFile = createMinidumpFileInCrashDir("12_abcd.dmp0");
|
| @@ -221,7 +145,8 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| File expectedSecondUploadFile =
|
| new File(mCrashDir, secondFile.getName().replace(".dmp", ".up"));
|
|
|
| - uploadMinidumpsSync(minidumpUploader, false /* expectReschedule */);
|
| + MinidumpUploadTestUtility.uploadMinidumpsSync(
|
| + minidumpUploader, false /* expectReschedule */);
|
|
|
| assertFalse(firstFile.exists());
|
| assertTrue(expectedFirstUploadFile.exists());
|
| @@ -235,8 +160,7 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
|
|
| private MinidumpUploaderImpl createCallableListMinidumpUploader(
|
| final List<MinidumpUploadCallableCreator> callables, final boolean userPermitted) {
|
| - PlatformServiceBridge.injectInstance(new TestPlatformServiceBridge(userPermitted));
|
| - return new TestMinidumpUploaderImpl(null) {
|
| + return new TestMinidumpUploaderImpl(getExistingCacheDir(), null) {
|
| private int mIndex = 0;
|
|
|
| @Override
|
| @@ -277,7 +201,8 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| File firstFile = createMinidumpFileInCrashDir("firstFile.dmp0");
|
| File secondFile = createMinidumpFileInCrashDir("secondFile.dmp0");
|
|
|
| - uploadMinidumpsSync(minidumpUploader, true /* expectReschedule */);
|
| + MinidumpUploadTestUtility.uploadMinidumpsSync(
|
| + minidumpUploader, true /* expectReschedule */);
|
| assertFalse(firstFile.exists());
|
| assertFalse(secondFile.exists());
|
| File expectedSecondFile;
|
| @@ -354,13 +279,13 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| }
|
|
|
| private void testCancellation(final boolean successfulUpload) throws IOException {
|
| - PlatformServiceBridge.injectInstance(new TestPlatformServiceBridge(true));
|
| final CrashReportingPermissionManager permManager =
|
| new MockCrashReportingPermissionManager() {
|
| { mIsEnabledForTests = true; }
|
| };
|
| final CountDownLatch stopStallingLatch = new CountDownLatch(1);
|
| - MinidumpUploaderImpl minidumpUploader = new TestMinidumpUploaderImpl(permManager) {
|
| + MinidumpUploaderImpl minidumpUploader = new TestMinidumpUploaderImpl(
|
| + getExistingCacheDir(), permManager) {
|
| @Override
|
| public MinidumpUploadCallable createMinidumpUploadCallable(
|
| File minidumpFile, File logfile) {
|
| @@ -376,7 +301,7 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| File expectedFirstRetryFile = new File(mCrashDir, firstFile.getName() + ".try1");
|
|
|
| // This is run on the UI thread to avoid failing any assertOnUiThread assertions.
|
| - uploadAllMinidumpsOnUiThread(minidumpUploader,
|
| + MinidumpUploadTestUtility.uploadAllMinidumpsOnUiThread(minidumpUploader,
|
| new MinidumpUploader.UploadsFinishedCallback() {
|
| @Override
|
| public void uploadsFinished(boolean reschedule) {
|
| @@ -497,8 +422,7 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| PlatformServiceBridge.injectInstance(new TestPlatformServiceBridge(userConsent));
|
| MinidumpUploaderDelegate delegate =
|
| new WebViewUserConsentMinidumpUploaderDelegate(userConsent);
|
| - MinidumpUploader minidumpUploader = new TestMinidumpUploaderImpl(
|
| - delegate, delegate.createCrashReportingPermissionManager());
|
| + MinidumpUploader minidumpUploader = new TestMinidumpUploaderImpl(delegate);
|
|
|
| File firstFile = createMinidumpFileInCrashDir("1_abc.dmp0");
|
| File secondFile = createMinidumpFileInCrashDir("12_abcd.dmp0");
|
| @@ -507,7 +431,8 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| File expectedSecondFile = new File(
|
| mCrashDir, secondFile.getName().replace(".dmp", userConsent ? ".up" : ".skipped"));
|
|
|
| - uploadMinidumpsSync(minidumpUploader, false /* expectReschedule */);
|
| + MinidumpUploadTestUtility.uploadMinidumpsSync(
|
| + minidumpUploader, false /* expectReschedule */);
|
|
|
| assertFalse(firstFile.exists());
|
| assertTrue(expectedFirstFile.exists());
|
| @@ -626,14 +551,20 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| uids[n] /* uid */, fileDescriptors[n], false /* scheduleUploads */);
|
| }
|
|
|
| - PlatformServiceBridge.injectInstance(new TestPlatformServiceBridge(true));
|
| final CrashReportingPermissionManager permManager =
|
| new MockCrashReportingPermissionManager() {
|
| { mIsEnabledForTests = true; }
|
| };
|
| - MinidumpUploader minidumpUploader = new TestMinidumpUploaderImpl(permManager);
|
| + MinidumpUploader minidumpUploader =
|
| + new TestMinidumpUploaderImpl(new AwMinidumpUploaderDelegate() {
|
| + @Override
|
| + public CrashReportingPermissionManager createCrashReportingPermissionManager() {
|
| + return permManager;
|
| + }
|
| + });
|
|
|
| - uploadMinidumpsSync(minidumpUploader, false /* expectReschedule */);
|
| + MinidumpUploadTestUtility.uploadMinidumpsSync(
|
| + minidumpUploader, false /* expectReschedule */);
|
| // Ensure there are no minidumps left to upload.
|
| File[] nonUploadedMinidumps =
|
| fileManager.getAllMinidumpFiles(MinidumpUploaderImpl.MAX_UPLOAD_TRIES_ALLOWED);
|
|
|