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..677b630c3bf84e0a314c570a9fc54dbcd17f97f5 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,6 +6,7 @@ |
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; |
@@ -50,7 +51,7 @@ |
@Override |
protected File getExistingCacheDir() { |
- return CrashReceiverService.getOrCreateWebViewCrashDir(); |
+ return CrashReceiverService.createWebViewCrashDir(getInstrumentation().getTargetContext()); |
} |
private static class TestPlatformServiceBridge extends PlatformServiceBridge { |
@@ -76,7 +77,7 @@ |
private final CrashReportingPermissionManager mPermissionManager; |
TestMinidumpUploaderImpl(CrashReportingPermissionManager permissionManager) { |
- super(new AwMinidumpUploaderDelegate()); |
+ super(new AwMinidumpUploaderDelegate(getInstrumentation().getTargetContext())); |
mPermissionManager = permissionManager; |
} |
@@ -197,8 +198,6 @@ |
/** |
* 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 { |
@@ -233,7 +232,7 @@ |
MinidumpUploadCallable createCallable(File minidumpFile, File logfile); |
} |
- private MinidumpUploaderImpl createCallableListMinidumpUploader( |
+ private MinidumpUploaderImpl createCallableListMinidumpUploader(Context context, |
final List<MinidumpUploadCallableCreator> callables, final boolean userPermitted) { |
PlatformServiceBridge.injectInstance(new TestPlatformServiceBridge(userPermitted)); |
return new TestMinidumpUploaderImpl(null) { |
@@ -256,7 +255,7 @@ |
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) { |
@@ -271,8 +270,9 @@ |
new MinidumpUploadCallableTest.TestHttpURLConnectionFactory(), permManager); |
} |
}); |
- MinidumpUploader minidumpUploader = createCallableListMinidumpUploader( |
- callables, permManager.isUsageAndCrashReportingPermittedByUser()); |
+ MinidumpUploader minidumpUploader = |
+ createCallableListMinidumpUploader(getInstrumentation().getTargetContext(), |
+ callables, permManager.isUsageAndCrashReportingPermittedByUser()); |
File firstFile = createMinidumpFileInCrashDir("firstFile.dmp0"); |
File secondFile = createMinidumpFileInCrashDir("secondFile.dmp0"); |
@@ -280,7 +280,7 @@ |
uploadMinidumpsSync(minidumpUploader, true /* expectReschedule */); |
assertFalse(firstFile.exists()); |
assertFalse(secondFile.exists()); |
- File expectedSecondFile; |
+ File expectedSecondFile = null; |
// 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,13 +416,14 @@ |
* Ensures that the minidump copying works together with the minidump uploading. |
*/ |
@MediumTest |
- public void testCopyAndUploadWebViewMinidump() throws IOException { |
- final CrashFileManager fileManager = |
- new CrashFileManager(CrashReceiverService.getWebViewCrashDir()); |
+ public void testCopyAndUploadWebViewMinidump() throws FileNotFoundException, IOException { |
+ final CrashFileManager fileManager = new CrashFileManager( |
+ CrashReceiverService.getWebViewCrashDir(getInstrumentation().getTargetContext())); |
// 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(getExistingCacheDir(), "toCopy.dmp"); |
+ File minidumpToCopy = |
+ new File(getInstrumentation().getTargetContext().getCacheDir(), "toCopy.dmp"); |
setUpMinidumpFile(minidumpToCopy, BOUNDARY, "browser"); |
final String expectedFileContent = readEntireFile(minidumpToCopy); |
@@ -437,7 +438,8 @@ |
} catch (IOException e) { |
throw new RuntimeException(e); |
} |
- File webviewTmpDir = CrashReceiverService.getWebViewTmpCrashDir(); |
+ File webviewTmpDir = |
+ CrashReceiverService.getWebViewTmpCrashDir(getInstrumentation().getTargetContext()); |
assertEquals(0, webviewTmpDir.listFiles().length); |
} |
@@ -464,8 +466,8 @@ |
private static class WebViewUserConsentMinidumpUploaderDelegate |
extends AwMinidumpUploaderDelegate { |
private final boolean mUserConsent; |
- WebViewUserConsentMinidumpUploaderDelegate(boolean userConsent) { |
- super(); |
+ WebViewUserConsentMinidumpUploaderDelegate(Context context, boolean userConsent) { |
+ super(context); |
mUserConsent = userConsent; |
} |
@Override |
@@ -495,8 +497,8 @@ |
private void testPlatformServicesBridgeIsUsed(final boolean userConsent) throws IOException { |
PlatformServiceBridge.injectInstance(new TestPlatformServiceBridge(userConsent)); |
- MinidumpUploaderDelegate delegate = |
- new WebViewUserConsentMinidumpUploaderDelegate(userConsent); |
+ MinidumpUploaderDelegate delegate = new WebViewUserConsentMinidumpUploaderDelegate( |
+ getInstrumentation().getTargetContext(), userConsent); |
MinidumpUploader minidumpUploader = new TestMinidumpUploaderImpl( |
delegate, delegate.createCrashReportingPermissionManager()); |
@@ -516,10 +518,13 @@ |
} |
private static String readEntireFile(File file) throws IOException { |
- try (FileInputStream fileInputStream = new FileInputStream(file)) { |
+ FileInputStream fileInputStream = new FileInputStream(file); |
+ try { |
byte[] data = new byte[(int) file.length()]; |
fileInputStream.read(data); |
return new String(data); |
+ } finally { |
+ fileInputStream.close(); |
} |
} |
@@ -527,11 +532,13 @@ |
* Ensure that the minidump copying doesn't trigger when we pass it invalid file descriptors. |
*/ |
@MediumTest |
- public void testCopyingAbortsForInvalidFds() throws IOException { |
- assertFalse(CrashReceiverService.copyMinidumps(0 /* uid */, null)); |
+ public void testCopyingAbortsForInvalidFds() throws FileNotFoundException, IOException { |
assertFalse(CrashReceiverService.copyMinidumps( |
+ getInstrumentation().getTargetContext(), 0 /* uid */, null)); |
+ assertFalse(CrashReceiverService.copyMinidumps(getInstrumentation().getTargetContext(), |
0 /* uid */, new ParcelFileDescriptor[] {null, null})); |
- assertFalse(CrashReceiverService.copyMinidumps(0 /* uid */, new ParcelFileDescriptor[0])); |
+ assertFalse(CrashReceiverService.copyMinidumps( |
+ getInstrumentation().getTargetContext(), 0 /* uid */, new ParcelFileDescriptor[0])); |
} |
/** |
@@ -539,7 +546,8 @@ |
*/ |
@MediumTest |
public void testDeleteFilesInDir() throws IOException { |
- File webviewTmpDir = CrashReceiverService.getWebViewTmpCrashDir(); |
+ Context context = getInstrumentation().getTargetContext(); |
+ File webviewTmpDir = CrashReceiverService.getWebViewTmpCrashDir(context); |
if (!webviewTmpDir.isDirectory()) { |
assertTrue(webviewTmpDir.mkdir()); |
} |
@@ -549,7 +557,7 @@ |
assertTrue(testFile2.createNewFile()); |
assertTrue(testFile1.exists()); |
assertTrue(testFile2.exists()); |
- CrashReceiverService.deleteFilesInWebViewTmpDirIfExists(); |
+ CrashReceiverService.deleteFilesInWebViewTmpDirIfExists(context); |
assertFalse(testFile1.exists()); |
assertFalse(testFile2.exists()); |
} |
@@ -560,13 +568,15 @@ |
*/ |
@MediumTest |
public void testCopyAndUploadSeveralMinidumpBatches() throws IOException { |
- final CrashFileManager fileManager = |
- new CrashFileManager(CrashReceiverService.getWebViewCrashDir()); |
+ final CrashFileManager fileManager = new CrashFileManager( |
+ CrashReceiverService.getWebViewCrashDir(getInstrumentation().getTargetContext())); |
// 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(getExistingCacheDir(), "firstToCopy.dmp"); |
- File secondMinidumpToCopy = new File(getExistingCacheDir(), "secondToCopy.dmp"); |
+ File firstMinidumpToCopy = |
+ new File(getInstrumentation().getTargetContext().getCacheDir(), "firstToCopy.dmp"); |
+ File secondMinidumpToCopy = |
+ new File(getInstrumentation().getTargetContext().getCacheDir(), "secondToCopy.dmp"); |
setUpMinidumpFile(firstMinidumpToCopy, BOUNDARY, "browser"); |
setUpMinidumpFile(secondMinidumpToCopy, BOUNDARY, "renderer"); |
final String expectedFirstFileContent = readEntireFile(firstMinidumpToCopy); |
@@ -623,7 +633,8 @@ |
assertTrue(currentMinidumps[m].delete()); |
} |
crashReceiverService.performMinidumpCopyingSerially( |
- uids[n] /* uid */, fileDescriptors[n], false /* scheduleUploads */); |
+ getInstrumentation().getTargetContext(), uids[n] /* uid */, fileDescriptors[n], |
+ false /* scheduleUploads */); |
} |
PlatformServiceBridge.injectInstance(new TestPlatformServiceBridge(true)); |