Index: chrome/browser/crash_upload_list/crash_upload_list_android.cc |
diff --git a/chrome/browser/crash_upload_list/crash_upload_list_android.cc b/chrome/browser/crash_upload_list/crash_upload_list_android.cc |
index ef16c7efcf98efe0939dc006a69e1974b686433b..dbc89d746414b9bb60ef2fe6f78a99981ec318a7 100644 |
--- a/chrome/browser/crash_upload_list/crash_upload_list_android.cc |
+++ b/chrome/browser/crash_upload_list/crash_upload_list_android.cc |
@@ -6,10 +6,14 @@ |
#include <utility> |
+#include "base/android/context_utils.h" |
+#include "base/android/jni_android.h" |
+#include "base/android/jni_string.h" |
#include "base/files/file.h" |
#include "base/files/file_enumerator.h" |
#include "base/files/file_util.h" |
#include "base/task_runner.h" |
+#include "jni/MinidumpUploadService_jni.h" |
#include "ui/base/text/bytes_formatting.h" |
CrashUploadListAndroid::CrashUploadListAndroid( |
@@ -28,17 +32,37 @@ void CrashUploadListAndroid::LoadUploadList( |
LoadUnsuccessfulUploadList(uploads); |
} |
+void CrashUploadListAndroid::RequestSingleCrashUpload( |
+ const std::string& local_id) { |
+ JNIEnv* env = base::android::AttachCurrentThread(); |
+ const base::android::JavaRef<jobject>& context = |
+ base::android::GetApplicationContext(); |
+ base::android::ScopedJavaLocalRef<jstring> j_local_id = |
+ base::android::ConvertUTF8ToJavaString(env, local_id); |
+ Java_MinidumpUploadService_tryUploadCrashDumpWithLocalId(env, context, |
+ j_local_id); |
+} |
+ |
void CrashUploadListAndroid::LoadUnsuccessfulUploadList( |
std::vector<UploadInfo>* uploads) { |
- const char unsuccessful_uploads[] = ".dmp"; |
+ const char pending_uploads[] = ".dmp"; |
const char skipped_uploads[] = ".skipped"; |
+ const char manually_forced_uploads[] = ".forced"; |
base::FileEnumerator files(upload_log_path().DirName(), false, |
base::FileEnumerator::FILES); |
for (base::FilePath file = files.Next(); !file.empty(); file = files.Next()) { |
- if (file.value().find(unsuccessful_uploads) == std::string::npos && |
- file.value().find(skipped_uploads) == std::string::npos) |
+ UploadList::UploadInfo::State upload_state; |
+ if (file.value().find(manually_forced_uploads) != std::string::npos) { |
+ upload_state = UploadList::UploadInfo::State::Pending_UserRequested; |
+ } else if (file.value().find(pending_uploads) != std::string::npos) { |
+ upload_state = UploadList::UploadInfo::State::Pending; |
+ } else if (file.value().find(skipped_uploads) != std::string::npos) { |
+ upload_state = UploadList::UploadInfo::State::NotUploaded; |
+ } else { |
+ // The |file| is something other than a minidump file, e.g. a logcat file. |
continue; |
+ } |
base::File::Info info; |
if (!base::GetFileInfo(file, &info)) |
@@ -62,8 +86,7 @@ void CrashUploadListAndroid::LoadUnsuccessfulUploadList( |
continue; |
id = id.substr(pos + 1); |
- UploadList::UploadInfo upload(id, info.creation_time, |
- UploadList::UploadInfo::State::NotUploaded, |
+ UploadList::UploadInfo upload(id, info.creation_time, upload_state, |
ui::FormatBytes(file_size)); |
uploads->push_back(upload); |
} |