| Index: components/minidump_uploader/android/java/src/org/chromium/components/minidump_uploader/MinidumpUploaderImpl.java
|
| diff --git a/components/minidump_uploader/android/java/src/org/chromium/components/minidump_uploader/MinidumpUploaderImpl.java b/components/minidump_uploader/android/java/src/org/chromium/components/minidump_uploader/MinidumpUploaderImpl.java
|
| index 28eaa068d84d510a38280a263cea3ddec2ccb6be..ebf914dc16ac199088d8ae10b6a5408ad9de7f51 100644
|
| --- a/components/minidump_uploader/android/java/src/org/chromium/components/minidump_uploader/MinidumpUploaderImpl.java
|
| +++ b/components/minidump_uploader/android/java/src/org/chromium/components/minidump_uploader/MinidumpUploaderImpl.java
|
| @@ -48,7 +48,7 @@ public class MinidumpUploaderImpl implements MinidumpUploader {
|
| @VisibleForTesting
|
| public MinidumpUploaderImpl(MinidumpUploaderDelegate delegate) {
|
| mDelegate = delegate;
|
| - mFileManager = createCrashFileManager(mDelegate.createCrashDir());
|
| + mFileManager = createCrashFileManager(mDelegate.getCrashParentDir());
|
| if (!mFileManager.ensureCrashDirExists()) {
|
| Log.e(TAG, "Crash directory doesn't exist!");
|
| }
|
| @@ -56,11 +56,12 @@ public class MinidumpUploaderImpl implements MinidumpUploader {
|
|
|
| /**
|
| * Utility method to allow tests to customize the behavior of the crash file manager.
|
| - * @param {crashDir} The directory in which to store crash files (i.e. minidumps).
|
| + * @param {crashParentDir} The directory that contains the "Crash Reports" directory, in which
|
| + * crash files (i.e. minidumps) are stored.
|
| */
|
| @VisibleForTesting
|
| - public CrashFileManager createCrashFileManager(File crashDir) {
|
| - return new CrashFileManager(crashDir);
|
| + public CrashFileManager createCrashFileManager(File crashParentDir) {
|
| + return new CrashFileManager(crashParentDir);
|
| }
|
|
|
| /**
|
| @@ -88,11 +89,26 @@ public class MinidumpUploaderImpl implements MinidumpUploader {
|
| @Override
|
| public void run() {
|
| File[] minidumps = mFileManager.getAllMinidumpFiles(MAX_UPLOAD_TRIES_ALLOWED);
|
| + Log.i(TAG, "Attempting to upload %d minidumps.", minidumps.length);
|
| for (File minidump : minidumps) {
|
| + Log.i(TAG, "Attempting to upload " + minidump.getName());
|
| MinidumpUploadCallable uploadCallable = createMinidumpUploadCallable(
|
| minidump, mFileManager.getCrashUploadLogFile());
|
| int uploadResult = uploadCallable.call();
|
|
|
| + // Record metrics about the upload.
|
| + if (uploadResult == MinidumpUploadCallable.UPLOAD_SUCCESS) {
|
| + mDelegate.recordUploadSuccess(minidump);
|
| + } else if (uploadResult == MinidumpUploadCallable.UPLOAD_FAILURE) {
|
| + // Only record a failure after we have maxed out the allotted tries.
|
| + // Note: Add 1 to include the most recent failure, since the minidump's filename
|
| + // is from before the failure.
|
| + int numFailures = CrashFileManager.readAttemptNumber(minidump.getName()) + 1;
|
| + if (numFailures == MAX_UPLOAD_TRIES_ALLOWED) {
|
| + mDelegate.recordUploadFailure(minidump);
|
| + }
|
| + }
|
| +
|
| // Bail if the job was canceled. Note that the cancelation status is checked AFTER
|
| // trying to upload a minidump. This is to ensure that the scheduler attempts to
|
| // upload at least one minidump per job. Otherwise, it's possible for a crash loop
|
|
|