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

Unified Diff: content/browser/accessibility/browser_accessibility_manager.cc

Issue 1731903003: Added cursor navigation support for standard text fields and changed selection notifications so tha… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed GetTextForRange to handle text fields. Created 4 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: content/browser/accessibility/browser_accessibility_manager.cc
diff --git a/content/browser/accessibility/browser_accessibility_manager.cc b/content/browser/accessibility/browser_accessibility_manager.cc
index ef84aac5f55c18d44a1dbf6f900077f781b1e18b..c6b65e6b732e25d227c21c411d989b6b473f1076 100644
--- a/content/browser/accessibility/browser_accessibility_manager.cc
+++ b/content/browser/accessibility/browser_accessibility_manager.cc
@@ -474,7 +474,7 @@ gfx::Rect BrowserAccessibilityManager::GetViewBounds() {
return gfx::Rect();
}
-// Static
+// static
BrowserAccessibility* BrowserAccessibilityManager::NextInTreeOrder(
const BrowserAccessibility* object) {
if (!object)
@@ -494,7 +494,7 @@ BrowserAccessibility* BrowserAccessibilityManager::NextInTreeOrder(
return nullptr;
}
-// Static
+// static
BrowserAccessibility* BrowserAccessibilityManager::PreviousInTreeOrder(
const BrowserAccessibility* object) {
if (!object)
@@ -510,7 +510,7 @@ BrowserAccessibility* BrowserAccessibilityManager::PreviousInTreeOrder(
return sibling;
}
-// Static
+// static
BrowserAccessibility* BrowserAccessibilityManager::PreviousTextOnlyObject(
const BrowserAccessibility* object) {
BrowserAccessibility* previous_object = PreviousInTreeOrder(object);
@@ -520,7 +520,7 @@ BrowserAccessibility* BrowserAccessibilityManager::PreviousTextOnlyObject(
return previous_object;
}
-// Static
+// static
BrowserAccessibility* BrowserAccessibilityManager::NextTextOnlyObject(
const BrowserAccessibility* object) {
BrowserAccessibility* next_object = NextInTreeOrder(object);
@@ -530,7 +530,7 @@ BrowserAccessibility* BrowserAccessibilityManager::NextTextOnlyObject(
return next_object;
}
-// Static
+// static
bool BrowserAccessibilityManager::FindIndicesInCommonParent(
const BrowserAccessibility& object1,
const BrowserAccessibility& object2,
@@ -564,7 +564,7 @@ bool BrowserAccessibilityManager::FindIndicesInCommonParent(
return true;
}
-// Static
+// static
base::string16 BrowserAccessibilityManager::GetTextForRange(
const BrowserAccessibility& start_object,
int start_offset,
@@ -573,6 +573,19 @@ base::string16 BrowserAccessibilityManager::GetTextForRange(
DCHECK_GE(start_offset, 0);
DCHECK_GE(end_offset, 0);
+ if (&start_object == &end_object && start_object.IsSimpleTextControl()) {
+ if (start_offset > end_offset)
+ std::swap(start_offset, end_offset);
+
+ if (start_offset >= static_cast<int>(start_object.GetValue().length()) ||
+ end_offset > static_cast<int>(start_object.GetValue().length())) {
+ return base::string16();
+ }
+
+ return start_object.GetValue().substr(start_offset,
+ end_offset - start_offset);
+ }
+
int child_index1 = -1;
int child_index2 = -1;
if (&start_object != &end_object) {
@@ -618,16 +631,14 @@ base::string16 BrowserAccessibilityManager::GetTextForRange(
// Be a little permissive with the start and end offsets.
if (start_text_object == end_text_object) {
+ if (start_offset > end_offset)
+ std::swap(start_offset, end_offset);
+
if (start_offset <
static_cast<int>(start_text_object->GetText().length()) &&
end_offset <= static_cast<int>(end_text_object->GetText().length())) {
- if (start_offset <= end_offset) {
- return start_text_object->GetText().substr(start_offset,
- end_offset - start_offset);
- } else {
- return start_text_object->GetText().substr(end_offset,
- start_offset - end_offset);
- }
+ return start_text_object->GetText().substr(start_offset,
+ end_offset - start_offset);
}
return start_text_object->GetText();
}

Powered by Google App Engine
This is Rietveld 408576698