Index: content/browser/accessibility/browser_accessibility_manager_android.cc |
diff --git a/content/browser/accessibility/browser_accessibility_manager_android.cc b/content/browser/accessibility/browser_accessibility_manager_android.cc |
index 973257a8642f658236cdc9c598ff7f1e7af58e0d..79be68dc5539d18ce1cad84f18c2027633db4751 100644 |
--- a/content/browser/accessibility/browser_accessibility_manager_android.cc |
+++ b/content/browser/accessibility/browser_accessibility_manager_android.cc |
@@ -12,6 +12,8 @@ |
#include "base/android/jni_string.h" |
#include "base/feature_list.h" |
#include "base/i18n/char_iterator.h" |
+#include "base/macros.h" |
+#include "base/metrics/histogram_macros.h" |
#include "base/strings/string_number_conversions.h" |
#include "base/strings/utf_string_conversions.h" |
#include "base/values.h" |
@@ -31,6 +33,122 @@ namespace content { |
namespace { |
+// IMPORTANT! |
+// These values are written to logs. Do not renumber or delete |
+// existing items; add new entries to the end of the list. |
+enum { |
+ UMA_CAPABILITY_CAN_CONTROL_MAGNIFICATION = 0, |
+ UMA_CAPABILITY_CAN_PERFORM_GESTURES = 1, |
+ UMA_CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 2, |
+ UMA_CAPABILITY_CAN_REQUEST_FILTER_KEY_EVENTS = 3, |
+ UMA_CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION = 4, |
+ UMA_CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT = 5, |
+ UMA_EVENT_ANNOUNCEMENT = 6, |
+ UMA_EVENT_ASSIST_READING_CONTEXT = 7, |
+ UMA_EVENT_GESTURE_DETECTION_END = 8, |
+ UMA_EVENT_GESTURE_DETECTION_START = 9, |
+ UMA_EVENT_NOTIFICATION_STATE_CHANGED = 10, |
+ UMA_EVENT_TOUCH_EXPLORATION_GESTURE_END = 11, |
+ UMA_EVENT_TOUCH_EXPLORATION_GESTURE_START = 12, |
+ UMA_EVENT_TOUCH_INTERACTION_END = 13, |
+ UMA_EVENT_TOUCH_INTERACTION_START = 14, |
+ UMA_EVENT_VIEW_ACCESSIBILITY_FOCUSED = 15, |
+ UMA_EVENT_VIEW_ACCESSIBILITY_FOCUS_CLEARED = 16, |
+ UMA_EVENT_VIEW_CLICKED = 17, |
+ UMA_EVENT_VIEW_CONTEXT_CLICKED = 18, |
+ UMA_EVENT_VIEW_FOCUSED = 19, |
+ UMA_EVENT_VIEW_HOVER_ENTER = 20, |
+ UMA_EVENT_VIEW_HOVER_EXIT = 21, |
+ UMA_EVENT_VIEW_LONG_CLICKED = 22, |
+ UMA_EVENT_VIEW_SCROLLED = 23, |
+ UMA_EVENT_VIEW_SELECTED = 24, |
+ UMA_EVENT_VIEW_TEXT_CHANGED = 25, |
+ UMA_EVENT_VIEW_TEXT_SELECTION_CHANGED = 26, |
+ UMA_EVENT_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY = 27, |
+ UMA_EVENT_WINDOWS_CHANGED = 28, |
+ UMA_EVENT_WINDOW_CONTENT_CHANGED = 29, |
+ UMA_EVENT_WINDOW_STATE_CHANGED = 30, |
+ UMA_FEEDBACK_AUDIBLE = 31, |
+ UMA_FEEDBACK_BRAILLE = 32, |
+ UMA_FEEDBACK_GENERIC = 33, |
+ UMA_FEEDBACK_HAPTIC = 34, |
+ UMA_FEEDBACK_SPOKEN = 35, |
+ UMA_FEEDBACK_VISUAL = 36, |
+ UMA_FLAG_FORCE_DIRECT_BOOT_AWARE = 37, |
+ UMA_FLAG_INCLUDE_NOT_IMPORTANT_VIEWS = 38, |
+ UMA_FLAG_REPORT_VIEW_IDS = 39, |
+ UMA_FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 40, |
+ UMA_FLAG_REQUEST_FILTER_KEY_EVENTS = 41, |
+ UMA_FLAG_REQUEST_TOUCH_EXPLORATION_MODE = 42, |
+ UMA_FLAG_RETRIEVE_INTERACTIVE_WINDOWS = 43, |
+ |
+ // This must always be the last enum. It's okay for its value to |
+ // increase, but none of the other enum values may change. |
+ UMA_ACCESSIBILITYSERVICEINFO_MAX |
+}; |
+ |
+#define ACCESSIBILITY_SERVICE_HISTOGRAM(enum_value) \ |
+ UMA_HISTOGRAM_ENUMERATION("Accessibility.AndroidServiceInfo", enum_value, \ |
+ UMA_ACCESSIBILITYSERVICEINFO_MAX) |
+ |
+// These are constants from |
+// android.view.accessibility.AccessibilityEvent in Java: |
+enum { |
+ ACCESSIBILITYEVENT_TYPE_ANNOUNCEMENT = 0x00004000, |
+ ACCESSIBILITYEVENT_TYPE_ASSIST_READING_CONTEXT = 0x01000000, |
+ ACCESSIBILITYEVENT_TYPE_GESTURE_DETECTION_END = 0x00080000, |
+ ACCESSIBILITYEVENT_TYPE_GESTURE_DETECTION_START = 0x00040000, |
+ ACCESSIBILITYEVENT_TYPE_NOTIFICATION_STATE_CHANGED = 0x00000040, |
+ ACCESSIBILITYEVENT_TYPE_TOUCH_EXPLORATION_GESTURE_END = 0x00000400, |
+ ACCESSIBILITYEVENT_TYPE_TOUCH_EXPLORATION_GESTURE_START = 0x00000200, |
+ ACCESSIBILITYEVENT_TYPE_TOUCH_INTERACTION_END = 0x00200000, |
+ ACCESSIBILITYEVENT_TYPE_TOUCH_INTERACTION_START = 0x00100000, |
+ ACCESSIBILITYEVENT_TYPE_VIEW_ACCESSIBILITY_FOCUSED = 0x00008000, |
+ ACCESSIBILITYEVENT_TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED = 0x00010000, |
+ ACCESSIBILITYEVENT_TYPE_VIEW_CLICKED = 0x00000001, |
+ ACCESSIBILITYEVENT_TYPE_VIEW_CONTEXT_CLICKED = 0x00800000, |
+ ACCESSIBILITYEVENT_TYPE_VIEW_FOCUSED = 0x00000008, |
+ ACCESSIBILITYEVENT_TYPE_VIEW_HOVER_ENTER = 0x00000080, |
+ ACCESSIBILITYEVENT_TYPE_VIEW_HOVER_EXIT = 0x00000100, |
+ ACCESSIBILITYEVENT_TYPE_VIEW_LONG_CLICKED = 0x00000002, |
+ ACCESSIBILITYEVENT_TYPE_VIEW_SCROLLED = 0x00001000, |
+ ACCESSIBILITYEVENT_TYPE_VIEW_SELECTED = 0x00000004, |
+ ACCESSIBILITYEVENT_TYPE_VIEW_TEXT_CHANGED = 0x00000010, |
+ ACCESSIBILITYEVENT_TYPE_VIEW_TEXT_SELECTION_CHANGED = 0x00002000, |
+ ACCESSIBILITYEVENT_TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY = |
+ 0x00020000, |
+ ACCESSIBILITYEVENT_TYPE_WINDOWS_CHANGED = 0x00400000, |
+ ACCESSIBILITYEVENT_TYPE_WINDOW_CONTENT_CHANGED = 0x00000800, |
+ ACCESSIBILITYEVENT_TYPE_WINDOW_STATE_CHANGED = 0x00000020 |
+}; |
+ |
+// These are constants from |
+// android.accessibilityservice.AccessibilityServiceInfo in Java: |
+enum { |
+ ACCESSIBILITYSERVICEINFO_CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT = 0x00000001, |
+ ACCESSIBILITYSERVICEINFO_CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION = |
+ 0x00000002, |
+ ACCESSIBILITYSERVICEINFO_CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY = |
+ 0x00000004, |
+ ACCESSIBILITYSERVICEINFO_CAPABILITY_CAN_REQUEST_FILTER_KEY_EVENTS = |
+ 0x00000008, |
+ ACCESSIBILITYSERVICEINFO_CAPABILITY_CAN_CONTROL_MAGNIFICATION = 0x00000010, |
+ ACCESSIBILITYSERVICEINFO_CAPABILITY_CAN_PERFORM_GESTURES = 0x00000020, |
+ ACCESSIBILITYSERVICEINFO_FEEDBACK_SPOKEN = 0x0000001, |
+ ACCESSIBILITYSERVICEINFO_FEEDBACK_HAPTIC = 0x0000002, |
+ ACCESSIBILITYSERVICEINFO_FEEDBACK_AUDIBLE = 0x0000004, |
+ ACCESSIBILITYSERVICEINFO_FEEDBACK_VISUAL = 0x0000008, |
+ ACCESSIBILITYSERVICEINFO_FEEDBACK_GENERIC = 0x0000010, |
+ ACCESSIBILITYSERVICEINFO_FEEDBACK_BRAILLE = 0x0000020, |
+ ACCESSIBILITYSERVICEINFO_FLAG_INCLUDE_NOT_IMPORTANT_VIEWS = 0x0000002, |
+ ACCESSIBILITYSERVICEINFO_FLAG_REQUEST_TOUCH_EXPLORATION_MODE = 0x0000004, |
+ ACCESSIBILITYSERVICEINFO_FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY = 0x00000008, |
+ ACCESSIBILITYSERVICEINFO_FLAG_REPORT_VIEW_IDS = 0x00000010, |
+ ACCESSIBILITYSERVICEINFO_FLAG_REQUEST_FILTER_KEY_EVENTS = 0x00000020, |
+ ACCESSIBILITYSERVICEINFO_FLAG_RETRIEVE_INTERACTIVE_WINDOWS = 0x00000040, |
+ ACCESSIBILITYSERVICEINFO_FLAG_FORCE_DIRECT_BOOT_AWARE = 0x00010000, |
+}; |
+ |
using SearchKeyToPredicateMap = |
base::hash_map<base::string16, AccessibilityMatchPredicate>; |
base::LazyInstance<SearchKeyToPredicateMap>::DestructorAtExit |
@@ -170,6 +288,7 @@ BrowserAccessibilityManagerAndroid::BrowserAccessibilityManagerAndroid( |
prune_tree_for_screen_reader_(true) { |
Initialize(initial_tree); |
SetContentViewCore(content_view_core); |
+ CollectStats(); |
} |
BrowserAccessibilityManagerAndroid::~BrowserAccessibilityManagerAndroid() { |
@@ -1107,6 +1226,138 @@ BrowserAccessibilityManagerAndroid::GetJavaRefFromRootManager() { |
return root_manager->java_ref().get(env); |
} |
+void BrowserAccessibilityManagerAndroid::CollectStats() { |
+ static bool stats_collected = false; |
aelias_OOO_until_Jul13
2017/05/24 20:19:54
"static" has a bad code smell and I've found even
dmazzoni
2017/05/24 21:34:27
There's one BrowserAccessibilityManager per Render
aelias_OOO_until_Jul13
2017/05/24 21:44:50
Sounds good to remove it.
AXTreeSnapshotCallback
|
+ |
+ if (stats_collected) |
+ return; |
+ |
+ JNIEnv* env = AttachCurrentThread(); |
+ ScopedJavaLocalRef<jobject> obj = GetJavaRefFromRootManager(); |
+ if (obj.is_null()) |
+ return; |
+ |
+ int event_type_mask = |
+ Java_BrowserAccessibilityManager_getAccessibilityServiceEventTypeMask( |
+ env, obj); |
+ if (event_type_mask & ACCESSIBILITYEVENT_TYPE_ANNOUNCEMENT) |
aelias_OOO_until_Jul13
2017/05/24 20:19:54
This type of mapping is prone to clerical errors n
dmazzoni
2017/05/24 21:34:27
Done.
|
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_EVENT_ANNOUNCEMENT); |
+ if (event_type_mask & ACCESSIBILITYEVENT_TYPE_ASSIST_READING_CONTEXT) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_EVENT_ASSIST_READING_CONTEXT); |
+ if (event_type_mask & ACCESSIBILITYEVENT_TYPE_GESTURE_DETECTION_END) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_EVENT_GESTURE_DETECTION_END); |
+ if (event_type_mask & ACCESSIBILITYEVENT_TYPE_GESTURE_DETECTION_START) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_EVENT_GESTURE_DETECTION_START); |
+ if (event_type_mask & ACCESSIBILITYEVENT_TYPE_NOTIFICATION_STATE_CHANGED) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_EVENT_NOTIFICATION_STATE_CHANGED); |
+ if (event_type_mask & ACCESSIBILITYEVENT_TYPE_TOUCH_EXPLORATION_GESTURE_END) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_EVENT_TOUCH_EXPLORATION_GESTURE_END); |
+ if (event_type_mask & ACCESSIBILITYEVENT_TYPE_TOUCH_EXPLORATION_GESTURE_START) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_EVENT_TOUCH_EXPLORATION_GESTURE_START); |
+ if (event_type_mask & ACCESSIBILITYEVENT_TYPE_TOUCH_INTERACTION_END) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_EVENT_TOUCH_INTERACTION_END); |
+ if (event_type_mask & ACCESSIBILITYEVENT_TYPE_TOUCH_INTERACTION_START) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_EVENT_TOUCH_INTERACTION_START); |
+ if (event_type_mask & ACCESSIBILITYEVENT_TYPE_VIEW_ACCESSIBILITY_FOCUSED) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_EVENT_VIEW_ACCESSIBILITY_FOCUSED); |
+ if (event_type_mask & |
+ ACCESSIBILITYEVENT_TYPE_VIEW_ACCESSIBILITY_FOCUS_CLEARED) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_EVENT_VIEW_ACCESSIBILITY_FOCUS_CLEARED); |
+ if (event_type_mask & ACCESSIBILITYEVENT_TYPE_VIEW_CLICKED) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_EVENT_VIEW_CLICKED); |
+ if (event_type_mask & ACCESSIBILITYEVENT_TYPE_VIEW_CONTEXT_CLICKED) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_EVENT_VIEW_CONTEXT_CLICKED); |
+ if (event_type_mask & ACCESSIBILITYEVENT_TYPE_VIEW_FOCUSED) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_EVENT_VIEW_FOCUSED); |
+ if (event_type_mask & ACCESSIBILITYEVENT_TYPE_VIEW_HOVER_ENTER) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_EVENT_VIEW_HOVER_ENTER); |
+ if (event_type_mask & ACCESSIBILITYEVENT_TYPE_VIEW_HOVER_EXIT) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_EVENT_VIEW_HOVER_EXIT); |
+ if (event_type_mask & ACCESSIBILITYEVENT_TYPE_VIEW_LONG_CLICKED) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_EVENT_VIEW_LONG_CLICKED); |
+ if (event_type_mask & ACCESSIBILITYEVENT_TYPE_VIEW_SCROLLED) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_EVENT_VIEW_SCROLLED); |
+ if (event_type_mask & ACCESSIBILITYEVENT_TYPE_VIEW_SELECTED) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_EVENT_VIEW_SELECTED); |
+ if (event_type_mask & ACCESSIBILITYEVENT_TYPE_VIEW_TEXT_CHANGED) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_EVENT_VIEW_TEXT_CHANGED); |
+ if (event_type_mask & ACCESSIBILITYEVENT_TYPE_VIEW_TEXT_SELECTION_CHANGED) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_EVENT_VIEW_TEXT_SELECTION_CHANGED); |
+ if (event_type_mask & |
+ ACCESSIBILITYEVENT_TYPE_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM( |
+ UMA_EVENT_VIEW_TEXT_TRAVERSED_AT_MOVEMENT_GRANULARITY); |
+ if (event_type_mask & ACCESSIBILITYEVENT_TYPE_WINDOWS_CHANGED) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_EVENT_WINDOWS_CHANGED); |
+ if (event_type_mask & ACCESSIBILITYEVENT_TYPE_WINDOW_CONTENT_CHANGED) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_EVENT_WINDOW_CONTENT_CHANGED); |
+ if (event_type_mask & ACCESSIBILITYEVENT_TYPE_WINDOW_STATE_CHANGED) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_EVENT_WINDOW_STATE_CHANGED); |
+ |
+ int feedback_type_mask = |
+ Java_BrowserAccessibilityManager_getAccessibilityServiceFeedbackTypeMask( |
+ env, obj); |
+ if (feedback_type_mask & ACCESSIBILITYSERVICEINFO_FEEDBACK_SPOKEN) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_FEEDBACK_SPOKEN); |
+ if (feedback_type_mask & ACCESSIBILITYSERVICEINFO_FEEDBACK_HAPTIC) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_FEEDBACK_HAPTIC); |
+ if (feedback_type_mask & ACCESSIBILITYSERVICEINFO_FEEDBACK_AUDIBLE) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_FEEDBACK_AUDIBLE); |
+ if (feedback_type_mask & ACCESSIBILITYSERVICEINFO_FEEDBACK_VISUAL) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_FEEDBACK_VISUAL); |
+ if (feedback_type_mask & ACCESSIBILITYSERVICEINFO_FEEDBACK_GENERIC) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_FEEDBACK_GENERIC); |
+ if (feedback_type_mask & ACCESSIBILITYSERVICEINFO_FEEDBACK_BRAILLE) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_FEEDBACK_BRAILLE); |
+ |
+ int flags_mask = |
+ Java_BrowserAccessibilityManager_getAccessibilityServiceFlagsMask(env, |
+ obj); |
+ if (flags_mask & ACCESSIBILITYSERVICEINFO_FLAG_INCLUDE_NOT_IMPORTANT_VIEWS) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_FLAG_INCLUDE_NOT_IMPORTANT_VIEWS); |
+ if (flags_mask & ACCESSIBILITYSERVICEINFO_FLAG_REQUEST_TOUCH_EXPLORATION_MODE) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_FLAG_REQUEST_TOUCH_EXPLORATION_MODE); |
+ if (flags_mask & |
+ ACCESSIBILITYSERVICEINFO_FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM( |
+ UMA_FLAG_REQUEST_ENHANCED_WEB_ACCESSIBILITY); |
+ if (flags_mask & ACCESSIBILITYSERVICEINFO_FLAG_REPORT_VIEW_IDS) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_FLAG_REPORT_VIEW_IDS); |
+ if (flags_mask & ACCESSIBILITYSERVICEINFO_FLAG_REQUEST_FILTER_KEY_EVENTS) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_FLAG_REQUEST_FILTER_KEY_EVENTS); |
+ if (flags_mask & ACCESSIBILITYSERVICEINFO_FLAG_RETRIEVE_INTERACTIVE_WINDOWS) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_FLAG_RETRIEVE_INTERACTIVE_WINDOWS); |
+ if (flags_mask & ACCESSIBILITYSERVICEINFO_FLAG_FORCE_DIRECT_BOOT_AWARE) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_FLAG_FORCE_DIRECT_BOOT_AWARE); |
+ |
+ int capabilities_mask = |
+ Java_BrowserAccessibilityManager_getAccessibilityServiceCapabilitiesMask( |
+ env, obj); |
+ if (capabilities_mask & |
+ ACCESSIBILITYSERVICEINFO_CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT); |
+ if (capabilities_mask & |
+ ACCESSIBILITYSERVICEINFO_CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM( |
+ UMA_CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION); |
+ if (capabilities_mask & |
+ ACCESSIBILITYSERVICEINFO_CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM( |
+ UMA_CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY); |
+ if (capabilities_mask & |
+ ACCESSIBILITYSERVICEINFO_CAPABILITY_CAN_REQUEST_FILTER_KEY_EVENTS) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM( |
+ UMA_CAPABILITY_CAN_REQUEST_FILTER_KEY_EVENTS); |
+ if (capabilities_mask & |
+ ACCESSIBILITYSERVICEINFO_CAPABILITY_CAN_CONTROL_MAGNIFICATION) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_CAPABILITY_CAN_CONTROL_MAGNIFICATION); |
+ if (capabilities_mask & |
+ ACCESSIBILITYSERVICEINFO_CAPABILITY_CAN_PERFORM_GESTURES) |
+ ACCESSIBILITY_SERVICE_HISTOGRAM(UMA_CAPABILITY_CAN_PERFORM_GESTURES); |
+ |
+ stats_collected = true; |
+} |
+ |
bool RegisterBrowserAccessibilityManager(JNIEnv* env) { |
return RegisterNativesImpl(env); |
} |