diff options
author | pastarmovj@chromium.org <pastarmovj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-26 08:41:02 +0000 |
---|---|---|
committer | pastarmovj@chromium.org <pastarmovj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-26 08:41:02 +0000 |
commit | 124766c77ee1ffa5bee77c9ab17eef41c0aa2ce9 (patch) | |
tree | 2fb6acee0449b090856912dc61323b87563d1330 /chrome/browser/chromeos/dbus | |
parent | 369ab5a5749d00f6547b761f1b61af4289e0b236 (diff) | |
download | chromium_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.cc | 12 | ||||
-rw-r--r-- | chrome/browser/chromeos/dbus/cryptohome_client.h | 4 | ||||
-rw-r--r-- | chrome/browser/chromeos/dbus/mock_cryptohome_client.h | 1 |
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, |