Chromium Code Reviews| 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 "chrome/browser/chrome_browser_main.h" | 5 #include "chrome/browser/chrome_browser_main.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <set> | 10 #include <set> |
| (...skipping 1206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1217 #endif // BUILDFLAG(ANDROID_JAVA_UI) | 1217 #endif // BUILDFLAG(ANDROID_JAVA_UI) |
| 1218 | 1218 |
| 1219 LaunchDevToolsHandlerIfNeeded(parsed_command_line()); | 1219 LaunchDevToolsHandlerIfNeeded(parsed_command_line()); |
| 1220 if (parsed_command_line().HasSwitch(::switches::kAutoOpenDevToolsForTabs)) | 1220 if (parsed_command_line().HasSwitch(::switches::kAutoOpenDevToolsForTabs)) |
| 1221 g_browser_process->CreateDevToolsAutoOpener(); | 1221 g_browser_process->CreateDevToolsAutoOpener(); |
| 1222 | 1222 |
| 1223 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) | 1223 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) |
| 1224 chrome_extra_parts_[i]->PostProfileInit(); | 1224 chrome_extra_parts_[i]->PostProfileInit(); |
| 1225 } | 1225 } |
| 1226 | 1226 |
| 1227 namespace { | |
| 1228 | |
| 1229 #if defined(SYZYASAN) | |
| 1230 void WINAPI SyzyASANExperimentCallback(const char* name, const char* group) { | |
| 1231 ChromeMetricsServiceAccessor::RegisterSyntheticFieldTrial(name, status); | |
|
Alexei Svitkine (slow)
2016/05/04 15:01:45
Does this compile? I believe you need to add a fri
Sigurður Ásgeirsson
2016/05/04 15:56:10
Done.
| |
| 1232 } | |
| 1233 | |
| 1234 void SetupSyzyASAN() { | |
| 1235 typedef VOID(WINAPI* SyzyASANExperimentCallbackFn(const char* name, | |
| 1236 const char* group)); | |
| 1237 typedef VOID(WINAPI* SyzyASANEnumFeaturesFn)(SyzyASANExperimentCallbackFn); | |
| 1238 HMODULE syzyasan_handle = ::GetModuleHandle(L"syzyasan_rtl.dll"); | |
| 1239 if (!syzyasan_handle) | |
| 1240 return; | |
| 1241 | |
| 1242 // Export the SyzyASAN experiments as synthetic field trials. | |
| 1243 SyzyASANEnumFeaturesFn syzyasan_enum_features = | |
| 1244 reinterpret_cast<SyzyASANEnumFeaturesFn>( | |
| 1245 ::GetProcAddress("asan_EnumFeatures")); | |
| 1246 if (syzyasan_enum_features) { | |
| 1247 syzyasan_enum_features(&SyzyASANExperimentCallback); | |
| 1248 } | |
| 1249 | |
| 1250 // Enable the deferred free mechanism in the syzyasan module, which helps the | |
| 1251 // performance by deferring some work on the critical path to a background | |
| 1252 // thread. | |
| 1253 if (base::FeatureList::IsEnabled(features::kSyzyasanDeferredFree)) { | |
| 1254 typedef VOID(WINAPI * SyzyasanEnableDeferredFreeThreadFunc)(VOID); | |
| 1255 bool success = false; | |
| 1256 SyzyasanEnableDeferredFreeThreadFunc syzyasan_enable_deferred_free = | |
| 1257 reinterpret_cast<SyzyasanEnableDeferredFreeThreadFunc>( | |
| 1258 ::GetProcAddress(syzyasan_handle, | |
| 1259 "asan_EnableDeferredFreeThread")); | |
| 1260 if (syzyasan_enable_deferred_free) { | |
| 1261 syzyasan_enable_deferred_free(); | |
| 1262 success = true; | |
| 1263 } | |
| 1264 UMA_HISTOGRAM_BOOLEAN("Syzyasan.DeferredFreeWasEnabled", success); | |
| 1265 } | |
| 1266 } | |
| 1267 #endif // SYZYASAN | |
| 1268 | |
| 1269 } // namespace | |
| 1270 | |
| 1227 void ChromeBrowserMainParts::PreBrowserStart() { | 1271 void ChromeBrowserMainParts::PreBrowserStart() { |
| 1228 TRACE_EVENT0("startup", "ChromeBrowserMainParts::PreBrowserStart"); | 1272 TRACE_EVENT0("startup", "ChromeBrowserMainParts::PreBrowserStart"); |
| 1229 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) | 1273 for (size_t i = 0; i < chrome_extra_parts_.size(); ++i) |
| 1230 chrome_extra_parts_[i]->PreBrowserStart(); | 1274 chrome_extra_parts_[i]->PreBrowserStart(); |
| 1231 | 1275 |
| 1232 three_d_observer_.reset(new ThreeDAPIObserver()); | 1276 three_d_observer_.reset(new ThreeDAPIObserver()); |
| 1233 | 1277 |
| 1234 #if defined(SYZYASAN) | 1278 #if defined(SYZYASAN) |
| 1235 // Enable the deferred free mechanism in the syzyasan module, which helps the | 1279 SetupSyzyASAN(); |
| 1236 // performance by deferring some work on the critical path to a background | |
| 1237 // thread. | |
| 1238 if (base::FeatureList::IsEnabled(features::kSyzyasanDeferredFree)) { | |
| 1239 typedef VOID(WINAPI * SyzyasanEnableDeferredFreeThreadFunc)(VOID); | |
| 1240 HMODULE syzyasan_handle = ::GetModuleHandle(L"syzyasan_rtl.dll"); | |
| 1241 bool success = false; | |
| 1242 if (syzyasan_handle) { | |
| 1243 SyzyasanEnableDeferredFreeThreadFunc syzyasan_enable_deferred_free = | |
| 1244 reinterpret_cast<SyzyasanEnableDeferredFreeThreadFunc>( | |
| 1245 ::GetProcAddress(syzyasan_handle, | |
| 1246 "asan_EnableDeferredFreeThread")); | |
| 1247 if (syzyasan_enable_deferred_free) { | |
| 1248 syzyasan_enable_deferred_free(); | |
| 1249 success = true; | |
| 1250 } | |
| 1251 } | |
| 1252 UMA_HISTOGRAM_BOOLEAN("Syzyasan.DeferredFreeWasEnabled", success); | |
| 1253 } | |
| 1254 #endif | 1280 #endif |
| 1255 | 1281 |
| 1256 // Start the tab manager here so that we give the most amount of time for the | 1282 // Start the tab manager here so that we give the most amount of time for the |
| 1257 // other services to start up before we start adjusting the oom priority. | 1283 // other services to start up before we start adjusting the oom priority. |
| 1258 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) | 1284 #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_LINUX) |
| 1259 g_browser_process->GetTabManager()->Start(); | 1285 g_browser_process->GetTabManager()->Start(); |
| 1260 #endif | 1286 #endif |
| 1261 } | 1287 } |
| 1262 | 1288 |
| 1263 void ChromeBrowserMainParts::PostBrowserStart() { | 1289 void ChromeBrowserMainParts::PostBrowserStart() { |
| (...skipping 688 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1952 chromeos::CrosSettings::Shutdown(); | 1978 chromeos::CrosSettings::Shutdown(); |
| 1953 #endif // defined(OS_CHROMEOS) | 1979 #endif // defined(OS_CHROMEOS) |
| 1954 #endif // defined(OS_ANDROID) | 1980 #endif // defined(OS_ANDROID) |
| 1955 } | 1981 } |
| 1956 | 1982 |
| 1957 // Public members: | 1983 // Public members: |
| 1958 | 1984 |
| 1959 void ChromeBrowserMainParts::AddParts(ChromeBrowserMainExtraParts* parts) { | 1985 void ChromeBrowserMainParts::AddParts(ChromeBrowserMainExtraParts* parts) { |
| 1960 chrome_extra_parts_.push_back(parts); | 1986 chrome_extra_parts_.push_back(parts); |
| 1961 } | 1987 } |
| OLD | NEW |