| Index: chrome/browser/chromeos/system_logs/debug_daemon_log_source.cc
|
| diff --git a/chrome/browser/chromeos/system_logs/debug_daemon_log_source.cc b/chrome/browser/chromeos/system_logs/debug_daemon_log_source.cc
|
| index d642fbd1dc4ca1be4434fdbd56cfc30f14e93228..22f4ea852df2d55f956f4af0fb18682bea5944b8 100644
|
| --- a/chrome/browser/chromeos/system_logs/debug_daemon_log_source.cc
|
| +++ b/chrome/browser/chromeos/system_logs/debug_daemon_log_source.cc
|
| @@ -6,6 +6,7 @@
|
|
|
| #include "base/bind.h"
|
| #include "base/bind_helpers.h"
|
| +#include "base/file_util.h"
|
| #include "base/logging.h"
|
| #include "base/memory/scoped_ptr.h"
|
| #include "base/memory/weak_ptr.h"
|
| @@ -22,6 +23,7 @@ const char kNotAvailable[] = "<not available>";
|
| const char kRoutesKeyName[] = "routes";
|
| const char kNetworkStatusKeyName[] = "network-status";
|
| const char kModemStatusKeyName[] = "modem-status";
|
| +const char kUserLogFileKeyName[] = "user_log_files";
|
| } // namespace
|
|
|
| namespace chromeos {
|
| @@ -63,6 +65,9 @@ void DebugDaemonLogSource::Fetch(const SysLogsSourceCallback& callback) {
|
| client->GetAllLogs(base::Bind(&DebugDaemonLogSource::OnGetLogs,
|
| weak_ptr_factory_.GetWeakPtr()));
|
| ++num_pending_requests_;
|
| + client->GetUserLogFiles(base::Bind(&DebugDaemonLogSource::OnGetUserLogFiles,
|
| + weak_ptr_factory_.GetWeakPtr()));
|
| + ++num_pending_requests_;
|
| }
|
|
|
| void DebugDaemonLogSource::OnGetRoutes(bool succeeded,
|
| @@ -99,8 +104,7 @@ void DebugDaemonLogSource::OnGetModemStatus(bool succeeded,
|
| }
|
|
|
| void DebugDaemonLogSource::OnGetLogs(bool /* succeeded */,
|
| - const std::map<std::string,
|
| - std::string>& logs) {
|
| + const KeyValueMap& logs) {
|
| DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
|
|
|
| // We ignore 'succeeded' for this callback - we want to display as much of the
|
| @@ -110,6 +114,39 @@ void DebugDaemonLogSource::OnGetLogs(bool /* succeeded */,
|
| RequestCompleted();
|
| }
|
|
|
| +void DebugDaemonLogSource::OnGetUserLogFiles(
|
| + bool succeeded,
|
| + const KeyValueMap& user_log_files) {
|
| + DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
|
| + if (succeeded) {
|
| + content::BrowserThread::PostBlockingPoolTaskAndReply(
|
| + FROM_HERE,
|
| + base::Bind(
|
| + &DebugDaemonLogSource::ReadUserLogFiles,
|
| + weak_ptr_factory_.GetWeakPtr(),
|
| + user_log_files),
|
| + base::Bind(&DebugDaemonLogSource::RequestCompleted,
|
| + weak_ptr_factory_.GetWeakPtr()));
|
| + } else {
|
| + (*response_)[kUserLogFileKeyName] = kNotAvailable;
|
| + RequestCompleted();
|
| + }
|
| +}
|
| +
|
| +void DebugDaemonLogSource::ReadUserLogFiles(const KeyValueMap& user_log_files) {
|
| + for (KeyValueMap::const_iterator it = user_log_files.begin();
|
| + it != user_log_files.end();
|
| + ++it) {
|
| + std::string value;
|
| + bool read_success = file_util::ReadFileToString(
|
| + FilePath(it->second), &value);
|
| + if (read_success && !value.empty())
|
| + (*response_)[it->first] = value;
|
| + else
|
| + (*response_)[it->second] = kNotAvailable;
|
| + }
|
| +}
|
| +
|
| void DebugDaemonLogSource::RequestCompleted() {
|
| DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::UI));
|
| DCHECK(!callback_.is_null());
|
|
|