Index: ash/login/ui/login_password_view_test.cc |
diff --git a/ash/login/ui/login_password_view_test.cc b/ash/login/ui/login_password_view_test.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..849d524a62c259a60f4a4544da664b21a3fa68d5 |
--- /dev/null |
+++ b/ash/login/ui/login_password_view_test.cc |
@@ -0,0 +1,109 @@ |
+// Copyright 2017 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "ash/login/ui/login_password_view.h" |
+ |
+#include "ash/login/ui/login_test_base.h" |
+#include "ash/public/cpp/config.h" |
+#include "ash/shell.h" |
+#include "base/strings/utf_string_conversions.h" |
+#include "ui/events/test/event_generator.h" |
+ |
+namespace ash { |
+ |
+namespace { |
+ |
+class LoginPasswordViewTest : public LoginTestBase { |
+ protected: |
+ LoginPasswordViewTest() = default; |
+ ~LoginPasswordViewTest() override = default; |
+ |
+ // LoginScreenTest: |
+ void SetUp() override { |
+ LoginTestBase::SetUp(); |
+ |
+ view_ = new LoginPasswordView(base::Bind( |
+ &LoginPasswordViewTest::OnPasswordSubmit, base::Unretained(this))); |
+ ShowWidgetWithContent(view_); |
+ } |
+ |
+ // Called when a password is submitted. |
+ void OnPasswordSubmit(const base::string16& password) { |
+ password_ = password; |
+ } |
+ |
+ LoginPasswordView* view_ = nullptr; |
+ base::Optional<base::string16> password_; |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(LoginPasswordViewTest); |
+}; |
+ |
+} // namespace |
+ |
+// Verifies that password submit works with 'Enter'. |
+TEST_F(LoginPasswordViewTest, PasswordSubmitIncludesPasswordText) { |
+ // TODO: Renable in mash once crbug.com/725257 is fixed. |
+ if (Shell::GetAshConfig() == Config::MASH) |
+ return; |
+ |
+ LoginPasswordView::TestApi test_api(view_); |
+ |
+ ui::test::EventGenerator& generator = GetEventGenerator(); |
+ generator.PressKey(ui::KeyboardCode::VKEY_A, 0); |
+ generator.PressKey(ui::KeyboardCode::VKEY_B, 0); |
+ generator.PressKey(ui::KeyboardCode::VKEY_C, 0); |
+ generator.PressKey(ui::KeyboardCode::VKEY_1, 0); |
+ generator.PressKey(ui::KeyboardCode::VKEY_RETURN, 0); |
+ |
+ EXPECT_TRUE(password_.has_value()); |
+ EXPECT_EQ(base::ASCIIToUTF16("abc1"), *password_); |
+} |
+ |
+// Verifies that password submit works when clicking the submit button. |
+TEST_F(LoginPasswordViewTest, PasswordSubmitViaButton) { |
+ // TODO: Renable in mash once crbug.com/725257 is fixed. |
+ if (Shell::GetAshConfig() == Config::MASH) |
+ return; |
+ |
+ LoginPasswordView::TestApi test_api(view_); |
+ |
+ ui::test::EventGenerator& generator = GetEventGenerator(); |
+ generator.PressKey(ui::KeyboardCode::VKEY_A, 0); |
+ generator.PressKey(ui::KeyboardCode::VKEY_B, 0); |
+ generator.PressKey(ui::KeyboardCode::VKEY_C, 0); |
+ generator.PressKey(ui::KeyboardCode::VKEY_1, 0); |
+ generator.MoveMouseTo( |
+ test_api.submit_button()->GetBoundsInScreen().CenterPoint()); |
+ generator.ClickLeftButton(); |
+ |
+ EXPECT_TRUE(password_.has_value()); |
+ EXPECT_EQ(base::ASCIIToUTF16("abc1"), *password_); |
+} |
+ |
+// Verifies that text is cleared after submitting a password. |
+TEST_F(LoginPasswordViewTest, PasswordSubmitClearsPassword) { |
+ // TODO: Renable in mash once crbug.com/725257 is fixed. |
+ if (Shell::GetAshConfig() == Config::MASH) |
+ return; |
+ |
+ LoginPasswordView::TestApi test_api(view_); |
+ ui::test::EventGenerator& generator = GetEventGenerator(); |
+ |
+ // Submit 'a' password. |
+ generator.PressKey(ui::KeyboardCode::VKEY_A, 0); |
+ generator.PressKey(ui::KeyboardCode::VKEY_RETURN, 0); |
+ EXPECT_TRUE(password_.has_value()); |
+ EXPECT_EQ(base::ASCIIToUTF16("a"), *password_); |
+ |
+ password_.reset(); |
+ |
+ // Submit 'b' password |
+ generator.PressKey(ui::KeyboardCode::VKEY_B, 0); |
+ generator.PressKey(ui::KeyboardCode::VKEY_RETURN, 0); |
+ EXPECT_TRUE(password_.has_value()); |
+ EXPECT_EQ(base::ASCIIToUTF16("b"), *password_); |
+} |
+ |
+} // namespace ash |