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

Side by Side Diff: content/renderer/accessibility/render_accessibility_impl.cc

Issue 2748463003: Generalize the HIT_TEST accessibility action so that it can send any event. (Closed)
Patch Set: Created 3 years, 9 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/renderer/accessibility/render_accessibility_impl.h" 5 #include "content/renderer/accessibility/render_accessibility_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <queue> 10 #include <queue>
(...skipping 449 matching lines...) Expand 10 before | Expand all | Expand 10 after
460 case ui::AX_ACTION_DECREMENT: 460 case ui::AX_ACTION_DECREMENT:
461 target.decrement(); 461 target.decrement();
462 break; 462 break;
463 case ui::AX_ACTION_DO_DEFAULT: 463 case ui::AX_ACTION_DO_DEFAULT:
464 target.performDefaultAction(); 464 target.performDefaultAction();
465 break; 465 break;
466 case ui::AX_ACTION_GET_IMAGE_DATA: 466 case ui::AX_ACTION_GET_IMAGE_DATA:
467 OnGetImageData(target, data.target_rect.size()); 467 OnGetImageData(target, data.target_rect.size());
468 break; 468 break;
469 case ui::AX_ACTION_HIT_TEST: 469 case ui::AX_ACTION_HIT_TEST:
470 OnHitTest(data.target_point); 470 OnHitTest(data.target_point, data.hit_test_event_to_fire);
471 break; 471 break;
472 case ui::AX_ACTION_INCREMENT: 472 case ui::AX_ACTION_INCREMENT:
473 target.increment(); 473 target.increment();
474 break; 474 break;
475 case ui::AX_ACTION_SCROLL_TO_MAKE_VISIBLE: 475 case ui::AX_ACTION_SCROLL_TO_MAKE_VISIBLE:
476 target.scrollToMakeVisibleWithSubFocus( 476 target.scrollToMakeVisibleWithSubFocus(
477 WebRect(data.target_rect.x(), data.target_rect.y(), 477 WebRect(data.target_rect.x(), data.target_rect.y(),
478 data.target_rect.width(), data.target_rect.height())); 478 data.target_rect.width(), data.target_rect.height()));
479 break; 479 break;
480 case ui::AX_ACTION_SCROLL_TO_POINT: 480 case ui::AX_ACTION_SCROLL_TO_POINT:
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
524 524
525 DCHECK(ack_pending_); 525 DCHECK(ack_pending_);
526 ack_pending_ = false; 526 ack_pending_ = false;
527 SendPendingAccessibilityEvents(); 527 SendPendingAccessibilityEvents();
528 } 528 }
529 529
530 void RenderAccessibilityImpl::OnFatalError() { 530 void RenderAccessibilityImpl::OnFatalError() {
531 CHECK(false) << "Invalid accessibility tree."; 531 CHECK(false) << "Invalid accessibility tree.";
532 } 532 }
533 533
534 void RenderAccessibilityImpl::OnHitTest(const gfx::Point& point) { 534 void RenderAccessibilityImpl::OnHitTest(const gfx::Point& point,
535 ui::AXEvent event_to_fire) {
535 const WebDocument& document = GetMainDocument(); 536 const WebDocument& document = GetMainDocument();
536 if (document.isNull()) 537 if (document.isNull())
537 return; 538 return;
538 WebAXObject root_obj = document.accessibilityObject(); 539 WebAXObject root_obj = document.accessibilityObject();
539 if (!root_obj.updateLayoutAndCheckValidity()) 540 if (!root_obj.updateLayoutAndCheckValidity())
540 return; 541 return;
541 542
542 WebAXObject obj = root_obj.hitTest(point); 543 WebAXObject obj = root_obj.hitTest(point);
543 if (obj.isDetached()) 544 if (obj.isDetached())
544 return; 545 return;
545 546
546 // If the object that was hit has a child frame, we have to send a 547 // If the object that was hit has a child frame, we have to send a
547 // message back to the browser to do the hit test in the child frame, 548 // message back to the browser to do the hit test in the child frame,
548 // recursively. 549 // recursively.
549 AXContentNodeData data; 550 AXContentNodeData data;
550 ScopedFreezeBlinkAXTreeSource freeze(&tree_source_); 551 ScopedFreezeBlinkAXTreeSource freeze(&tree_source_);
551 tree_source_.SerializeNode(obj, &data); 552 tree_source_.SerializeNode(obj, &data);
552 if (data.HasContentIntAttribute(AX_CONTENT_ATTR_CHILD_ROUTING_ID) || 553 if (data.HasContentIntAttribute(AX_CONTENT_ATTR_CHILD_ROUTING_ID) ||
553 data.HasContentIntAttribute( 554 data.HasContentIntAttribute(
554 AX_CONTENT_ATTR_CHILD_BROWSER_PLUGIN_INSTANCE_ID)) { 555 AX_CONTENT_ATTR_CHILD_BROWSER_PLUGIN_INSTANCE_ID)) {
555 Send(new AccessibilityHostMsg_ChildFrameHitTestResult(routing_id(), point, 556 Send(new AccessibilityHostMsg_ChildFrameHitTestResult(
556 obj.axID())); 557 routing_id(), point, obj.axID(), event_to_fire));
557 return; 558 return;
558 } 559 }
559 560
560 // Otherwise, send a HOVER event on the node that was hit. 561 // Otherwise, send an event on the node that was hit.
561 HandleAXEvent(obj, ui::AX_EVENT_HOVER); 562 HandleAXEvent(obj, event_to_fire);
562 } 563 }
563 564
564 void RenderAccessibilityImpl::OnSetAccessibilityFocus( 565 void RenderAccessibilityImpl::OnSetAccessibilityFocus(
565 const blink::WebAXObject& obj) { 566 const blink::WebAXObject& obj) {
566 ScopedFreezeBlinkAXTreeSource freeze(&tree_source_); 567 ScopedFreezeBlinkAXTreeSource freeze(&tree_source_);
567 if (tree_source_.accessibility_focus_id() == obj.axID()) 568 if (tree_source_.accessibility_focus_id() == obj.axID())
568 return; 569 return;
569 570
570 tree_source_.set_accessibility_focus_id(obj.axID()); 571 tree_source_.set_accessibility_focus_id(obj.axID());
571 572
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
662 663
663 const WebDocument& document = GetMainDocument(); 664 const WebDocument& document = GetMainDocument();
664 if (document.isNull()) 665 if (document.isNull())
665 return; 666 return;
666 667
667 document.accessibilityObject().scrollToMakeVisibleWithSubFocus( 668 document.accessibilityObject().scrollToMakeVisibleWithSubFocus(
668 WebRect(bounds.x(), bounds.y(), bounds.width(), bounds.height())); 669 WebRect(bounds.x(), bounds.y(), bounds.width(), bounds.height()));
669 } 670 }
670 671
671 } // namespace content 672 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698