Chromium Code Reviews| Index: chrome/browser/media/webrtc_logging_handler_host.cc |
| =================================================================== |
| --- chrome/browser/media/webrtc_logging_handler_host.cc (revision 273292) |
| +++ chrome/browser/media/webrtc_logging_handler_host.cc (working copy) |
| @@ -7,24 +7,18 @@ |
| #include <string> |
| #include "base/bind.h" |
| -#include "base/command_line.h" |
| #include "base/cpu.h" |
| #include "base/file_util.h" |
| #include "base/logging.h" |
| -#include "base/prefs/pref_service.h" |
| #include "base/strings/string_number_conversions.h" |
| #include "base/sys_info.h" |
| #include "base/time/time.h" |
| #include "chrome/browser/browser_process.h" |
| -#include "chrome/browser/chromeos/settings/cros_settings.h" |
| #include "chrome/browser/media/webrtc_log_list.h" |
| #include "chrome/browser/media/webrtc_log_uploader.h" |
| #include "chrome/browser/profiles/profile.h" |
| -#include "chrome/common/chrome_switches.h" |
| #include "chrome/common/media/webrtc_logging_messages.h" |
| #include "chrome/common/partial_circular_buffer.h" |
| -#include "chrome/common/pref_names.h" |
| -#include "chromeos/settings/cros_settings_names.h" |
| #include "content/public/browser/browser_thread.h" |
| #include "content/public/browser/content_browser_client.h" |
| #include "content/public/browser/gpu_data_manager.h" |
| @@ -42,6 +36,8 @@ |
| #endif |
| #if defined(OS_CHROMEOS) |
| +#include "chrome/browser/chromeos/settings/cros_settings.h" |
| +#include "chromeos/settings/cros_settings_names.h" |
| #include "chromeos/system/statistics_provider.h" |
| #endif |
| @@ -138,9 +134,9 @@ |
| error_message = "Meta data must be set before stop or upload."; |
| } |
| bool success = error_message.empty(); |
| - content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE, |
| - base::Bind(callback, success, |
| - error_message)); |
| + BrowserThread::PostTask(BrowserThread::UI, |
| + FROM_HERE, |
| + base::Bind(callback, success, error_message)); |
| } |
| void WebRtcLoggingHandlerHost::StartLogging( |
| @@ -178,15 +174,15 @@ |
| if (logging_state_ != STOPPED) { |
| if (!callback.is_null()) { |
| - content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE, |
| + BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
| base::Bind(callback, false, "", kLogNotStoppedOrNoLogOpen)); |
| } |
| return; |
| } |
| upload_callback_ = callback; |
| logging_state_ = UPLOADING; |
| - content::BrowserThread::PostTaskAndReplyWithResult( |
| - content::BrowserThread::FILE, |
| + base::PostTaskAndReplyWithResult( |
| + BrowserThread::GetBlockingPool(), |
| FROM_HERE, |
| base::Bind(&WebRtcLoggingHandlerHost::GetLogDirectoryAndEnsureExists, |
| this), |
| @@ -245,8 +241,8 @@ |
| if (upload_log_on_render_close_) { |
| logging_state_ = UPLOADING; |
| logging_started_time_ = base::Time(); |
| - content::BrowserThread::PostTaskAndReplyWithResult( |
| - content::BrowserThread::FILE, |
| + base::PostTaskAndReplyWithResult( |
| + BrowserThread::GetBlockingPool(), |
| FROM_HERE, |
| base::Bind(&WebRtcLoggingHandlerHost::GetLogDirectoryAndEnsureExists, |
| this), |
| @@ -255,7 +251,7 @@ |
| g_browser_process->webrtc_log_uploader()->LoggingStoppedDontUpload(); |
| } |
| } |
| - content::BrowserMessageFilter::OnChannelClosing(); |
| + BrowserMessageFilter::OnChannelClosing(); |
| } |
| void WebRtcLoggingHandlerHost::OnDestruct() const { |
| @@ -330,23 +326,36 @@ |
| kWebRtcLogSize / 2, |
| false)); |
| - BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, base::Bind( |
| - &WebRtcLoggingHandlerHost::LogInitialInfoOnFileThread, this)); |
| + BrowserThread::PostBlockingPoolTask( |
| + FROM_HERE, |
| + base::Bind(&WebRtcLoggingHandlerHost::LogInitialInfoOnBlockingPool, |
| + this)); |
| } |
| -void WebRtcLoggingHandlerHost::LogInitialInfoOnFileThread() { |
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
| +void WebRtcLoggingHandlerHost::LogInitialInfoOnBlockingPool() { |
| + DCHECK(BrowserThread::GetBlockingPool()->RunsTasksOnCurrentThread()); |
| net::NetworkInterfaceList network_list; |
| net::GetNetworkList(&network_list, |
| net::EXCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES); |
| - BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, base::Bind( |
| - &WebRtcLoggingHandlerHost::LogInitialInfoOnIOThread, this, network_list)); |
| + std::string linux_distro; |
| +#if defined(OS_LINUX) |
| + linux_distro = base::GetLinuxDistro(); |
| +#endif |
| + |
| + BrowserThread::PostTask( |
| + BrowserThread::IO, |
| + FROM_HERE, |
| + base::Bind(&WebRtcLoggingHandlerHost::LogInitialInfoOnIOThread, |
| + this, |
| + network_list, |
| + linux_distro)); |
| } |
| void WebRtcLoggingHandlerHost::LogInitialInfoOnIOThread( |
| - const net::NetworkInterfaceList& network_list) { |
| + const net::NetworkInterfaceList& network_list, |
| + const std::string& linux_distro) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| // Log start time (current time). We don't use base/i18n/time_formatting.h |
| @@ -369,7 +378,7 @@ |
| base::SysInfo::OperatingSystemVersion() + " " + |
| base::SysInfo::OperatingSystemArchitecture()); |
| #if defined(OS_LINUX) |
| - LogToCircularBuffer("Linux distribution: " + base::GetLinuxDistro()); |
| + LogToCircularBuffer("Linux distribution: " + linux_distro); |
| #endif |
| // CPU |
| @@ -440,7 +449,7 @@ |
| } |
| base::FilePath WebRtcLoggingHandlerHost::GetLogDirectoryAndEnsureExists() { |
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
| + DCHECK(BrowserThread::GetBlockingPool()->RunsTasksOnCurrentThread()); |
| base::FilePath log_dir_path = |
| WebRtcLogList::GetWebRtcLogDirectoryForProfile(profile_->GetPath()); |
| base::File::Error error; |
| @@ -462,13 +471,14 @@ |
| upload_done_data.host = this; |
| upload_callback_.Reset(); |
| - BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, base::Bind( |
| - &WebRtcLogUploader::LoggingStoppedDoUpload, |
| - base::Unretained(g_browser_process->webrtc_log_uploader()), |
| - Passed(&log_buffer_), |
| - kWebRtcLogSize, |
| - meta_data_, |
| - upload_done_data)); |
| + BrowserThread::PostBlockingPoolTask( |
| + FROM_HERE, |
| + base::Bind(&WebRtcLogUploader::LoggingStoppedDoUpload, |
|
Henrik Grunell
2014/05/29 17:46:29
WebRtcLogUploader needs to be called on the file t
Henrik Grunell
2014/05/30 06:57:40
Doesn't this need to be a sequenced task to ensure
|
| + base::Unretained(g_browser_process->webrtc_log_uploader()), |
| + Passed(&log_buffer_), |
| + kWebRtcLogSize, |
| + meta_data_, |
| + upload_done_data)); |
| meta_data_.clear(); |
| circular_buffer_.reset(); |
| @@ -478,9 +488,8 @@ |
| GenericDoneCallback* callback, bool success, |
| const std::string& error_message) { |
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
| - DCHECK(!(*callback).is_null()); |
| - content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE, |
| - base::Bind(*callback, success, |
| - error_message)); |
| - (*callback).Reset(); |
| + DCHECK(!callback->is_null()); |
| + BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
| + base::Bind(*callback, success, error_message)); |
| + callback->Reset(); |
| } |