summaryrefslogtreecommitdiffstats
path: root/mash/login/login.cc
diff options
context:
space:
mode:
authorben <ben@chromium.org>2016-03-16 11:02:58 -0700
committerCommit bot <commit-bot@chromium.org>2016-03-16 18:04:46 +0000
commitf1e8fe46d99e15abe6f2b3270fe65ade9269997d (patch)
tree060cf7eb56defc03a0c99881b5a7c9d5be3dff1e /mash/login/login.cc
parent8c17f62a8425b4e4547255495073e673312a86b6 (diff)
downloadchromium_src-f1e8fe46d99e15abe6f2b3270fe65ade9269997d.zip
chromium_src-f1e8fe46d99e15abe6f2b3270fe65ade9269997d.tar.gz
chromium_src-f1e8fe46d99e15abe6f2b3270fe65ade9269997d.tar.bz2
Restructure login
BUG= Review URL: https://codereview.chromium.org/1801133002 Cr-Commit-Position: refs/heads/master@{#381494}
Diffstat (limited to 'mash/login/login.cc')
-rw-r--r--mash/login/login.cc139
1 files changed, 42 insertions, 97 deletions
diff --git a/mash/login/login.cc b/mash/login/login.cc
index 7604850..05edab5 100644
--- a/mash/login/login.cc
+++ b/mash/login/login.cc
@@ -4,131 +4,76 @@
#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"
-#include "components/mus/public/cpp/property_type_converters.h"
-#include "mash/wm/public/interfaces/container.mojom.h"
-#include "mojo/public/cpp/bindings/binding.h"
+#include "mash/login/ui.h"
+#include "mojo/public/cpp/bindings/strong_binding.h"
#include "mojo/shell/public/cpp/connector.h"
-#include "ui/views/background.h"
-#include "ui/views/controls/button/label_button.h"
#include "ui/views/mus/aura_init.h"
-#include "ui/views/mus/native_widget_mus.h"
#include "ui/views/mus/window_manager_connection.h"
-#include "ui/views/widget/widget_delegate.h"
namespace mash {
namespace login {
namespace {
-class LoginView : public views::WidgetDelegateView,
- public views::ButtonListener {
+class Login : public mojom::Login {
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_(
- new views::LabelButton(this, base::ASCIIToUTF16("Jimothy"))) {
- set_background(views::Background::CreateSolidBackground(SK_ColorRED));
- login_button_1_->SetStyle(views::Button::STYLE_BUTTON);
- login_button_2_->SetStyle(views::Button::STYLE_BUTTON);
- AddChildView(login_button_1_);
- AddChildView(login_button_2_);
- }
- ~LoginView() override {}
+ Login(mojo::Connector* connector,
+ LoginController* controller,
+ const std::string& user_id,
+ mojom::LoginRequest request)
+ : connector_(connector),
+ controller_(controller),
+ user_id_(user_id),
+ binding_(this, std::move(request)) {}
+ ~Login() override {}
private:
- // Overridden from views::WidgetDelegate:
- views::View* GetContentsView() override { return this; }
- base::string16 GetWindowTitle() const override {
- // TODO(beng): use resources.
- return base::ASCIIToUTF16("Login");
+ // mojom::Login:
+ void ShowLoginUI() override {
+ UI::Show(connector_, controller_);
}
-
- // Overridden from views::View:
- void Layout() override {
- gfx::Rect button_box = GetLocalBounds();
- button_box.Inset(10, 10);
-
- gfx::Size ps1 = login_button_1_->GetPreferredSize();
- gfx::Size ps2 = login_button_2_->GetPreferredSize();
-
- DCHECK(ps1.height() == ps2.height());
-
- // The 10 is inter-button spacing.
- button_box.set_x((button_box.width() - ps1.width() - ps2.width() - 10) / 2);
- button_box.set_y((button_box.height() - ps1.height()) / 2);
-
- login_button_1_->SetBounds(button_box.x(), button_box.y(), ps1.width(),
- ps1.height());
- login_button_2_->SetBounds(login_button_1_->bounds().right() + 10,
- button_box.y(), ps2.width(), ps2.height());
+ void Logout() override {
+ controller_->init()->StopServicesForUser(user_id_);
+ UI::Show(connector_, controller_);
}
-
- // Overridden from views::ButtonListener:
- void ButtonPressed(views::Button* sender, const ui::Event& event) override {
- // Login...
- mojo::Connector::ConnectParams params("mojo:mash_shell");
- if (sender == login_button_1_) {
- login_->login()->LoginAs(user_id_1_);
- } else if (sender == login_button_2_) {
- login_->login()->LoginAs(user_id_2_);
- } else {
- NOTREACHED();
- }
- base::MessageLoop::current()->QuitWhenIdle();
+ void SwitchUser() override {
+ UI::Show(connector_, controller_);
}
- Login* login_;
- const std::string user_id_1_;
- const std::string user_id_2_;
- views::LabelButton* login_button_1_;
- views::LabelButton* login_button_2_;
+ mojo::Connector* connector_;
+ LoginController* controller_;
+ const std::string user_id_;
+ mojo::StrongBinding<mojom::Login> binding_;
- DISALLOW_COPY_AND_ASSIGN(LoginView);
+ DISALLOW_COPY_AND_ASSIGN(Login);
};
} // namespace
-Login::Login() {}
-Login::~Login() {}
+LoginController::LoginController() {}
+LoginController::~LoginController() {}
-void Login::Initialize(mojo::Connector* connector,
- const mojo::Identity& identity,
- uint32_t id) {
+void LoginController::Initialize(mojo::Connector* connector,
+ const mojo::Identity& identity,
+ uint32_t id) {
+ connector_ = connector;
+ login_user_id_ = identity.user_id();
tracing_.Initialize(connector, identity.name());
aura_init_.reset(new views::AuraInit(connector, "views_mus_resources.pak"));
- views::WindowManagerConnection::Create(connector);
-
- views::Widget* widget = new views::Widget;
- views::Widget::InitParams params(
- views::Widget::InitParams::TYPE_WINDOW_FRAMELESS);
- params.delegate = new LoginView(this);
+}
- std::map<std::string, std::vector<uint8_t>> properties;
- properties[mash::wm::mojom::kWindowContainer_Property] =
- mojo::TypeConverter<const std::vector<uint8_t>, int32_t>::Convert(
- static_cast<int32_t>(mash::wm::mojom::Container::LOGIN_WINDOWS));
- mus::Window* window =
- views::WindowManagerConnection::Get()->NewWindow(properties);
- params.native_widget = new views::NativeWidgetMus(
- widget, connector, window, mus::mojom::SurfaceType::DEFAULT);
- widget->Init(params);
- widget->Show();
+bool LoginController::AcceptConnection(mojo::Connection* connection) {
+ if (connection->GetRemoteIdentity().name() == "mojo:mash_init")
+ connection->GetInterface(&init_);
+ connection->AddInterface<mojom::Login>(this);
+ return true;
}
-bool Login::AcceptConnection(mojo::Connection* connection) {
- if (connection->GetRemoteIdentity().name() == "mojo:mash_init") {
- connection->GetInterface(&login_);
- return true;
- }
- return false;
+void LoginController::Create(mojo::Connection* connection,
+ mojom::LoginRequest request) {
+ new Login(connector_, this, connection->GetRemoteIdentity().user_id(),
+ std::move(request));
}
} // namespace login