Commit 533ff0e8 authored by Sara Kato's avatar Sara Kato Committed by Commit Bot

Clean up onAccessibilityEvent() remove unused mojom fields

This CL also removes unused mojom field (WHITELISTED_PACKAGE_NAME_DEPRECATED).
Android side change (ag/9816677)

Test: ArcAccessibilityHelperBridgeTest.* passes
Bug: b/145316954
Change-Id: Ibac294eddbb45077ec4014b8b5c494599d724dd9
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1935636Reviewed-by: default avatarJorge Lucangeli Obes <jorgelo@chromium.org>
Reviewed-by: default avatarDavid Tseng <dtseng@chromium.org>
Commit-Queue: Sara Kato <sarakato@chromium.org>
Cr-Commit-Position: refs/heads/master@{#721817}
parent 6eb7734f
...@@ -350,127 +350,132 @@ extensions::EventRouter* ArcAccessibilityHelperBridge::GetEventRouter() const { ...@@ -350,127 +350,132 @@ extensions::EventRouter* ArcAccessibilityHelperBridge::GetEventRouter() const {
return extensions::EventRouter::Get(profile_); return extensions::EventRouter::Get(profile_);
} }
void ArcAccessibilityHelperBridge::OnAccessibilityEvent( void ArcAccessibilityHelperBridge::HandleFilterTypeAllEvent(
mojom::AccessibilityEventDataPtr event_data) { mojom::AccessibilityEventDataPtr event_data) {
arc::mojom::AccessibilityFilterType filter_type = if (event_data->event_type ==
GetFilterTypeForProfile(profile_); arc::mojom::AccessibilityEventType::ANNOUNCEMENT) {
if (!event_data->eventText.has_value())
return;
DCHECK( extensions::EventRouter* event_router = GetEventRouter();
filter_type != std::unique_ptr<base::ListValue> event_args(
arc::mojom::AccessibilityFilterType::WHITELISTED_PACKAGE_NAME_DEPRECATED); extensions::api::accessibility_private::OnAnnounceForAccessibility::
Create(*(event_data->eventText)));
std::unique_ptr<extensions::Event> event(new extensions::Event(
extensions::events::ACCESSIBILITY_PRIVATE_ON_ANNOUNCE_FOR_ACCESSIBILITY,
extensions::api::accessibility_private::OnAnnounceForAccessibility::
kEventName,
std::move(event_args)));
event_router->BroadcastEvent(std::move(event));
return;
}
if (filter_type == arc::mojom::AccessibilityFilterType::ALL) { if (event_data->node_data.empty())
if (event_data->event_type == return;
arc::mojom::AccessibilityEventType::ANNOUNCEMENT) {
if (!event_data->eventText.has_value())
return;
extensions::EventRouter* event_router = GetEventRouter(); AXTreeSourceArc* tree_source = nullptr;
std::unique_ptr<base::ListValue> event_args( bool is_notification_event = event_data->notification_key.has_value();
extensions::api::accessibility_private::OnAnnounceForAccessibility:: if (is_notification_event) {
Create(*(event_data->eventText))); const std::string& notification_key = event_data->notification_key.value();
std::unique_ptr<extensions::Event> event(new extensions::Event(
extensions::events::
ACCESSIBILITY_PRIVATE_ON_ANNOUNCE_FOR_ACCESSIBILITY,
extensions::api::accessibility_private::OnAnnounceForAccessibility::
kEventName,
std::move(event_args)));
event_router->BroadcastEvent(std::move(event));
return;
}
if (event_data->node_data.empty()) // This bridge must receive OnNotificationStateChanged call for the
return; // notification_key before this receives an accessibility event for it.
tree_source = GetFromNotificationKey(notification_key);
DCHECK(tree_source);
} else if (event_data->is_input_method_window) {
exo::InputMethodSurface* input_method_surface =
exo::InputMethodSurface::GetInputMethodSurface();
AXTreeSourceArc* tree_source = nullptr; if (!input_method_surface)
bool is_notification_event = event_data->notification_key.has_value(); return;
if (is_notification_event) {
const std::string& notification_key =
event_data->notification_key.value();
// This bridge must receive OnNotificationStateChanged call for the
// notification_key before this receives an accessibility event for it.
tree_source = GetFromNotificationKey(notification_key);
DCHECK(tree_source);
} else if (event_data->is_input_method_window) {
exo::InputMethodSurface* input_method_surface =
exo::InputMethodSurface::GetInputMethodSurface();
if (!input_method_surface)
return;
if (!input_method_tree_) { if (!input_method_tree_) {
input_method_tree_ = std::make_unique<AXTreeSourceArc>(this); input_method_tree_ = std::make_unique<AXTreeSourceArc>(this);
ui::AXTreeData tree_data; ui::AXTreeData tree_data;
input_method_tree_->GetTreeData(&tree_data); input_method_tree_->GetTreeData(&tree_data);
input_method_surface->SetChildAxTreeId(tree_data.tree_id); input_method_surface->SetChildAxTreeId(tree_data.tree_id);
} }
tree_source = input_method_tree_.get(); tree_source = input_method_tree_.get();
} else { } else {
if (event_data->task_id == kNoTaskId) if (event_data->task_id == kNoTaskId)
return; return;
aura::Window* active_window = GetActiveWindow(); aura::Window* active_window = GetActiveWindow();
if (!active_window) if (!active_window)
return; return;
int32_t task_id = arc::GetWindowTaskId(active_window); int32_t task_id = arc::GetWindowTaskId(active_window);
if (task_id != event_data->task_id) if (task_id != event_data->task_id)
return; return;
tree_source = GetFromTaskId(event_data->task_id); tree_source = GetFromTaskId(event_data->task_id);
if (!tree_source) { if (!tree_source) {
tree_source = CreateFromTaskId(event_data->task_id); tree_source = CreateFromTaskId(event_data->task_id);
ui::AXTreeData tree_data; ui::AXTreeData tree_data;
tree_source->GetTreeData(&tree_data); tree_source->GetTreeData(&tree_data);
exo::Surface* surface = exo::GetShellMainSurface(active_window); exo::Surface* surface = exo::GetShellMainSurface(active_window);
if (surface) { if (surface) {
views::Widget* widget = views::Widget* widget =
views::Widget::GetWidgetForNativeWindow(active_window); views::Widget::GetWidgetForNativeWindow(active_window);
static_cast<exo::ShellSurfaceBase*>(widget->widget_delegate()) static_cast<exo::ShellSurfaceBase*>(widget->widget_delegate())
->SetChildAxTreeId(tree_data.tree_id); ->SetChildAxTreeId(tree_data.tree_id);
}
} }
} }
}
if (!tree_source) if (!tree_source)
return; return;
tree_source->NotifyAccessibilityEvent(event_data.get()); tree_source->NotifyAccessibilityEvent(event_data.get());
if (is_notification_event && if (is_notification_event &&
event_data->event_type == event_data->event_type ==
arc::mojom::AccessibilityEventType::VIEW_TEXT_SELECTION_CHANGED) { arc::mojom::AccessibilityEventType::VIEW_TEXT_SELECTION_CHANGED) {
// If text selection changed event is dispatched from Android, it // If text selection changed event is dispatched from Android, it
// means that user is trying to type a text in Android notification. // means that user is trying to type a text in Android notification.
// Dispatch text selection changed event to notification content view // Dispatch text selection changed event to notification content view
// as the view can take necessary actions, e.g. activate itself, etc. // as the view can take necessary actions, e.g. activate itself, etc.
auto* surface_manager = ArcNotificationSurfaceManager::Get(); auto* surface_manager = ArcNotificationSurfaceManager::Get();
if (surface_manager) { if (surface_manager) {
ArcNotificationSurface* surface = surface_manager->GetArcSurface( ArcNotificationSurface* surface =
event_data->notification_key.value()); surface_manager->GetArcSurface(event_data->notification_key.value());
if (surface) { if (surface) {
surface->GetAttachedHost()->NotifyAccessibilityEvent( surface->GetAttachedHost()->NotifyAccessibilityEvent(
ax::mojom::Event::kTextSelectionChanged, true); ax::mojom::Event::kTextSelectionChanged, true);
}
} }
} else if (!is_notification_event) {
UpdateWindowProperties(GetActiveWindow());
} }
} else if (!is_notification_event) {
return; UpdateWindowProperties(GetActiveWindow());
} }
}
if (event_data->event_type != void ArcAccessibilityHelperBridge::HandleFilterTypeFocusEvent(
arc::mojom::AccessibilityEventType::VIEW_FOCUSED) mojom::AccessibilityEventDataPtr event_data) {
return; if (event_data.get()->node_data.size() == 1 &&
event_data->event_type ==
arc::mojom::AccessibilityEventType::VIEW_FOCUSED)
DispatchFocusChange(event_data.get()->node_data[0].get(), profile_);
}
void ArcAccessibilityHelperBridge::OnAccessibilityEvent(
mojom::AccessibilityEventDataPtr event_data) {
arc::mojom::AccessibilityFilterType filter_type =
GetFilterTypeForProfile(profile_);
CHECK_EQ(1U, event_data.get()->node_data.size()); switch (filter_type) {
DispatchFocusChange(event_data.get()->node_data[0].get(), profile_); case arc::mojom::AccessibilityFilterType::ALL:
HandleFilterTypeAllEvent(std::move(event_data));
break;
case arc::mojom::AccessibilityFilterType::FOCUS:
HandleFilterTypeFocusEvent(std::move(event_data));
break;
case arc::mojom::AccessibilityFilterType::OFF:
break;
}
} }
void ArcAccessibilityHelperBridge::OnNotificationStateChanged( void ArcAccessibilityHelperBridge::OnNotificationStateChanged(
......
...@@ -141,6 +141,8 @@ class ArcAccessibilityHelperBridge ...@@ -141,6 +141,8 @@ class ArcAccessibilityHelperBridge
void SetExploreByTouchEnabled(bool enabled); void SetExploreByTouchEnabled(bool enabled);
void UpdateTreeIdOfNotificationSurface(const std::string& notification_key, void UpdateTreeIdOfNotificationSurface(const std::string& notification_key,
ui::AXTreeID tree_id); ui::AXTreeID tree_id);
void HandleFilterTypeFocusEvent(mojom::AccessibilityEventDataPtr event_data);
void HandleFilterTypeAllEvent(mojom::AccessibilityEventDataPtr event_data);
AXTreeSourceArc* GetFromTaskId(int32_t task_id); AXTreeSourceArc* GetFromTaskId(int32_t task_id);
AXTreeSourceArc* CreateFromTaskId(int32_t task_id); AXTreeSourceArc* CreateFromTaskId(int32_t task_id);
......
...@@ -306,10 +306,7 @@ enum AccessibilityFilterType { ...@@ -306,10 +306,7 @@ enum AccessibilityFilterType {
FOCUS, FOCUS,
// Send a complete tree from the event source's root for every event. // Send a complete tree from the event source's root for every event.
ALL, ALL
// Send complete subtrees for root nodes with whitelisted package names.
[MinVersion=2] WHITELISTED_PACKAGE_NAME_DEPRECATED
}; };
[Extensible] [Extensible]
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment