diff options
author | sky <sky@chromium.org> | 2016-03-09 16:51:25 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-10 00:52:38 +0000 |
commit | 737c314215715069841946ccdb4bdc73a4d0db08 (patch) | |
tree | 20ba9d6149524ed2f4fa489360fcb297517d94fb /mash | |
parent | 044355b27f57075d21ef68442cd397f31366dc80 (diff) | |
download | chromium_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.gn | 1 | ||||
-rw-r--r-- | mash/init/init.cc | 12 | ||||
-rw-r--r-- | mash/init/init.h | 3 | ||||
-rw-r--r-- | mash/login/login.cc | 9 |
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( ¶ms, 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( ¶ms, 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_; |