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

Side by Side Diff: chrome/browser/chromeos/login/signin_screen_controller.cc

Issue 2568973002: chromeos: Replace user image notifications with observer (Closed)
Patch Set: rebase Created 4 years 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "chrome/browser/chromeos/login/signin_screen_controller.h" 5 #include "chrome/browser/chromeos/login/signin_screen_controller.h"
6 6
7 #include "chrome/browser/chrome_notification_types.h" 7 #include "chrome/browser/chrome_notification_types.h"
8 #include "chrome/browser/chromeos/login/lock/screen_locker.h" 8 #include "chrome/browser/chromeos/login/lock/screen_locker.h"
9 #include "chrome/browser/chromeos/login/lock/webui_screen_locker.h" 9 #include "chrome/browser/chromeos/login/lock/webui_screen_locker.h"
10 #include "chrome/browser/chromeos/login/screens/chrome_user_selection_screen.h" 10 #include "chrome/browser/chromeos/login/screens/chrome_user_selection_screen.h"
(...skipping 14 matching lines...) Expand all
25 25
26 gaia_screen_->SetScreenHandler(oobe_ui_->GetGaiaScreenActor()); 26 gaia_screen_->SetScreenHandler(oobe_ui_->GetGaiaScreenActor());
27 std::string display_type = oobe_ui->display_type(); 27 std::string display_type = oobe_ui->display_type();
28 user_selection_screen_.reset(new ChromeUserSelectionScreen(display_type)); 28 user_selection_screen_.reset(new ChromeUserSelectionScreen(display_type));
29 user_selection_screen_->SetLoginDisplayDelegate(login_display_delegate); 29 user_selection_screen_->SetLoginDisplayDelegate(login_display_delegate);
30 30
31 UserBoardView* user_board_view = oobe_ui_->GetUserBoardScreenActor(); 31 UserBoardView* user_board_view = oobe_ui_->GetUserBoardScreenActor();
32 user_selection_screen_->SetView(user_board_view); 32 user_selection_screen_->SetView(user_board_view);
33 user_board_view->Bind(*user_selection_screen_.get()); 33 user_board_view->Bind(*user_selection_screen_.get());
34 34
35 registrar_.Add(this, chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED,
36 content::NotificationService::AllSources());
37 registrar_.Add(this, chrome::NOTIFICATION_SESSION_STARTED, 35 registrar_.Add(this, chrome::NOTIFICATION_SESSION_STARTED,
38 content::NotificationService::AllSources()); 36 content::NotificationService::AllSources());
37 user_manager::UserManager::Get()->AddObserver(this);
39 } 38 }
40 39
41 SignInScreenController::~SignInScreenController() { 40 SignInScreenController::~SignInScreenController() {
41 user_manager::UserManager::Get()->RemoveObserver(this);
42 instance_ = nullptr; 42 instance_ = nullptr;
43 } 43 }
44 44
45 void SignInScreenController::Init(const user_manager::UserList& users, 45 void SignInScreenController::Init(const user_manager::UserList& users,
46 bool show_guest) { 46 bool show_guest) {
47 // TODO(antrim) : This dependency should be inverted, screen should ask about 47 // TODO(antrim) : This dependency should be inverted, screen should ask about
48 // users. 48 // users.
49 user_selection_screen_->Init(users, show_guest); 49 user_selection_screen_->Init(users, show_guest);
50 } 50 }
51 51
52 void SignInScreenController::OnSigninScreenReady() { 52 void SignInScreenController::OnSigninScreenReady() {
53 gaia_screen_->MaybePreloadAuthExtension(); 53 gaia_screen_->MaybePreloadAuthExtension();
54 user_selection_screen_->InitEasyUnlock(); 54 user_selection_screen_->InitEasyUnlock();
55 if (ScreenLocker::default_screen_locker()) 55 if (ScreenLocker::default_screen_locker())
56 ScreenLocker::default_screen_locker()->web_ui()->OnLockWebUIReady(); 56 ScreenLocker::default_screen_locker()->web_ui()->OnLockWebUIReady();
57 } 57 }
58 58
59 void SignInScreenController::RemoveUser(const AccountId& account_id) { 59 void SignInScreenController::RemoveUser(const AccountId& account_id) {
60 user_manager::UserManager::Get()->RemoveUser(account_id, this); 60 user_manager::UserManager::Get()->RemoveUser(account_id, this);
61 } 61 }
62 62
63 void SignInScreenController::OnBeforeUserRemoved(const AccountId& account_id) { 63 void SignInScreenController::OnBeforeUserRemoved(const AccountId& account_id) {
64 user_selection_screen_->OnBeforeUserRemoved(account_id); 64 user_selection_screen_->OnBeforeUserRemoved(account_id);
65 } 65 }
66 66
67 void SignInScreenController::OnUserRemoved(const AccountId& account_id) { 67 void SignInScreenController::OnUserRemoved(const AccountId& account_id) {
68 user_selection_screen_->OnUserRemoved(account_id); 68 user_selection_screen_->OnUserRemoved(account_id);
69 } 69 }
70 70
71 void SignInScreenController::OnUserImageChanged(
72 const user_manager::User& user) {
73 user_selection_screen_->OnUserImageChanged(user);
74 }
75
71 void SignInScreenController::SendUserList() { 76 void SignInScreenController::SendUserList() {
72 user_selection_screen_->HandleGetUsers(); 77 user_selection_screen_->HandleGetUsers();
73 } 78 }
74 79
75 void SignInScreenController::CheckUserStatus(const AccountId& account_id) { 80 void SignInScreenController::CheckUserStatus(const AccountId& account_id) {
76 user_selection_screen_->CheckUserStatus(account_id); 81 user_selection_screen_->CheckUserStatus(account_id);
77 } 82 }
78 83
79 void SignInScreenController::SetWebUIHandler( 84 void SignInScreenController::SetWebUIHandler(
80 LoginDisplayWebUIHandler* webui_handler) { 85 LoginDisplayWebUIHandler* webui_handler) {
81 webui_handler_ = webui_handler; 86 webui_handler_ = webui_handler;
82 gaia_screen_->SetLegacyHandler(webui_handler_); 87 gaia_screen_->SetLegacyHandler(webui_handler_);
83 user_selection_screen_->SetHandler(webui_handler_); 88 user_selection_screen_->SetHandler(webui_handler_);
84 } 89 }
85 90
86 void SignInScreenController::Observe( 91 void SignInScreenController::Observe(
87 int type, 92 int type,
88 const content::NotificationSource& source, 93 const content::NotificationSource& source,
89 const content::NotificationDetails& details) { 94 const content::NotificationDetails& details) {
90 if (type == chrome::NOTIFICATION_SESSION_STARTED) { 95 DCHECK_EQ(chrome::NOTIFICATION_SESSION_STARTED, type);
91 // Stop listening to any notification once session has started. 96
92 // Sign in screen objects are marked for deletion with DeleteSoon so 97 // Stop listening to any notification once session has started.
93 // make sure no object would be used after session has started. 98 // Sign in screen objects are marked for deletion with DeleteSoon so
94 // http://crbug.com/125276 99 // make sure no object would be used after session has started.
95 registrar_.RemoveAll(); 100 // http://crbug.com/125276
96 return; 101 registrar_.RemoveAll();
97 } 102 user_manager::UserManager::Get()->RemoveObserver(this);
98 if (type == chrome::NOTIFICATION_LOGIN_USER_IMAGE_CHANGED) {
99 user_selection_screen_->OnUserImageChanged(
100 *content::Details<user_manager::User>(details).ptr());
101 return;
102 }
103 } 103 }
104 104
105 } // namespace chromeos 105 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698