Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(95)

Side by Side Diff: chrome/browser/browser_main.cc

Issue 7623022: Move code around in browser_main.cc. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "chrome/browser/browser_main.h" 5 #include "chrome/browser/browser_main.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 #endif 205 #endif
206 206
207 #if defined(TOOLKIT_USES_GTK) 207 #if defined(TOOLKIT_USES_GTK)
208 #include "ui/gfx/gtk_util.h" 208 #include "ui/gfx/gtk_util.h"
209 #endif 209 #endif
210 210
211 #if defined(TOUCH_UI) 211 #if defined(TOUCH_UI)
212 #include "views/touchui/touch_factory.h" 212 #include "views/touchui/touch_factory.h"
213 #endif 213 #endif
214 214
215 namespace {
216 void SetSocketReusePolicy(int warmest_socket_trial_group,
217 const int socket_policy[],
218 int num_groups) {
219 const int* result = std::find(socket_policy, socket_policy + num_groups,
220 warmest_socket_trial_group);
221 DCHECK_NE(result, socket_policy + num_groups)
222 << "Not a valid socket reuse policy group";
223 net::SetSocketReusePolicy(result - socket_policy);
224 }
225 }
226
227 namespace net { 215 namespace net {
228 class NetLog; 216 class NetLog;
229 } // namespace net 217 } // namespace net
230 218
231 // This code is specific to the Windows-only PreReadExperiment field-trial. 219 namespace {
232 static void AddPreReadHistogramTime(const char* name, base::TimeDelta time) { 220 void SetSocketReusePolicy(int warmest_socket_trial_group,
233 const base::TimeDelta kMin(base::TimeDelta::FromMilliseconds(1)); 221 const int socket_policy[],
234 const base::TimeDelta kMax(base::TimeDelta::FromHours(1)); 222 int num_groups);
235 static const size_t kBuckets(100); 223 } // namespace
236
237 // FactoryTimeGet will always return a pointer to the same histogram object,
238 // keyed on its name. There's no need for us to store it explicitly anywhere.
239 base::Histogram* counter = base::Histogram::FactoryTimeGet(
240 name, kMin, kMax, kBuckets, base::Histogram::kUmaTargetedHistogramFlag);
241
242 counter->AddTime(time);
243 }
244
245 // This code is specific to the Windows-only PreReadExperiment field-trial.
246 void RecordPreReadExperimentTime(const char* name, base::TimeDelta time) {
247 DCHECK(name != NULL);
248
249 // This gets called with different histogram names, so we don't want to use
250 // the UMA_HISTOGRAM_CUSTOM_TIMES macro--it uses a static variable, and the
251 // first call wins.
252 AddPreReadHistogramTime(name, time);
253
254 #if defined(OS_WIN)
255 static const char kEnvVar[] = "CHROME_PRE_READ_EXPERIMENT";
256
257 // The pre-read experiment is Windows specific.
258 scoped_ptr<base::Environment> env(base::Environment::Create());
259 DCHECK(env.get() != NULL);
260
261 // Only record the sub-histogram result if the experiment is running
262 // (environment variable is set, and valid).
263 std::string pre_read;
264 if (env->GetVar(kEnvVar, &pre_read) && (pre_read == "0" || pre_read == "1")) {
265 std::string uma_name(name);
266 uma_name += "_PreRead";
267 uma_name += pre_read == "1" ? "Enabled" : "Disabled";
268 AddPreReadHistogramTime(uma_name.c_str(), time);
269 }
270 #endif
271 }
272 224
273 // BrowserMainParts ------------------------------------------------------------ 225 // BrowserMainParts ------------------------------------------------------------
274 226
275 BrowserMainParts::BrowserMainParts(const MainFunctionParams& parameters) 227 BrowserMainParts::BrowserMainParts(const MainFunctionParams& parameters)
276 : parameters_(parameters), 228 : parameters_(parameters),
277 parsed_command_line_(parameters.command_line_) { 229 parsed_command_line_(parameters.command_line_) {
278 } 230 }
279 231
280 BrowserMainParts::~BrowserMainParts() { 232 BrowserMainParts::~BrowserMainParts() {
281 } 233 }
(...skipping 976 matching lines...) Expand 10 before | Expand all | Expand 10 after
1258 std::string trans_label = gfx::ConvertAcceleratorsFromWindowsStyle( 1210 std::string trans_label = gfx::ConvertAcceleratorsFromWindowsStyle(
1259 l10n_util::GetStringUTF8(trans->resource_id)); 1211 l10n_util::GetStringUTF8(trans->resource_id));
1260 stock_item.label = g_strdup(trans_label.c_str()); 1212 stock_item.label = g_strdup(trans_label.c_str());
1261 gtk_stock_add(&stock_item, 1); 1213 gtk_stock_add(&stock_item, 1);
1262 g_free(stock_item.label); 1214 g_free(stock_item.label);
1263 } 1215 }
1264 } 1216 }
1265 } 1217 }
1266 #endif // defined(OS_CHROMEOS) 1218 #endif // defined(OS_CHROMEOS)
1267 1219
1268 } // namespace 1220 void SetSocketReusePolicy(int warmest_socket_trial_group,
1269 1221 const int socket_policy[],
1270 #if defined(OS_CHROMEOS) 1222 int num_groups) {
1271 // Allows authenticator to be invoked without adding refcounting. The instances 1223 const int* result = std::find(socket_policy, socket_policy + num_groups,
1272 // will delete themselves upon completion. 1224 warmest_socket_trial_group);
1273 DISABLE_RUNNABLE_METHOD_REFCOUNT(StubLogin); 1225 DCHECK_NE(result, socket_policy + num_groups)
1274 #endif 1226 << "Not a valid socket reuse policy group";
1275 1227 net::SetSocketReusePolicy(result - socket_policy);
1276 #if defined(OS_WIN)
1277 #define DLLEXPORT __declspec(dllexport)
1278
1279 // We use extern C for the prototype DLLEXPORT to avoid C++ name mangling.
1280 extern "C" {
1281 DLLEXPORT void __cdecl RelaunchChromeBrowserWithNewCommandLineIfNeeded();
1282 } 1228 }
1283 1229
1284 DLLEXPORT void __cdecl RelaunchChromeBrowserWithNewCommandLineIfNeeded() { 1230 // This code is specific to the Windows-only PreReadExperiment field-trial.
1285 // Need an instance of AtExitManager to handle singleton creations and 1231 void AddPreReadHistogramTime(const char* name, base::TimeDelta time) {
1286 // deletions. We need this new instance because, the old instance created 1232 const base::TimeDelta kMin(base::TimeDelta::FromMilliseconds(1));
1287 // in ChromeMain() got destructed when the function returned. 1233 const base::TimeDelta kMax(base::TimeDelta::FromHours(1));
1288 base::AtExitManager exit_manager; 1234 static const size_t kBuckets(100);
1289 upgrade_util::RelaunchChromeBrowserWithNewCommandLineIfNeeded(); 1235
1236 // FactoryTimeGet will always return a pointer to the same histogram object,
1237 // keyed on its name. There's no need for us to store it explicitly anywhere.
1238 base::Histogram* counter = base::Histogram::FactoryTimeGet(
1239 name, kMin, kMax, kBuckets, base::Histogram::kUmaTargetedHistogramFlag);
1240
1241 counter->AddTime(time);
1290 } 1242 }
1291 #endif
1292 1243
1293 #if defined(USE_LINUX_BREAKPAD) 1244 #if defined(USE_LINUX_BREAKPAD)
1294 bool IsCrashReportingEnabled(const PrefService* local_state) { 1245 bool IsCrashReportingEnabled(const PrefService* local_state) {
1295 // Check whether we should initialize the crash reporter. It may be disabled 1246 // Check whether we should initialize the crash reporter. It may be disabled
1296 // through configuration policy or user preference. It must be disabled for 1247 // through configuration policy or user preference. It must be disabled for
1297 // Guest mode on Chrome OS in Stable channel. 1248 // Guest mode on Chrome OS in Stable channel.
1298 // The kHeadless environment variable overrides the decision, but only if the 1249 // The kHeadless environment variable overrides the decision, but only if the
1299 // crash service is under control of the user. It is used by QA testing 1250 // crash service is under control of the user. It is used by QA testing
1300 // infrastructure to switch on generation of crash reports. 1251 // infrastructure to switch on generation of crash reports.
1301 #if defined(OS_CHROMEOS) 1252 #if defined(OS_CHROMEOS)
(...skipping 12 matching lines...) Expand all
1314 CHECK(metrics_reporting_enabled); 1265 CHECK(metrics_reporting_enabled);
1315 bool breakpad_enabled = 1266 bool breakpad_enabled =
1316 local_state->GetBoolean(prefs::kMetricsReportingEnabled); 1267 local_state->GetBoolean(prefs::kMetricsReportingEnabled);
1317 if (!breakpad_enabled && metrics_reporting_enabled->IsUserModifiable()) 1268 if (!breakpad_enabled && metrics_reporting_enabled->IsUserModifiable())
1318 breakpad_enabled = getenv(env_vars::kHeadless) != NULL; 1269 breakpad_enabled = getenv(env_vars::kHeadless) != NULL;
1319 #endif // #if defined(OS_CHROMEOS) 1270 #endif // #if defined(OS_CHROMEOS)
1320 return breakpad_enabled; 1271 return breakpad_enabled;
1321 } 1272 }
1322 #endif // #if defined(USE_LINUX_BREAKPAD) 1273 #endif // #if defined(USE_LINUX_BREAKPAD)
1323 1274
1275 } // namespace
1276
1277 #if defined(OS_CHROMEOS)
1278 // Allows authenticator to be invoked without adding refcounting. The instances
1279 // will delete themselves upon completion.
1280 DISABLE_RUNNABLE_METHOD_REFCOUNT(StubLogin);
1281 #endif
1282
1283 #if defined(OS_WIN)
1284 #define DLLEXPORT __declspec(dllexport)
1285
1286 // We use extern C for the prototype DLLEXPORT to avoid C++ name mangling.
1287 extern "C" {
1288 DLLEXPORT void __cdecl RelaunchChromeBrowserWithNewCommandLineIfNeeded();
1289 }
1290
1291 DLLEXPORT void __cdecl RelaunchChromeBrowserWithNewCommandLineIfNeeded() {
1292 // Need an instance of AtExitManager to handle singleton creations and
1293 // deletions. We need this new instance because, the old instance created
1294 // in ChromeMain() got destructed when the function returned.
1295 base::AtExitManager exit_manager;
1296 upgrade_util::RelaunchChromeBrowserWithNewCommandLineIfNeeded();
1297 }
1298 #endif
1299
1324 // Main routine for running as the Browser process. 1300 // Main routine for running as the Browser process.
1325 int BrowserMain(const MainFunctionParams& parameters) { 1301 int BrowserMain(const MainFunctionParams& parameters) {
1326 TRACE_EVENT_BEGIN_ETW("BrowserMain", 0, ""); 1302 TRACE_EVENT_BEGIN_ETW("BrowserMain", 0, "");
1327 1303
1328 // Override the default ContentBrowserClient to let Chrome participate in 1304 // Override the default ContentBrowserClient to let Chrome participate in
1329 // content logic. 1305 // content logic.
1330 chrome::ChromeContentBrowserClient browser_client; 1306 chrome::ChromeContentBrowserClient browser_client;
1331 content::GetContentClient()->set_browser(&browser_client); 1307 content::GetContentClient()->set_browser(&browser_client);
1332 1308
1333 // If we're running tests (ui_task is non-null). 1309 // If we're running tests (ui_task is non-null).
(...skipping 821 matching lines...) Expand 10 before | Expand all | Expand 10 after
2155 #if defined(OS_CHROMEOS) 2131 #if defined(OS_CHROMEOS)
2156 // To be precise, logout (browser shutdown) is not yet done, but the 2132 // To be precise, logout (browser shutdown) is not yet done, but the
2157 // remaining work is negligible, hence we say LogoutDone here. 2133 // remaining work is negligible, hence we say LogoutDone here.
2158 chromeos::BootTimesLoader::Get()->AddLogoutTimeMarker("LogoutDone", 2134 chromeos::BootTimesLoader::Get()->AddLogoutTimeMarker("LogoutDone",
2159 false); 2135 false);
2160 chromeos::BootTimesLoader::Get()->WriteLogoutTimes(); 2136 chromeos::BootTimesLoader::Get()->WriteLogoutTimes();
2161 #endif 2137 #endif
2162 TRACE_EVENT_END_ETW("BrowserMain", 0, 0); 2138 TRACE_EVENT_END_ETW("BrowserMain", 0, 0);
2163 return result_code; 2139 return result_code;
2164 } 2140 }
2141
2142 // This code is specific to the Windows-only PreReadExperiment field-trial.
2143 void RecordPreReadExperimentTime(const char* name, base::TimeDelta time) {
2144 DCHECK(name != NULL);
2145
2146 // This gets called with different histogram names, so we don't want to use
2147 // the UMA_HISTOGRAM_CUSTOM_TIMES macro--it uses a static variable, and the
2148 // first call wins.
2149 AddPreReadHistogramTime(name, time);
2150
2151 #if defined(OS_WIN)
2152 static const char kEnvVar[] = "CHROME_PRE_READ_EXPERIMENT";
2153
2154 // The pre-read experiment is Windows specific.
2155 scoped_ptr<base::Environment> env(base::Environment::Create());
2156 DCHECK(env.get() != NULL);
2157
2158 // Only record the sub-histogram result if the experiment is running
2159 // (environment variable is set, and valid).
2160 std::string pre_read;
2161 if (env->GetVar(kEnvVar, &pre_read) && (pre_read == "0" || pre_read == "1")) {
2162 std::string uma_name(name);
2163 uma_name += "_PreRead";
2164 uma_name += pre_read == "1" ? "Enabled" : "Disabled";
2165 AddPreReadHistogramTime(uma_name.c_str(), time);
2166 }
2167 #endif
2168 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698