summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorskuhne@google.com <skuhne@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-10 23:40:02 +0000
committerskuhne@google.com <skuhne@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-10 23:40:02 +0000
commit96e13f9c30dc32674665c43f8555ba7719c63019 (patch)
tree3a7c1a9866536306fc88d90039a40d95aa1dfd3a
parent2c48b54ee4ceecb166ffcdb30cc58fe894693b4c (diff)
downloadchromium_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.cc92
-rw-r--r--ash/system/user/user_view.h7
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);
};