summaryrefslogtreecommitdiffstats
path: root/content/browser/accessibility
diff options
context:
space:
mode:
authordmazzoni <dmazzoni@chromium.org>2014-11-04 21:16:29 -0800
committerCommit bot <commit-bot@chromium.org>2014-11-05 05:17:50 +0000
commitab9f8645f966c4d01a8009ac6a67a7c7f082e273 (patch)
treebd9282e8bb000b5cf5ba0e1cd5382bc1e3d40cc3 /content/browser/accessibility
parentfcffcb17a43f6d0ac30cc5b8260028ad6489d6e9 (diff)
downloadchromium_src-ab9f8645f966c4d01a8009ac6a67a7c7f082e273.zip
chromium_src-ab9f8645f966c4d01a8009ac6a67a7c7f082e273.tar.gz
chromium_src-ab9f8645f966c4d01a8009ac6a67a7c7f082e273.tar.bz2
Add Android AX functions to set the value and selection of a text field.
BUG=414571 Review URL: https://codereview.chromium.org/681503002 Cr-Commit-Position: refs/heads/master@{#302756}
Diffstat (limited to 'content/browser/accessibility')
-rw-r--r--content/browser/accessibility/browser_accessibility_android.cc6
-rw-r--r--content/browser/accessibility/browser_accessibility_android.h1
-rw-r--r--content/browser/accessibility/browser_accessibility_manager.cc11
-rw-r--r--content/browser/accessibility/browser_accessibility_manager.h6
-rw-r--r--content/browser/accessibility/browser_accessibility_manager_android.cc17
-rw-r--r--content/browser/accessibility/browser_accessibility_manager_android.h4
-rw-r--r--content/browser/accessibility/browser_accessibility_manager_unittest.cc2
7 files changed, 45 insertions, 2 deletions
diff --git a/content/browser/accessibility/browser_accessibility_android.cc b/content/browser/accessibility/browser_accessibility_android.cc
index abc37d8..c57c40e 100644
--- a/content/browser/accessibility/browser_accessibility_android.cc
+++ b/content/browser/accessibility/browser_accessibility_android.cc
@@ -143,6 +143,12 @@ bool BrowserAccessibilityAndroid::IsDismissable() const {
return false; // No concept of "dismissable" on the web currently.
}
+bool BrowserAccessibilityAndroid::IsEditableText() const {
+ return (GetRole() == ui::AX_ROLE_EDITABLE_TEXT ||
+ GetRole() == ui::AX_ROLE_TEXT_AREA ||
+ GetRole() == ui::AX_ROLE_TEXT_FIELD);
+}
+
bool BrowserAccessibilityAndroid::IsEnabled() const {
return HasState(ui::AX_STATE_ENABLED);
}
diff --git a/content/browser/accessibility/browser_accessibility_android.h b/content/browser/accessibility/browser_accessibility_android.h
index 17c7c46..2f6d1af 100644
--- a/content/browser/accessibility/browser_accessibility_android.h
+++ b/content/browser/accessibility/browser_accessibility_android.h
@@ -26,6 +26,7 @@ class BrowserAccessibilityAndroid : public BrowserAccessibility {
bool IsCollectionItem() const;
bool IsContentInvalid() const;
bool IsDismissable() const;
+ bool IsEditableText() const;
bool IsEnabled() const;
bool IsFocusable() const;
bool IsFocused() const;
diff --git a/content/browser/accessibility/browser_accessibility_manager.cc b/content/browser/accessibility/browser_accessibility_manager.cc
index bd745cd..cb392cb 100644
--- a/content/browser/accessibility/browser_accessibility_manager.cc
+++ b/content/browser/accessibility/browser_accessibility_manager.cc
@@ -284,8 +284,17 @@ void BrowserAccessibilityManager::ScrollToPoint(
}
}
+void BrowserAccessibilityManager::SetValue(
+ const BrowserAccessibility& node,
+ const base::string16& value) {
+ if (delegate_)
+ delegate_->AccessibilitySetValue(node.GetId(), value);
+}
+
void BrowserAccessibilityManager::SetTextSelection(
- const BrowserAccessibility& node, int start_offset, int end_offset) {
+ const BrowserAccessibility& node,
+ int start_offset,
+ int end_offset) {
if (delegate_) {
delegate_->AccessibilitySetTextSelection(
node.GetId(), start_offset, end_offset);
diff --git a/content/browser/accessibility/browser_accessibility_manager.h b/content/browser/accessibility/browser_accessibility_manager.h
index 3760141..4b637cd 100644
--- a/content/browser/accessibility/browser_accessibility_manager.h
+++ b/content/browser/accessibility/browser_accessibility_manager.h
@@ -61,6 +61,8 @@ class CONTENT_EXPORT BrowserAccessibilityDelegate {
int acc_obj_id, const gfx::Point& point) = 0;
virtual void AccessibilitySetTextSelection(
int acc_obj_id, int start_offset, int end_offset) = 0;
+ virtual void AccessibilitySetValue(
+ int acc_obj_id, const base::string16& value) = 0;
virtual bool AccessibilityViewHasFocus() const = 0;
virtual gfx::Rect AccessibilityGetViewBounds() const = 0;
virtual gfx::Point AccessibilityOriginInScreen(
@@ -146,6 +148,10 @@ class CONTENT_EXPORT BrowserAccessibilityManager : public ui::AXTreeDelegate {
void ScrollToPoint(
const BrowserAccessibility& node, gfx::Point point);
+ // Tell the renderer to set the value of an editable text node.
+ void SetValue(
+ const BrowserAccessibility& node, const base::string16& value);
+
// Tell the renderer to set the text selection on a node.
void SetTextSelection(
const BrowserAccessibility& node, int start_offset, int end_offset);
diff --git a/content/browser/accessibility/browser_accessibility_manager_android.cc b/content/browser/accessibility/browser_accessibility_manager_android.cc
index 3a31ff7..ce27954 100644
--- a/content/browser/accessibility/browser_accessibility_manager_android.cc
+++ b/content/browser/accessibility/browser_accessibility_manager_android.cc
@@ -224,6 +224,7 @@ jboolean BrowserAccessibilityManagerAndroid::PopulateAccessibilityNodeInfo(
node->IsCheckable(),
node->IsChecked(),
node->IsClickable(),
+ node->IsEditableText(),
node->IsEnabled(),
node->IsFocusable(),
node->IsFocused(),
@@ -406,6 +407,22 @@ void BrowserAccessibilityManagerAndroid::ScrollToMakeNodeVisible(
ScrollToMakeVisible(*node, gfx::Rect(node->GetLocation().size()));
}
+void BrowserAccessibilityManagerAndroid::SetTextFieldValue(
+ JNIEnv* env, jobject obj, jint id, jstring value) {
+ BrowserAccessibility* node = GetFromID(id);
+ if (node) {
+ BrowserAccessibilityManager::SetValue(
+ *node, base::android::ConvertJavaStringToUTF16(env, value));
+ }
+}
+
+void BrowserAccessibilityManagerAndroid::SetSelection(
+ JNIEnv* env, jobject obj, jint id, jint start, jint end) {
+ BrowserAccessibility* node = GetFromID(id);
+ if (node)
+ SetTextSelection(*node, start, end);
+}
+
void BrowserAccessibilityManagerAndroid::HandleHoverEvent(
BrowserAccessibility* node) {
JNIEnv* env = AttachCurrentThread();
diff --git a/content/browser/accessibility/browser_accessibility_manager_android.h b/content/browser/accessibility/browser_accessibility_manager_android.h
index 0946e5e..720f175 100644
--- a/content/browser/accessibility/browser_accessibility_manager_android.h
+++ b/content/browser/accessibility/browser_accessibility_manager_android.h
@@ -55,7 +55,9 @@ class CONTENT_EXPORT BrowserAccessibilityManagerAndroid
void Click(JNIEnv* env, jobject obj, jint id);
void Focus(JNIEnv* env, jobject obj, jint id);
void Blur(JNIEnv* env, jobject obj);
- void ScrollToMakeNodeVisible(JNIEnv* env, jobject obj, int id);
+ void ScrollToMakeNodeVisible(JNIEnv* env, jobject obj, jint id);
+ void SetTextFieldValue(JNIEnv* env, jobject obj, jint id, jstring value);
+ void SetSelection(JNIEnv* env, jobject obj, jint id, jint start, jint end);
// Return the id of the next node in tree order in the direction given by
// |forwards|, starting with |start_id|, that matches |element_type|,
diff --git a/content/browser/accessibility/browser_accessibility_manager_unittest.cc b/content/browser/accessibility/browser_accessibility_manager_unittest.cc
index a104defa..b71187c 100644
--- a/content/browser/accessibility/browser_accessibility_manager_unittest.cc
+++ b/content/browser/accessibility/browser_accessibility_manager_unittest.cc
@@ -73,6 +73,8 @@ class TestBrowserAccessibilityDelegate
void AccessibilitySetTextSelection(int acc_obj_id,
int start_offset,
int end_offset) override {}
+ void AccessibilitySetValue(int acc_obj_id, const base::string16& value)
+ override {}
bool AccessibilityViewHasFocus() const override { return false; }
gfx::Rect AccessibilityGetViewBounds() const override { return gfx::Rect(); }
gfx::Point AccessibilityOriginInScreen(