summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/chromeos/cros/cros_mock.cc4
-rw-r--r--chrome/browser/chromeos/cros/mock_power_library.h2
-rw-r--r--chrome/browser/chromeos/cros/power_library.cc16
-rw-r--r--chrome/browser/chromeos/cros/power_library.h3
-rw-r--r--chrome/browser/chromeos/preferences.cc5
-rw-r--r--chrome/browser/chromeos/system/screen_locker_settings.cc49
-rw-r--r--chrome/browser/chromeos/system/screen_locker_settings.h20
-rw-r--r--chrome/chrome_browser.gypi2
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',