Chromium Code Reviews| Index: chrome/browser/crash_upload_list.cc |
| diff --git a/chrome/browser/crash_upload_list.cc b/chrome/browser/crash_upload_list.cc |
| index d10980f6a94c1f7994398596b1ca47969f6eb843..c1f51cd0367cc3d6ab026167056e4b355e16e80f 100644 |
| --- a/chrome/browser/crash_upload_list.cc |
| +++ b/chrome/browser/crash_upload_list.cc |
| @@ -9,6 +9,7 @@ |
| #include "base/file_util.h" |
| #include "base/string_number_conversions.h" |
| #include "base/string_split.h" |
| +#include "chrome/browser/crash_upload_list_win.h" |
| #include "chrome/common/chrome_paths.h" |
| #include "content/browser/browser_thread.h" |
| @@ -17,6 +18,15 @@ CrashUploadList::CrashInfo::CrashInfo(const std::string& c, const base::Time& t) |
| CrashUploadList::CrashInfo::~CrashInfo() {} |
| +// static |
| +CrashUploadList* CrashUploadList::Create(Delegate* delegate) { |
| +#if defined(OS_WIN) |
| + return new CrashUploadListWin(delegate); |
| +#else |
| + return new CrashUploadList(delegate); |
| +#endif |
| +} |
| + |
| CrashUploadList::CrashUploadList(Delegate* delegate) : delegate_(delegate) {} |
| CrashUploadList::~CrashUploadList() {} |
| @@ -40,6 +50,10 @@ void CrashUploadList::LoadUploadLog() { |
| file_util::ReadFileToString(upload_log_path, &contents); |
| base::SplitStringAlongWhitespace(contents, &log_entries_); |
| } |
| + InformDelegateOfCompletionAsynchronously(); |
|
stuartmorgan
2011/03/29 21:19:57
It would be cleaner for the subclass to make a new
Alexei Svitkine (slow)
2011/03/30 15:36:40
Done.
|
| +} |
| + |
| +void CrashUploadList::InformDelegateOfCompletionAsynchronously() { |
| BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
| NewRunnableMethod(this, &CrashUploadList::InformDelegateOfCompletion)); |
| } |
| @@ -52,8 +66,10 @@ void CrashUploadList::InformDelegateOfCompletion() { |
| void CrashUploadList::GetUploadedCrashes(unsigned int max_count, |
| std::vector<CrashInfo>* crashes) { |
| + unsigned int count = 0; |
| std::vector<std::string>::reverse_iterator i; |
| - for (i = log_entries_.rbegin(); i != log_entries_.rend(); ++i) { |
| + for (i = log_entries_.rbegin(); i != log_entries_.rend() && |
| + count != max_count; ++i) { |
|
stuartmorgan
2011/03/29 21:19:57
Whoops :( Good catch.
|
| std::vector<std::string> components; |
| base::SplitString(*i, ',', &components); |
| // Skip any blank (or corrupted) lines. |
| @@ -64,5 +80,10 @@ void CrashUploadList::GetUploadedCrashes(unsigned int max_count, |
| continue; |
| CrashInfo info(components[1], base::Time::FromDoubleT(seconds_since_epoch)); |
| crashes->push_back(info); |
| + ++count; |
| } |
| } |
| + |
| +std::vector<std::string>& CrashUploadList::log_entries() { |
| + return log_entries_; |
| +} |