Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(145)

Side by Side Diff: content/browser/accessibility/browser_accessibility_win.cc

Issue 2191833003: Use text affinity to return correct accessible line boundaries. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix bug in browser_accessibility_win.cc Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/accessibility/browser_accessibility_win.h" 5 #include "content/browser/accessibility/browser_accessibility_win.h"
6 6
7 #include <UIAutomationClient.h> 7 #include <UIAutomationClient.h>
8 #include <UIAutomationCoreApi.h> 8 #include <UIAutomationCoreApi.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 4355 matching lines...) Expand 10 before | Expand all | Expand 10 after
4366 } 4366 }
4367 NOTREACHED(); 4367 NOTREACHED();
4368 return ui::CHAR_BOUNDARY; 4368 return ui::CHAR_BOUNDARY;
4369 } 4369 }
4370 4370
4371 LONG BrowserAccessibilityWin::FindBoundary( 4371 LONG BrowserAccessibilityWin::FindBoundary(
4372 const base::string16& text, 4372 const base::string16& text,
4373 IA2TextBoundaryType ia2_boundary, 4373 IA2TextBoundaryType ia2_boundary,
4374 LONG start_offset, 4374 LONG start_offset,
4375 ui::TextBoundaryDirection direction) { 4375 ui::TextBoundaryDirection direction) {
4376 // If the boundary is relative to the caret, use the selection
4377 // affinity, otherwise default to downstream affinity.
4378 ui::AXTextAffinity affinity =
4379 start_offset == IA2_TEXT_OFFSET_CARET ?
4380 manager()->GetTreeData().sel_focus_affinity :
4381 ui::AX_TEXT_AFFINITY_DOWNSTREAM;
4382
4376 HandleSpecialTextOffset(text, &start_offset); 4383 HandleSpecialTextOffset(text, &start_offset);
4377 if (ia2_boundary == IA2_TEXT_BOUNDARY_WORD) 4384 if (ia2_boundary == IA2_TEXT_BOUNDARY_WORD)
4378 return GetWordStartBoundary(static_cast<int>(start_offset), direction); 4385 return GetWordStartBoundary(static_cast<int>(start_offset), direction);
4379 if (ia2_boundary == IA2_TEXT_BOUNDARY_LINE) 4386 if (ia2_boundary == IA2_TEXT_BOUNDARY_LINE) {
4380 return GetLineStartBoundary(static_cast<int>(start_offset), direction); 4387 return GetLineStartBoundary(
4388 static_cast<int>(start_offset), direction, affinity);
4389 }
4381 4390
4382 ui::TextBoundaryType boundary = IA2TextBoundaryToTextBoundary(ia2_boundary); 4391 ui::TextBoundaryType boundary = IA2TextBoundaryToTextBoundary(ia2_boundary);
4383 const std::vector<int32_t>& line_breaks = 4392 const std::vector<int32_t>& line_breaks =
4384 GetIntListAttribute(ui::AX_ATTR_LINE_BREAKS); 4393 GetIntListAttribute(ui::AX_ATTR_LINE_BREAKS);
4385 return ui::FindAccessibleTextBoundary( 4394 return ui::FindAccessibleTextBoundary(
4386 text, line_breaks, boundary, start_offset, direction); 4395 text, line_breaks, boundary, start_offset, direction, affinity);
4387 } 4396 }
4388 4397
4389 LONG BrowserAccessibilityWin::FindStartOfStyle( 4398 LONG BrowserAccessibilityWin::FindStartOfStyle(
4390 LONG start_offset, 4399 LONG start_offset,
4391 ui::TextBoundaryDirection direction) const { 4400 ui::TextBoundaryDirection direction) const {
4392 LONG text_length = static_cast<LONG>(GetText().length()); 4401 LONG text_length = static_cast<LONG>(GetText().length());
4393 DCHECK_GE(start_offset, 0); 4402 DCHECK_GE(start_offset, 0);
4394 DCHECK_LE(start_offset, text_length); 4403 DCHECK_LE(start_offset, text_length);
4395 4404
4396 switch (direction) { 4405 switch (direction) {
(...skipping 796 matching lines...) Expand 10 before | Expand all | Expand 10 after
5193 return static_cast<BrowserAccessibilityWin*>(obj); 5202 return static_cast<BrowserAccessibilityWin*>(obj);
5194 } 5203 }
5195 5204
5196 const BrowserAccessibilityWin* 5205 const BrowserAccessibilityWin*
5197 ToBrowserAccessibilityWin(const BrowserAccessibility* obj) { 5206 ToBrowserAccessibilityWin(const BrowserAccessibility* obj) {
5198 DCHECK(!obj || obj->IsNative()); 5207 DCHECK(!obj || obj->IsNative());
5199 return static_cast<const BrowserAccessibilityWin*>(obj); 5208 return static_cast<const BrowserAccessibilityWin*>(obj);
5200 } 5209 }
5201 5210
5202 } // namespace content 5211 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/accessibility/browser_accessibility_manager_unittest.cc ('k') | content/common/accessibility_messages.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698