Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(430)

Side by Side Diff: mash/login/login.cc

Issue 2179023004: Make Service own ServiceContext. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « mash/init/init.cc ('k') | mash/quick_launch/quick_launch_application.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "mash/login/login.h" 5 #include "mash/login/login.h"
6 6
7 #include <map> 7 #include <map>
8 #include <memory> 8 #include <memory>
9 9
10 #include "ash/public/interfaces/container.mojom.h" 10 #include "ash/public/interfaces/container.mojom.h"
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 class Login : public shell::Service, 135 class Login : public shell::Service,
136 public shell::InterfaceFactory<mojom::Login>, 136 public shell::InterfaceFactory<mojom::Login>,
137 public mojom::Login { 137 public mojom::Login {
138 public: 138 public:
139 Login() {} 139 Login() {}
140 ~Login() override {} 140 ~Login() override {}
141 141
142 void LoginAs(const std::string& user_id) { 142 void LoginAs(const std::string& user_id) {
143 user_access_manager_->SetActiveUser(user_id); 143 user_access_manager_->SetActiveUser(user_id);
144 mash::init::mojom::InitPtr init; 144 mash::init::mojom::InitPtr init;
145 connector_->ConnectToInterface("mojo:mash_init", &init); 145 connector()->ConnectToInterface("mojo:mash_init", &init);
146 init->StartService("mojo:mash_session", user_id); 146 init->StartService("mojo:mash_session", user_id);
147 } 147 }
148 148
149 private: 149 private:
150 // shell::Service: 150 // shell::Service:
151 void OnStart(shell::Connector* connector, 151 void OnStart(const shell::Identity& identity) override {
152 const shell::Identity& identity,
153 uint32_t id) override {
154 connector_ = connector;
155 identity_ = identity; 152 identity_ = identity;
156 tracing_.Initialize(connector, identity.name()); 153 tracing_.Initialize(connector(), identity.name());
157 154
158 aura_init_.reset(new views::AuraInit(connector, "views_mus_resources.pak")); 155 aura_init_.reset(
156 new views::AuraInit(connector(), "views_mus_resources.pak"));
159 157
160 connector_->ConnectToInterface("mojo:ui", &user_access_manager_); 158 connector()->ConnectToInterface("mojo:ui", &user_access_manager_);
161 user_access_manager_->SetActiveUser(identity.user_id()); 159 user_access_manager_->SetActiveUser(identity.user_id());
162 } 160 }
163 bool OnConnect(shell::Connection* connection) override { 161 bool OnConnect(shell::Connection* connection) override {
164 connection->AddInterface<mojom::Login>(this); 162 connection->AddInterface<mojom::Login>(this);
165 return true; 163 return true;
166 } 164 }
167 165
168 // shell::InterfaceFactory<mojom::Login>: 166 // shell::InterfaceFactory<mojom::Login>:
169 void Create(const shell::Identity& remote_identity, 167 void Create(const shell::Identity& remote_identity,
170 mojom::LoginRequest request) override { 168 mojom::LoginRequest request) override {
171 bindings_.AddBinding(this, std::move(request)); 169 bindings_.AddBinding(this, std::move(request));
172 } 170 }
173 171
174 // mojom::Login: 172 // mojom::Login:
175 void ShowLoginUI() override { UI::Show(connector_, identity_, this); } 173 void ShowLoginUI() override {
176 void SwitchUser() override { UI::Show(connector_, identity_, this); } 174 UI::Show(connector(), identity_, this);
175 }
176 void SwitchUser() override {
177 UI::Show(connector(), identity_, this);
178 }
177 179
178 void StartWindowManager(); 180 void StartWindowManager();
179 181
180 shell::Connector* connector_;
181 shell::Identity identity_; 182 shell::Identity identity_;
182 mojo::TracingImpl tracing_; 183 mojo::TracingImpl tracing_;
183 std::unique_ptr<views::AuraInit> aura_init_; 184 std::unique_ptr<views::AuraInit> aura_init_;
184 mojo::BindingSet<mojom::Login> bindings_; 185 mojo::BindingSet<mojom::Login> bindings_;
185 ui::mojom::UserAccessManagerPtr user_access_manager_; 186 ui::mojom::UserAccessManagerPtr user_access_manager_;
186 187
187 DISALLOW_COPY_AND_ASSIGN(Login); 188 DISALLOW_COPY_AND_ASSIGN(Login);
188 }; 189 };
189 190
190 void UI::ButtonPressed(views::Button* sender, const ui::Event& event) { 191 void UI::ButtonPressed(views::Button* sender, const ui::Event& event) {
191 // Login... 192 // Login...
192 if (sender == login_button_1_) { 193 if (sender == login_button_1_) {
193 login_->LoginAs(user_id_1_); 194 login_->LoginAs(user_id_1_);
194 } else if (sender == login_button_2_) { 195 } else if (sender == login_button_2_) {
195 login_->LoginAs(user_id_2_); 196 login_->LoginAs(user_id_2_);
196 } else { 197 } else {
197 NOTREACHED(); 198 NOTREACHED();
198 } 199 }
199 GetWidget()->Close(); 200 GetWidget()->Close();
200 } 201 }
201 202
202 } // namespace 203 } // namespace
203 204
204 shell::Service* CreateLogin() { 205 shell::Service* CreateLogin() {
205 return new Login; 206 return new Login;
206 } 207 }
207 208
208 } // namespace login 209 } // namespace login
209 } // namespace main 210 } // namespace main
OLDNEW
« no previous file with comments | « mash/init/init.cc ('k') | mash/quick_launch/quick_launch_application.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698