Commit 4094b25a authored by Henrik Grunell's avatar Henrik Grunell Committed by Commit Bot

Store BrowserContext path instead of the BrowserContext itself in WebRtcLoggingHandlerHost.

WebRtcLoggingHandlerHost can be alive after the RenderProcessHost and the BrowserContext goes away and we must not access it then. It's only used for getting the file path so storing that instead.

Bug: 810751
Change-Id: I748b72c6ea4a2cffa756ddea81d95a727c5ce987
Reviewed-on: https://chromium-review.googlesource.com/913348Reviewed-by: default avatarTommi <tommi@chromium.org>
Commit-Queue: Henrik Grunell <grunell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#545818}
parent 2dc6089a
...@@ -41,13 +41,13 @@ WebRtcLoggingHandlerHost::WebRtcLoggingHandlerHost( ...@@ -41,13 +41,13 @@ WebRtcLoggingHandlerHost::WebRtcLoggingHandlerHost(
WebRtcLogUploader* log_uploader) WebRtcLogUploader* log_uploader)
: BrowserMessageFilter(WebRtcLoggingMsgStart), : BrowserMessageFilter(WebRtcLoggingMsgStart),
render_process_id_(render_process_id), render_process_id_(render_process_id),
browser_context_(browser_context), browser_context_directory_path_(browser_context->GetPath()),
upload_log_on_render_close_(false), upload_log_on_render_close_(false),
text_log_handler_(new WebRtcTextLogHandler(render_process_id)), text_log_handler_(new WebRtcTextLogHandler(render_process_id)),
rtp_dump_handler_(), rtp_dump_handler_(),
stop_rtp_dump_callback_(), stop_rtp_dump_callback_(),
log_uploader_(log_uploader) { log_uploader_(log_uploader) {
DCHECK(browser_context_); DCHECK(!browser_context_directory_path_.empty());
DCHECK(log_uploader_); DCHECK(log_uploader_);
} }
...@@ -422,9 +422,14 @@ void WebRtcLoggingHandlerHost::OnLoggingStoppedInRenderer() { ...@@ -422,9 +422,14 @@ void WebRtcLoggingHandlerHost::OnLoggingStoppedInRenderer() {
base::FilePath WebRtcLoggingHandlerHost::GetLogDirectoryAndEnsureExists() { base::FilePath WebRtcLoggingHandlerHost::GetLogDirectoryAndEnsureExists() {
DCHECK(log_uploader_->background_task_runner()->RunsTasksInCurrentSequence()); DCHECK(log_uploader_->background_task_runner()->RunsTasksInCurrentSequence());
// Since we can be alive after the RenderProcessHost and the BrowserContext
// (profile) have gone away, we could create the log directory here after a
// profile has been deleted and removed from disk. If that happens it will be
// cleaned up (at a higher level) the next browser restart.
base::FilePath log_dir_path = base::FilePath log_dir_path =
webrtc_logging::LogList::GetWebRtcLogDirectoryForBrowserContextPath( webrtc_logging::LogList::GetWebRtcLogDirectoryForBrowserContextPath(
browser_context_->GetPath()); browser_context_directory_path_);
base::File::Error error; base::File::Error error;
if (!base::CreateDirectoryAndGetError(log_dir_path, &error)) { if (!base::CreateDirectoryAndGetError(log_dir_path, &error)) {
DLOG(ERROR) << "Could not create WebRTC log directory, error: " << error; DLOG(ERROR) << "Could not create WebRTC log directory, error: " << error;
......
...@@ -220,8 +220,8 @@ class WebRtcLoggingHandlerHost : public content::BrowserMessageFilter { ...@@ -220,8 +220,8 @@ class WebRtcLoggingHandlerHost : public content::BrowserMessageFilter {
// The render process ID this object belongs to. // The render process ID this object belongs to.
const int render_process_id_; const int render_process_id_;
// The browser context associated with our renderer process. // The browser context directory path associated with our renderer process.
content::BrowserContext* const browser_context_; const base::FilePath browser_context_directory_path_;
// Only accessed on the IO thread. // Only accessed on the IO thread.
bool upload_log_on_render_close_; bool upload_log_on_render_close_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment