Index: chrome/browser/chrome_browser_main.cc |
diff --git a/chrome/browser/chrome_browser_main.cc b/chrome/browser/chrome_browser_main.cc |
index 46c9926416695b1ab9e563177179c345de2d0c0e..9b9b1ff2b85e876888b4048a613d1c1c7e246e5c 100644 |
--- a/chrome/browser/chrome_browser_main.cc |
+++ b/chrome/browser/chrome_browser_main.cc |
@@ -143,6 +143,7 @@ |
#include "chrome/browser/chromeos/login/ownership_service.h" |
#include "chrome/browser/chromeos/login/screen_locker.h" |
#include "chrome/browser/chromeos/login/user_manager.h" |
+#include "chrome/browser/chromeos/system/runtime_environment.h" |
#include "chrome/browser/chromeos/system_key_event_listener.h" |
#include "chrome/browser/chromeos/user_cros_settings_provider.h" |
#include "chrome/browser/chromeos/xinput_hierarchy_changed_event_listener.h" |
@@ -1817,8 +1818,12 @@ int ChromeBrowserMainParts::PreMainMessageLoopRunInternal() { |
chromeos::AudioHandler::Initialize(); |
// Listen for system key events so that the user will be able to adjust the |
- // volume on the login screen. |
- chromeos::SystemKeyEventListener::Initialize(); |
+ // volume on the login screen, if Chrome is running on Chrome OS |
+ // (i.e. not Linux desktop), and in non-test mode. |
+ if (chromeos::system::runtime_environment::IsRunningOnChromeOS() && |
+ !parameters().ui_task) { // ui_task is non-NULL when running tests. |
+ chromeos::SystemKeyEventListener::Initialize(); |
+ } |
// Listen for XI_HierarchyChanged events. |
chromeos::XInputHierarchyChangedEventListener::GetInstance(); |
@@ -2039,6 +2044,8 @@ void ChromeBrowserMainParts::PostMainMessageLoopRun() { |
// Singletons are finally destroyed in AtExitManager. |
chromeos::XInputHierarchyChangedEventListener::GetInstance()->Stop(); |
+ // chromeos::SystemKeyEventListener::Shutdown() is always safe to call, |
+ // even if Initialize() wasn't called. |
chromeos::SystemKeyEventListener::Shutdown(); |
chromeos::AudioHandler::Shutdown(); |
#endif |