summaryrefslogtreecommitdiffstats
path: root/chrome/browser/feedback/feedback_data.cc
diff options
context:
space:
mode:
authorkochi@chromium.org <kochi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-05 09:31:48 +0000
committerkochi@chromium.org <kochi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-05 09:31:48 +0000
commitfe990fd4e9f0c68b362239fdf9080c83bd138ce8 (patch)
tree99b51848ffa6ae395216b2120225813ea7077e62 /chrome/browser/feedback/feedback_data.cc
parentc5a53d831e281f10c8ab56ea991ca91bc286c6eb (diff)
downloadchromium_src-fe990fd4e9f0c68b362239fdf9080c83bd138ce8.zip
chromium_src-fe990fd4e9f0c68b362239fdf9080c83bd138ce8.tar.gz
chromium_src-fe990fd4e9f0c68b362239fdf9080c83bd138ce8.tar.bz2
Revert 215568 "Implement Feedback UI using the feedbackPrivate API."
> Implement Feedback UI using the feedbackPrivate API. > This CL implements the new feedback UI which is a component app built on the feedbackPrivate API. > > Owner reviews requested, > > estade@ > chrome/browser/ui/webui/ > content/browser/webui/ > ui/webui/ > > asargent@ > chrome/common/extensions/ > chrome/browser/extensions/ > > jamescook@ > chrome/browser/ui/ash/ > > battre@ > chrome/browser/profile_resetter/ > > jhawkins@ > chrome/browser/browser_resources.grd > > R=hirono@chromium.org, zork@chromium.org > BUG=253686 > TEST=Launch the UI, test sending various reports. > > Review URL: https://chromiumcodereview.appspot.com/20565006 TBR=rkc@chromium.org Review URL: https://codereview.chromium.org/21815004 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@215577 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/feedback/feedback_data.cc')
-rw-r--r--chrome/browser/feedback/feedback_data.cc98
1 files changed, 78 insertions, 20 deletions
diff --git a/chrome/browser/feedback/feedback_data.cc b/chrome/browser/feedback/feedback_data.cc
index 5609886..4b4c71f 100644
--- a/chrome/browser/feedback/feedback_data.cc
+++ b/chrome/browser/feedback/feedback_data.cc
@@ -21,15 +21,16 @@
using content::BrowserThread;
+#if defined(OS_CHROMEOS)
namespace {
const char kMultilineIndicatorString[] = "<multiline>\n";
const char kMultilineStartString[] = "---------- START ----------\n";
const char kMultilineEndString[] = "---------- END ----------\n\n";
-std::string LogsToString(feedback_util::SystemLogsMap* sys_info) {
+std::string LogsToString(chromeos::SystemLogsResponse* sys_info) {
std::string syslogs_string;
- for (feedback_util::SystemLogsMap::const_iterator it = sys_info->begin();
+ for (chromeos::SystemLogsResponse::const_iterator it = sys_info->begin();
it != sys_info->end(); ++it) {
std::string key = it->first;
std::string value = it->second;
@@ -50,53 +51,90 @@ std::string LogsToString(feedback_util::SystemLogsMap* sys_info) {
return syslogs_string;
}
-void ZipLogs(feedback_util::SystemLogsMap* sys_info,
+void ZipLogs(chromeos::SystemLogsResponse* sys_info,
std::string* compressed_logs) {
DCHECK(compressed_logs);
std::string logs_string = LogsToString(sys_info);
- if (!feedback_util::ZipString(logs_string, compressed_logs)) {
+ if (!FeedbackUtil::ZipString(logs_string, compressed_logs)) {
compressed_logs->clear();
}
}
} // namespace
+#endif // OS_CHROMEOS
FeedbackData::FeedbackData() : profile_(NULL),
- feedback_page_data_complete_(false),
- syslogs_compression_complete_(false) {
+ feedback_page_data_complete_(false) {
+#if defined(OS_CHROMEOS)
+ sys_info_.reset(NULL);
+ attached_filedata_.reset(NULL);
+ send_sys_info_ = true;
+ read_attached_file_complete_ = false;
+ syslogs_collection_complete_ = false;
+#endif
}
FeedbackData::~FeedbackData() {
}
-bool FeedbackData::IsDataComplete() {
- return (syslogs_compression_complete_ || !sys_info_.get()) &&
+bool FeedbackData::DataCollectionComplete() {
+#if defined(OS_CHROMEOS)
+ return (syslogs_collection_complete_ || !send_sys_info_) &&
+ read_attached_file_complete_ &&
feedback_page_data_complete_;
+#else
+ return feedback_page_data_complete_;
+#endif
}
void FeedbackData::SendReport() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- if (IsDataComplete())
- feedback_util::SendReport(this);
+ if (DataCollectionComplete())
+ FeedbackUtil::SendReport(this);
}
-void FeedbackData::OnFeedbackPageDataComplete() {
+void FeedbackData::FeedbackPageDataComplete() {
+#if defined(OS_CHROMEOS)
+ if (attached_filename_.size() &&
+ base::FilePath::IsSeparator(attached_filename_[0]) &&
+ !attached_filedata_.get()) {
+ // Read the attached file and then send this report. The allocated string
+ // will be freed in FeedbackUtil::SendReport.
+ attached_filedata_.reset(new std::string);
+
+ base::FilePath root =
+ ash::Shell::GetInstance()->delegate()->
+ GetCurrentBrowserContext()->GetPath();
+ base::FilePath filepath = root.Append(attached_filename_.substr(1));
+ attached_filename_ = filepath.BaseName().value();
+
+ // Read the file into file_data, then call send report again with the
+ // stripped filename and file data (which will skip this code path).
+ content::BrowserThread::PostTaskAndReply(
+ content::BrowserThread::FILE, FROM_HERE,
+ base::Bind(&FeedbackData::ReadAttachedFile, this, filepath),
+ base::Bind(&FeedbackData::ReadFileComplete, this));
+ } else {
+ read_attached_file_complete_ = true;
+ }
+#endif
feedback_page_data_complete_ = true;
SendReport();
}
+#if defined(OS_CHROMEOS)
void FeedbackData::set_sys_info(
- scoped_ptr<feedback_util::SystemLogsMap> sys_info) {
+ scoped_ptr<chromeos::SystemLogsResponse> sys_info) {
if (sys_info.get())
CompressSyslogs(sys_info.Pass());
}
void FeedbackData::CompressSyslogs(
- scoped_ptr<feedback_util::SystemLogsMap> sys_info) {
+ scoped_ptr<chromeos::SystemLogsResponse> sys_info) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
// We get the pointer first since base::Passed will nullify the scoper, hence
// it's not safe to use <scoper>.get() as a parameter to PostTaskAndReply.
- feedback_util::SystemLogsMap* sys_info_ptr = sys_info.get();
+ chromeos::SystemLogsResponse* sys_info_ptr = sys_info.get();
std::string* compressed_logs_ptr = new std::string;
scoped_ptr<std::string> compressed_logs(compressed_logs_ptr);
BrowserThread::PostBlockingPoolTaskAndReply(
@@ -104,20 +142,40 @@ void FeedbackData::CompressSyslogs(
base::Bind(&ZipLogs,
sys_info_ptr,
compressed_logs_ptr),
- base::Bind(&FeedbackData::OnCompressLogsComplete,
+ base::Bind(&FeedbackData::SyslogsComplete,
this,
base::Passed(&sys_info),
base::Passed(&compressed_logs)));
}
-void FeedbackData::OnCompressLogsComplete(
- scoped_ptr<feedback_util::SystemLogsMap> sys_info,
+void FeedbackData::SyslogsComplete(
+ scoped_ptr<chromeos::SystemLogsResponse> sys_info,
scoped_ptr<std::string> compressed_logs) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- sys_info_ = sys_info.Pass();
- compressed_logs_ = compressed_logs.Pass();
- syslogs_compression_complete_ = true;
+ if (send_sys_info_) {
+ sys_info_ = sys_info.Pass();
+ compressed_logs_ = compressed_logs.Pass();
+ syslogs_collection_complete_ = true;
+ SendReport();
+ }
+}
+void FeedbackData::ReadFileComplete() {
+ read_attached_file_complete_ = true;
SendReport();
}
+
+void FeedbackData::StartSyslogsCollection() {
+ chromeos::SystemLogsFetcher* fetcher = new chromeos::SystemLogsFetcher();
+ fetcher->Fetch(base::Bind(&FeedbackData::CompressSyslogs, this));
+}
+
+// private
+void FeedbackData::ReadAttachedFile(const base::FilePath& from) {
+ if (!file_util::ReadFileToString(from, attached_filedata_.get())) {
+ if (attached_filedata_.get())
+ attached_filedata_->clear();
+ }
+}
+#endif