diff options
author | skuhne@google.com <skuhne@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-10 23:40:02 +0000 |
---|---|---|
committer | skuhne@google.com <skuhne@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-07-10 23:40:02 +0000 |
commit | 96e13f9c30dc32674665c43f8555ba7719c63019 (patch) | |
tree | 3a7c1a9866536306fc88d90039a40d95aa1dfd3a | |
parent | 2c48b54ee4ceecb166ffcdb30cc58fe894693b4c (diff) | |
download | chromium_src-96e13f9c30dc32674665c43f8555ba7719c63019.zip chromium_src-96e13f9c30dc32674665c43f8555ba7719c63019.tar.gz chromium_src-96e13f9c30dc32674665c43f8555ba7719c63019.tar.bz2 |
Revert 282459 "Merge 281922 "Fixing notification message crash o..."
> Merge 281922 "Fixing notification message crash on fast dismissa..."
>
> > Fixing notification message crash on fast dismissal click
> >
> > BUG=392096
> > TEST=visual
> >
> > Review URL: https://codereview.chromium.org/372373002
>
> TBR=skuhne@chromium.org
>
> Review URL: https://codereview.chromium.org/385853002
TBR=skuhne@google.com
Review URL: https://codereview.chromium.org/386763003
git-svn-id: svn://svn.chromium.org/chrome/branches/2062/src@282466 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | ash/system/user/user_view.cc | 92 | ||||
-rw-r--r-- | ash/system/user/user_view.h | 7 |
2 files changed, 15 insertions, 84 deletions
diff --git a/ash/system/user/user_view.cc b/ash/system/user/user_view.cc index 27d7f12..ddfae38 100644 --- a/ash/system/user/user_view.cc +++ b/ash/system/user/user_view.cc @@ -211,8 +211,7 @@ UserView::UserView(SystemTrayItem* owner, is_user_card_button_(false), logout_button_(NULL), add_user_disabled_(false), - for_detailed_view_(for_detailed_view), - focus_manager_(NULL) { + for_detailed_view_(for_detailed_view) { CHECK_NE(user::LOGGED_IN_NONE, login); if (!index) { // Only the logged in user will have a background. All other users will have @@ -231,12 +230,12 @@ UserView::UserView(SystemTrayItem* owner, AddUserCard(login); } -UserView::~UserView() { - RemoveAddUserMenuOption(); -} +UserView::~UserView() {} void UserView::MouseMovedOutOfHost() { - RemoveAddUserMenuOption(); + popup_message_.reset(); + mouse_watcher_.reset(); + add_menu_option_.reset(); } TrayUser::TestState UserView::GetStateForTest() const { @@ -322,7 +321,6 @@ void UserView::ButtonPressed(views::Button* sender, const ui::Event& event) { if (sender == logout_button_) { Shell::GetInstance()->metrics()->RecordUserMetricsAction( ash::UMA_STATUS_AREA_SIGN_OUT); - RemoveAddUserMenuOption(); Shell::GetInstance()->system_tray_delegate()->SignOut(); } else if (sender == user_card_view_ && !multiprofile_index_ && IsMultiAccountSupportedAndUserActive()) { @@ -332,7 +330,6 @@ void UserView::ButtonPressed(views::Button* sender, const ui::Event& event) { if (!multiprofile_index_) { ToggleAddUserMenuOption(); } else { - RemoveAddUserMenuOption(); SwitchUser(multiprofile_index_); // Since the user list is about to change the system menu should get // closed. @@ -340,7 +337,6 @@ void UserView::ButtonPressed(views::Button* sender, const ui::Event& event) { } } else if (add_menu_option_.get() && sender == add_menu_option_->GetContentsView()) { - RemoveAddUserMenuOption(); // Let the user add another account to the session. MultiProfileUMA::RecordSigninUser(MultiProfileUMA::SIGNIN_USER_BY_TRAY); Shell::GetInstance()->system_tray_delegate()->ShowUserLogin(); @@ -350,15 +346,6 @@ void UserView::ButtonPressed(views::Button* sender, const ui::Event& event) { } } -void UserView::OnWillChangeFocus(View* focused_before, View* focused_now) { - if (focused_now) - RemoveAddUserMenuOption(); -} - -void UserView::OnDidChangeFocus(View* focused_before, View* focused_now) { - // Nothing to do here. -} - void UserView::AddLogoutButton(user::LoginStatus login) { const base::string16 title = user::GetLocalizedSignOutStringForStatus(login, true); @@ -417,40 +404,15 @@ void UserView::AddUserCard(user::LoginStatus login) { user_card_view_->SetBorder(views::Border::CreateEmptyBorder( 0, kTrayUserTileHoverBorderInset, 0, 0)); } - gfx::Insets insets = gfx::Insets(1, 1, 1, 1); - views::View* contents_view = user_card_view_; - ButtonFromView* button = NULL; if (!for_detailed_view_) { - if (multiprofile_index_) { - // Since the activation border needs to be drawn around the tile, we - // have to put the tile into another view which fills the menu panel, - // but keeping the offsets of the content. - contents_view = new views::View(); - contents_view->SetBorder(views::Border::CreateEmptyBorder( - kTrayPopupUserCardVerticalPadding, - kTrayPopupPaddingHorizontal, - kTrayPopupUserCardVerticalPadding, - kTrayPopupPaddingHorizontal)); - contents_view->SetLayoutManager(new views::FillLayout()); - SetBorder(views::Border::CreateEmptyBorder(0, 0, 0, 0)); - contents_view->AddChildView(user_card_view_); - insets = gfx::Insets(1, 1, 1, 3); - } - button = new ButtonFromView(contents_view, - this, - !multiprofile_index_, - insets); - // TODO(skuhne): For accessibility we need to call |SetAccessibleName| - // with a useful name (string freeze for M37 has passed). + user_card_view_ = + new ButtonFromView(user_card_view_, this, !multiprofile_index_); } else { // We want user card for detailed view to have exactly the same look // as user card for default view. That's why we wrap it in a button - // without click listener and special hover behavior. - button = new ButtonFromView(contents_view, NULL, false, insets); + // without click listener and special hover behaviour. + user_card_view_ = new ButtonFromView(user_card_view_, NULL, false); } - // A click on the button should not trigger a focus change. - button->set_request_focus_on_press(false); - user_card_view_ = button; is_user_card_button_ = true; } AddChildViewAt(user_card_view_, 0); @@ -462,7 +424,9 @@ void UserView::AddUserCard(user::LoginStatus login) { void UserView::ToggleAddUserMenuOption() { if (add_menu_option_.get()) { - RemoveAddUserMenuOption(); + popup_message_.reset(); + mouse_watcher_.reset(); + add_menu_option_.reset(); return; } @@ -498,14 +462,9 @@ void UserView::ToggleAddUserMenuOption() { Shell::GetInstance()->session_state_delegate(); add_user_disabled_ = delegate->NumberOfLoggedInUsers() >= delegate->GetMaximumNumberOfLoggedInUsers(); - ButtonFromView* button = new ButtonFromView( - add_user_view, - add_user_disabled_ ? NULL : this, - !add_user_disabled_, - gfx::Insets(1, 1, 1, 1)); - button->set_request_focus_on_press(false); - button->SetAccessibleName( - l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_SIGN_IN_ANOTHER_ACCOUNT)); + ButtonFromView* button = add_user_disabled_ + ? new ButtonFromView(add_user_view, NULL, false) + : new ButtonFromView(add_user_view, this, true); button->ForceBorderVisible(true); add_menu_option_->SetContentsView(button); @@ -519,12 +478,6 @@ void UserView::ToggleAddUserMenuOption() { views::BubbleBorder::TOP_LEFT, gfx::Size(parent()->bounds().width() - kPopupMessageOffset, 0), 2 * kPopupMessageOffset)); - } else { - // We activate the entry automatically if invoked with focus. - if (user_card_view_->HasFocus()) { - button->GetFocusManager()->SetFocusedView(button); - user_card_view_->GetFocusManager()->SetFocusedView(button); - } } // Find the screen area which encloses both elements and sets then a mouse // watcher which will close the "menu". @@ -533,21 +486,6 @@ void UserView::ToggleAddUserMenuOption() { mouse_watcher_.reset( new views::MouseWatcher(new UserViewMouseWatcherHost(area), this)); mouse_watcher_->Start(); - // Install a listener to focus changes so that we can remove the card when - // the focus gets changed. When called through the destruction of the bubble, - // the FocusManager cannot be determined anymore and we remember it here. - focus_manager_ = user_card_view_->GetFocusManager(); - focus_manager_->AddFocusChangeListener(this); -} - -void UserView::RemoveAddUserMenuOption() { - if (!add_menu_option_.get()) - return; - user_card_view_->GetFocusManager()->RemoveFocusChangeListener(this); - user_card_view_->GetFocusManager()->ClearFocus(); - popup_message_.reset(); - mouse_watcher_.reset(); - add_menu_option_.reset(); } } // namespace tray diff --git a/ash/system/user/user_view.h b/ash/system/user/user_view.h index 1536b30..e1dc65a 100644 --- a/ash/system/user/user_view.h +++ b/ash/system/user/user_view.h @@ -20,10 +20,6 @@ class Rect; class Size; } -namespace views { -class FocusManager; -} - namespace ash { class PopupMessage; @@ -89,9 +85,6 @@ class UserView : public views::View, // The mouse watcher which takes care of out of window hover events. scoped_ptr<views::MouseWatcher> mouse_watcher_; - // The focus manager which we use to detect focus changes. - views::FocusManager* focus_manager_; - DISALLOW_COPY_AND_ASSIGN(UserView); }; |