| 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_linux.h" |    5 #include "chrome/browser/chrome_browser_main_linux.h" | 
|    6  |    6  | 
|    7 #include "chrome/browser/system_monitor/media_transfer_protocol_device_observer_
     linux.h" |    7 #include "chrome/browser/system_monitor/media_transfer_protocol_device_observer_
     linux.h" | 
|    8 #include "device/media_transfer_protocol/media_transfer_protocol_manager.h" |    8 #include "device/media_transfer_protocol/media_transfer_protocol_manager.h" | 
|    9  |    9  | 
|   10 #if !defined(OS_CHROMEOS) |   10 #if !defined(OS_CHROMEOS) | 
| (...skipping 25 matching lines...) Expand all  Loading... | 
|   36 #if !defined(OS_CHROMEOS) |   36 #if !defined(OS_CHROMEOS) | 
|   37 void GetLinuxDistroCallback() { |   37 void GetLinuxDistroCallback() { | 
|   38   base::GetLinuxDistro();  // Initialize base::linux_distro if needed. |   38   base::GetLinuxDistro();  // Initialize base::linux_distro if needed. | 
|   39 } |   39 } | 
|   40 #endif |   40 #endif | 
|   41  |   41  | 
|   42 bool IsCrashReportingEnabled(const PrefService* local_state) { |   42 bool IsCrashReportingEnabled(const PrefService* local_state) { | 
|   43   // Check whether we should initialize the crash reporter. It may be disabled |   43   // Check whether we should initialize the crash reporter. It may be disabled | 
|   44   // through configuration policy or user preference. It must be disabled for |   44   // through configuration policy or user preference. It must be disabled for | 
|   45   // Guest mode on Chrome OS in Stable channel. |   45   // Guest mode on Chrome OS in Stable channel. | 
|   46   // The kHeadless environment variable overrides the decision, but only if the |   46   // Environment variables may override the decision, but only if the | 
|   47   // crash service is under control of the user. It is used by QA testing |   47   // crash service is under control of the user. It is used by QA | 
|   48   // infrastructure to switch on generation of crash reports. |   48   // testing infrastructure to switch on generation of crash reports. | 
 |   49   bool use_env_var = true; | 
 |   50  | 
 |   51   // Convert #define to a variable so that we can use if() rather than | 
 |   52   // #if below and so at least compile-test the Chrome code in | 
 |   53   // Chromium builds. | 
 |   54 #if defined(GOOGLE_CHROME_BUILD) | 
 |   55   bool is_chrome_build = true; | 
 |   56 #else | 
 |   57   bool is_chrome_build = false; | 
 |   58 #endif | 
 |   59  | 
 |   60   // Check these settings in Chrome builds only, to reduce the chance | 
 |   61   // that we accidentally upload crash dumps from Chromium builds. | 
 |   62   bool breakpad_enabled = false; | 
 |   63   if (is_chrome_build) { | 
|   49 #if defined(OS_CHROMEOS) |   64 #if defined(OS_CHROMEOS) | 
|   50   bool is_guest_session = |   65     bool is_guest_session = | 
|   51       CommandLine::ForCurrentProcess()->HasSwitch(switches::kGuestSession); |   66         CommandLine::ForCurrentProcess()->HasSwitch(switches::kGuestSession); | 
|   52   bool is_stable_channel = |   67     bool is_stable_channel = | 
|   53       chrome::VersionInfo::GetChannel() == chrome::VersionInfo::CHANNEL_STABLE; |   68         chrome::VersionInfo::GetChannel() == | 
|   54   // TODO(pastarmovj): Consider the TrustedGet here. |   69         chrome::VersionInfo::CHANNEL_STABLE; | 
|   55   bool reporting_enabled; |   70     // TODO(pastarmovj): Consider the TrustedGet here. | 
|   56   chromeos::CrosSettings::Get()->GetBoolean(chromeos::kStatsReportingPref, |   71     bool reporting_enabled; | 
|   57                                             &reporting_enabled); |   72     chromeos::CrosSettings::Get()->GetBoolean(chromeos::kStatsReportingPref, | 
|   58   bool breakpad_enabled = |   73                                               &reporting_enabled); | 
|   59       !(is_guest_session && is_stable_channel) && reporting_enabled; |   74     breakpad_enabled = | 
|   60   if (!breakpad_enabled) |   75         !(is_guest_session && is_stable_channel) && reporting_enabled; | 
|   61     breakpad_enabled = getenv(env_vars::kHeadless) != NULL; |  | 
|   62 #else |   76 #else | 
|   63   const PrefService::Preference* metrics_reporting_enabled = |   77     const PrefService::Preference* metrics_reporting_enabled = | 
|   64       local_state->FindPreference(prefs::kMetricsReportingEnabled); |   78         local_state->FindPreference(prefs::kMetricsReportingEnabled); | 
|   65   CHECK(metrics_reporting_enabled); |   79     CHECK(metrics_reporting_enabled); | 
|   66   bool breakpad_enabled = |   80     breakpad_enabled = local_state->GetBoolean(prefs::kMetricsReportingEnabled); | 
|   67       local_state->GetBoolean(prefs::kMetricsReportingEnabled); |   81     use_env_var = metrics_reporting_enabled->IsUserModifiable(); | 
|   68   if (!breakpad_enabled && metrics_reporting_enabled->IsUserModifiable()) |  | 
|   69     breakpad_enabled = getenv(env_vars::kHeadless) != NULL; |  | 
|   70 #endif  // defined(OS_CHROMEOS) |   82 #endif  // defined(OS_CHROMEOS) | 
 |   83   } | 
 |   84  | 
 |   85   if (use_env_var) { | 
 |   86     // Linux Breakpad interferes with the debug stack traces produced | 
 |   87     // by EnableInProcessStackDumping(), used in browser_tests, so we | 
 |   88     // do not allow CHROME_HEADLESS=1 to enable Breakpad in Chromium | 
 |   89     // because the buildbots have CHROME_HEADLESS set.  However, we | 
 |   90     // allow CHROME_HEADLESS to enable Breakpad in Chrome for | 
 |   91     // compatibility with Breakpad/Chrome tests that may rely on this. | 
 |   92     // TODO(mseaborn): Change tests to use CHROME_ENABLE_BREAKPAD | 
 |   93     // instead. | 
 |   94     if (is_chrome_build && !breakpad_enabled) | 
 |   95       breakpad_enabled = getenv(env_vars::kHeadless) != NULL; | 
 |   96     if (!breakpad_enabled) | 
 |   97       breakpad_enabled = getenv(env_vars::kEnableBreakpad) != NULL; | 
 |   98   } | 
 |   99  | 
|   71   return breakpad_enabled; |  100   return breakpad_enabled; | 
|   72 } |  101 } | 
|   73 #endif  // defined(USE_LINUX_BREAKPAD) |  102 #endif  // defined(USE_LINUX_BREAKPAD) | 
|   74  |  103  | 
|   75 }  // namespace |  104 }  // namespace | 
|   76  |  105  | 
|   77 ChromeBrowserMainPartsLinux::ChromeBrowserMainPartsLinux( |  106 ChromeBrowserMainPartsLinux::ChromeBrowserMainPartsLinux( | 
|   78     const content::MainFunctionParams& parameters) |  107     const content::MainFunctionParams& parameters) | 
|   79     : ChromeBrowserMainPartsPosix(parameters), |  108     : ChromeBrowserMainPartsPosix(parameters), | 
|   80       did_pre_profile_init_(false) { |  109       did_pre_profile_init_(false) { | 
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  125   // Release it now. Otherwise the FILE thread would be gone when we try to |  154   // Release it now. Otherwise the FILE thread would be gone when we try to | 
|  126   // release it in the dtor and Valgrind would report a leak on almost ever |  155   // release it in the dtor and Valgrind would report a leak on almost ever | 
|  127   // single browser_test. |  156   // single browser_test. | 
|  128   removable_device_notifications_linux_ = NULL; |  157   removable_device_notifications_linux_ = NULL; | 
|  129 #endif |  158 #endif | 
|  130  |  159  | 
|  131   media_transfer_protocol_device_observer_.reset(); |  160   media_transfer_protocol_device_observer_.reset(); | 
|  132  |  161  | 
|  133   ChromeBrowserMainPartsPosix::PostMainMessageLoopRun(); |  162   ChromeBrowserMainPartsPosix::PostMainMessageLoopRun(); | 
|  134 } |  163 } | 
| OLD | NEW |