diff options
author | kochi@chromium.org <kochi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-05 09:31:48 +0000 |
---|---|---|
committer | kochi@chromium.org <kochi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-08-05 09:31:48 +0000 |
commit | fe990fd4e9f0c68b362239fdf9080c83bd138ce8 (patch) | |
tree | 99b51848ffa6ae395216b2120225813ea7077e62 /chrome/browser/feedback/feedback_data.cc | |
parent | c5a53d831e281f10c8ab56ea991ca91bc286c6eb (diff) | |
download | chromium_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.cc | 98 |
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 |