| 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));
|
|
|