| OLD | NEW |
| (Empty) |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | |
| 2 // Use of this source code is governed by a BSD-style license that can be | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 package org.chromium.chrome.browser.crash; | |
| 6 | |
| 7 import android.app.IntentService; | |
| 8 import android.content.Context; | |
| 9 import android.content.Intent; | |
| 10 | |
| 11 import org.chromium.base.Log; | |
| 12 import org.chromium.components.minidump_uploader.CrashFileManager; | |
| 13 | |
| 14 import java.io.File; | |
| 15 import java.util.concurrent.Callable; | |
| 16 | |
| 17 /** | |
| 18 * Prepares the minidump for first upload attempt by combining both the | |
| 19 * minidump file and the logcat file. | |
| 20 */ | |
| 21 public class MinidumpPreparationService extends IntentService { | |
| 22 private static final String TAG = "DumpPrepService"; | |
| 23 private static final String LOGCAT_FILE_KEY = "logcat"; | |
| 24 private static final String MINIDUMP_FILE_KEY = "minidump"; | |
| 25 private static final String REDIRECT_INTENT_KEY = "redirect_intent"; | |
| 26 | |
| 27 public static Intent createMinidumpPreparationIntent( | |
| 28 Context context, File minidumpFile, File logcatFile, Intent redirect
Intent) { | |
| 29 Intent intent = new Intent(context, MinidumpPreparationService.class); | |
| 30 if (minidumpFile != null) { | |
| 31 intent.putExtra(MINIDUMP_FILE_KEY, minidumpFile.getName()); | |
| 32 } | |
| 33 if (logcatFile != null) { | |
| 34 intent.putExtra(LOGCAT_FILE_KEY, logcatFile.getName()); | |
| 35 } | |
| 36 if (redirectIntent != null) { | |
| 37 intent.putExtra(REDIRECT_INTENT_KEY, redirectIntent); | |
| 38 } | |
| 39 return intent; | |
| 40 } | |
| 41 | |
| 42 public MinidumpPreparationService() { | |
| 43 super(TAG); | |
| 44 setIntentRedelivery(true); | |
| 45 } | |
| 46 | |
| 47 private Callable<Boolean> createMinidumpPreparationCallable(Context context,
Intent intent) { | |
| 48 String minidumpFilePath = intent.getStringExtra(MINIDUMP_FILE_KEY); | |
| 49 String logcatFilePath = intent.getStringExtra(LOGCAT_FILE_KEY); | |
| 50 CrashFileManager fileManager = new CrashFileManager(context.getCacheDir(
)); | |
| 51 File minidumpFile = fileManager.getCrashFile(minidumpFilePath); | |
| 52 File logcatFile = fileManager.getCrashFile(logcatFilePath); | |
| 53 Intent redirectIntent = intent.getParcelableExtra(REDIRECT_INTENT_KEY); | |
| 54 return new MinidumpPreparationCallable( | |
| 55 getApplicationContext(), minidumpFile, logcatFile, redirectInten
t); | |
| 56 } | |
| 57 | |
| 58 private void handleMinidumpPreparationRequest(Intent intent) { | |
| 59 try { | |
| 60 if (!createMinidumpPreparationCallable(getApplicationContext(), inte
nt).call()) { | |
| 61 Log.w(TAG, "Fail to prepare minidump with logcat!"); | |
| 62 } | |
| 63 } catch (Exception e) { | |
| 64 Log.w(TAG, e.toString()); | |
| 65 } | |
| 66 } | |
| 67 | |
| 68 @Override | |
| 69 protected void onHandleIntent(Intent intent) { | |
| 70 handleMinidumpPreparationRequest(intent); | |
| 71 } | |
| 72 } | |
| OLD | NEW |