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..82326f24a102394bf981a40e89b6deb78501a9ee |
--- /dev/null |
+++ b/ash/login/ui/login_password_view_test.cc |
@@ -0,0 +1,113 @@ |
+// 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/lock_contents_view.h" |
+#include "ash/login/ui/login_test_base.h" |
+#include "ash/public/cpp/config.h" |
+#include "ash/shell.h" |
+#include "ash/test/ash_test_base.h" |
xiyuan
2017/05/24 20:11:02
nit: unused?
jdufault
2017/06/07 18:09:13
Done.
|
+#include "base/strings/utf_string_conversions.h" |
+#include "ui/aura/window.h" |
xiyuan
2017/05/24 20:11:02
nit: unused?
jdufault
2017/06/07 18:09:13
Done.
|
+#include "ui/events/test/event_generator.h" |
+#include "ui/views/view.h" |
xiyuan
2017/05/24 20:11:02
nit: unused?
jdufault
2017/06/07 18:09:13
Done.
|
+#include "ui/views/widget/widget.h" |
xiyuan
2017/05/24 20:11:02
nit: unused?
jdufault
2017/06/07 18:09:14
Done.
|
+ |
+namespace ash { |
+ |
+namespace { |
+ |
+class LoginPasswordViewTest : public LoginTestBase { |
+ public: |
+ 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) { |
+ this->password = password; |
+ } |
+ |
+ LoginPasswordView* view = nullptr; |
xiyuan
2017/05/24 20:11:02
Put member vars in protected. And view -> view_, p
jdufault
2017/06/07 18:09:13
Done.
|
+ 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 |