summaryrefslogtreecommitdiffstats
path: root/chrome/browser/chromeos
diff options
context:
space:
mode:
authormnissler@chromium.org <mnissler@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-05 12:49:21 +0000
committermnissler@chromium.org <mnissler@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-04-05 12:49:21 +0000
commit6ed595f6c9b6debab62b445b3eac564c4797074a (patch)
treef4e9e1ab9c78fcd104605c05f6ec56fc04ed673a /chrome/browser/chromeos
parent6fd502860a2cba5d8da1decf06fc3d873f834e0d (diff)
downloadchromium_src-6ed595f6c9b6debab62b445b3eac564c4797074a.zip
chromium_src-6ed595f6c9b6debab62b445b3eac564c4797074a.tar.gz
chromium_src-6ed595f6c9b6debab62b445b3eac564c4797074a.tar.bz2
Add calls to store/retrieve user policy to SessionManagerClient.
BUG=chromium:87383 TEST=None Review URL: https://chromiumcodereview.appspot.com/9961014 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@130907 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/chromeos')
-rw-r--r--chrome/browser/chromeos/dbus/mock_session_manager_client.h10
-rw-r--r--chrome/browser/chromeos/dbus/session_manager_client.cc89
-rw-r--r--chrome/browser/chromeos/dbus/session_manager_client.h36
-rw-r--r--chrome/browser/chromeos/login/existing_user_controller_browsertest.cc4
-rw-r--r--chrome/browser/chromeos/login/login_utils_browsertest.cc4
-rw-r--r--chrome/browser/chromeos/login/network_screen_browsertest.cc4
-rw-r--r--chrome/browser/chromeos/login/signed_settings.cc4
-rw-r--r--chrome/browser/chromeos/login/signed_settings_helper_unittest.cc6
-rw-r--r--chrome/browser/chromeos/login/signed_settings_unittest.cc14
9 files changed, 111 insertions, 60 deletions
diff --git a/chrome/browser/chromeos/dbus/mock_session_manager_client.h b/chrome/browser/chromeos/dbus/mock_session_manager_client.h
index 5d0643e..7c6b41b 100644
--- a/chrome/browser/chromeos/dbus/mock_session_manager_client.h
+++ b/chrome/browser/chromeos/dbus/mock_session_manager_client.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -25,8 +25,12 @@ class MockSessionManagerClient : public SessionManagerClient {
MOCK_METHOD2(RestartJob, void(int, const std::string&));
MOCK_METHOD1(StartSession, void(const std::string&));
MOCK_METHOD0(StopSession, void(void));
- MOCK_METHOD1(RetrievePolicy, void(RetrievePolicyCallback));
- MOCK_METHOD2(StorePolicy, void(const std::string&, StorePolicyCallback));
+ MOCK_METHOD1(RetrieveDevicePolicy, void(RetrievePolicyCallback));
+ MOCK_METHOD1(RetrieveUserPolicy, void(RetrievePolicyCallback));
+ MOCK_METHOD2(StoreDevicePolicy, void(const std::string&,
+ StorePolicyCallback));
+ MOCK_METHOD2(StoreUserPolicy, void(const std::string&,
+ StorePolicyCallback));
};
} // namespace chromeos
diff --git a/chrome/browser/chromeos/dbus/session_manager_client.cc b/chrome/browser/chromeos/dbus/session_manager_client.cc
index 2509102..e106a0a 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() {
diff --git a/chrome/browser/chromeos/dbus/session_manager_client.h b/chrome/browser/chromeos/dbus/session_manager_client.h
index 1041b58..a787fad 100644
--- a/chrome/browser/chromeos/dbus/session_manager_client.h
+++ b/chrome/browser/chromeos/dbus/session_manager_client.h
@@ -52,24 +52,34 @@ class SessionManagerClient {
// Stops the current session.
virtual void StopSession() = 0;
- // Used for RetrievePolicy. Takes a serialized protocol buffer as string.
+ // Used for RetrieveDevicePolicy and RetrieveUserPolicy. Takes a serialized
+ // protocol buffer as string. Upon success, we will pass a protobuf to the
+ // callback. On failure, we will pass "".
typedef base::Callback<void(const std::string&)> RetrievePolicyCallback;
- // Fetches the policy blob stored by the session manager. Upon
- // completion of the retrieve attempt, we will call the provided
- // callback. Policies are serialized protocol buffers. Upon success,
- // we will pass a protobuf to the callback. On failure, we will pass
- // "".
- virtual void RetrievePolicy(RetrievePolicyCallback callback) = 0;
+ // Fetches the device policy blob stored by the session manager. Upon
+ // completion of the retrieve attempt, we will call the provided callback.
+ virtual void RetrieveDevicePolicy(RetrievePolicyCallback callback) = 0;
- // Used for StorePolicyCallback. Takes a boolean indicating whether the
- // operation was successful or not.
+ // Fetches the user policy blob stored by the session manager for the
+ // currently signed-in user. Upon completion of the retrieve attempt, we will
+ // call the provided callback.
+ virtual void RetrieveUserPolicy(RetrievePolicyCallback callback) = 0;
+
+ // Used for StoreDevicePolicy and StoreUserPolicy. Takes a boolean indicating
+ // whether the operation was successful or not.
typedef base::Callback<void(bool)> StorePolicyCallback;
- // Attempts to store |policy_blob| asynchronously. Upon completion of
- // the store attempt, we will call callback.
- virtual void StorePolicy(const std::string& policy_bob,
- StorePolicyCallback callback) = 0;
+ // Attempts to asynchronously store |policy_blob| as device policy. Upon
+ // completion of the store attempt, we will call callback.
+ virtual void StoreDevicePolicy(const std::string& policy_blob,
+ StorePolicyCallback callback) = 0;
+
+ // Attempts to asynchronously store |policy_blob| as user policy for the
+ // currently signed-in user. Upon completion of the store attempt, we will
+ // call callback.
+ virtual void StoreUserPolicy(const std::string& policy_blob,
+ StorePolicyCallback callback) = 0;
// Creates the instance.
static SessionManagerClient* Create(DBusClientImplementationType type,
diff --git a/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc b/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc
index 1d11abb..784df4c 100644
--- a/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc
+++ b/chrome/browser/chromeos/login/existing_user_controller_browsertest.cc
@@ -6,8 +6,8 @@
#include "base/compiler_specific.h"
#include "base/memory/scoped_ptr.h"
#include "base/message_loop.h"
-#include "chrome/browser/chromeos/cros/cros_mock.h"
#include "chrome/browser/chromeos/cros/cros_in_process_browser_test.h"
+#include "chrome/browser/chromeos/cros/cros_mock.h"
#include "chrome/browser/chromeos/cros/mock_cryptohome_library.h"
#include "chrome/browser/chromeos/cros/mock_network_library.h"
#include "chrome/browser/chromeos/dbus/mock_dbus_thread_manager.h"
@@ -125,7 +125,7 @@ class ExistingUserControllerTest : public CrosInProcessBrowserTest {
mock_dbus_thread_manager->mock_session_manager_client();
EXPECT_CALL(*mock_session_manager_client, EmitLoginPromptReady())
.Times(1);
- EXPECT_CALL(*mock_session_manager_client, RetrievePolicy(_))
+ EXPECT_CALL(*mock_session_manager_client, RetrieveDevicePolicy(_))
.Times(AnyNumber());
cros_mock_->InitMockCryptohomeLibrary();
diff --git a/chrome/browser/chromeos/login/login_utils_browsertest.cc b/chrome/browser/chromeos/login/login_utils_browsertest.cc
index faa494c..e471404 100644
--- a/chrome/browser/chromeos/login/login_utils_browsertest.cc
+++ b/chrome/browser/chromeos/login/login_utils_browsertest.cc
@@ -27,9 +27,9 @@
#include "chrome/browser/profiles/profile_manager.h"
#include "chrome/common/chrome_paths.h"
#include "chrome/common/chrome_switches.h"
+#include "chrome/common/net/gaia/gaia_auth_consumer.h"
#include "chrome/common/net/gaia/gaia_urls.h"
#include "chrome/common/pref_names.h"
-#include "chrome/common/net/gaia/gaia_auth_consumer.h"
#include "chrome/test/base/testing_browser_process.h"
#include "chrome/test/base/testing_pref_service.h"
#include "content/public/browser/browser_thread.h"
@@ -131,7 +131,7 @@ class LoginUtilsTestBase : public TESTBASE,
// io_thread_state_.
MockSessionManagerClient* session_managed_client =
mock_dbus_thread_manager_.mock_session_manager_client();
- EXPECT_CALL(*session_managed_client, RetrievePolicy(_))
+ EXPECT_CALL(*session_managed_client, RetrieveDevicePolicy(_))
.WillRepeatedly(MockSessionManagerClientPolicyCallback(""));
mock_async_method_caller_ = new cryptohome::MockAsyncMethodCaller;
diff --git a/chrome/browser/chromeos/login/network_screen_browsertest.cc b/chrome/browser/chromeos/login/network_screen_browsertest.cc
index d85f357..37b68c2 100644
--- a/chrome/browser/chromeos/login/network_screen_browsertest.cc
+++ b/chrome/browser/chromeos/login/network_screen_browsertest.cc
@@ -28,12 +28,12 @@
#include "ui/views/controls/button/text_button.h"
namespace chromeos {
+using ::testing::A;
using ::testing::AnyNumber;
using ::testing::InvokeWithoutArgs;
using ::testing::Return;
using ::testing::ReturnRef;
using ::testing::_;
-using ::testing::A;
using views::Button;
class DummyButtonListener : public views::ButtonListener {
@@ -60,7 +60,7 @@ class NetworkScreenTest : public WizardInProcessBrowserTest {
cellular_.reset(new NetworkDevice("cellular"));
EXPECT_CALL(*mock_session_manager_client, EmitLoginPromptReady())
.Times(1);
- EXPECT_CALL(*mock_session_manager_client, RetrievePolicy(_))
+ EXPECT_CALL(*mock_session_manager_client, RetrieveDevicePolicy(_))
.Times(AnyNumber());
// Minimal set of expectations needed on NetworkScreen initialization.
diff --git a/chrome/browser/chromeos/login/signed_settings.cc b/chrome/browser/chromeos/login/signed_settings.cc
index 2baa868..0b02bf4 100644
--- a/chrome/browser/chromeos/login/signed_settings.cc
+++ b/chrome/browser/chromeos/login/signed_settings.cc
@@ -193,7 +193,7 @@ void StorePolicyOp::OnKeyOpComplete(const OwnerManager::KeyOpCode return_code,
void StorePolicyOp::RequestStorePolicy() {
std::string serialized;
if (policy_->SerializeToString(&serialized)) {
- DBusThreadManager::Get()->GetSessionManagerClient()->StorePolicy(
+ DBusThreadManager::Get()->GetSessionManagerClient()->StoreDevicePolicy(
serialized,
base::Bind(&StorePolicyOp::OnBoolComplete, this));
} else {
@@ -214,7 +214,7 @@ RetrievePolicyOp::RetrievePolicyOp(
RetrievePolicyOp::~RetrievePolicyOp() {}
void RetrievePolicyOp::Execute() {
- DBusThreadManager::Get()->GetSessionManagerClient()->RetrievePolicy(
+ DBusThreadManager::Get()->GetSessionManagerClient()->RetrieveDevicePolicy(
base::Bind(&RetrievePolicyOp::OnStringComplete, this));
}
diff --git a/chrome/browser/chromeos/login/signed_settings_helper_unittest.cc b/chrome/browser/chromeos/login/signed_settings_helper_unittest.cc
index 9903822..556611c 100644
--- a/chrome/browser/chromeos/login/signed_settings_helper_unittest.cc
+++ b/chrome/browser/chromeos/login/signed_settings_helper_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -59,9 +59,9 @@ class SignedSettingsHelperTest : public testing::Test,
mock_dbus_thread_manager_->mock_session_manager_client();
// Make sure the mocked out class calls back to notify success on store and
// retrieve ops.
- EXPECT_CALL(*client, StorePolicy(_, _))
+ EXPECT_CALL(*client, StoreDevicePolicy(_, _))
.WillRepeatedly(Store(true));
- EXPECT_CALL(*client, RetrievePolicy(_))
+ EXPECT_CALL(*client, RetrieveDevicePolicy(_))
.WillRepeatedly(Retrieve(serialized_policy_));
EXPECT_CALL(m_, StartSigningAttempt(_, A<OwnerManager::Delegate*>()))
diff --git a/chrome/browser/chromeos/login/signed_settings_unittest.cc b/chrome/browser/chromeos/login/signed_settings_unittest.cc
index e343900..dff8c76 100644
--- a/chrome/browser/chromeos/login/signed_settings_unittest.cc
+++ b/chrome/browser/chromeos/login/signed_settings_unittest.cc
@@ -234,7 +234,7 @@ TEST_F(SignedSettingsTest, SignAndStorePolicy) {
&signed_serialized);
MockSessionManagerClient* client =
mock_dbus_thread_manager_->mock_session_manager_client();
- EXPECT_CALL(*client, StorePolicy(signed_serialized, _))
+ EXPECT_CALL(*client, StoreDevicePolicy(signed_serialized, _))
.WillOnce(Store(true))
.RetiresOnSaturation();
s->OnKeyOpComplete(OwnerManager::SUCCESS, fake_value_signature_);
@@ -255,7 +255,7 @@ TEST_F(SignedSettingsTest, StoreSignedPolicy) {
SignedSettings::CreateStorePolicyOp(&signed_policy, &d));
MockSessionManagerClient* client =
mock_dbus_thread_manager_->mock_session_manager_client();
- EXPECT_CALL(*client, StorePolicy(signed_serialized, _))
+ EXPECT_CALL(*client, StoreDevicePolicy(signed_serialized, _))
.WillOnce(Store(true))
.RetiresOnSaturation();
@@ -302,7 +302,7 @@ TEST_F(SignedSettingsTest, RetrievePolicy) {
MockSessionManagerClient* client =
mock_dbus_thread_manager_->mock_session_manager_client();
- EXPECT_CALL(*client, RetrievePolicy(_))
+ EXPECT_CALL(*client, RetrieveDevicePolicy(_))
.WillOnce(Retrieve(signed_serialized))
.RetiresOnSaturation();
@@ -326,7 +326,7 @@ TEST_F(SignedSettingsTest, RetrieveNullPolicy) {
MockSessionManagerClient* client =
mock_dbus_thread_manager_->mock_session_manager_client();
- EXPECT_CALL(*client, RetrievePolicy(_))
+ EXPECT_CALL(*client, RetrieveDevicePolicy(_))
.WillOnce(Retrieve(""))
.RetiresOnSaturation();
@@ -343,7 +343,7 @@ TEST_F(SignedSettingsTest, RetrieveEmptyPolicy) {
MockSessionManagerClient* client =
mock_dbus_thread_manager_->mock_session_manager_client();
- EXPECT_CALL(*client, RetrievePolicy(_))
+ EXPECT_CALL(*client, RetrieveDevicePolicy(_))
.WillOnce(Retrieve(""))
.RetiresOnSaturation();
@@ -362,7 +362,7 @@ TEST_F(SignedSettingsTest, RetrieveUnsignedPolicy) {
MockSessionManagerClient* client =
mock_dbus_thread_manager_->mock_session_manager_client();
- EXPECT_CALL(*client, RetrievePolicy(_))
+ EXPECT_CALL(*client, RetrieveDevicePolicy(_))
.WillOnce(Retrieve(serialized))
.RetiresOnSaturation();
@@ -381,7 +381,7 @@ TEST_F(SignedSettingsTest, RetrieveMalsignedPolicy) {
MockSessionManagerClient* client =
mock_dbus_thread_manager_->mock_session_manager_client();
- EXPECT_CALL(*client, RetrievePolicy(_))
+ EXPECT_CALL(*client, RetrieveDevicePolicy(_))
.WillOnce(Retrieve(signed_serialized))
.RetiresOnSaturation();