| Index: content/browser/accessibility/accessibility_win_browsertest.cc
|
| diff --git a/content/browser/accessibility/accessibility_win_browsertest.cc b/content/browser/accessibility/accessibility_win_browsertest.cc
|
| index 21e96d8b2cd57c1c3b9cef51ee2ff228951f1cec..729b2e8f061dad6fda8e16e812242e67bbf10bde 100644
|
| --- a/content/browser/accessibility/accessibility_win_browsertest.cc
|
| +++ b/content/browser/accessibility/accessibility_win_browsertest.cc
|
| @@ -1162,6 +1162,123 @@ IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest,
|
| EXPECT_EQ(0, caret_offset);
|
| }
|
|
|
| +IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest, TestSetSelection) {
|
| + base::win::ScopedComPtr<IAccessibleText> input_text;
|
| + SetUpInputField(&input_text);
|
| +
|
| + LONG start_offset, end_offset;
|
| + EXPECT_HRESULT_FAILED(
|
| + input_text->get_selection(1, &start_offset, &end_offset));
|
| + HRESULT hr = input_text->get_selection(0, &start_offset, &end_offset);
|
| + // There is no selection, just a caret.
|
| + EXPECT_EQ(E_INVALIDARG, hr);
|
| +
|
| + AccessibilityNotificationWaiter waiter(shell()->web_contents(),
|
| + ACCESSIBILITY_MODE_COMPLETE,
|
| + ui::AX_EVENT_TEXT_SELECTION_CHANGED);
|
| + start_offset = 0;
|
| + end_offset = CONTENTS_LENGTH;
|
| + EXPECT_HRESULT_FAILED(input_text->setSelection(1, start_offset, end_offset));
|
| + EXPECT_HRESULT_SUCCEEDED(
|
| + input_text->setSelection(0, start_offset, end_offset));
|
| + waiter.WaitForNotification();
|
| +
|
| + hr = input_text->get_selection(0, &start_offset, &end_offset);
|
| + EXPECT_EQ(S_OK, hr);
|
| + EXPECT_EQ(0, start_offset);
|
| + EXPECT_EQ(CONTENTS_LENGTH, end_offset);
|
| +
|
| + start_offset = CONTENTS_LENGTH;
|
| + end_offset = 1;
|
| + EXPECT_HRESULT_SUCCEEDED(
|
| + input_text->setSelection(0, start_offset, end_offset));
|
| + waiter.WaitForNotification();
|
| +
|
| + hr = input_text->get_selection(0, &start_offset, &end_offset);
|
| + EXPECT_EQ(S_OK, hr);
|
| + // Start and end offsets are always swapped to be in ascending order.
|
| + EXPECT_EQ(1, start_offset);
|
| + EXPECT_EQ(CONTENTS_LENGTH, end_offset);
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest, TestMultiLineSetSelection) {
|
| + base::win::ScopedComPtr<IAccessibleText> textarea_text;
|
| + SetUpTextareaField(&textarea_text);
|
| +
|
| + LONG start_offset, end_offset;
|
| + EXPECT_HRESULT_FAILED(
|
| + textarea_text->get_selection(1, &start_offset, &end_offset));
|
| + HRESULT hr = textarea_text->get_selection(0, &start_offset, &end_offset);
|
| + // There is no selection, just a caret.
|
| + EXPECT_EQ(E_INVALIDARG, hr);
|
| +
|
| + AccessibilityNotificationWaiter waiter(shell()->web_contents(),
|
| + ACCESSIBILITY_MODE_COMPLETE,
|
| + ui::AX_EVENT_TEXT_SELECTION_CHANGED);
|
| + start_offset = 0;
|
| + end_offset = CONTENTS_LENGTH;
|
| + EXPECT_HRESULT_FAILED(
|
| + textarea_text->setSelection(1, start_offset, end_offset));
|
| + EXPECT_HRESULT_SUCCEEDED(
|
| + textarea_text->setSelection(0, start_offset, end_offset));
|
| + waiter.WaitForNotification();
|
| +
|
| + hr = textarea_text->get_selection(0, &start_offset, &end_offset);
|
| + EXPECT_EQ(S_OK, hr);
|
| + EXPECT_EQ(0, start_offset);
|
| + EXPECT_EQ(CONTENTS_LENGTH, end_offset);
|
| +
|
| + start_offset = CONTENTS_LENGTH - 1;
|
| + end_offset = 0;
|
| + EXPECT_HRESULT_SUCCEEDED(
|
| + textarea_text->setSelection(0, start_offset, end_offset));
|
| + waiter.WaitForNotification();
|
| +
|
| + hr = textarea_text->get_selection(0, &start_offset, &end_offset);
|
| + EXPECT_EQ(S_OK, hr);
|
| + // Start and end offsets are always swapped to be in ascending order.
|
| + EXPECT_EQ(0, start_offset);
|
| + EXPECT_EQ(CONTENTS_LENGTH - 1, end_offset);
|
| +}
|
| +
|
| +IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest,
|
| + TestStaticTextSetSelection) {
|
| + base::win::ScopedComPtr<IAccessibleText> paragraph_text;
|
| + SetUpSampleParagraph(¶graph_text);
|
| +
|
| + LONG n_characters;
|
| + ASSERT_HRESULT_SUCCEEDED(paragraph_text->get_nCharacters(&n_characters));
|
| + ASSERT_LT(0, n_characters);
|
| +
|
| + AccessibilityNotificationWaiter waiter(
|
| + shell()->web_contents(), ACCESSIBILITY_MODE_COMPLETE,
|
| + ui::AX_EVENT_DOCUMENT_SELECTION_CHANGED);
|
| + LONG start_offset = 0;
|
| + LONG end_offset = n_characters;
|
| + EXPECT_HRESULT_FAILED(
|
| + paragraph_text->setSelection(1, start_offset, end_offset));
|
| + EXPECT_HRESULT_SUCCEEDED(
|
| + paragraph_text->setSelection(0, start_offset, end_offset));
|
| + waiter.WaitForNotification();
|
| +
|
| + HRESULT hr = paragraph_text->get_selection(0, &start_offset, &end_offset);
|
| + EXPECT_EQ(S_OK, hr);
|
| + EXPECT_EQ(0, start_offset);
|
| + EXPECT_EQ(n_characters, end_offset);
|
| +
|
| + start_offset = n_characters - 1;
|
| + end_offset = 0;
|
| + EXPECT_HRESULT_SUCCEEDED(
|
| + paragraph_text->setSelection(0, start_offset, end_offset));
|
| + waiter.WaitForNotification();
|
| +
|
| + hr = paragraph_text->get_selection(0, &start_offset, &end_offset);
|
| + EXPECT_EQ(S_OK, hr);
|
| + // Start and end offsets are always swapped to be in ascending order.
|
| + EXPECT_EQ(0, start_offset);
|
| + EXPECT_EQ(n_characters - 1, end_offset);
|
| +}
|
| +
|
| IN_PROC_BROWSER_TEST_F(AccessibilityWinBrowserTest,
|
| TestTextAtOffsetWithInvalidArguments) {
|
| base::win::ScopedComPtr<IAccessibleText> input_text;
|
|
|