| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/public/browser/browser_main_runner.h" | 5 #include "content/public/browser/browser_main_runner.h" |
| 6 | 6 |
| 7 #include "base/base_switches.h" | 7 #include "base/base_switches.h" |
| 8 #include "base/command_line.h" | 8 #include "base/command_line.h" |
| 9 #include "base/debug/leak_annotations.h" | 9 #include "base/debug/leak_annotations.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 165 // only for processes which do not instantiate a BrowserProcess. | 165 // only for processes which do not instantiate a BrowserProcess. |
| 166 // If leaks are found, the process will exit here. | 166 // If leaks are found, the process will exit here. |
| 167 __lsan_do_leak_check(); | 167 __lsan_do_leak_check(); |
| 168 #endif | 168 #endif |
| 169 // If startup tracing has not been finished yet, replace it's dumper | 169 // If startup tracing has not been finished yet, replace it's dumper |
| 170 // with special version, which would save trace file on exit (i.e. | 170 // with special version, which would save trace file on exit (i.e. |
| 171 // startup tracing becomes a version of shutdown tracing). | 171 // startup tracing becomes a version of shutdown tracing). |
| 172 // There are two cases: | 172 // There are two cases: |
| 173 // 1. Startup duration is not reached. | 173 // 1. Startup duration is not reached. |
| 174 // 2. Or startup duration is not specified for --trace-config-file flag. | 174 // 2. Or startup duration is not specified for --trace-config-file flag. |
| 175 scoped_ptr<BrowserShutdownProfileDumper> startup_profiler; | 175 std::unique_ptr<BrowserShutdownProfileDumper> startup_profiler; |
| 176 if (main_loop_->is_tracing_startup_for_duration()) { | 176 if (main_loop_->is_tracing_startup_for_duration()) { |
| 177 main_loop_->StopStartupTracingTimer(); | 177 main_loop_->StopStartupTracingTimer(); |
| 178 if (main_loop_->startup_trace_file() != | 178 if (main_loop_->startup_trace_file() != |
| 179 base::FilePath().AppendASCII("none")) { | 179 base::FilePath().AppendASCII("none")) { |
| 180 startup_profiler.reset( | 180 startup_profiler.reset( |
| 181 new BrowserShutdownProfileDumper(main_loop_->startup_trace_file())); | 181 new BrowserShutdownProfileDumper(main_loop_->startup_trace_file())); |
| 182 } | 182 } |
| 183 } else if (tracing::TraceConfigFile::GetInstance()->IsEnabled() && | 183 } else if (tracing::TraceConfigFile::GetInstance()->IsEnabled() && |
| 184 TracingController::GetInstance()->IsTracing()) { | 184 TracingController::GetInstance()->IsTracing()) { |
| 185 base::FilePath result_file; | 185 base::FilePath result_file; |
| 186 #if defined(OS_ANDROID) | 186 #if defined(OS_ANDROID) |
| 187 TracingControllerAndroid::GenerateTracingFilePath(&result_file); | 187 TracingControllerAndroid::GenerateTracingFilePath(&result_file); |
| 188 #else | 188 #else |
| 189 result_file = tracing::TraceConfigFile::GetInstance()->GetResultFile(); | 189 result_file = tracing::TraceConfigFile::GetInstance()->GetResultFile(); |
| 190 #endif | 190 #endif |
| 191 startup_profiler.reset(new BrowserShutdownProfileDumper(result_file)); | 191 startup_profiler.reset(new BrowserShutdownProfileDumper(result_file)); |
| 192 } | 192 } |
| 193 | 193 |
| 194 // The shutdown tracing got enabled in AttemptUserExit earlier, but someone | 194 // The shutdown tracing got enabled in AttemptUserExit earlier, but someone |
| 195 // needs to write the result to disc. For that a dumper needs to get created | 195 // needs to write the result to disc. For that a dumper needs to get created |
| 196 // which will dump the traces to disc when it gets destroyed. | 196 // which will dump the traces to disc when it gets destroyed. |
| 197 const base::CommandLine& command_line = | 197 const base::CommandLine& command_line = |
| 198 *base::CommandLine::ForCurrentProcess(); | 198 *base::CommandLine::ForCurrentProcess(); |
| 199 scoped_ptr<BrowserShutdownProfileDumper> shutdown_profiler; | 199 std::unique_ptr<BrowserShutdownProfileDumper> shutdown_profiler; |
| 200 if (command_line.HasSwitch(switches::kTraceShutdown)) { | 200 if (command_line.HasSwitch(switches::kTraceShutdown)) { |
| 201 shutdown_profiler.reset(new BrowserShutdownProfileDumper( | 201 shutdown_profiler.reset(new BrowserShutdownProfileDumper( |
| 202 BrowserShutdownProfileDumper::GetShutdownProfileFileName())); | 202 BrowserShutdownProfileDumper::GetShutdownProfileFileName())); |
| 203 } | 203 } |
| 204 | 204 |
| 205 { | 205 { |
| 206 // The trace event has to stay between profiler creation and destruction. | 206 // The trace event has to stay between profiler creation and destruction. |
| 207 TRACE_EVENT0("shutdown", "BrowserMainRunner"); | 207 TRACE_EVENT0("shutdown", "BrowserMainRunner"); |
| 208 g_exited_main_message_loop = true; | 208 g_exited_main_message_loop = true; |
| 209 | 209 |
| (...skipping 18 matching lines...) Expand all Loading... |
| 228 } | 228 } |
| 229 } | 229 } |
| 230 | 230 |
| 231 protected: | 231 protected: |
| 232 // True if we have started to initialize the runner. | 232 // True if we have started to initialize the runner. |
| 233 bool initialization_started_; | 233 bool initialization_started_; |
| 234 | 234 |
| 235 // True if the runner has been shut down. | 235 // True if the runner has been shut down. |
| 236 bool is_shutdown_; | 236 bool is_shutdown_; |
| 237 | 237 |
| 238 scoped_ptr<NotificationServiceImpl> notification_service_; | 238 std::unique_ptr<NotificationServiceImpl> notification_service_; |
| 239 scoped_ptr<BrowserMainLoop> main_loop_; | 239 std::unique_ptr<BrowserMainLoop> main_loop_; |
| 240 #if defined(OS_WIN) | 240 #if defined(OS_WIN) |
| 241 scoped_ptr<ui::ScopedOleInitializer> ole_initializer_; | 241 std::unique_ptr<ui::ScopedOleInitializer> ole_initializer_; |
| 242 #endif | 242 #endif |
| 243 | 243 |
| 244 private: | 244 private: |
| 245 DISALLOW_COPY_AND_ASSIGN(BrowserMainRunnerImpl); | 245 DISALLOW_COPY_AND_ASSIGN(BrowserMainRunnerImpl); |
| 246 }; | 246 }; |
| 247 | 247 |
| 248 // static | 248 // static |
| 249 BrowserMainRunner* BrowserMainRunner::Create() { | 249 BrowserMainRunner* BrowserMainRunner::Create() { |
| 250 return new BrowserMainRunnerImpl(); | 250 return new BrowserMainRunnerImpl(); |
| 251 } | 251 } |
| 252 | 252 |
| 253 // static | 253 // static |
| 254 bool BrowserMainRunner::ExitedMainMessageLoop() { | 254 bool BrowserMainRunner::ExitedMainMessageLoop() { |
| 255 return g_exited_main_message_loop; | 255 return g_exited_main_message_loop; |
| 256 } | 256 } |
| 257 | 257 |
| 258 } // namespace content | 258 } // namespace content |
| OLD | NEW |