| Index: chrome/browser/password_manager/password_generation_interactive_uitest.cc
|
| diff --git a/chrome/browser/password_manager/password_generation_interactive_uitest.cc b/chrome/browser/password_manager/password_generation_interactive_uitest.cc
|
| index 947a9cc51ea31beb5e0b765e124f9ba5cd10b104..dbd948d6bf90138a87db7b339de3805533f76cfc 100644
|
| --- a/chrome/browser/password_manager/password_generation_interactive_uitest.cc
|
| +++ b/chrome/browser/password_manager/password_generation_interactive_uitest.cc
|
| @@ -25,11 +25,13 @@ namespace {
|
| class TestPopupObserver : public autofill::PasswordGenerationPopupObserver {
|
| public:
|
| TestPopupObserver()
|
| - : popup_showing_(false) {}
|
| + : popup_showing_(false),
|
| + password_visible_(false) {}
|
| virtual ~TestPopupObserver() {}
|
|
|
| - virtual void OnPopupShown() OVERRIDE {
|
| + virtual void OnPopupShown(bool password_visible) OVERRIDE {
|
| popup_showing_ = true;
|
| + password_visible_ = password_visible;
|
| }
|
|
|
| virtual void OnPopupHidden() OVERRIDE {
|
| @@ -37,9 +39,11 @@ class TestPopupObserver : public autofill::PasswordGenerationPopupObserver {
|
| }
|
|
|
| bool popup_showing() { return popup_showing_; }
|
| + bool password_visible() { return password_visible_; }
|
|
|
| private:
|
| bool popup_showing_;
|
| + bool password_visible_;
|
| };
|
|
|
| } // namespace
|
| @@ -57,7 +61,7 @@ class PasswordGenerationInteractiveTest : public InProcessBrowserTest {
|
|
|
| virtual void SetUpOnMainThread() OVERRIDE {
|
| // Disable Autofill requesting access to AddressBook data. This will cause
|
| - // test tests to hang on Mac.
|
| + // the tests to hang on Mac.
|
| autofill::test::DisableSystemServices(browser()->profile());
|
|
|
| // Set observer for popup.
|
| @@ -72,7 +76,7 @@ class PasswordGenerationInteractiveTest : public InProcessBrowserTest {
|
| }
|
|
|
| virtual void CleanUpOnMainThread() OVERRIDE {
|
| - // Cleanup UI.
|
| + // Clean up UI.
|
| PasswordGenerationManager* generation_manager =
|
| ChromePasswordManagerClient::GetGenerationManagerFromWebContents(
|
| GetWebContents());
|
| @@ -97,6 +101,16 @@ class PasswordGenerationInteractiveTest : public InProcessBrowserTest {
|
| return value;
|
| }
|
|
|
| + std::string GetFocusedElement() {
|
| + std::string focused_element;
|
| + EXPECT_TRUE(content::ExecuteScriptAndExtractString(
|
| + GetRenderViewHost(),
|
| + "window.domAutomationController.send("
|
| + " document.activeElement.id)",
|
| + &focused_element));
|
| + return focused_element;
|
| + }
|
| +
|
| void FocusPasswordField() {
|
| ASSERT_TRUE(content::ExecuteScript(
|
| GetRenderViewHost(),
|
| @@ -110,8 +124,12 @@ class PasswordGenerationInteractiveTest : public InProcessBrowserTest {
|
| GetRenderViewHost()->ForwardKeyboardEvent(event);
|
| }
|
|
|
| - bool popup_showing() {
|
| - return observer_.popup_showing();
|
| + bool GenerationPopupShowing() {
|
| + return observer_.popup_showing() && observer_.password_visible();
|
| + }
|
| +
|
| + bool EditingPopupShowing() {
|
| + return observer_.popup_showing() && !observer_.password_visible();
|
| }
|
|
|
| private:
|
| @@ -119,7 +137,7 @@ class PasswordGenerationInteractiveTest : public InProcessBrowserTest {
|
| };
|
|
|
| #if defined(USE_AURA)
|
| -// Enabled on these platforms
|
| +// Enabled on these platforms.
|
| #define MAYBE_PopupShownAndPasswordSelected PopupShownAndPasswordSelected
|
| #define MAYBE_PopupShownAndDismissed PopupShownAndDismissed
|
| #else
|
| @@ -131,20 +149,29 @@ class PasswordGenerationInteractiveTest : public InProcessBrowserTest {
|
| IN_PROC_BROWSER_TEST_F(PasswordGenerationInteractiveTest,
|
| MAYBE_PopupShownAndPasswordSelected) {
|
| FocusPasswordField();
|
| - EXPECT_TRUE(popup_showing());
|
| + EXPECT_TRUE(GenerationPopupShowing());
|
| SendKeyToPopup(ui::VKEY_DOWN);
|
| SendKeyToPopup(ui::VKEY_RETURN);
|
|
|
| + // Selecting the password should fill the field and move focus to the
|
| + // submit button.
|
| EXPECT_FALSE(GetFieldValue("password_field").empty());
|
| + EXPECT_FALSE(GenerationPopupShowing());
|
| + EXPECT_FALSE(EditingPopupShowing());
|
| + EXPECT_EQ("input_submit_button", GetFocusedElement());
|
| +
|
| + // Re-focusing the password field should show the editing popup.
|
| + FocusPasswordField();
|
| + EXPECT_TRUE(EditingPopupShowing());
|
| }
|
|
|
| IN_PROC_BROWSER_TEST_F(PasswordGenerationInteractiveTest,
|
| MAYBE_PopupShownAndDismissed) {
|
| FocusPasswordField();
|
| - EXPECT_TRUE(popup_showing());
|
| + EXPECT_TRUE(GenerationPopupShowing());
|
|
|
| SendKeyToPopup(ui::VKEY_ESCAPE);
|
|
|
| // Popup is dismissed.
|
| - EXPECT_FALSE(popup_showing());
|
| + EXPECT_FALSE(GenerationPopupShowing());
|
| }
|
|
|