summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos/dbus
diff options
context:
space:
mode:
authorpastarmovj@chromium.org <pastarmovj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-26 08:41:02 +0000
committerpastarmovj@chromium.org <pastarmovj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-03-26 08:41:02 +0000
commit124766c77ee1ffa5bee77c9ab17eef41c0aa2ce9 (patch)
tree2fb6acee0449b090856912dc61323b87563d1330 /chrome/browser/chromeos/dbus
parent369ab5a5749d00f6547b761f1b61af4289e0b236 (diff)
downloadchromium_src-124766c77ee1ffa5bee77c9ab17eef41c0aa2ce9.zip
chromium_src-124766c77ee1ffa5bee77c9ab17eef41c0aa2ce9.tar.gz
chromium_src-124766c77ee1ffa5bee77c9ab17eef41c0aa2ce9.tar.bz2
Make sure the device recovers from policy loss in the consumer case.
Lock down login to the owner only and restore policy on successful owner login. The machine is forced to restart if the owner didn't login because we have no better way to clear the key store loaded for another user. BUG=chromium-os:26793 TEST=TBA. Manually: Delete the policy blob and verify that policy is recovered correctly. Review URL: https://chromiumcodereview.appspot.com/9466005 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@128877 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos/dbus')
-rw-r--r--chrome/browser/chromeos/dbus/cryptohome_client.cc12
-rw-r--r--chrome/browser/chromeos/dbus/cryptohome_client.h4
-rw-r--r--chrome/browser/chromeos/dbus/mock_cryptohome_client.h1
3 files changed, 17 insertions, 0 deletions
diff --git a/chrome/browser/chromeos/dbus/cryptohome_client.cc b/chrome/browser/chromeos/dbus/cryptohome_client.cc
index fe1c4e3..579b8d8 100644
--- a/chrome/browser/chromeos/dbus/cryptohome_client.cc
+++ b/chrome/browser/chromeos/dbus/cryptohome_client.cc
@@ -99,6 +99,12 @@ class CryptohomeClientImpl : public CryptohomeClient {
}
// CryptohomeClient override.
+ virtual bool Unmount(bool *success) OVERRIDE {
+ INITIALIZE_METHOD_CALL(method_call, cryptohome::kCryptohomeUnmount);
+ return CallMethodAndBlock(&method_call, base::Bind(&PopBool, success));
+ }
+
+ // CryptohomeClient override.
virtual void AsyncCheckKey(const std::string& username,
const std::string& key,
AsyncMethodCallback callback) OVERRIDE {
@@ -465,6 +471,12 @@ class CryptohomeClientStubImpl : public CryptohomeClient {
}
// CryptohomeClient override.
+ virtual bool Unmount(bool* success) OVERRIDE {
+ *success = true;
+ return true;
+ }
+
+ // CryptohomeClient override.
virtual void AsyncCheckKey(const std::string& username,
const std::string& key,
AsyncMethodCallback callback) OVERRIDE {
diff --git a/chrome/browser/chromeos/dbus/cryptohome_client.h b/chrome/browser/chromeos/dbus/cryptohome_client.h
index a7a1d05..17f5a41 100644
--- a/chrome/browser/chromeos/dbus/cryptohome_client.h
+++ b/chrome/browser/chromeos/dbus/cryptohome_client.h
@@ -61,6 +61,10 @@ class CryptohomeClient {
// This method blocks until the call returns.
virtual bool IsMounted(bool* is_mounted) = 0;
+ // Calls Unmount method and returns true when the call succeeds.
+ // This method blocks until the call returns.
+ virtual bool Unmount(bool* success) = 0;
+
// Calls AsyncCheckKey method. |callback| is called after the method call
// succeeds.
virtual void AsyncCheckKey(const std::string& username,
diff --git a/chrome/browser/chromeos/dbus/mock_cryptohome_client.h b/chrome/browser/chromeos/dbus/mock_cryptohome_client.h
index 457cc8d..3404cae 100644
--- a/chrome/browser/chromeos/dbus/mock_cryptohome_client.h
+++ b/chrome/browser/chromeos/dbus/mock_cryptohome_client.h
@@ -21,6 +21,7 @@ class MockCryptohomeClient : public CryptohomeClient {
MOCK_METHOD1(SetAsyncCallStatusHandler, void(AsyncCallStatusHandler handler));
MOCK_METHOD0(ResetAsyncCallStatusHandler, void());
MOCK_METHOD1(IsMounted, bool(bool* is_mounted));
+ MOCK_METHOD1(Unmount, bool(bool* success));
MOCK_METHOD3(AsyncCheckKey,
void(const std::string& username,
const std::string& key,