summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorantrim <antrim@chromium.org>2014-11-10 02:31:25 -0800
committerCommit bot <commit-bot@chromium.org>2014-11-10 10:31:49 +0000
commit9140adbdb3f1d9ec4a907865bc3f06bac1a2249e (patch)
tree0f97fb86cad91146186585b822b10f78e8146ace
parentc6717fb5fd4f764a93b6ff383fd8c81afe701d15 (diff)
downloadchromium_src-9140adbdb3f1d9ec4a907865bc3f06bac1a2249e.zip
chromium_src-9140adbdb3f1d9ec4a907865bc3f06bac1a2249e.tar.gz
chromium_src-9140adbdb3f1d9ec4a907865bc3f06bac1a2249e.tar.bz2
Use session_manager API that ends user session in case of crash when supervised user creation is active
BUG=425546 Review URL: https://codereview.chromium.org/705333002 Cr-Commit-Position: refs/heads/master@{#303443}
-rw-r--r--chrome/browser/chromeos/login/supervised/supervised_user_creation_screen.cc11
-rw-r--r--chrome/browser/chromeos/settings/device_settings_test_helper.cc4
-rw-r--r--chrome/browser/chromeos/settings/device_settings_test_helper.h2
-rw-r--r--chromeos/dbus/fake_session_manager_client.cc6
-rw-r--r--chromeos/dbus/fake_session_manager_client.h2
-rw-r--r--chromeos/dbus/mock_session_manager_client.h2
-rw-r--r--chromeos/dbus/session_manager_client.cc12
-rw-r--r--chromeos/dbus/session_manager_client.h6
8 files changed, 45 insertions, 0 deletions
diff --git a/chrome/browser/chromeos/login/supervised/supervised_user_creation_screen.cc b/chrome/browser/chromeos/login/supervised/supervised_user_creation_screen.cc
index 514f2f2..40fa984 100644
--- a/chrome/browser/chromeos/login/supervised/supervised_user_creation_screen.cc
+++ b/chrome/browser/chromeos/login/supervised/supervised_user_creation_screen.cc
@@ -27,6 +27,8 @@
#include "chrome/browser/supervised_user/supervised_user_sync_service.h"
#include "chrome/browser/supervised_user/supervised_user_sync_service_factory.h"
#include "chrome/grit/generated_resources.h"
+#include "chromeos/dbus/dbus_thread_manager.h"
+#include "chromeos/dbus/session_manager_client.h"
#include "chromeos/login/auth/key.h"
#include "chromeos/login/auth/user_context.h"
#include "chromeos/network/network_state.h"
@@ -202,10 +204,16 @@ std::string SupervisedUserCreationScreen::GetName() const {
}
void SupervisedUserCreationScreen::AbortFlow() {
+ DBusThreadManager::Get()
+ ->GetSessionManagerClient()
+ ->NotifySupervisedUserCreationFinished();
controller_->CancelCreation();
}
void SupervisedUserCreationScreen::FinishFlow() {
+ DBusThreadManager::Get()
+ ->GetSessionManagerClient()
+ ->NotifySupervisedUserCreationFinished();
controller_->FinishCreation();
}
@@ -358,6 +366,9 @@ void SupervisedUserCreationScreen::OnManagerLoginFailure() {
void SupervisedUserCreationScreen::OnManagerFullyAuthenticated(
Profile* manager_profile) {
+ DBusThreadManager::Get()
+ ->GetSessionManagerClient()
+ ->NotifySupervisedUserCreationStarted();
manager_signin_in_progress_ = false;
DCHECK(controller_.get());
// For manager user, move desktop to locked container so that windows created
diff --git a/chrome/browser/chromeos/settings/device_settings_test_helper.cc b/chrome/browser/chromeos/settings/device_settings_test_helper.cc
index fa16d49..82943b4 100644
--- a/chrome/browser/chromeos/settings/device_settings_test_helper.cc
+++ b/chrome/browser/chromeos/settings/device_settings_test_helper.cc
@@ -113,6 +113,10 @@ void DeviceSettingsTestHelper::StartSession(const std::string& user_email) {}
void DeviceSettingsTestHelper::StopSession() {}
+void DeviceSettingsTestHelper::NotifySupervisedUserCreationStarted() {}
+
+void DeviceSettingsTestHelper::NotifySupervisedUserCreationFinished() {}
+
void DeviceSettingsTestHelper::StartDeviceWipe() {}
void DeviceSettingsTestHelper::RequestLockScreen() {}
diff --git a/chrome/browser/chromeos/settings/device_settings_test_helper.h b/chrome/browser/chromeos/settings/device_settings_test_helper.h
index 54dcf9b..14147a1 100644
--- a/chrome/browser/chromeos/settings/device_settings_test_helper.h
+++ b/chrome/browser/chromeos/settings/device_settings_test_helper.h
@@ -92,6 +92,8 @@ class DeviceSettingsTestHelper : public SessionManagerClient {
virtual void RestartJob(int pid, const std::string& command_line) override;
virtual void StartSession(const std::string& user_email) override;
virtual void StopSession() override;
+ virtual void NotifySupervisedUserCreationStarted() override;
+ virtual void NotifySupervisedUserCreationFinished() override;
virtual void StartDeviceWipe() override;
virtual void RequestLockScreen() override;
virtual void NotifyLockScreenShown() override;
diff --git a/chromeos/dbus/fake_session_manager_client.cc b/chromeos/dbus/fake_session_manager_client.cc
index fab7c3c..f16e9c6 100644
--- a/chromeos/dbus/fake_session_manager_client.cc
+++ b/chromeos/dbus/fake_session_manager_client.cc
@@ -56,6 +56,12 @@ void FakeSessionManagerClient::StartSession(const std::string& user_email) {
void FakeSessionManagerClient::StopSession() {
}
+void FakeSessionManagerClient::NotifySupervisedUserCreationStarted() {
+}
+
+void FakeSessionManagerClient::NotifySupervisedUserCreationFinished() {
+}
+
void FakeSessionManagerClient::StartDeviceWipe() {
start_device_wipe_call_count_++;
}
diff --git a/chromeos/dbus/fake_session_manager_client.h b/chromeos/dbus/fake_session_manager_client.h
index 8630e86..c0e53aa 100644
--- a/chromeos/dbus/fake_session_manager_client.h
+++ b/chromeos/dbus/fake_session_manager_client.h
@@ -33,6 +33,8 @@ class FakeSessionManagerClient : public SessionManagerClient {
virtual void RestartJob(int pid, const std::string& command_line) override;
virtual void StartSession(const std::string& user_email) override;
virtual void StopSession() override;
+ virtual void NotifySupervisedUserCreationStarted() override;
+ virtual void NotifySupervisedUserCreationFinished() override;
virtual void StartDeviceWipe() override;
virtual void RequestLockScreen() override;
virtual void NotifyLockScreenShown() override;
diff --git a/chromeos/dbus/mock_session_manager_client.h b/chromeos/dbus/mock_session_manager_client.h
index 78972ce7..cdc5d6d 100644
--- a/chromeos/dbus/mock_session_manager_client.h
+++ b/chromeos/dbus/mock_session_manager_client.h
@@ -26,6 +26,8 @@ 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_METHOD0(NotifySupervisedUserCreationStarted, void(void));
+ MOCK_METHOD0(NotifySupervisedUserCreationFinished, void(void));
MOCK_METHOD0(StartDeviceWipe, void(void));
MOCK_METHOD0(RequestLockScreen, void(void));
MOCK_METHOD0(NotifyLockScreenShown, void(void));
diff --git a/chromeos/dbus/session_manager_client.cc b/chromeos/dbus/session_manager_client.cc
index a3e0ced..6dc2dce 100644
--- a/chromeos/dbus/session_manager_client.cc
+++ b/chromeos/dbus/session_manager_client.cc
@@ -156,6 +156,16 @@ class SessionManagerClientImpl : public SessionManagerClient {
login_manager::kSessionManagerHandleLockScreenDismissed);
}
+ virtual void NotifySupervisedUserCreationStarted() override {
+ SimpleMethodCallToSessionManager(
+ login_manager::kSessionManagerHandleSupervisedUserCreationStarting);
+ }
+
+ virtual void NotifySupervisedUserCreationFinished() override {
+ SimpleMethodCallToSessionManager(
+ login_manager::kSessionManagerHandleSupervisedUserCreationFinished);
+ }
+
virtual void RetrieveActiveSessions(
const ActiveSessionsCallback& callback) override {
dbus::MethodCall method_call(
@@ -590,6 +600,8 @@ class SessionManagerClientStubImpl : public SessionManagerClient {
virtual void RestartJob(int pid, const std::string& command_line) override {}
virtual void StartSession(const std::string& user_email) override {}
virtual void StopSession() override {}
+ virtual void NotifySupervisedUserCreationStarted() override {}
+ virtual void NotifySupervisedUserCreationFinished() override {}
virtual void StartDeviceWipe() override {}
virtual void RequestLockScreen() override {
if (delegate_)
diff --git a/chromeos/dbus/session_manager_client.h b/chromeos/dbus/session_manager_client.h
index 346b131..758f26e 100644
--- a/chromeos/dbus/session_manager_client.h
+++ b/chromeos/dbus/session_manager_client.h
@@ -89,6 +89,12 @@ class CHROMEOS_EXPORT SessionManagerClient : public DBusClient {
// Notifies that the lock screen is dismissed.
virtual void NotifyLockScreenDismissed() = 0;
+ // Notifies that supervised user creation have started.
+ virtual void NotifySupervisedUserCreationStarted() = 0;
+
+ // Notifies that supervised user creation have finished.
+ virtual void NotifySupervisedUserCreationFinished() = 0;
+
// Map that is used to describe the set of active user sessions where |key|
// is user_id and |value| is user_id_hash.
typedef std::map<std::string, std::string> ActiveSessionsMap;