Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(80)

Unified Diff: chromeos/dbus/session_manager_client.cc

Issue 2714493002: Load DeviceLocalAccount policy and DeviceSettings immediately on restore after Chrome crash. (Closed)
Patch Set: wrap Validator in unique_ptr Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chromeos/dbus/session_manager_client.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chromeos/dbus/session_manager_client.cc
diff --git a/chromeos/dbus/session_manager_client.cc b/chromeos/dbus/session_manager_client.cc
index dd5c642a9b2fa1548a9358e1137be26f35e37b5c..9e87be84e0a371296c29620fa4930b9e484d6049 100644
--- a/chromeos/dbus/session_manager_client.cc
+++ b/chromeos/dbus/session_manager_client.cc
@@ -40,6 +40,9 @@ namespace {
constexpr char kArcLowDiskError[] =
"org.chromium.SessionManagerInterface.LowFreeDisk";
+constexpr char kStubPolicyFile[] = "stub_policy";
+constexpr char kStubDevicePolicyFile[] = "stub_device_policy";
+
// 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.
@@ -208,6 +211,17 @@ class SessionManagerClientImpl : public SessionManagerClient {
callback));
}
+ std::string BlockingRetrieveDevicePolicy() override {
+ dbus::MethodCall method_call(login_manager::kSessionManagerInterface,
+ login_manager::kSessionManagerRetrievePolicy);
+ std::unique_ptr<dbus::Response> response =
+ blocking_method_caller_->CallMethodAndBlock(&method_call);
+ std::string policy;
+ ExtractString(login_manager::kSessionManagerRetrievePolicy, response.get(),
+ &policy);
+ return policy;
+ }
+
void RetrievePolicyForUser(const cryptohome::Identification& cryptohome_id,
const RetrievePolicyCallback& callback) override {
CallRetrievePolicyByUsername(
@@ -240,6 +254,22 @@ class SessionManagerClientImpl : public SessionManagerClient {
callback);
}
+ std::string BlockingRetrieveDeviceLocalAccountPolicy(
+ const std::string& account_name) override {
+ dbus::MethodCall method_call(
+ login_manager::kSessionManagerInterface,
+ login_manager::kSessionManagerRetrieveDeviceLocalAccountPolicy);
+ dbus::MessageWriter writer(&method_call);
+ writer.AppendString(account_name);
+ std::unique_ptr<dbus::Response> response =
+ blocking_method_caller_->CallMethodAndBlock(&method_call);
+ std::string policy;
+ ExtractString(
+ login_manager::kSessionManagerRetrieveDeviceLocalAccountPolicy,
+ response.get(), &policy);
+ return policy;
+ }
+
void StoreDevicePolicy(const std::string& policy_blob,
const StorePolicyCallback& callback) override {
dbus::MethodCall method_call(login_manager::kSessionManagerInterface,
@@ -835,7 +865,7 @@ class SessionManagerClientStubImpl : public SessionManagerClient {
return;
}
base::FilePath device_policy_path =
- owner_key_path.DirName().AppendASCII("stub_device_policy");
+ owner_key_path.DirName().AppendASCII(kStubDevicePolicyFile);
base::PostTaskWithTraitsAndReplyWithResult(
FROM_HERE, base::TaskTraits()
.WithShutdownBehavior(
@@ -843,20 +873,30 @@ class SessionManagerClientStubImpl : public SessionManagerClient {
.MayBlock(),
base::Bind(&GetFileContent, device_policy_path), callback);
}
+ std::string BlockingRetrieveDevicePolicy() override {
+ base::FilePath owner_key_path;
+ if (!PathService::Get(chromeos::FILE_OWNER_KEY, &owner_key_path)) {
+ return "";
+ }
+ base::FilePath device_policy_path =
+ owner_key_path.DirName().AppendASCII(kStubDevicePolicyFile);
+ return GetFileContent(device_policy_path);
+ }
void RetrievePolicyForUser(const cryptohome::Identification& cryptohome_id,
const RetrievePolicyCallback& callback) override {
base::PostTaskWithTraitsAndReplyWithResult(
- FROM_HERE, base::TaskTraits()
- .WithShutdownBehavior(
- base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN)
- .MayBlock(),
+ FROM_HERE,
+ base::TaskTraits()
+ .WithShutdownBehavior(
+ base::TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN)
+ .MayBlock(),
base::Bind(&GetFileContent,
- GetUserFilePath(cryptohome_id, "stub_policy")),
+ GetUserFilePath(cryptohome_id, kStubPolicyFile)),
callback);
}
std::string BlockingRetrievePolicyForUser(
const cryptohome::Identification& cryptohome_id) override {
- return GetFileContent(GetUserFilePath(cryptohome_id, "stub_policy"));
+ return GetFileContent(GetUserFilePath(cryptohome_id, kStubPolicyFile));
}
void RetrieveDeviceLocalAccountPolicy(
const std::string& account_id,
@@ -864,6 +904,11 @@ class SessionManagerClientStubImpl : public SessionManagerClient {
RetrievePolicyForUser(cryptohome::Identification::FromString(account_id),
callback);
}
+ std::string BlockingRetrieveDeviceLocalAccountPolicy(
+ const std::string& account_id) override {
+ return BlockingRetrievePolicyForUser(
+ cryptohome::Identification::FromString(account_id));
+ }
void StoreDevicePolicy(const std::string& policy_blob,
const StorePolicyCallback& callback) override {
enterprise_management::PolicyFetchResponse response;
@@ -889,7 +934,7 @@ class SessionManagerClientStubImpl : public SessionManagerClient {
// Note also that the owner key will be written before the device policy,
// if it was present in the blob.
base::FilePath device_policy_path =
- owner_key_path.DirName().AppendASCII("stub_device_policy");
+ owner_key_path.DirName().AppendASCII(kStubDevicePolicyFile);
base::PostTaskWithTraitsAndReply(
FROM_HERE, base::TaskTraits()
.WithShutdownBehavior(
@@ -923,7 +968,7 @@ 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(cryptohome_id, "stub_policy");
+ GetUserFilePath(cryptohome_id, kStubPolicyFile);
base::PostTaskWithTraitsAndReply(
FROM_HERE, base::TaskTraits()
.WithShutdownBehavior(
« no previous file with comments | « chromeos/dbus/session_manager_client.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698