diff options
author | grunell@chromium.org <grunell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-24 10:23:13 +0000 |
---|---|---|
committer | grunell@chromium.org <grunell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-24 10:23:13 +0000 |
commit | 9e04d686c95373ed4bab59fd9eb9c73b169ba959 (patch) | |
tree | bff5605edc53a1c163869add642e6c90b461b118 /chrome/browser/crash_upload_list.cc | |
parent | 53bc435c59da88e1d311ca1695a70153a59fb4dc (diff) | |
download | chromium_src-9e04d686c95373ed4bab59fd9eb9c73b169ba959.zip chromium_src-9e04d686c95373ed4bab59fd9eb9c73b169ba959.tar.gz chromium_src-9e04d686c95373ed4bab59fd9eb9c73b169ba959.tar.bz2 |
Refactoring CrashUploadList to enable re-use.
Review URL: https://chromiumcodereview.appspot.com/17150003
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@208188 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/crash_upload_list.cc')
-rw-r--r-- | chrome/browser/crash_upload_list.cc | 98 |
1 files changed, 11 insertions, 87 deletions
diff --git a/chrome/browser/crash_upload_list.cc b/chrome/browser/crash_upload_list.cc index d5463ac..20dd2d8 100644 --- a/chrome/browser/crash_upload_list.cc +++ b/chrome/browser/crash_upload_list.cc @@ -4,107 +4,31 @@ #include "chrome/browser/crash_upload_list.h" -#include <algorithm> -#include <iterator> - -#include "base/bind.h" -#include "base/file_util.h" #include "base/files/file_path.h" #include "base/path_service.h" -#include "base/strings/string_number_conversions.h" -#include "base/strings/string_split.h" #if defined(OS_WIN) #include "chrome/browser/crash_upload_list_win.h" #endif #include "components/breakpad/common/breakpad_paths.h" -#include "content/public/browser/browser_thread.h" - -using content::BrowserThread; -CrashUploadList::CrashInfo::CrashInfo(const std::string& c, const base::Time& t) - : crash_id(c), crash_time(t) {} - -CrashUploadList::CrashInfo::~CrashInfo() {} +// static +const char* CrashUploadList::kReporterLogFilename = "uploads.log"; // static CrashUploadList* CrashUploadList::Create(Delegate* delegate) { + base::FilePath crash_dir_path; + PathService::Get(breakpad::DIR_CRASH_DUMPS, &crash_dir_path); + base::FilePath upload_log_path = + crash_dir_path.AppendASCII(kReporterLogFilename); #if defined(OS_WIN) - return new CrashUploadListWin(delegate); + return new CrashUploadListWin(delegate, upload_log_path); #else - return new CrashUploadList(delegate); + return new CrashUploadList(delegate, upload_log_path); #endif } -// static -const char* CrashUploadList::kReporterLogFilename = "uploads.log"; - -CrashUploadList::CrashUploadList(Delegate* delegate) : delegate_(delegate) {} +CrashUploadList::CrashUploadList(Delegate* delegate, + const base::FilePath& upload_log_path) + : UploadList(delegate, upload_log_path) {} CrashUploadList::~CrashUploadList() {} - -void CrashUploadList::LoadCrashListAsynchronously() { - BrowserThread::PostBlockingPoolTask( - FROM_HERE, - base::Bind(&CrashUploadList::LoadCrashListAndInformDelegateOfCompletion, - this)); -} - -void CrashUploadList::ClearDelegate() { - delegate_ = NULL; -} - - -void CrashUploadList::LoadCrashListAndInformDelegateOfCompletion() { - LoadCrashList(); - BrowserThread::PostTask( - BrowserThread::UI, - FROM_HERE, - base::Bind(&CrashUploadList::InformDelegateOfCompletion, this)); -} - -void CrashUploadList::LoadCrashList() { - base::FilePath crash_dir_path; - PathService::Get(breakpad::DIR_CRASH_DUMPS, &crash_dir_path); - base::FilePath upload_log_path = crash_dir_path.AppendASCII("uploads.log"); - if (file_util::PathExists(upload_log_path)) { - std::string contents; - file_util::ReadFileToString(upload_log_path, &contents); - std::vector<std::string> log_entries; - base::SplitStringAlongWhitespace(contents, &log_entries); - ParseLogEntries(log_entries); - } -} - -void CrashUploadList::ParseLogEntries( - const std::vector<std::string>& log_entries) { - std::vector<std::string>::const_reverse_iterator i; - for (i = log_entries.rbegin(); i != log_entries.rend(); ++i) { - std::vector<std::string> components; - base::SplitString(*i, ',', &components); - // Skip any blank (or corrupted) lines. - if (components.size() != 2) - continue; - double seconds_since_epoch; - if (!base::StringToDouble(components[0], &seconds_since_epoch)) - continue; - CrashInfo info(components[1], base::Time::FromDoubleT(seconds_since_epoch)); - crashes_.push_back(info); - } -} - -void CrashUploadList::InformDelegateOfCompletion() { - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); - if (delegate_) - delegate_->OnCrashListAvailable(); -} - -void CrashUploadList::GetUploadedCrashes(unsigned int max_count, - std::vector<CrashInfo>* crashes) { - std::copy(crashes_.begin(), - crashes_.begin() + std::min<size_t>(crashes_.size(), max_count), - std::back_inserter(*crashes)); -} - -std::vector<CrashUploadList::CrashInfo>& CrashUploadList::crashes() { - return crashes_; -} |