| Index: chrome/browser/chromeos/dbus/session_manager_client.cc
|
| diff --git a/chrome/browser/chromeos/dbus/session_manager_client.cc b/chrome/browser/chromeos/dbus/session_manager_client.cc
|
| index 250910248b3fe499d4992d148325e1685c0eb154..e106a0acd7f561e868522c42dca1dfc84ddfbedc 100644
|
| --- a/chrome/browser/chromeos/dbus/session_manager_client.cc
|
| +++ b/chrome/browser/chromeos/dbus/session_manager_client.cc
|
| @@ -134,22 +134,52 @@ class SessionManagerClientImpl : public SessionManagerClient {
|
| }
|
|
|
| // SessionManagerClient override.
|
| - virtual void RetrievePolicy(RetrievePolicyCallback callback) OVERRIDE {
|
| + virtual void RetrieveDevicePolicy(RetrievePolicyCallback callback) OVERRIDE {
|
| + CallRetrievePolicy(login_manager::kSessionManagerRetrievePolicy,
|
| + callback);
|
| + }
|
| +
|
| + // SessionManagerClient override.
|
| + virtual void RetrieveUserPolicy(RetrievePolicyCallback callback) OVERRIDE {
|
| + CallRetrievePolicy(login_manager::kSessionManagerRetrieveUserPolicy,
|
| + callback);
|
| + }
|
| +
|
| + // SessionManagerClient override.
|
| + virtual void StoreDevicePolicy(const std::string& policy_blob,
|
| + StorePolicyCallback callback) OVERRIDE {
|
| + CallStorePolicy(login_manager::kSessionManagerStorePolicy,
|
| + policy_blob, callback);
|
| + }
|
| +
|
| + // SessionManagerClient override.
|
| + virtual void StoreUserPolicy(const std::string& policy_blob,
|
| + StorePolicyCallback callback) OVERRIDE {
|
| + CallStorePolicy(login_manager::kSessionManagerStoreUserPolicy,
|
| + policy_blob, callback);
|
| + }
|
| +
|
| + private:
|
| + // Helper for Retrieve{User,Device}Policy.
|
| + virtual void CallRetrievePolicy(const std::string& method_name,
|
| + RetrievePolicyCallback callback) {
|
| dbus::MethodCall method_call(login_manager::kSessionManagerInterface,
|
| - login_manager::kSessionManagerRetrievePolicy);
|
| + method_name);
|
| session_manager_proxy_->CallMethod(
|
| &method_call,
|
| dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
|
| base::Bind(&SessionManagerClientImpl::OnRetrievePolicy,
|
| weak_ptr_factory_.GetWeakPtr(),
|
| + method_name,
|
| callback));
|
| }
|
|
|
| - // SessionManagerClient override.
|
| - virtual void StorePolicy(const std::string& policy_blob,
|
| - StorePolicyCallback callback) OVERRIDE {
|
| + // Helper for Store{User,Device}Policy.
|
| + virtual void CallStorePolicy(const std::string& method_name,
|
| + const std::string& policy_blob,
|
| + StorePolicyCallback callback) {
|
| dbus::MethodCall method_call(login_manager::kSessionManagerInterface,
|
| - login_manager::kSessionManagerStorePolicy);
|
| + method_name);
|
| dbus::MessageWriter writer(&method_call);
|
| // static_cast does not work due to signedness.
|
| writer.AppendArrayOfBytes(
|
| @@ -159,10 +189,10 @@ class SessionManagerClientImpl : public SessionManagerClient {
|
| dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
|
| base::Bind(&SessionManagerClientImpl::OnStorePolicy,
|
| weak_ptr_factory_.GetWeakPtr(),
|
| + method_name,
|
| callback));
|
| }
|
|
|
| - private:
|
| // Called when kSessionManagerEmitLoginPromptReady method is complete.
|
| void OnEmitLoginPromptReady(dbus::Response* response) {
|
| LOG_IF(ERROR, !response)
|
| @@ -205,12 +235,13 @@ class SessionManagerClientImpl : public SessionManagerClient {
|
| << login_manager::kSessionManagerStopSession;
|
| }
|
|
|
| - // Called when kSessionManagerRetrievePolicy method is complete.
|
| - void OnRetrievePolicy(RetrievePolicyCallback callback,
|
| + // Called when kSessionManagerRetrievePolicy or
|
| + // kSessionManagerRetrieveUserPolicy method is complete.
|
| + void OnRetrievePolicy(const std::string& method_name,
|
| + RetrievePolicyCallback callback,
|
| dbus::Response* response) {
|
| if (!response) {
|
| - LOG(ERROR) << "Failed to call "
|
| - << login_manager::kSessionManagerRetrievePolicy;
|
| + LOG(ERROR) << "Failed to call " << method_name;
|
| callback.Run("");
|
| return;
|
| }
|
| @@ -227,18 +258,18 @@ class SessionManagerClientImpl : public SessionManagerClient {
|
| callback.Run(serialized_proto);
|
| }
|
|
|
| - // Called when kSessionManagerStorePolicy method is complete.
|
| - void OnStorePolicy(StorePolicyCallback callback, dbus::Response* response) {
|
| - if (!response) {
|
| - LOG(ERROR) << "Failed to call "
|
| - << login_manager::kSessionManagerStorePolicy;
|
| - return;
|
| - }
|
| - dbus::MessageReader reader(response);
|
| + // Called when kSessionManagerStorePolicy or kSessionManagerStoreUserPolicy
|
| + // method is complete.
|
| + void OnStorePolicy(const std::string& method_name,
|
| + StorePolicyCallback callback,
|
| + dbus::Response* response) {
|
| bool success = false;
|
| - if (!reader.PopBool(&success)) {
|
| - LOG(ERROR) << "Invalid response: " << response->ToString();
|
| - return;
|
| + if (!response) {
|
| + LOG(ERROR) << "Failed to call " << method_name;
|
| + } else {
|
| + dbus::MessageReader reader(response);
|
| + if (!reader.PopBool(&success))
|
| + LOG(ERROR) << "Invalid response: " << response->ToString();
|
| }
|
| callback.Run(success);
|
| }
|
| @@ -293,14 +324,20 @@ class SessionManagerClientStubImpl : public SessionManagerClient {
|
| virtual void RestartEntd() OVERRIDE {}
|
| virtual void StartSession(const std::string& user_email) OVERRIDE {}
|
| virtual void StopSession() OVERRIDE {}
|
| - virtual void RetrievePolicy(RetrievePolicyCallback callback) OVERRIDE {
|
| + virtual void RetrieveDevicePolicy(RetrievePolicyCallback callback) OVERRIDE {
|
| + callback.Run("");
|
| + }
|
| + virtual void RetrieveUserPolicy(RetrievePolicyCallback callback) OVERRIDE {
|
| callback.Run("");
|
| }
|
| - virtual void StorePolicy(const std::string& policy_blob,
|
| - StorePolicyCallback callback) OVERRIDE {
|
| + virtual void StoreDevicePolicy(const std::string& policy_blob,
|
| + StorePolicyCallback callback) OVERRIDE {
|
| + callback.Run(true);
|
| + }
|
| + virtual void StoreUserPolicy(const std::string& policy_blob,
|
| + StorePolicyCallback callback) OVERRIDE {
|
| callback.Run(true);
|
| }
|
| -
|
| };
|
|
|
| SessionManagerClient::SessionManagerClient() {
|
|
|