This source file includes following definitions.
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
- IN_PROC_BROWSER_TEST_F
#include "chrome/browser/chromeos/input_method/textinput_test_helper.h"
#include "chrome/browser/ui/browser.h"
#include "chrome/browser/ui/browser_window.h"
#include "chrome/browser/ui/tabs/tab_strip_model.h"
#include "chrome/test/base/in_process_browser_test.h"
#include "chrome/test/base/interactive_test_utils.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/web_contents.h"
#include "content/public/test/browser_test_utils.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace chromeos {
namespace {
struct InputTypeExpectation {
std::string node_id;
ui::TextInputType type;
};
}
typedef TextInputTestBase TextInput_TextInputStateChangedTest;
IN_PROC_BROWSER_TEST_F(TextInput_TextInputStateChangedTest,
SwitchToPasswordFieldTest) {
TextInputTestHelper helper;
GURL url = ui_test_utils::GetTestUrl(
base::FilePath(FILE_PATH_LITERAL("textinput")),
base::FilePath(FILE_PATH_LITERAL("ime_enable_disable_test.html")));
ui_test_utils::NavigateToURL(browser(), url);
EXPECT_EQ(ui::TEXT_INPUT_TYPE_NONE, helper.GetTextInputType());
content::WebContents* tab =
browser()->tab_strip_model()->GetActiveWebContents();
bool worker_finished = false;
ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
tab,
"window.domAutomationController.send(text01_focus());",
&worker_finished));
EXPECT_TRUE(worker_finished);
helper.WaitForTextInputStateChanged(ui::TEXT_INPUT_TYPE_TEXT);
EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT, helper.GetTextInputType());
worker_finished = false;
ASSERT_TRUE(content::ExecuteScriptAndExtractBool(
tab,
"window.domAutomationController.send(password01_focus());",
&worker_finished));
EXPECT_TRUE(worker_finished);
helper.WaitForTextInputStateChanged(ui::TEXT_INPUT_TYPE_PASSWORD);
EXPECT_EQ(ui::TEXT_INPUT_TYPE_PASSWORD, helper.GetTextInputType());
}
IN_PROC_BROWSER_TEST_F(TextInput_TextInputStateChangedTest, FocusOnLoadTest) {
TextInputTestHelper helper;
EXPECT_EQ(ui::TEXT_INPUT_TYPE_NONE, helper.GetTextInputType());
GURL url = ui_test_utils::GetTestUrl(
base::FilePath(FILE_PATH_LITERAL("textinput")),
base::FilePath(FILE_PATH_LITERAL("focus_input_on_load.html")));
ui_test_utils::NavigateToURL(browser(), url);
helper.WaitForTextInputStateChanged(ui::TEXT_INPUT_TYPE_TEXT);
EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT, helper.GetTextInputType());
}
IN_PROC_BROWSER_TEST_F(TextInput_TextInputStateChangedTest,
FocusOnContentJSTest) {
TextInputTestHelper helper;
EXPECT_EQ(ui::TEXT_INPUT_TYPE_NONE, helper.GetTextInputType());
GURL url = ui_test_utils::GetTestUrl(
base::FilePath(FILE_PATH_LITERAL("textinput")),
base::FilePath(FILE_PATH_LITERAL("focus_input_on_content_js.html")));
ui_test_utils::NavigateToURL(browser(), url);
helper.WaitForTextInputStateChanged(ui::TEXT_INPUT_TYPE_TEXT);
EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT, helper.GetTextInputType());
}
IN_PROC_BROWSER_TEST_F(TextInput_TextInputStateChangedTest,
MouseClickChange) {
TextInputTestHelper helper;
EXPECT_EQ(ui::TEXT_INPUT_TYPE_NONE, helper.GetTextInputType());
GURL url = ui_test_utils::GetTestUrl(
base::FilePath(FILE_PATH_LITERAL("textinput")),
base::FilePath(FILE_PATH_LITERAL("focus_input_with_mouse_click.html")));
ui_test_utils::NavigateToURL(browser(), url);
EXPECT_EQ(ui::TEXT_INPUT_TYPE_NONE, helper.GetTextInputType());
content::WebContents* tab =
browser()->tab_strip_model()->GetActiveWebContents();
content::WaitForLoadStop(tab);
ASSERT_TRUE(helper.ClickElement("text_id", tab));
helper.WaitForTextInputStateChanged(ui::TEXT_INPUT_TYPE_TEXT);
EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT, helper.GetTextInputType());
ASSERT_TRUE(helper.ClickElement("password_id", tab));
helper.WaitForTextInputStateChanged(ui::TEXT_INPUT_TYPE_PASSWORD);
EXPECT_EQ(ui::TEXT_INPUT_TYPE_PASSWORD, helper.GetTextInputType());
}
IN_PROC_BROWSER_TEST_F(TextInput_TextInputStateChangedTest,
FocusChangeOnFocus) {
TextInputTestHelper helper;
EXPECT_EQ(ui::TEXT_INPUT_TYPE_NONE, helper.GetTextInputType());
GURL url = ui_test_utils::GetTestUrl(
base::FilePath(FILE_PATH_LITERAL("textinput")),
base::FilePath(FILE_PATH_LITERAL("focus_input_on_anothor_focus.html")));
ui_test_utils::NavigateToURL(browser(), url);
EXPECT_EQ(ui::TEXT_INPUT_TYPE_NONE, helper.GetTextInputType());
content::WebContents* tab =
browser()->tab_strip_model()->GetActiveWebContents();
std::string coordinate;
ASSERT_TRUE(content::ExecuteScript(
tab,
"document.getElementById('text_id').focus();"));
helper.WaitForTextInputStateChanged(ui::TEXT_INPUT_TYPE_PASSWORD);
EXPECT_EQ(ui::TEXT_INPUT_TYPE_PASSWORD, helper.GetTextInputType());
ASSERT_TRUE(helper.ClickElement("text_id", tab));
helper.WaitForTextInputStateChanged(ui::TEXT_INPUT_TYPE_PASSWORD);
EXPECT_EQ(ui::TEXT_INPUT_TYPE_PASSWORD, helper.GetTextInputType());
}
IN_PROC_BROWSER_TEST_F(TextInput_TextInputStateChangedTest,
NodeEliminationCase) {
TextInputTestHelper helper;
EXPECT_EQ(ui::TEXT_INPUT_TYPE_NONE, helper.GetTextInputType());
GURL url = ui_test_utils::GetTestUrl(
base::FilePath(FILE_PATH_LITERAL("textinput")),
base::FilePath(FILE_PATH_LITERAL("simple_textinput.html")));
ui_test_utils::NavigateToURL(browser(), url);
EXPECT_EQ(ui::TEXT_INPUT_TYPE_NONE, helper.GetTextInputType());
content::WebContents* tab =
browser()->tab_strip_model()->GetActiveWebContents();
ASSERT_TRUE(content::ExecuteScript(
tab,
"document.getElementById('text_id').focus();"));
helper.WaitForTextInputStateChanged(ui::TEXT_INPUT_TYPE_TEXT);
EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT, helper.GetTextInputType());
ASSERT_TRUE(content::ExecuteScript(
tab,
"document.body.removeChild(document.getElementById('text_id'));"));
helper.WaitForTextInputStateChanged(ui::TEXT_INPUT_TYPE_NONE);
EXPECT_EQ(ui::TEXT_INPUT_TYPE_NONE, helper.GetTextInputType());
}
IN_PROC_BROWSER_TEST_F(TextInput_TextInputStateChangedTest,
TextInputTypeChangedByJavaScript) {
TextInputTestHelper helper;
EXPECT_EQ(ui::TEXT_INPUT_TYPE_NONE, helper.GetTextInputType());
GURL url = ui_test_utils::GetTestUrl(
base::FilePath(FILE_PATH_LITERAL("textinput")),
base::FilePath(FILE_PATH_LITERAL("simple_textinput.html")));
ui_test_utils::NavigateToURL(browser(), url);
EXPECT_EQ(ui::TEXT_INPUT_TYPE_NONE, helper.GetTextInputType());
content::WebContents* tab =
browser()->tab_strip_model()->GetActiveWebContents();
ASSERT_TRUE(content::ExecuteScript(
tab,
"document.getElementById('text_id').focus();"));
helper.WaitForTextInputStateChanged(ui::TEXT_INPUT_TYPE_TEXT);
EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT, helper.GetTextInputType());
ASSERT_TRUE(content::ExecuteScript(
tab,
"document.getElementById('text_id').type = 'password';"));
helper.WaitForTextInputStateChanged(ui::TEXT_INPUT_TYPE_PASSWORD);
EXPECT_EQ(ui::TEXT_INPUT_TYPE_PASSWORD, helper.GetTextInputType());
}
IN_PROC_BROWSER_TEST_F(TextInput_TextInputStateChangedTest,
ChangingToContentEditableCase) {
TextInputTestHelper helper;
EXPECT_EQ(ui::TEXT_INPUT_TYPE_NONE, helper.GetTextInputType());
GURL url = ui_test_utils::GetTestUrl(
base::FilePath(FILE_PATH_LITERAL("textinput")),
base::FilePath(FILE_PATH_LITERAL("content_editable.html")));
ui_test_utils::NavigateToURL(browser(), url);
content::WebContents* tab =
browser()->tab_strip_model()->GetActiveWebContents();
helper.ClickElement("anchor_id", tab);
helper.WaitForTextInputStateChanged(ui::TEXT_INPUT_TYPE_CONTENT_EDITABLE);
EXPECT_EQ(ui::TEXT_INPUT_TYPE_CONTENT_EDITABLE, helper.GetTextInputType());
ASSERT_TRUE(content::ExecuteScript(
tab,
"document.getElementById('anchor_id').contentEditable = false;"));
helper.WaitForTextInputStateChanged(ui::TEXT_INPUT_TYPE_NONE);
EXPECT_EQ(ui::TEXT_INPUT_TYPE_NONE, helper.GetTextInputType());
ASSERT_TRUE(content::ExecuteScript(
tab,
"document.getElementById('anchor_id').contentEditable = true;"));
helper.WaitForTextInputStateChanged(ui::TEXT_INPUT_TYPE_CONTENT_EDITABLE);
EXPECT_EQ(ui::TEXT_INPUT_TYPE_CONTENT_EDITABLE, helper.GetTextInputType());
}
IN_PROC_BROWSER_TEST_F(TextInput_TextInputStateChangedTest,
SwitchingAllTextInputTest) {
TextInputTestHelper helper;
EXPECT_EQ(ui::TEXT_INPUT_TYPE_NONE, helper.GetTextInputType());
GURL url = ui_test_utils::GetTestUrl(
base::FilePath(FILE_PATH_LITERAL("textinput")),
base::FilePath(FILE_PATH_LITERAL("all_input_node.html")));
ui_test_utils::NavigateToURL(browser(), url);
content::WebContents* tab =
browser()->tab_strip_model()->GetActiveWebContents();
InputTypeExpectation expectations[] = {
{ "text_id", ui::TEXT_INPUT_TYPE_TEXT },
{ "password_id", ui::TEXT_INPUT_TYPE_PASSWORD },
{ "search_id", ui::TEXT_INPUT_TYPE_SEARCH },
{ "email_id", ui::TEXT_INPUT_TYPE_EMAIL },
{ "number_id", ui::TEXT_INPUT_TYPE_NUMBER },
{ "tel_id", ui::TEXT_INPUT_TYPE_TELEPHONE },
{ "url_id", ui::TEXT_INPUT_TYPE_URL },
{ "textarea_id", ui::TEXT_INPUT_TYPE_TEXT_AREA },
{ "contenteditable_id", ui::TEXT_INPUT_TYPE_CONTENT_EDITABLE },
};
for (size_t i = 0; i < arraysize(expectations); ++i) {
content::SimulateKeyPress(tab, ui::VKEY_TAB, false, false, false, false);
helper.WaitForTextInputStateChanged(expectations[i].type);
EXPECT_EQ(expectations[i].type, helper.GetTextInputType());
}
for (size_t i = 0; i < arraysize(expectations); ++i) {
helper.ClickElement(expectations[i].node_id, tab);
helper.WaitForTextInputStateChanged(expectations[i].type);
EXPECT_EQ(expectations[i].type, helper.GetTextInputType());
}
}
IN_PROC_BROWSER_TEST_F(TextInput_TextInputStateChangedTest,
OpenNewTabOnloadTest) {
TextInputTestHelper helper;
EXPECT_EQ(ui::TEXT_INPUT_TYPE_NONE, helper.GetTextInputType());
GURL base_url = ui_test_utils::GetTestUrl(
base::FilePath(FILE_PATH_LITERAL("textinput")),
base::FilePath(FILE_PATH_LITERAL("all_input_node.html")));
ui_test_utils::NavigateToURL(browser(), base_url);
content::WebContents* base_tab =
browser()->tab_strip_model()->GetActiveWebContents();
helper.ClickElement("password_id", base_tab);
helper.WaitForTextInputStateChanged(ui::TEXT_INPUT_TYPE_PASSWORD);
EXPECT_EQ(ui::TEXT_INPUT_TYPE_PASSWORD, helper.GetTextInputType());
GURL new_url = ui_test_utils::GetTestUrl(
base::FilePath(FILE_PATH_LITERAL("textinput")),
base::FilePath(FILE_PATH_LITERAL("focus_input_on_load.html")));
ui_test_utils::NavigateToURLWithDisposition(browser(),
new_url,
NEW_FOREGROUND_TAB,
0);
content::WebContents* new_tab =
browser()->tab_strip_model()->GetActiveWebContents();
EXPECT_NE(base_tab, new_tab);
helper.WaitForTextInputStateChanged(ui::TEXT_INPUT_TYPE_TEXT);
EXPECT_EQ(ui::TEXT_INPUT_TYPE_TEXT, helper.GetTextInputType());
}
}