| Index: chrome/browser/ui/webui/options/language_dictionary_interactive_uitest.cc
|
| diff --git a/chrome/browser/ui/webui/options/language_dictionary_interactive_uitest.cc b/chrome/browser/ui/webui/options/language_dictionary_interactive_uitest.cc
|
| deleted file mode 100644
|
| index dbdad4f2af14f11818419285aade8ff83f9ae2d3..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/ui/webui/options/language_dictionary_interactive_uitest.cc
|
| +++ /dev/null
|
| @@ -1,255 +0,0 @@
|
| -// Copyright 2015 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 "base/macros.h"
|
| -#include "base/strings/stringprintf.h"
|
| -#include "base/test/scoped_feature_list.h"
|
| -#include "build/build_config.h"
|
| -#include "chrome/browser/chrome_notification_types.h"
|
| -#include "chrome/browser/ui/browser_window.h"
|
| -#include "chrome/browser/ui/chrome_pages.h"
|
| -#include "chrome/browser/ui/tabs/tab_strip_model.h"
|
| -#include "chrome/common/chrome_features.h"
|
| -#include "chrome/common/url_constants.h"
|
| -#include "chrome/test/base/in_process_browser_test.h"
|
| -#include "chrome/test/base/interactive_test_utils.h"
|
| -#include "content/public/test/browser_test_utils.h"
|
| -
|
| -namespace {
|
| -
|
| -// This class tests the language dictionary settings.
|
| -// This test is part of the interactive_ui_tests instead of browser_tests
|
| -// because it is necessary to emulate pushing the tab key.
|
| -class LanguageDictionaryWebUITest : public InProcessBrowserTest {
|
| - public:
|
| - LanguageDictionaryWebUITest() {}
|
| -
|
| - // Navigate to the editDictionary page.
|
| - void SetUpOnMainThread() override {
|
| - disable_md_settings_.InitAndDisableFeature(
|
| - features::kMaterialDesignSettings);
|
| - const GURL url = chrome::GetSettingsUrl("editDictionary");
|
| - ui_test_utils::NavigateToURL(browser(), url);
|
| - }
|
| -
|
| - protected:
|
| - const std::string kDictionaryListSelector =
|
| - "#language-dictionary-overlay-word-list";
|
| -
|
| - content::RenderFrameHost* GetActiveFrame() {
|
| - return GetActiveWebContents()->GetFocusedFrame();
|
| - }
|
| -
|
| - content::RenderViewHost* GetRenderViewHost() {
|
| - return GetActiveWebContents()->GetRenderViewHost();
|
| - }
|
| -
|
| - content::WebContents* GetActiveWebContents() {
|
| - return browser()->tab_strip_model()->GetActiveWebContents();
|
| - }
|
| -
|
| - // Add a few test words to the dictionary.
|
| - void SetTestWords(const std::string& list_selector) {
|
| - const std::string script = base::StringPrintf(
|
| - "document.querySelector('%s').setWordList(['cat', 'dog', 'bird']);",
|
| - list_selector.c_str());
|
| - EXPECT_TRUE(content::ExecuteScript(GetActiveFrame(), script));
|
| - // Expected list size is 4: 3 word items + 1 placeholder.
|
| - EXPECT_EQ(4, GetListSize(list_selector));
|
| - }
|
| -
|
| - // Returns the number of items in the list.
|
| - int GetListSize(const std::string& list_selector) {
|
| - const std::string script = base::StringPrintf(
|
| - "domAutomationController.send("
|
| - "document.querySelector('%s').items.length);",
|
| - list_selector.c_str());
|
| - int length = -1;
|
| - EXPECT_TRUE(content::ExecuteScriptAndExtractInt(
|
| - GetActiveFrame(),
|
| - script,
|
| - &length));
|
| - return length;
|
| - }
|
| -
|
| - // Returns true if element contains document.activeElement.
|
| - bool ContainsActiveElement(const std::string& element_selector) {
|
| - const std::string script = base::StringPrintf(
|
| - "domAutomationController.send("
|
| - "document.querySelector('%s').contains(document.activeElement));",
|
| - element_selector.c_str());
|
| - bool result;
|
| - EXPECT_TRUE(content::ExecuteScriptAndExtractBool(
|
| - GetActiveFrame(),
|
| - script,
|
| - &result));
|
| - return result;
|
| - }
|
| -
|
| - // Returns true if list item[|index|] contains document.activeElement.
|
| - bool ListItemContainsActiveElement(const std::string& list_selector,
|
| - int index) {
|
| - EXPECT_GE(index, 0);
|
| - // EXPECT_TRUE will fail if index is out of bounds.
|
| - const std::string script = base::StringPrintf(
|
| - "domAutomationController.send("
|
| - "document.querySelector('%s').items[%d].contains("
|
| - "document.activeElement));",
|
| - list_selector.c_str(),
|
| - index);
|
| - bool result;
|
| - EXPECT_TRUE(content::ExecuteScriptAndExtractBool(
|
| - GetActiveFrame(),
|
| - script,
|
| - &result));
|
| - return result;
|
| - }
|
| -
|
| - // Returns true if list item[|index|] has 'selected' attribute.
|
| - bool ListItemSelected(const std::string& list_selector, int index) {
|
| - EXPECT_GE(index, 0);
|
| - // EXPECT_TRUE will fail if index is out of bounds.
|
| - const std::string script = base::StringPrintf(
|
| - "domAutomationController.send("
|
| - "document.querySelector('%s').items[%d].hasAttribute('selected'));",
|
| - list_selector.c_str(),
|
| - index);
|
| - bool result = false;
|
| - EXPECT_TRUE(content::ExecuteScriptAndExtractBool(
|
| - GetActiveFrame(),
|
| - script,
|
| - &result));
|
| - return result;
|
| - }
|
| -
|
| - // Returns true if list item[|index|] has 'selected' attribute and contains
|
| - // document.activeElement.
|
| - bool ListItemSelectedAndFocused(const std::string& list_selector,
|
| - int index) {
|
| - EXPECT_GE(index, 0);
|
| - return ListItemSelected(list_selector, index) &&
|
| - ListItemContainsActiveElement(list_selector, index);
|
| - }
|
| -
|
| - // Press and release a key in the browser. This will wait for the element on
|
| - // the page to change.
|
| - bool PressKey(ui::KeyboardCode key_code, bool shift) {
|
| - return ui_test_utils::SendKeyPressAndWait(
|
| - browser(),
|
| - key_code,
|
| - false,
|
| - shift,
|
| - false,
|
| - false,
|
| - content::NOTIFICATION_FOCUS_CHANGED_IN_PAGE,
|
| - content::Source<content::RenderViewHost>(GetRenderViewHost()));
|
| - }
|
| -
|
| - void InitializeDomMessageQueue() {
|
| - dom_message_queue_.reset(new content::DOMMessageQueue);
|
| - }
|
| -
|
| - // Wait for a message from the DOM automation controller.
|
| - void WaitForDomMessage(const std::string& message) {
|
| - const std::string expected = "\"" + message + "\"";
|
| - std::string received;
|
| - do {
|
| - ASSERT_TRUE(dom_message_queue_->WaitForMessage(&received));
|
| - } while (received != expected);
|
| - }
|
| -
|
| - // Add a JavaScript event listener to send a DOM automation controller message
|
| - // whenever the |selected| property of the list item changes.
|
| - void ListenForItemSelectedChange(const std::string& list_selector,
|
| - int index) {
|
| - EXPECT_GE(index, 0);
|
| - // EXPECT_TRUE will fail if index is out of bounds.
|
| - const std::string script = base::StringPrintf(
|
| - "document.querySelector('%s').items[%d].addEventListener("
|
| - "'selectedChange', function() {"
|
| - "domAutomationController.setAutomationId(0);"
|
| - "domAutomationController.send('selected=' + this.selected);"
|
| - "});",
|
| - list_selector.c_str(),
|
| - index);
|
| -
|
| - EXPECT_TRUE(content::ExecuteScript(
|
| - GetActiveFrame(),
|
| - script));
|
| - }
|
| -
|
| - private:
|
| - std::unique_ptr<content::DOMMessageQueue> dom_message_queue_;
|
| - base::test::ScopedFeatureList disable_md_settings_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(LanguageDictionaryWebUITest);
|
| -};
|
| -
|
| -} // namespace
|
| -
|
| -// Test InlineEditableItemList keyboard focus behavior in editDictionary
|
| -// overlay.
|
| -// editDictionary overlay doesn't exist on OSX so disable it there.
|
| -#if !defined(OS_MACOSX)
|
| -
|
| -// Crashes on Win 7. http://crbug.com/500609
|
| -#if defined(OS_WIN)
|
| -#define MAYBE_TestListKeyboardFocus DISABLED_TestListKeyboardFocus
|
| -#else
|
| -#define MAYBE_TestListKeyboardFocus TestListKeyboardFocus
|
| -#endif
|
| -
|
| -IN_PROC_BROWSER_TEST_F(LanguageDictionaryWebUITest,
|
| - MAYBE_TestListKeyboardFocus) {
|
| - const std::string list_selector = kDictionaryListSelector;
|
| -
|
| - // Populate the list with some test words.
|
| - SetTestWords(list_selector);
|
| - int placeholder_index = GetListSize(list_selector) - 1;
|
| -
|
| - // Listen for changes of the placeholder item's |selected| property so that
|
| - // test can wait until change has taken place after key press before
|
| - // continuing.
|
| - InitializeDomMessageQueue();
|
| - ListenForItemSelectedChange(list_selector, placeholder_index);
|
| -
|
| - // Press tab to focus the placeholder.
|
| - PressKey(ui::VKEY_TAB, false);
|
| -
|
| - // Wait for placeholder item to become selected.
|
| - WaitForDomMessage("selected=true");
|
| -
|
| - // Verify that the placeholder is selected and has focus.
|
| - EXPECT_TRUE(ListItemSelectedAndFocused(list_selector, placeholder_index));
|
| -
|
| - // Press up arrow to select item above the placeholder.
|
| - PressKey(ui::VKEY_UP, false);
|
| -
|
| - // Wait for placeholder to become unselected.
|
| - WaitForDomMessage("selected=false");
|
| -
|
| - // Verify that the placeholder is no longer selected.
|
| - EXPECT_FALSE(ListItemSelected(list_selector, placeholder_index));
|
| -
|
| - // Verify that the item above the placeholder is selected and has focus.
|
| - EXPECT_TRUE(ListItemSelectedAndFocused(list_selector,
|
| - placeholder_index - 1));
|
| -
|
| - // Press tab to leave the list.
|
| - PressKey(ui::VKEY_TAB, false);
|
| -
|
| - // Verify that focus has left the list.
|
| - EXPECT_FALSE(ContainsActiveElement(list_selector));
|
| -
|
| - // Verify that the item above the placeholder is still selected.
|
| - EXPECT_TRUE(ListItemSelected(list_selector, placeholder_index - 1));
|
| -
|
| - // Press shift+tab to go back to the list.
|
| - PressKey(ui::VKEY_TAB, true);
|
| -
|
| - // Verify that the item above the placeholder is selected and has focus.
|
| - EXPECT_TRUE(ListItemSelectedAndFocused(list_selector,
|
| - placeholder_index - 1));
|
| -}
|
| -#endif // !defined(OS_MACOSX)
|
|
|