| Index: chromeos/dbus/session_manager_client.cc
|
| diff --git a/chromeos/dbus/session_manager_client.cc b/chromeos/dbus/session_manager_client.cc
|
| index dd9c13ad6ee11acca20c7cc683093d858784c342..95559ea9a0e7b625d284ecd289c1dd378e686b25 100644
|
| --- a/chromeos/dbus/session_manager_client.cc
|
| +++ b/chromeos/dbus/session_manager_client.cc
|
| @@ -20,6 +20,7 @@
|
| #include "base/task_runner_util.h"
|
| #include "base/threading/worker_pool.h"
|
| #include "chromeos/chromeos_paths.h"
|
| +#include "chromeos/cryptohome/cryptohome_parameters.h"
|
| #include "chromeos/dbus/blocking_method_caller.h"
|
| #include "chromeos/dbus/cryptohome_client.h"
|
| #include "crypto/sha2.h"
|
| @@ -34,15 +35,16 @@ namespace chromeos {
|
|
|
| namespace {
|
|
|
| -// Returns a location for |file| that is specific to the given |username|.
|
| +// Returns a location for |file| that is specific to the given |cryptohome_id|.
|
| // These paths will be relative to DIR_USER_POLICY_KEYS, and can be used only
|
| // to store stub files.
|
| -base::FilePath GetUserFilePath(const std::string& username, const char* file) {
|
| +base::FilePath GetUserFilePath(const cryptohome::Identification& cryptohome_id,
|
| + const char* file) {
|
| base::FilePath keys_path;
|
| if (!PathService::Get(chromeos::DIR_USER_POLICY_KEYS, &keys_path))
|
| return base::FilePath();
|
| const std::string sanitized =
|
| - CryptohomeClient::GetStubSanitizedUsername(username);
|
| + CryptohomeClient::GetStubSanitizedUsername(cryptohome_id);
|
| return keys_path.AppendASCII(sanitized).AppendASCII(file);
|
| }
|
|
|
| @@ -153,11 +155,11 @@ class SessionManagerClientImpl : public SessionManagerClient {
|
| false);
|
| }
|
|
|
| - void StartSession(const std::string& user_email) override {
|
| + void StartSession(const cryptohome::Identification& cryptohome_id) override {
|
| dbus::MethodCall method_call(login_manager::kSessionManagerInterface,
|
| login_manager::kSessionManagerStartSession);
|
| dbus::MessageWriter writer(&method_call);
|
| - writer.AppendString(user_email);
|
| + writer.AppendString(cryptohome_id.id());
|
| writer.AppendString(""); // Unique ID is deprecated
|
| session_manager_proxy_->CallMethod(
|
| &method_call,
|
| @@ -238,21 +240,20 @@ class SessionManagerClientImpl : public SessionManagerClient {
|
| callback));
|
| }
|
|
|
| - void RetrievePolicyForUser(const std::string& username,
|
| + void RetrievePolicyForUser(const cryptohome::Identification& cryptohome_id,
|
| const RetrievePolicyCallback& callback) override {
|
| CallRetrievePolicyByUsername(
|
| - login_manager::kSessionManagerRetrievePolicyForUser,
|
| - username,
|
| + login_manager::kSessionManagerRetrievePolicyForUser, cryptohome_id.id(),
|
| callback);
|
| }
|
|
|
| std::string BlockingRetrievePolicyForUser(
|
| - const std::string& username) override {
|
| + const cryptohome::Identification& cryptohome_id) override {
|
| dbus::MethodCall method_call(
|
| login_manager::kSessionManagerInterface,
|
| login_manager::kSessionManagerRetrievePolicyForUser);
|
| dbus::MessageWriter writer(&method_call);
|
| - writer.AppendString(username);
|
| + writer.AppendString(cryptohome_id.id());
|
| scoped_ptr<dbus::Response> response =
|
| blocking_method_caller_->CallMethodAndBlock(&method_call);
|
| std::string policy;
|
| @@ -289,13 +290,11 @@ class SessionManagerClientImpl : public SessionManagerClient {
|
| callback));
|
| }
|
|
|
| - void StorePolicyForUser(const std::string& username,
|
| + void StorePolicyForUser(const cryptohome::Identification& cryptohome_id,
|
| const std::string& policy_blob,
|
| const StorePolicyCallback& callback) override {
|
| CallStorePolicyByUsername(login_manager::kSessionManagerStorePolicyForUser,
|
| - username,
|
| - policy_blob,
|
| - callback);
|
| + cryptohome_id.id(), policy_blob, callback);
|
| }
|
|
|
| void StoreDeviceLocalAccountPolicy(
|
| @@ -309,12 +308,12 @@ class SessionManagerClientImpl : public SessionManagerClient {
|
| callback);
|
| }
|
|
|
| - void SetFlagsForUser(const std::string& username,
|
| + void SetFlagsForUser(const cryptohome::Identification& cryptohome_id,
|
| const std::vector<std::string>& flags) override {
|
| dbus::MethodCall method_call(login_manager::kSessionManagerInterface,
|
| login_manager::kSessionManagerSetFlagsForUser);
|
| dbus::MessageWriter writer(&method_call);
|
| - writer.AppendString(username);
|
| + writer.AppendString(cryptohome_id.id());
|
| writer.AppendArrayOfStrings(flags);
|
| session_manager_proxy_->CallMethod(
|
| &method_call,
|
| @@ -423,12 +422,12 @@ class SessionManagerClientImpl : public SessionManagerClient {
|
|
|
| // Helper for RetrieveDeviceLocalAccountPolicy and RetrievePolicyForUser.
|
| void CallRetrievePolicyByUsername(const std::string& method_name,
|
| - const std::string& username,
|
| + const std::string& account_id,
|
| const RetrievePolicyCallback& callback) {
|
| dbus::MethodCall method_call(login_manager::kSessionManagerInterface,
|
| method_name);
|
| dbus::MessageWriter writer(&method_call);
|
| - writer.AppendString(username);
|
| + writer.AppendString(account_id);
|
| session_manager_proxy_->CallMethod(
|
| &method_call,
|
| dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
|
| @@ -440,13 +439,13 @@ class SessionManagerClientImpl : public SessionManagerClient {
|
| }
|
|
|
| void CallStorePolicyByUsername(const std::string& method_name,
|
| - const std::string& username,
|
| + const std::string& account_id,
|
| const std::string& policy_blob,
|
| const StorePolicyCallback& callback) {
|
| dbus::MethodCall method_call(login_manager::kSessionManagerInterface,
|
| method_name);
|
| dbus::MessageWriter writer(&method_call);
|
| - writer.AppendString(username);
|
| + writer.AppendString(account_id);
|
| // static_cast does not work due to signedness.
|
| writer.AppendArrayOfBytes(
|
| reinterpret_cast<const uint8_t*>(policy_blob.data()),
|
| @@ -544,7 +543,7 @@ class SessionManagerClientImpl : public SessionManagerClient {
|
| LOG(ERROR) << method_name << " response is incorrect: "
|
| << response->ToString();
|
| } else {
|
| - sessions[key] = value;
|
| + sessions[cryptohome::Identification::FromString(key)] = value;
|
| }
|
| }
|
| success = true;
|
| @@ -741,7 +740,7 @@ class SessionManagerClientStubImpl : public SessionManagerClient {
|
| bool IsScreenLocked() const override { return screen_is_locked_; }
|
| void EmitLoginPromptVisible() override {}
|
| void RestartJob(const std::vector<std::string>& argv) override {}
|
| - void StartSession(const std::string& user_email) override {}
|
| + void StartSession(const cryptohome::Identification& cryptohome_id) override {}
|
| void StopSession() override {}
|
| void NotifySupervisedUserCreationStarted() override {}
|
| void NotifySupervisedUserCreationFinished() override {}
|
| @@ -774,22 +773,23 @@ class SessionManagerClientStubImpl : public SessionManagerClient {
|
| base::Bind(&GetFileContent, device_policy_path),
|
| callback);
|
| }
|
| - void RetrievePolicyForUser(const std::string& username,
|
| + void RetrievePolicyForUser(const cryptohome::Identification& cryptohome_id,
|
| const RetrievePolicyCallback& callback) override {
|
| base::PostTaskAndReplyWithResult(
|
| - base::WorkerPool::GetTaskRunner(false).get(),
|
| - FROM_HERE,
|
| - base::Bind(&GetFileContent, GetUserFilePath(username, "stub_policy")),
|
| + base::WorkerPool::GetTaskRunner(false).get(), FROM_HERE,
|
| + base::Bind(&GetFileContent,
|
| + GetUserFilePath(cryptohome_id, "stub_policy")),
|
| callback);
|
| }
|
| std::string BlockingRetrievePolicyForUser(
|
| - const std::string& username) override {
|
| - return GetFileContent(GetUserFilePath(username, "stub_policy"));
|
| + const cryptohome::Identification& cryptohome_id) override {
|
| + return GetFileContent(GetUserFilePath(cryptohome_id, "stub_policy"));
|
| }
|
| void RetrieveDeviceLocalAccountPolicy(
|
| - const std::string& account_name,
|
| + const std::string& account_id,
|
| const RetrievePolicyCallback& callback) override {
|
| - RetrievePolicyForUser(account_name, callback);
|
| + RetrievePolicyForUser(cryptohome::Identification::FromString(account_id),
|
| + callback);
|
| }
|
| void StoreDevicePolicy(const std::string& policy_blob,
|
| const StorePolicyCallback& callback) override {
|
| @@ -821,7 +821,7 @@ class SessionManagerClientStubImpl : public SessionManagerClient {
|
| base::Bind(callback, true),
|
| false);
|
| }
|
| - void StorePolicyForUser(const std::string& username,
|
| + void StorePolicyForUser(const cryptohome::Identification& cryptohome_id,
|
| const std::string& policy_blob,
|
| const StorePolicyCallback& callback) override {
|
| // The session manager writes the user policy key to a well-known
|
| @@ -834,7 +834,7 @@ class SessionManagerClientStubImpl : public SessionManagerClient {
|
| }
|
|
|
| if (response.has_new_public_key()) {
|
| - base::FilePath key_path = GetUserFilePath(username, "policy.pub");
|
| + base::FilePath key_path = GetUserFilePath(cryptohome_id, "policy.pub");
|
| base::WorkerPool::PostTask(
|
| FROM_HERE,
|
| base::Bind(&StoreFile, key_path, response.new_public_key()),
|
| @@ -843,7 +843,8 @@ class SessionManagerClientStubImpl : public SessionManagerClient {
|
|
|
| // This file isn't read directly by Chrome, but is used by this class to
|
| // reload the user policy across restarts.
|
| - base::FilePath stub_policy_path = GetUserFilePath(username, "stub_policy");
|
| + base::FilePath stub_policy_path =
|
| + GetUserFilePath(cryptohome_id, "stub_policy");
|
| base::WorkerPool::PostTaskAndReply(
|
| FROM_HERE,
|
| base::Bind(&StoreFile, stub_policy_path, policy_blob),
|
| @@ -851,12 +852,13 @@ class SessionManagerClientStubImpl : public SessionManagerClient {
|
| false);
|
| }
|
| void StoreDeviceLocalAccountPolicy(
|
| - const std::string& account_name,
|
| + const std::string& account_id,
|
| const std::string& policy_blob,
|
| const StorePolicyCallback& callback) override {
|
| - StorePolicyForUser(account_name, policy_blob, callback);
|
| + StorePolicyForUser(cryptohome::Identification::FromString(account_id),
|
| + policy_blob, callback);
|
| }
|
| - void SetFlagsForUser(const std::string& username,
|
| + void SetFlagsForUser(const cryptohome::Identification& cryptohome_id,
|
| const std::vector<std::string>& flags) override {}
|
|
|
| void GetServerBackedStateKeys(const StateKeysCallback& callback) override {
|
|
|