summaryrefslogtreecommitdiffstats
path: root/mash
diff options
context:
space:
mode:
authorsky <sky@chromium.org>2016-03-09 16:51:25 -0800
committerCommit bot <commit-bot@chromium.org>2016-03-10 00:52:38 +0000
commit737c314215715069841946ccdb4bdc73a4d0db08 (patch)
tree20ba9d6149524ed2f4fa489360fcb297517d94fb /mash
parent044355b27f57075d21ef68442cd397f31366dc80 (diff)
downloadchromium_src-737c314215715069841946ccdb4bdc73a4d0db08.zip
chromium_src-737c314215715069841946ccdb4bdc73a4d0db08.tar.gz
chromium_src-737c314215715069841946ccdb4bdc73a4d0db08.tar.bz2
Adds AccessControlManager and wires up user ids
The AccessControlManager is used to tell mus the active user. BUG=577274 TEST=bot only change R=ben@chromium.org Review URL: https://codereview.chromium.org/1781733002 Cr-Commit-Position: refs/heads/master@{#380276}
Diffstat (limited to 'mash')
-rw-r--r--mash/init/BUILD.gn1
-rw-r--r--mash/init/init.cc12
-rw-r--r--mash/init/init.h3
-rw-r--r--mash/login/login.cc9
4 files changed, 20 insertions, 5 deletions
diff --git a/mash/init/BUILD.gn b/mash/init/BUILD.gn
index 010fb38..adb69cd 100644
--- a/mash/init/BUILD.gn
+++ b/mash/init/BUILD.gn
@@ -20,6 +20,7 @@ mojo_native_application("init") {
":manifest",
"//base",
"//components/mus/public/cpp",
+ "//components/mus/public/interfaces",
"//mash/init/public/interfaces",
"//mojo/public/cpp/bindings",
"//mojo/services/tracing/public/cpp",
diff --git a/mash/init/init.cc b/mash/init/init.cc
index 98aea78..55c5d7a 100644
--- a/mash/init/init.cc
+++ b/mash/init/init.cc
@@ -6,13 +6,14 @@
#include "base/bind.h"
#include "base/command_line.h"
+#include "base/guid.h"
#include "mojo/shell/public/cpp/connection.h"
#include "mojo/shell/public/cpp/connector.h"
namespace mash {
namespace init {
-Init::Init() : connector_(nullptr) {}
+Init::Init() : connector_(nullptr), login_user_id_(base::GenerateGUID()) {}
Init::~Init() {}
void Init::Initialize(mojo::Connector* connector,
@@ -20,11 +21,14 @@ void Init::Initialize(mojo::Connector* connector,
uint32_t id) {
connector_ = connector;
mus_connection_ = connector_->Connect("mojo:mus");
+ mus_connection_->GetInterface(&user_access_manager_);
+ user_access_manager_->SetActiveUser(login_user_id_);
StartWindowManager();
StartLogin();
}
void Init::LoginAs(const mojo::String& user_id) {
+ user_access_manager_->SetActiveUser(user_id);
connections_["mojo:mash_login"].reset();
connections_["mojo:desktop_wm"].reset();
mojo::Connector::ConnectParams params(
@@ -37,14 +41,16 @@ void Init::Create(mojo::Connection* connection, mojom::LoginRequest request) {
}
void Init::StartWindowManager() {
- mojo::Connector::ConnectParams params(mojo::Identity("mojo:desktop_wm", "2"));
+ mojo::Connector::ConnectParams params(
+ mojo::Identity("mojo:desktop_wm", login_user_id_));
StartRestartableService(
&params,
base::Bind(&Init::StartWindowManager, base::Unretained(this)));
}
void Init::StartLogin() {
- mojo::Connector::ConnectParams params(mojo::Identity("mojo:mash_login", "2"));
+ mojo::Connector::ConnectParams params(
+ mojo::Identity("mojo:mash_login", login_user_id_));
StartRestartableService(
&params,
base::Bind(&Init::StartLogin, base::Unretained(this)));
diff --git a/mash/init/init.h b/mash/init/init.h
index 04812c1..f0d34e1 100644
--- a/mash/init/init.h
+++ b/mash/init/init.h
@@ -10,6 +10,7 @@
#include "base/callback.h"
#include "base/macros.h"
#include "base/memory/scoped_ptr.h"
+#include "components/mus/public/interfaces/user_access_manager.mojom.h"
#include "mash/init/public/interfaces/login.mojom.h"
#include "mojo/public/cpp/bindings/binding_set.h"
#include "mojo/shell/public/cpp/connector.h"
@@ -53,6 +54,8 @@ class Init : public mojo::ShellClient,
std::map<std::string, scoped_ptr<mojo::Connection>> connections_;
mojo::BindingSet<mojom::Login> login_bindings_;
scoped_ptr<mojo::Connection> mus_connection_;
+ mus::mojom::UserAccessManagerPtr user_access_manager_;
+ const std::string login_user_id_;
DISALLOW_COPY_AND_ASSIGN(Init);
};
diff --git a/mash/login/login.cc b/mash/login/login.cc
index 49bfd34..7604850 100644
--- a/mash/login/login.cc
+++ b/mash/login/login.cc
@@ -4,6 +4,7 @@
#include "mash/login/login.h"
+#include "base/guid.h"
#include "base/macros.h"
#include "base/message_loop/message_loop.h"
#include "base/strings/utf_string_conversions.h"
@@ -27,6 +28,8 @@ class LoginView : public views::WidgetDelegateView,
public:
explicit LoginView(Login* login)
: login_(login),
+ user_id_1_(base::GenerateGUID()),
+ user_id_2_(base::GenerateGUID()),
login_button_1_(
new views::LabelButton(this, base::ASCIIToUTF16("Timothy"))),
login_button_2_(
@@ -72,9 +75,9 @@ class LoginView : public views::WidgetDelegateView,
// Login...
mojo::Connector::ConnectParams params("mojo:mash_shell");
if (sender == login_button_1_) {
- login_->login()->LoginAs("3");
+ login_->login()->LoginAs(user_id_1_);
} else if (sender == login_button_2_) {
- login_->login()->LoginAs("4");
+ login_->login()->LoginAs(user_id_2_);
} else {
NOTREACHED();
}
@@ -82,6 +85,8 @@ class LoginView : public views::WidgetDelegateView,
}
Login* login_;
+ const std::string user_id_1_;
+ const std::string user_id_2_;
views::LabelButton* login_button_1_;
views::LabelButton* login_button_2_;