diff options
| -rw-r--r-- | chrome/browser/chromeos/cros/cros_mock.cc | 4 | ||||
| -rw-r--r-- | chrome/browser/chromeos/cros/mock_power_library.h | 2 | ||||
| -rw-r--r-- | chrome/browser/chromeos/cros/power_library.cc | 16 | ||||
| -rw-r--r-- | chrome/browser/chromeos/cros/power_library.h | 3 | ||||
| -rw-r--r-- | chrome/browser/chromeos/preferences.cc | 5 | ||||
| -rw-r--r-- | chrome/browser/chromeos/system/screen_locker_settings.cc | 49 | ||||
| -rw-r--r-- | chrome/browser/chromeos/system/screen_locker_settings.h | 20 | ||||
| -rw-r--r-- | chrome/chrome_browser.gypi | 2 |
8 files changed, 73 insertions, 28 deletions
diff --git a/chrome/browser/chromeos/cros/cros_mock.cc b/chrome/browser/chromeos/cros/cros_mock.cc index d468ff7..36e310e 100644 --- a/chrome/browser/chromeos/cros/cros_mock.cc +++ b/chrome/browser/chromeos/cros/cros_mock.cc @@ -230,10 +230,6 @@ void CrosMock::SetPowerLibraryStatusAreaExpectations() { } void CrosMock::SetPowerLibraryExpectations() { - // EnableScreenLock is currently bounded with a prefs value and thus is - // always called when loading - EXPECT_CALL(*mock_power_library_, EnableScreenLock(_)) - .Times(AnyNumber()); } void CrosMock::TearDownMocks() { diff --git a/chrome/browser/chromeos/cros/mock_power_library.h b/chrome/browser/chromeos/cros/mock_power_library.h index 2f9af6f..cd4d0a1 100644 --- a/chrome/browser/chromeos/cros/mock_power_library.h +++ b/chrome/browser/chromeos/cros/mock_power_library.h @@ -21,8 +21,6 @@ class MockPowerLibrary : public PowerLibrary { MOCK_METHOD1(AddObserver, void(Observer*)); MOCK_METHOD1(RemoveObserver, void(Observer*)); - - MOCK_METHOD1(EnableScreenLock, void(bool)); }; } // namespace chromeos diff --git a/chrome/browser/chromeos/cros/power_library.cc b/chrome/browser/chromeos/cros/power_library.cc index ad46f69..878c735 100644 --- a/chrome/browser/chromeos/cros/power_library.cc +++ b/chrome/browser/chromeos/cros/power_library.cc @@ -48,23 +48,9 @@ class PowerLibraryImpl : public PowerLibrary { observers_.RemoveObserver(observer); } - virtual void EnableScreenLock(bool enable) OVERRIDE { - // Called when the screen preference is changed, which should always - // run on UI thread. - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); - // Post the task to FILE thread as chromeos::EnableScreenLock - // would write power manager config file to disk. - BrowserThread::PostTask( - BrowserThread::FILE, FROM_HERE, - base::Bind(&PowerLibraryImpl::DoEnableScreenLock, enable)); - } - // End PowerLibrary implementation. private: - static void DoEnableScreenLock(bool enable) { - chromeos::EnableScreenLock(enable); - } static void SystemResumedHandler(void* object) { PowerLibraryImpl* power = static_cast<PowerLibraryImpl*>(object); @@ -105,8 +91,6 @@ class PowerLibraryStubImpl : public PowerLibrary { observers_.RemoveObserver(observer); } - virtual void EnableScreenLock(bool enable) OVERRIDE {} - // End PowerLibrary implementation. private: ObserverList<Observer> observers_; diff --git a/chrome/browser/chromeos/cros/power_library.h b/chrome/browser/chromeos/cros/power_library.h index a5aa285..d732ef6 100644 --- a/chrome/browser/chromeos/cros/power_library.h +++ b/chrome/browser/chromeos/cros/power_library.h @@ -32,9 +32,6 @@ class PowerLibrary { virtual void AddObserver(Observer* observer) = 0; virtual void RemoveObserver(Observer* observer) = 0; - // Enable/disable screen lock for current session. - virtual void EnableScreenLock(bool enable) = 0; - // Factory function, creates a new instance and returns ownership. // For normal usage, access the singleton via CrosLibrary::Get(). static PowerLibrary* GetImpl(bool stub); diff --git a/chrome/browser/chromeos/preferences.cc b/chrome/browser/chromeos/preferences.cc index 4aee054f..2cfd84e 100644 --- a/chrome/browser/chromeos/preferences.cc +++ b/chrome/browser/chromeos/preferences.cc @@ -11,12 +11,11 @@ #include "base/string_util.h" #include "base/utf_string_conversions.h" #include "chrome/browser/browser_process.h" -#include "chrome/browser/chromeos/cros/cros_library.h" -#include "chrome/browser/chromeos/cros/power_library.h" #include "chrome/browser/chromeos/input_method/input_method_manager.h" #include "chrome/browser/chromeos/input_method/input_method_util.h" #include "chrome/browser/chromeos/input_method/xkeyboard.h" #include "chrome/browser/chromeos/login/login_utils.h" +#include "chrome/browser/chromeos/system/screen_locker_settings.h" #include "chrome/browser/chromeos/system/touchpad_settings.h" #include "chrome/browser/prefs/pref_member.h" #include "chrome/browser/prefs/pref_service.h" @@ -456,7 +455,7 @@ void Preferences::NotifyPrefChanged(const std::string* pref_name) { // Init or update power manager config. if (!pref_name || *pref_name == prefs::kEnableScreenLock) { - CrosLibrary::Get()->GetPowerLibrary()->EnableScreenLock( + system::screen_locker_settings::EnableScreenLock( enable_screen_lock_.GetValue()); } } diff --git a/chrome/browser/chromeos/system/screen_locker_settings.cc b/chrome/browser/chromeos/system/screen_locker_settings.cc new file mode 100644 index 0000000..620c3f2 --- /dev/null +++ b/chrome/browser/chromeos/system/screen_locker_settings.cc @@ -0,0 +1,49 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/browser/chromeos/system/touchpad_settings.h" + +#include "base/bind.h" +#include "base/file_path.h" +#include "base/file_util.h" +#include "base/stringprintf.h" +#include "chrome/browser/chromeos/system/runtime_environment.h" +#include "content/public/browser/browser_thread.h" + +using content::BrowserThread; + +namespace { + +const char kLockOnIdleSuspendPath[] = + "/var/lib/power_manager/lock_on_idle_suspend"; + +void EnableScreenLockOnFileThread(bool enable) { + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); + + if (chromeos::system::runtime_environment::IsRunningOnChromeOS()) { + std::string config = base::StringPrintf("%d", enable); + file_util::WriteFile(FilePath(kLockOnIdleSuspendPath), + config.c_str(), + config.size()); + } +} + +} // namespace + +namespace chromeos { +namespace system { +namespace screen_locker_settings { + +void EnableScreenLock(bool enable) { + DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); + + // Run this on the FILE thread. + BrowserThread::PostTask( + BrowserThread::FILE, FROM_HERE, + base::Bind(&EnableScreenLockOnFileThread, enable)); +} + +} // namespace screen_locker_settings +} // namespace system +} // namespace chromeos diff --git a/chrome/browser/chromeos/system/screen_locker_settings.h b/chrome/browser/chromeos/system/screen_locker_settings.h new file mode 100644 index 0000000..6baa9ae --- /dev/null +++ b/chrome/browser/chromeos/system/screen_locker_settings.h @@ -0,0 +1,20 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_CHROMEOS_SYSTEM_SCREEN_LOCKER_SETTINGS_H_ +#define CHROME_BROWSER_CHROMEOS_SYSTEM_SCREEN_LOCKER_SETTINGS_H_ +#pragma once + +namespace chromeos { +namespace system { +namespace screen_locker_settings { + +// Enables/disables screen locking. +void EnableScreenLock(bool enabled); + +} // namespace screen_locker_settings +} // namespace system +} // namespace chromeos + +#endif // CHROME_BROWSER_CHROMEOS_SYSTEM_SCREEN_LOCKER_SETTINGS_H_ diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index 5ea8bba..c65dd17 100644 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -773,6 +773,8 @@ 'browser/chromeos/system/name_value_pairs_parser.h', 'browser/chromeos/system/runtime_environment.cc', 'browser/chromeos/system/runtime_environment.h', + 'browser/chromeos/system/screen_locker_settings.cc', + 'browser/chromeos/system/screen_locker_settings.h', 'browser/chromeos/system/statistics_provider.cc', 'browser/chromeos/system/statistics_provider.h', 'browser/chromeos/system/syslogs_provider.cc', |
