|
|
Created:
6 years, 1 month ago by afakhry Modified:
6 years, 1 month ago CC:
chromium-reviews, stevenjb+watch_chromium.org, davemoore+watch_chromium.org, oshima+watch_chromium.org, nkostylev+watch_chromium.org, Jun Mukai, Albert Bodenhamer Base URL:
https://chromium.googlesource.com/chromium/src.git@master Project:
chromium Visibility:
Public. |
DescriptionUber tray unresponsive with Multiprofile enabled
In ExistingUserController::PerformLogin(), There was a missing call to
ExistingUserController::PerformLoginFinishedActions(), which should
re-enables clicking on the status tray after it has been disabled in
ExistingUserController::PerformPreLoginActions().
BUG=427047
TEST=manual
Committed: https://crrev.com/4c09e0ce28ae0ee3a6c54c72e348017d3cda77d8
Cr-Commit-Position: refs/heads/master@{#301975}
Patch Set 1 #Patch Set 2 : Fixing the unresponsive system tray in multiprofile mode #
Total comments: 4
Patch Set 3 : Enabling the login UI before login_view_ is reset to NULL #Messages
Total messages: 15 (3 generated)
afakhry@chromium.org changed reviewers: + alemate@chromium.org
nkostylev@chromium.org changed reviewers: + nkostylev@chromium.org
Let me try to reproduce this issue. https://codereview.chromium.org/682103002/diff/20001/chrome/browser/chromeos/... File chrome/browser/chromeos/login/existing_user_controller.cc (right): https://codereview.chromium.org/682103002/diff/20001/chrome/browser/chromeos/... chrome/browser/chromeos/login/existing_user_controller.cc:443: PerformLoginFinishedActions(false); That's not a correct place for this call since login request has just been created - previous PerformLogin() call.
https://codereview.chromium.org/682103002/diff/20001/chrome/browser/chromeos/... File chrome/browser/chromeos/login/existing_user_controller.cc (right): https://codereview.chromium.org/682103002/diff/20001/chrome/browser/chromeos/... chrome/browser/chromeos/login/existing_user_controller.cc:443: PerformLoginFinishedActions(false); On 2014/10/28 16:31:19, Nikita Kostylev wrote: > That's not a correct place for this call since login request has just been > created - previous PerformLogin() call. As per the comments documentations for ExistingUserController::PerformLoginFinishedActions(), this function performs set of actions when login has been completed or has been cancelled. However in this case it never gets called. Please let me know where the correct place it should be placed is, in order to guarantee that it gets called.
https://codereview.chromium.org/682103002/diff/20001/chrome/browser/chromeos/... File chrome/browser/chromeos/login/existing_user_controller.cc (right): https://codereview.chromium.org/682103002/diff/20001/chrome/browser/chromeos/... chrome/browser/chromeos/login/existing_user_controller.cc:443: PerformLoginFinishedActions(false); On 2014/10/28 17:06:30, afakhry wrote: > On 2014/10/28 16:31:19, Nikita Kostylev wrote: > > That's not a correct place for this call since login request has just been > > created - previous PerformLogin() call. > > As per the comments documentations for > ExistingUserController::PerformLoginFinishedActions(), this function performs > set of actions when login has been completed or has been cancelled. However in > this case it never gets called. > > Please let me know where the correct place it should be placed is, in order to > guarantee that it gets called. I'm trying to verify why this call is not unblocking status area: void ExistingUserController::OnProfilePrepared(Profile* profile, bool browser_launched) { // Reenable clicking on other windows and status area. login_display_->SetUIEnabled(true); ... }
https://codereview.chromium.org/682103002/diff/20001/chrome/browser/chromeos/... File chrome/browser/chromeos/login/existing_user_controller.cc (right): https://codereview.chromium.org/682103002/diff/20001/chrome/browser/chromeos/... chrome/browser/chromeos/login/existing_user_controller.cc:443: PerformLoginFinishedActions(false); On 2014/10/28 17:15:22, Nikita Kostylev wrote: > On 2014/10/28 17:06:30, afakhry wrote: > > On 2014/10/28 16:31:19, Nikita Kostylev wrote: > > > That's not a correct place for this call since login request has just been > > > created - previous PerformLogin() call. > > > > As per the comments documentations for > > ExistingUserController::PerformLoginFinishedActions(), this function performs > > set of actions when login has been completed or has been cancelled. However in > > this case it never gets called. > > > > Please let me know where the correct place it should be placed is, in order to > > guarantee that it gets called. > > I'm trying to verify why this call is not unblocking status area: > > void ExistingUserController::OnProfilePrepared(Profile* profile, > bool browser_launched) { > // Reenable clicking on other windows and status area. > login_display_->SetUIEnabled(true); > ... > } Because LoginDisplayHostImpl::OnBrowserCreated() calls LoginDisplayHostImpl::ResetLoginWindowAndView() (which resets 'login_view_' to NULL) before the call to WebUILoginDisplay::SetUIEnabled() inside ExistingUserController::OnProfilePrepared() uses the login_view (which is now null) to unlock the status area.
On 2014/10/28 18:43:23, afakhry wrote: > https://codereview.chromium.org/682103002/diff/20001/chrome/browser/chromeos/... > File chrome/browser/chromeos/login/existing_user_controller.cc (right): > > https://codereview.chromium.org/682103002/diff/20001/chrome/browser/chromeos/... > chrome/browser/chromeos/login/existing_user_controller.cc:443: > PerformLoginFinishedActions(false); > On 2014/10/28 17:15:22, Nikita Kostylev wrote: > > On 2014/10/28 17:06:30, afakhry wrote: > > > On 2014/10/28 16:31:19, Nikita Kostylev wrote: > > > > That's not a correct place for this call since login request has just been > > > > created - previous PerformLogin() call. > > > > > > As per the comments documentations for > > > ExistingUserController::PerformLoginFinishedActions(), this function > performs > > > set of actions when login has been completed or has been cancelled. However > in > > > this case it never gets called. > > > > > > Please let me know where the correct place it should be placed is, in order > to > > > guarantee that it gets called. > > > > I'm trying to verify why this call is not unblocking status area: > > > > void ExistingUserController::OnProfilePrepared(Profile* profile, > > bool browser_launched) { > > // Reenable clicking on other windows and status area. > > login_display_->SetUIEnabled(true); > > ... > > } > > Because LoginDisplayHostImpl::OnBrowserCreated() calls > LoginDisplayHostImpl::ResetLoginWindowAndView() (which resets 'login_view_' to > NULL) before the call to WebUILoginDisplay::SetUIEnabled() inside > ExistingUserController::OnProfilePrepared() uses the login_view (which is now > null) to unlock the status area. How about adding login_view->SetStatusAreaVisible(true) just there, in ResetLoginWindowAndView() ?
On 2014/10/29 01:57:00, Nikita (OOO Oct 29 - Nov 5) wrote: > On 2014/10/28 18:43:23, afakhry wrote: > > > https://codereview.chromium.org/682103002/diff/20001/chrome/browser/chromeos/... > > File chrome/browser/chromeos/login/existing_user_controller.cc (right): > > > > > https://codereview.chromium.org/682103002/diff/20001/chrome/browser/chromeos/... > > chrome/browser/chromeos/login/existing_user_controller.cc:443: > > PerformLoginFinishedActions(false); > > On 2014/10/28 17:15:22, Nikita Kostylev wrote: > > > On 2014/10/28 17:06:30, afakhry wrote: > > > > On 2014/10/28 16:31:19, Nikita Kostylev wrote: > > > > > That's not a correct place for this call since login request has just > been > > > > > created - previous PerformLogin() call. > > > > > > > > As per the comments documentations for > > > > ExistingUserController::PerformLoginFinishedActions(), this function > > performs > > > > set of actions when login has been completed or has been cancelled. > However > > in > > > > this case it never gets called. > > > > > > > > Please let me know where the correct place it should be placed is, in > order > > to > > > > guarantee that it gets called. > > > > > > I'm trying to verify why this call is not unblocking status area: > > > > > > void ExistingUserController::OnProfilePrepared(Profile* profile, > > > bool browser_launched) { > > > // Reenable clicking on other windows and status area. > > > login_display_->SetUIEnabled(true); > > > ... > > > } > > > > Because LoginDisplayHostImpl::OnBrowserCreated() calls > > LoginDisplayHostImpl::ResetLoginWindowAndView() (which resets 'login_view_' to > > NULL) before the call to WebUILoginDisplay::SetUIEnabled() inside > > ExistingUserController::OnProfilePrepared() uses the login_view (which is now > > null) to unlock the status area. > > How about adding login_view->SetStatusAreaVisible(true) just there, in > ResetLoginWindowAndView() ? That doesn't fix it since the problem is not that the status area is invisible, but rather it's disabled. Calling login_view->SetUIEnabled(true) instead. This fixes it.
lgtm
The CQ bit was checked by afakhry@chromium.org
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/patch-status/682103002/40001
Message was sent while issue was closed.
Committed patchset #3 (id:40001)
Message was sent while issue was closed.
Patchset 3 (id:??) landed as https://crrev.com/4c09e0ce28ae0ee3a6c54c72e348017d3cda77d8 Cr-Commit-Position: refs/heads/master@{#301975} |