Chromium Code Reviews| 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 f360b22878ef6a26c008e3d3582fce33f38e58f4..31e70142c77c08113f0f808a800bcec6f8851e98 100644 |
| --- a/chrome/browser/crash_upload_list/crash_upload_list_android.cc |
| +++ b/chrome/browser/crash_upload_list/crash_upload_list_android.cc |
| @@ -4,10 +4,14 @@ |
| #include "chrome/browser/crash_upload_list/crash_upload_list_android.h" |
| +#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/threading/sequenced_worker_pool.h" |
| +#include "jni/MinidumpUploadService_jni.h" |
| CrashUploadListAndroid::CrashUploadListAndroid( |
| Delegate* delegate, |
| @@ -25,17 +29,35 @@ 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 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) |
| + bool is_forced; |
| + if (file.value().find(manually_forced_uploads) != std::string::npos) { |
|
Mark Mentovai
2016/09/15 00:02:30
base::EndsWith() from base/strings/string_util.h?
Ilya Sherman
2016/09/21 22:50:02
Acknowledged.
|
| + is_forced = true; |
| + } else if (file.value().find(unsuccessful_uploads) != std::string::npos || |
| + file.value().find(skipped_uploads) != std::string::npos) { |
| + is_forced = false; |
| + } else { |
| continue; |
|
Mark Mentovai
2016/09/15 00:02:29
What are these, no upload attempted yet? I guess t
Ilya Sherman
2016/09/21 22:50:02
There's various other junk in the directory, such
|
| + } |
| base::File::Info info; |
| if (!base::GetFileInfo(file, &info)) |
| @@ -55,9 +77,11 @@ void CrashUploadListAndroid::LoadUnsuccessfulUploadList( |
| continue; |
| id = id.substr(pos + 1); |
| + UploadList::UploadInfo::State upload_state = |
| + is_forced ? UploadList::UploadInfo::State::Pending_UserRequested |
| + : UploadList::UploadInfo::State::NotUploaded; |
| UploadList::UploadInfo upload(std::string(), base::Time(), id, |
| - info.creation_time, |
| - UploadList::UploadInfo::State::NotUploaded); |
| + info.creation_time, upload_state); |
| uploads->push_back(upload); |
| } |
| } |