| 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 677b630c3bf84e0a314c570a9fc54dbcd17f97f5..20d4d703e40865b757feca9e6dde97ce75b0e7cc 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
|
| @@ -6,7 +6,6 @@ package org.chromium.android_webview.test.crash;
|
|
|
| import static org.chromium.base.test.util.ScalableTimeout.scaleTimeout;
|
|
|
| -import android.content.Context;
|
| import android.os.ParcelFileDescriptor;
|
| import android.support.test.filters.MediumTest;
|
| import android.webkit.ValueCallback;
|
| @@ -51,7 +50,7 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
|
|
| @Override
|
| protected File getExistingCacheDir() {
|
| - return CrashReceiverService.createWebViewCrashDir(getInstrumentation().getTargetContext());
|
| + return CrashReceiverService.getOrCreateWebViewCrashDir();
|
| }
|
|
|
| private static class TestPlatformServiceBridge extends PlatformServiceBridge {
|
| @@ -77,7 +76,7 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| private final CrashReportingPermissionManager mPermissionManager;
|
|
|
| TestMinidumpUploaderImpl(CrashReportingPermissionManager permissionManager) {
|
| - super(new AwMinidumpUploaderDelegate(getInstrumentation().getTargetContext()));
|
| + super(new AwMinidumpUploaderDelegate());
|
| mPermissionManager = permissionManager;
|
| }
|
|
|
| @@ -198,6 +197,8 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| /**
|
| * 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?
|
| + *
|
| + * MinidumpUploaderImpl should automatically recreate the directory.
|
| */
|
| @MediumTest
|
| public void testUploadingWithoutCrashDir() throws IOException {
|
| @@ -232,7 +233,7 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| MinidumpUploadCallable createCallable(File minidumpFile, File logfile);
|
| }
|
|
|
| - private MinidumpUploaderImpl createCallableListMinidumpUploader(Context context,
|
| + private MinidumpUploaderImpl createCallableListMinidumpUploader(
|
| final List<MinidumpUploadCallableCreator> callables, final boolean userPermitted) {
|
| PlatformServiceBridge.injectInstance(new TestPlatformServiceBridge(userPermitted));
|
| return new TestMinidumpUploaderImpl(null) {
|
| @@ -255,7 +256,7 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| new MockCrashReportingPermissionManager() {
|
| { mIsEnabledForTests = true; }
|
| };
|
| - List<MinidumpUploadCallableCreator> callables = new ArrayList();
|
| + List<MinidumpUploadCallableCreator> callables = new ArrayList<>();
|
| callables.add(new MinidumpUploadCallableCreator() {
|
| @Override
|
| public MinidumpUploadCallable createCallable(File minidumpFile, File logfile) {
|
| @@ -270,9 +271,8 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| new MinidumpUploadCallableTest.TestHttpURLConnectionFactory(), permManager);
|
| }
|
| });
|
| - MinidumpUploader minidumpUploader =
|
| - createCallableListMinidumpUploader(getInstrumentation().getTargetContext(),
|
| - callables, permManager.isUsageAndCrashReportingPermittedByUser());
|
| + MinidumpUploader minidumpUploader = createCallableListMinidumpUploader(
|
| + callables, permManager.isUsageAndCrashReportingPermittedByUser());
|
|
|
| File firstFile = createMinidumpFileInCrashDir("firstFile.dmp0");
|
| File secondFile = createMinidumpFileInCrashDir("secondFile.dmp0");
|
| @@ -280,7 +280,7 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| uploadMinidumpsSync(minidumpUploader, true /* expectReschedule */);
|
| assertFalse(firstFile.exists());
|
| assertFalse(secondFile.exists());
|
| - File expectedSecondFile = null;
|
| + File expectedSecondFile;
|
| // Not sure which minidump will fail and which will succeed, so just ensure one was uploaded
|
| // and the other one failed.
|
| if (new File(mCrashDir, firstFile.getName() + ".try1").exists()) {
|
| @@ -416,14 +416,13 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| * Ensures that the minidump copying works together with the minidump uploading.
|
| */
|
| @MediumTest
|
| - public void testCopyAndUploadWebViewMinidump() throws FileNotFoundException, IOException {
|
| - final CrashFileManager fileManager = new CrashFileManager(
|
| - CrashReceiverService.getWebViewCrashDir(getInstrumentation().getTargetContext()));
|
| + public void testCopyAndUploadWebViewMinidump() throws IOException {
|
| + final CrashFileManager fileManager =
|
| + new CrashFileManager(CrashReceiverService.getWebViewCrashDir());
|
| // Note that these minidump files are set up directly in the cache dir - not in the WebView
|
| // crash dir. This is to ensure the CrashFileManager doesn't see these minidumps without us
|
| // first copying them.
|
| - File minidumpToCopy =
|
| - new File(getInstrumentation().getTargetContext().getCacheDir(), "toCopy.dmp");
|
| + File minidumpToCopy = new File(getExistingCacheDir(), "toCopy.dmp");
|
| setUpMinidumpFile(minidumpToCopy, BOUNDARY, "browser");
|
| final String expectedFileContent = readEntireFile(minidumpToCopy);
|
|
|
| @@ -438,8 +437,7 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| } catch (IOException e) {
|
| throw new RuntimeException(e);
|
| }
|
| - File webviewTmpDir =
|
| - CrashReceiverService.getWebViewTmpCrashDir(getInstrumentation().getTargetContext());
|
| + File webviewTmpDir = CrashReceiverService.getWebViewTmpCrashDir();
|
| assertEquals(0, webviewTmpDir.listFiles().length);
|
| }
|
|
|
| @@ -466,8 +464,8 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| private static class WebViewUserConsentMinidumpUploaderDelegate
|
| extends AwMinidumpUploaderDelegate {
|
| private final boolean mUserConsent;
|
| - WebViewUserConsentMinidumpUploaderDelegate(Context context, boolean userConsent) {
|
| - super(context);
|
| + WebViewUserConsentMinidumpUploaderDelegate(boolean userConsent) {
|
| + super();
|
| mUserConsent = userConsent;
|
| }
|
| @Override
|
| @@ -497,8 +495,8 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
|
|
| private void testPlatformServicesBridgeIsUsed(final boolean userConsent) throws IOException {
|
| PlatformServiceBridge.injectInstance(new TestPlatformServiceBridge(userConsent));
|
| - MinidumpUploaderDelegate delegate = new WebViewUserConsentMinidumpUploaderDelegate(
|
| - getInstrumentation().getTargetContext(), userConsent);
|
| + MinidumpUploaderDelegate delegate =
|
| + new WebViewUserConsentMinidumpUploaderDelegate(userConsent);
|
| MinidumpUploader minidumpUploader = new TestMinidumpUploaderImpl(
|
| delegate, delegate.createCrashReportingPermissionManager());
|
|
|
| @@ -518,13 +516,10 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| }
|
|
|
| private static String readEntireFile(File file) throws IOException {
|
| - FileInputStream fileInputStream = new FileInputStream(file);
|
| - try {
|
| + try (FileInputStream fileInputStream = new FileInputStream(file)) {
|
| byte[] data = new byte[(int) file.length()];
|
| fileInputStream.read(data);
|
| return new String(data);
|
| - } finally {
|
| - fileInputStream.close();
|
| }
|
| }
|
|
|
| @@ -532,13 +527,11 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| * Ensure that the minidump copying doesn't trigger when we pass it invalid file descriptors.
|
| */
|
| @MediumTest
|
| - public void testCopyingAbortsForInvalidFds() throws FileNotFoundException, IOException {
|
| + public void testCopyingAbortsForInvalidFds() throws IOException {
|
| + assertFalse(CrashReceiverService.copyMinidumps(0 /* uid */, null));
|
| assertFalse(CrashReceiverService.copyMinidumps(
|
| - getInstrumentation().getTargetContext(), 0 /* uid */, null));
|
| - assertFalse(CrashReceiverService.copyMinidumps(getInstrumentation().getTargetContext(),
|
| 0 /* uid */, new ParcelFileDescriptor[] {null, null}));
|
| - assertFalse(CrashReceiverService.copyMinidumps(
|
| - getInstrumentation().getTargetContext(), 0 /* uid */, new ParcelFileDescriptor[0]));
|
| + assertFalse(CrashReceiverService.copyMinidumps(0 /* uid */, new ParcelFileDescriptor[0]));
|
| }
|
|
|
| /**
|
| @@ -546,8 +539,7 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| */
|
| @MediumTest
|
| public void testDeleteFilesInDir() throws IOException {
|
| - Context context = getInstrumentation().getTargetContext();
|
| - File webviewTmpDir = CrashReceiverService.getWebViewTmpCrashDir(context);
|
| + File webviewTmpDir = CrashReceiverService.getWebViewTmpCrashDir();
|
| if (!webviewTmpDir.isDirectory()) {
|
| assertTrue(webviewTmpDir.mkdir());
|
| }
|
| @@ -557,7 +549,7 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| assertTrue(testFile2.createNewFile());
|
| assertTrue(testFile1.exists());
|
| assertTrue(testFile2.exists());
|
| - CrashReceiverService.deleteFilesInWebViewTmpDirIfExists(context);
|
| + CrashReceiverService.deleteFilesInWebViewTmpDirIfExists();
|
| assertFalse(testFile1.exists());
|
| assertFalse(testFile2.exists());
|
| }
|
| @@ -568,15 +560,13 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| */
|
| @MediumTest
|
| public void testCopyAndUploadSeveralMinidumpBatches() throws IOException {
|
| - final CrashFileManager fileManager = new CrashFileManager(
|
| - CrashReceiverService.getWebViewCrashDir(getInstrumentation().getTargetContext()));
|
| + final CrashFileManager fileManager =
|
| + new CrashFileManager(CrashReceiverService.getWebViewCrashDir());
|
| // Note that these minidump files are set up directly in the cache dir - not in the WebView
|
| // crash dir. This is to ensure the CrashFileManager doesn't see these minidumps without us
|
| // first copying them.
|
| - File firstMinidumpToCopy =
|
| - new File(getInstrumentation().getTargetContext().getCacheDir(), "firstToCopy.dmp");
|
| - File secondMinidumpToCopy =
|
| - new File(getInstrumentation().getTargetContext().getCacheDir(), "secondToCopy.dmp");
|
| + File firstMinidumpToCopy = new File(getExistingCacheDir(), "firstToCopy.dmp");
|
| + File secondMinidumpToCopy = new File(getExistingCacheDir(), "secondToCopy.dmp");
|
| setUpMinidumpFile(firstMinidumpToCopy, BOUNDARY, "browser");
|
| setUpMinidumpFile(secondMinidumpToCopy, BOUNDARY, "renderer");
|
| final String expectedFirstFileContent = readEntireFile(firstMinidumpToCopy);
|
| @@ -633,8 +623,7 @@ public class MinidumpUploaderTest extends CrashTestCase {
|
| assertTrue(currentMinidumps[m].delete());
|
| }
|
| crashReceiverService.performMinidumpCopyingSerially(
|
| - getInstrumentation().getTargetContext(), uids[n] /* uid */, fileDescriptors[n],
|
| - false /* scheduleUploads */);
|
| + uids[n] /* uid */, fileDescriptors[n], false /* scheduleUploads */);
|
| }
|
|
|
| PlatformServiceBridge.injectInstance(new TestPlatformServiceBridge(true));
|
|
|