Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1603)

Unified Diff: android_webview/java/src/org/chromium/android_webview/crash/CrashReceiverService.java

Issue 2800833003: Revert of Android: Remove GetApplicationContext part 2 (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: android_webview/java/src/org/chromium/android_webview/crash/CrashReceiverService.java
diff --git a/android_webview/java/src/org/chromium/android_webview/crash/CrashReceiverService.java b/android_webview/java/src/org/chromium/android_webview/crash/CrashReceiverService.java
index 956c14f2b1c3514c48948e8126cc28058b1a6311..a84bda3a1d43bc31afc03c027d1a4b0881796d6b 100644
--- a/android_webview/java/src/org/chromium/android_webview/crash/CrashReceiverService.java
+++ b/android_webview/java/src/org/chromium/android_webview/crash/CrashReceiverService.java
@@ -8,13 +8,13 @@
import android.app.Service;
import android.app.job.JobInfo;
import android.content.ComponentName;
+import android.content.Context;
import android.content.Intent;
import android.os.Binder;
import android.os.Build;
import android.os.IBinder;
import android.os.ParcelFileDescriptor;
-import org.chromium.base.ContextUtils;
import org.chromium.base.Log;
import org.chromium.base.VisibleForTesting;
import org.chromium.components.background_task_scheduler.TaskIds;
@@ -46,7 +46,8 @@
@Override
public void transmitCrashes(ParcelFileDescriptor[] fileDescriptors) {
int uid = Binder.getCallingUid();
- performMinidumpCopyingSerially(uid, fileDescriptors, true /* scheduleUploads */);
+ performMinidumpCopyingSerially(
+ CrashReceiverService.this, uid, fileDescriptors, true /* scheduleUploads */);
}
};
@@ -57,15 +58,15 @@
* during testing).
*/
@VisibleForTesting
- public void performMinidumpCopyingSerially(
- int uid, ParcelFileDescriptor[] fileDescriptors, boolean scheduleUploads) {
+ public void performMinidumpCopyingSerially(Context context, int uid,
+ ParcelFileDescriptor[] fileDescriptors, boolean scheduleUploads) {
if (!waitUntilWeCanCopy()) {
Log.e(TAG, "something went wrong when waiting to copy minidumps, bailing!");
return;
}
try {
- boolean copySucceeded = copyMinidumps(uid, fileDescriptors);
+ boolean copySucceeded = copyMinidumps(context, uid, fileDescriptors);
if (copySucceeded && scheduleUploads) {
// Only schedule a new job if there actually are any files to upload.
scheduleNewJob();
@@ -100,7 +101,7 @@
private void scheduleNewJob() {
JobInfo.Builder builder = new JobInfo.Builder(TaskIds.WEBVIEW_MINIDUMP_UPLOADING_JOB_ID,
new ComponentName(this, AwMinidumpUploadJobService.class));
- MinidumpUploadJobService.scheduleUpload(builder);
+ MinidumpUploadJobService.scheduleUpload(this, builder);
}
/**
@@ -110,15 +111,16 @@
* @return whether any minidump was copied.
*/
@VisibleForTesting
- public static boolean copyMinidumps(int uid, ParcelFileDescriptor[] fileDescriptors) {
- CrashFileManager crashFileManager = new CrashFileManager(getOrCreateWebViewCrashDir());
+ public static boolean copyMinidumps(
+ Context context, int uid, ParcelFileDescriptor[] fileDescriptors) {
+ CrashFileManager crashFileManager = new CrashFileManager(createWebViewCrashDir(context));
boolean copiedAnything = false;
if (fileDescriptors != null) {
for (ParcelFileDescriptor fd : fileDescriptors) {
if (fd == null) continue;
try {
- File copiedFile = crashFileManager.copyMinidumpFromFD(
- fd.getFileDescriptor(), getWebViewTmpCrashDir(), uid);
+ File copiedFile = crashFileManager.copyMinidumpFromFD(fd.getFileDescriptor(),
+ getWebViewTmpCrashDir(context), uid);
if (copiedFile == null) {
Log.w(TAG, "failed to copy minidump from " + fd.toString());
// TODO(gsennton): add UMA metric to ensure we aren't losing too many
@@ -130,7 +132,7 @@
Log.w(TAG, "failed to copy minidump from " + fd.toString() + ": "
+ e.getMessage());
} finally {
- deleteFilesInWebViewTmpDirIfExists();
+ deleteFilesInWebViewTmpDirIfExists(context);
}
}
}
@@ -141,8 +143,8 @@
* Delete all files in the directory where temporary files from this Service are stored.
*/
@VisibleForTesting
- public static void deleteFilesInWebViewTmpDirIfExists() {
- deleteFilesInDirIfExists(getWebViewTmpCrashDir());
+ public static void deleteFilesInWebViewTmpDirIfExists(Context context) {
+ deleteFilesInDirIfExists(getWebViewTmpCrashDir(context));
}
private static void deleteFilesInDirIfExists(File directory) {
@@ -163,11 +165,12 @@
* WebView needs a crash directory different from Chrome's to ensure Chrome's and WebView's
* minidump handling won't clash in cases where both Chrome and WebView are provided by the
* same app (Monochrome).
+ * @param context Android Context used to find a cache-directory where minidumps can be stored.
* @return a reference to the created directory, or null if the creation failed.
*/
@VisibleForTesting
- public static File getOrCreateWebViewCrashDir() {
- File dir = getWebViewCrashDir();
+ public static File createWebViewCrashDir(Context context) {
+ File dir = getWebViewCrashDir(context);
// Call mkdir before isDirectory to ensure that if another thread created the directory
// just before the call to mkdir, the current thread fails mkdir, but passes isDirectory.
if (dir.mkdir() || dir.isDirectory()) {
@@ -178,19 +181,21 @@
/**
* Fetch the crash directory where WebView stores its minidumps.
+ * @param context Android Context used to find a cache-directory where minidumps can be stored.
* @return a File pointing to the crash directory.
*/
@VisibleForTesting
- public static File getWebViewCrashDir() {
- return new File(ContextUtils.getApplicationContext().getCacheDir(), WEBVIEW_CRASH_DIR);
+ public static File getWebViewCrashDir(Context context) {
+ return new File(context.getCacheDir(), WEBVIEW_CRASH_DIR);
}
/**
* Directory where we store files temporarily when copying from an app process.
- */
- @VisibleForTesting
- public static File getWebViewTmpCrashDir() {
- return new File(ContextUtils.getApplicationContext().getCacheDir(), WEBVIEW_TMP_CRASH_DIR);
+ * @param context Android Context used to find a cache-directory where minidumps can be stored.
+ */
+ @VisibleForTesting
+ public static File getWebViewTmpCrashDir(Context context) {
+ return new File(context.getCacheDir(), WEBVIEW_TMP_CRASH_DIR);
}
@Override

Powered by Google App Engine
This is Rietveld 408576698