Index: chrome/browser/ui/views/passwords/manage_passwords_bubble_view_browsertest.cc |
diff --git a/chrome/browser/ui/views/passwords/manage_passwords_bubble_view_browsertest.cc b/chrome/browser/ui/views/passwords/manage_passwords_bubble_view_browsertest.cc |
index c81394ca5231e33dc0a5c2e383b4239ae1916cfa..74a01a71082f351163667c15a08c25c96da90370 100644 |
--- a/chrome/browser/ui/views/passwords/manage_passwords_bubble_view_browsertest.cc |
+++ b/chrome/browser/ui/views/passwords/manage_passwords_bubble_view_browsertest.cc |
@@ -23,36 +23,43 @@ namespace { |
const char kDisplayDispositionMetric[] = "PasswordBubble.DisplayDisposition"; |
-// Listens to WebContents and invokes a callback on the mouse down event. |
-class WebContentMouseClickHandler : public ui::EventHandler { |
+// Listens to WebContents and invokes a callback on the mouse/key down event. |
+class WebContentEventHandler : public ui::EventHandler { |
public: |
- explicit WebContentMouseClickHandler(content::WebContents* web_contents, |
- const base::Closure& callback) |
+ explicit WebContentEventHandler(content::WebContents* web_contents, |
+ const base::Closure& callback) |
: web_contents_(web_contents), |
callback_(callback), |
was_called_(false) { |
web_contents_->GetNativeView()->AddPreTargetHandler(this); |
} |
- virtual ~WebContentMouseClickHandler() { |
+ virtual ~WebContentEventHandler() { |
web_contents_->GetNativeView()->RemovePreTargetHandler(this); |
} |
+ virtual void OnKeyEvent(ui::KeyEvent* event) OVERRIDE { |
+ if (event->type() == ui::ET_KEY_PRESSED) |
+ HandleEvent(event); |
+ } |
+ |
virtual void OnMouseEvent(ui::MouseEvent* event) OVERRIDE { |
- if (event->type() == ui::ET_MOUSE_PRESSED) { |
- callback_.Run(); |
- was_called_ = true; |
- } |
+ if (event->type() == ui::ET_MOUSE_PRESSED) |
+ HandleEvent(event); |
} |
bool was_called() const { return was_called_; } |
private: |
+ void HandleEvent(ui::Event* event) { |
+ callback_.Run(); |
+ was_called_ = true; |
+ } |
content::WebContents* web_contents_; |
base::Closure callback_; |
bool was_called_; |
- DISALLOW_COPY_AND_ASSIGN(WebContentMouseClickHandler); |
+ DISALLOW_COPY_AND_ASSIGN(WebContentEventHandler); |
}; |
void CheckBubbleAnimation() { |
@@ -230,9 +237,30 @@ IN_PROC_BROWSER_TEST_F(ManagePasswordsBubbleViewTest, FadeOnClick) { |
GetFocusManager()->GetFocusedView()); |
// We have to check the animation in the process of handling the mouse down |
// event. Otherwise, animation may finish too quickly. |
- WebContentMouseClickHandler observer( |
+ WebContentEventHandler observer( |
browser()->tab_strip_model()->GetActiveWebContents(), |
base::Bind(&CheckBubbleAnimation)); |
ui_test_utils::ClickOnView(browser(), VIEW_ID_TAB_CONTAINER); |
EXPECT_TRUE(observer.was_called()); |
} |
+ |
+IN_PROC_BROWSER_TEST_F(ManagePasswordsBubbleViewTest, FadeOnKey) { |
+ ui_test_utils::NavigateToURL( |
+ browser(), |
+ GURL("data:text/html;charset=utf-8,<input type=\"text\" autofocus>")); |
+ ManagePasswordsBubbleView::ShowBubble( |
+ browser()->tab_strip_model()->GetActiveWebContents(), |
+ ManagePasswordsBubble::AUTOMATIC); |
+ EXPECT_TRUE(ManagePasswordsBubbleView::IsShowing()); |
+ EXPECT_FALSE(ManagePasswordsBubbleView::manage_password_bubble()-> |
+ GetFocusManager()->GetFocusedView()); |
+ EXPECT_TRUE(ui_test_utils::IsViewFocused(browser(), VIEW_ID_TAB_CONTAINER)); |
+ // We have to check the animation in the process of handling the key down |
+ // event. Otherwise, animation may finish too quickly. |
+ WebContentEventHandler observer( |
+ browser()->tab_strip_model()->GetActiveWebContents(), |
+ base::Bind(&CheckBubbleAnimation)); |
+ ASSERT_TRUE(ui_test_utils::SendKeyPressSync(browser(), ui::VKEY_K, |
+ false, false, false, false)); |
+ EXPECT_TRUE(observer.was_called()); |
+} |