Index: chrome/browser/chrome_browser_main.cc |
=================================================================== |
--- chrome/browser/chrome_browser_main.cc (revision 210624) |
+++ chrome/browser/chrome_browser_main.cc (working copy) |
@@ -14,6 +14,7 @@ |
#include "base/at_exit.h" |
#include "base/bind.h" |
#include "base/command_line.h" |
+#include "base/debug/debugger.h" |
#include "base/debug/trace_event.h" |
#include "base/file_util.h" |
#include "base/files/file_path.h" |
@@ -89,10 +90,6 @@ |
#include "chrome/browser/profiles/profile_manager.h" |
#include "chrome/browser/renderer_host/chrome_render_view_host_observer.h" |
#include "chrome/browser/search_engines/search_engine_type.h" |
-#include "chrome/browser/search_engines/template_url.h" |
-#include "chrome/browser/search_engines/template_url_prepopulate_data.h" |
-#include "chrome/browser/search_engines/template_url_service.h" |
-#include "chrome/browser/search_engines/template_url_service_factory.h" |
#include "chrome/browser/service/service_process_control.h" |
#include "chrome/browser/shell_integration.h" |
#include "chrome/browser/three_d_api_observer.h" |
@@ -202,10 +199,6 @@ |
#include "ui/views/focus/accelerator_handler.h" |
#endif |
-#if defined(USE_X11) |
-#include "chrome/browser/chrome_browser_main_x11.h" |
-#endif |
- |
using content::BrowserThread; |
namespace { |
@@ -560,7 +553,6 @@ |
startup_timer_(new performance_monitor::StartupTimer()), |
browser_field_trials_(parameters.command_line), |
rvh_callback_(base::Bind(&RenderViewHostCreated)), |
- record_search_engine_(false), |
translate_manager_(NULL), |
profile_(NULL), |
run_message_loop_(true), |
@@ -696,6 +688,65 @@ |
return enabled; |
} |
+void ChromeBrowserMainParts::RecordBrowserStartupTime(bool is_first_run) { |
+ // Don't record any metrics if UI was displayed before this point e.g. |
+ // warning dialogs. |
+ if (startup_metric_utils::WasNonBrowserUIDisplayed()) |
+ return; |
+ |
+// CurrentProcessInfo::CreationTime() is currently only implemented on Mac and |
+// Windows. |
+#if defined(OS_MACOSX) || defined(OS_WIN) |
+ const base::Time* process_creation_time = |
+ base::CurrentProcessInfo::CreationTime(); |
+ |
+ if (!is_first_run && process_creation_time) { |
+ RecordPreReadExperimentTime("Startup.BrowserMessageLoopStartTime", |
+ base::Time::Now() - *process_creation_time); |
+ } |
+#endif // defined(OS_MACOSX) || defined(OS_WIN) |
+ |
+ // Record collected startup metrics. |
+ startup_metric_utils::OnBrowserStartupComplete(is_first_run); |
+ |
+ // Deletes self. |
+ new LoadCompleteListener(); |
+} |
+ |
+// This code is specific to the Windows-only PreReadExperiment field-trial. |
+void ChromeBrowserMainParts::RecordPreReadExperimentTime(const char* name, |
+ base::TimeDelta time) { |
+ DCHECK(name != NULL); |
+ |
+ // This gets called with different histogram names, so we don't want to use |
+ // the UMA_HISTOGRAM_CUSTOM_TIMES macro--it uses a static variable, and the |
+ // first call wins. |
+ AddPreReadHistogramTime(name, time); |
+ |
+#if defined(OS_WIN) |
+#if defined(GOOGLE_CHROME_BUILD) |
+ // The pre-read experiment is Windows and Google Chrome specific. |
+ scoped_ptr<base::Environment> env(base::Environment::Create()); |
+ |
+ // Only record the sub-histogram result if the experiment is running |
+ // (environment variable is set, and valid). |
+ std::string pre_read_percentage; |
+ if (env->GetVar(chrome::kPreReadEnvironmentVariable, &pre_read_percentage)) { |
+ std::string uma_name(name); |
+ |
+ // We want XP to record a separate histogram, as the loader on XP |
+ // is very different from the Vista and Win7 loaders. |
+ if (base::win::GetVersion() <= base::win::VERSION_XP) |
+ uma_name += "_XP"; |
+ |
+ uma_name += "_PreRead_"; |
+ uma_name += pre_read_percentage; |
+ AddPreReadHistogramTime(uma_name.c_str(), time); |
+ } |
+#endif |
+#endif |
+} |
+ |
// ----------------------------------------------------------------------------- |
// TODO(viettrungluu): move more/rest of BrowserMain() into BrowserMainParts. |
@@ -719,9 +770,6 @@ |
// content::BrowserMainParts implementation ------------------------------------ |
void ChromeBrowserMainParts::PreEarlyInitialization() { |
-#if defined(USE_X11) |
- SetBrowserX11ErrorHandlersPreEarlyInitialization(); |
-#endif |
Nico
2013/07/10 17:32:50
I would've guessed that this is here to make sure
jam
2013/07/10 17:47:02
I didn't see any indication that it was put here b
oshima
2013/07/10 18:50:37
SetBrowserX11ErrorHandlersPreEarlyInitialization s
|
TRACE_EVENT0("startup", "ChromeBrowserMainParts::PreEarlyInitialization"); |
for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) |
chrome_extra_parts_[i]->PreEarlyInitialization(); |
@@ -749,9 +797,6 @@ |
TRACE_EVENT0("startup", "ChromeBrowserMainParts::PostMainMessageLoopStart"); |
for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) |
chrome_extra_parts_[i]->PostMainMessageLoopStart(); |
-#if defined(USE_X11) |
- SetBrowserX11ErrorHandlersPostMainMessageLoopStart(); |
-#endif |
} |
int ChromeBrowserMainParts::PreCreateThreads() { |
@@ -982,10 +1027,6 @@ |
} |
#endif |
- // TODO(viettrungluu): why don't we run this earlier? |
- if (!parsed_command_line().HasSwitch(switches::kNoErrorDialogs)) |
- WarnAboutMinimumSystemRequirements(); |
- |
#if defined(OS_LINUX) || defined(OS_OPENBSD) || defined(OS_MACOSX) |
// Set the product channel for crash reports. |
child_process_logging::SetChannel( |
@@ -1430,7 +1471,9 @@ |
#endif |
HandleTestParameters(parsed_command_line()); |
- RecordBreakpadStatusUMA(browser_process_->metrics_service()); |
+ browser_process_->metrics_service()->RecordBreakpadHasDebugger( |
+ base::debug::BeingDebugged()); |
Nico
2013/07/10 17:32:50
On Mac and Linux, this used to call metrics->Recor
jam
2013/07/10 17:47:02
not quite. mac and linux used to do this as well,
|
+ |
#if defined(ENABLE_LANGUAGE_DETECTION) |
LanguageUsageMetrics::RecordAcceptLanguages( |
profile_->GetPrefs()->GetString(prefs::kAcceptLanguages)); |
@@ -1462,12 +1505,6 @@ |
MetricsService::LogNeedForCleanShutdown(); |
#endif |
-#if defined(OS_WIN) |
- // We check this here because if the profile is OTR (chromeos possibility) |
- // it won't still be accessible after browser is destroyed. |
- record_search_engine_ = do_first_run_tasks_ && !profile_->IsOffTheRecord(); |
-#endif |
- |
// Create the instance of the cloud print proxy service so that it can launch |
// the service process if needed. This is needed because the service process |
// might have shutdown because an update was available. |
@@ -1645,13 +1682,6 @@ |
NOTREACHED(); |
#else |
-#if defined(USE_X11) |
- // Unset the X11 error handlers. The X11 error handlers log the errors using a |
- // |PostTask()| on the message-loop. But since the message-loop is in the |
- // process of terminating, this can cause errors. |
- UnsetBrowserX11ErrorHandlers(); |
-#endif |
- |
// Start watching for jank during shutdown. It gets disarmed when |
// |shutdown_watcher_| object is destructed. |
shutdown_watcher_->Arm(base::TimeDelta::FromSeconds(300)); |
@@ -1662,25 +1692,6 @@ |
for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) |
chrome_extra_parts_[i]->PostMainMessageLoopRun(); |
-#if defined(OS_WIN) |
- // Log the search engine chosen on first run. Do this at shutdown, after any |
- // changes are made from the first run bubble link, etc. |
- if (record_search_engine_) { |
- TemplateURLService* url_service = |
- TemplateURLServiceFactory::GetForProfile(profile_); |
- const TemplateURL* default_search_engine = |
- url_service->GetDefaultSearchProvider(); |
- // The default engine can be NULL if the administrator has disabled |
- // default search. |
- SearchEngineType search_engine_type = |
- TemplateURLPrepopulateData::GetEngineType(default_search_engine ? |
- default_search_engine->url() : std::string()); |
- // Record the search engine chosen. |
- UMA_HISTOGRAM_ENUMERATION("Chrome.SearchSelectExempt", search_engine_type, |
- SEARCH_ENGINE_MAX); |
- } |
-#endif |
- |
// Some tests don't set parameters.ui_task, so they started translate |
// language fetch that was never completed so we need to cleanup here |
// otherwise it will be done by the destructor in a wrong thread. |
@@ -1732,63 +1743,3 @@ |
void ChromeBrowserMainParts::AddParts(ChromeBrowserMainExtraParts* parts) { |
chrome_extra_parts_.push_back(parts); |
} |
- |
-// Misc ------------------------------------------------------------------------ |
- |
-void RecordBrowserStartupTime(bool is_first_run) { |
- // Don't record any metrics if UI was displayed before this point e.g. |
- // warning dialogs. |
- if (startup_metric_utils::WasNonBrowserUIDisplayed()) |
- return; |
- |
-// CurrentProcessInfo::CreationTime() is currently only implemented on Mac and |
-// Windows. |
-#if defined(OS_MACOSX) || defined(OS_WIN) |
- const base::Time* process_creation_time = |
- base::CurrentProcessInfo::CreationTime(); |
- |
- if (!is_first_run && process_creation_time) { |
- RecordPreReadExperimentTime("Startup.BrowserMessageLoopStartTime", |
- base::Time::Now() - *process_creation_time); |
- } |
-#endif // defined(OS_MACOSX) || defined(OS_WIN) |
- |
- // Record collected startup metrics. |
- startup_metric_utils::OnBrowserStartupComplete(is_first_run); |
- |
- // Deletes self. |
- new LoadCompleteListener(); |
-} |
- |
-// This code is specific to the Windows-only PreReadExperiment field-trial. |
-void RecordPreReadExperimentTime(const char* name, base::TimeDelta time) { |
- DCHECK(name != NULL); |
- |
- // This gets called with different histogram names, so we don't want to use |
- // the UMA_HISTOGRAM_CUSTOM_TIMES macro--it uses a static variable, and the |
- // first call wins. |
- AddPreReadHistogramTime(name, time); |
- |
-#if defined(OS_WIN) |
-#if defined(GOOGLE_CHROME_BUILD) |
- // The pre-read experiment is Windows and Google Chrome specific. |
- scoped_ptr<base::Environment> env(base::Environment::Create()); |
- |
- // Only record the sub-histogram result if the experiment is running |
- // (environment variable is set, and valid). |
- std::string pre_read_percentage; |
- if (env->GetVar(chrome::kPreReadEnvironmentVariable, &pre_read_percentage)) { |
- std::string uma_name(name); |
- |
- // We want XP to record a separate histogram, as the loader on XP |
- // is very different from the Vista and Win7 loaders. |
- if (base::win::GetVersion() <= base::win::VERSION_XP) |
- uma_name += "_XP"; |
- |
- uma_name += "_PreRead_"; |
- uma_name += pre_read_percentage; |
- AddPreReadHistogramTime(uma_name.c_str(), time); |
- } |
-#endif |
-#endif |
-} |