Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / chrome_browser_main_linux.cc
index 9ae5ec0..1ad6b07 100644 (file)
@@ -4,34 +4,18 @@
 
 #include "chrome/browser/chrome_browser_main_linux.h"
 
-#include <stdlib.h>
+#include <fontconfig/fontconfig.h>
 
-#include "base/command_line.h"
-#include "base/linux_util.h"
-#include "base/prefs/pref_service.h"
 #include "chrome/browser/browser_process.h"
-#include "chrome/browser/metrics/metrics_service.h"
-#include "chrome/common/chrome_switches.h"
-#include "chrome/common/env_vars.h"
-#include "chrome/common/pref_names.h"
-#include "components/breakpad/app/breakpad_linux.h"
+#include "components/crash/app/breakpad_linux.h"
+#include "components/metrics/metrics_service.h"
 
 #if !defined(OS_CHROMEOS)
-#include "chrome/browser/storage_monitor/storage_monitor_linux.h"
+#include "base/linux_util.h"
 #include "chrome/browser/sxs_linux.h"
 #include "content/public/browser/browser_thread.h"
 #endif
 
-namespace {
-
-#if !defined(OS_CHROMEOS)
-void GetLinuxDistroCallback() {
-  base::GetLinuxDistro();  // Initialize base::linux_distro if needed.
-}
-#endif
-
-}  // namespace
-
 ChromeBrowserMainPartsLinux::ChromeBrowserMainPartsLinux(
     const content::MainFunctionParams& parameters)
     : ChromeBrowserMainPartsPosix(parameters) {
@@ -40,16 +24,25 @@ ChromeBrowserMainPartsLinux::ChromeBrowserMainPartsLinux(
 ChromeBrowserMainPartsLinux::~ChromeBrowserMainPartsLinux() {
 }
 
+void ChromeBrowserMainPartsLinux::ToolkitInitialized() {
+  // Explicitly initialize Fontconfig early on to prevent races later due to
+  // implicit initialization in response to threads' first calls to Fontconfig:
+  // http://crbug.com/404311
+  FcInit();
+
+  ChromeBrowserMainPartsPosix::ToolkitInitialized();
+}
+
 void ChromeBrowserMainPartsLinux::PreProfileInit() {
 #if !defined(OS_CHROMEOS)
   // Needs to be called after we have chrome::DIR_USER_DATA and
   // g_browser_process.  This happens in PreCreateThreads.
-  content::BrowserThread::PostTask(content::BrowserThread::FILE,
-                                   FROM_HERE,
-                                   base::Bind(&GetLinuxDistroCallback));
+  // base::GetLinuxDistro() will initialize its value if needed.
+  content::BrowserThread::PostBlockingPoolTask(
+      FROM_HERE,
+      base::Bind(base::IgnoreResult(&base::GetLinuxDistro)));
 
-  content::BrowserThread::PostTask(
-      content::BrowserThread::FILE,
+  content::BrowserThread::PostBlockingPoolTask(
       FROM_HERE,
       base::Bind(&sxs_linux::AddChannelMarkToUserDataDir));
 #endif