summaryrefslogtreecommitdiffstats
path: root/chrome/browser/crash_upload_list.cc
diff options
context:
space:
mode:
authorgrunell@chromium.org <grunell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-24 10:23:13 +0000
committergrunell@chromium.org <grunell@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-06-24 10:23:13 +0000
commit9e04d686c95373ed4bab59fd9eb9c73b169ba959 (patch)
treebff5605edc53a1c163869add642e6c90b461b118 /chrome/browser/crash_upload_list.cc
parent53bc435c59da88e1d311ca1695a70153a59fb4dc (diff)
downloadchromium_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.cc98
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_;
-}