| Index: content/renderer/accessibility/renderer_accessibility_focus_only.cc
|
| diff --git a/content/renderer/accessibility/renderer_accessibility_focus_only.cc b/content/renderer/accessibility/renderer_accessibility_focus_only.cc
|
| deleted file mode 100644
|
| index 43914121ecffeb53da112d608ff82d117c1c4241..0000000000000000000000000000000000000000
|
| --- a/content/renderer/accessibility/renderer_accessibility_focus_only.cc
|
| +++ /dev/null
|
| @@ -1,151 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "content/renderer/accessibility/renderer_accessibility_focus_only.h"
|
| -
|
| -#include "content/renderer/render_frame_impl.h"
|
| -#include "content/renderer/render_view_impl.h"
|
| -#include "third_party/WebKit/public/web/WebDocument.h"
|
| -#include "third_party/WebKit/public/web/WebElement.h"
|
| -#include "third_party/WebKit/public/web/WebLocalFrame.h"
|
| -#include "third_party/WebKit/public/web/WebNode.h"
|
| -#include "third_party/WebKit/public/web/WebView.h"
|
| -#include "ui/accessibility/ax_node_data.h"
|
| -
|
| -using blink::WebDocument;
|
| -using blink::WebElement;
|
| -using blink::WebNode;
|
| -using blink::WebView;
|
| -
|
| -namespace {
|
| -// The root node will always have id 1. Let each child node have a new
|
| -// id starting with 2.
|
| -const int kInitialId = 2;
|
| -}
|
| -
|
| -namespace content {
|
| -
|
| -RendererAccessibilityFocusOnly::RendererAccessibilityFocusOnly(
|
| - RenderFrameImpl* render_frame)
|
| - : RendererAccessibility(render_frame),
|
| - next_id_(kInitialId) {
|
| -}
|
| -
|
| -RendererAccessibilityFocusOnly::~RendererAccessibilityFocusOnly() {
|
| -}
|
| -
|
| -void RendererAccessibilityFocusOnly::HandleWebAccessibilityEvent(
|
| - const blink::WebAXObject& obj, blink::WebAXEvent event) {
|
| - // Do nothing.
|
| -}
|
| -
|
| -RendererAccessibilityType RendererAccessibilityFocusOnly::GetType() {
|
| - return RendererAccessibilityTypeFocusOnly;
|
| -}
|
| -
|
| -void RendererAccessibilityFocusOnly::FocusedNodeChanged(const WebNode& node) {
|
| - // Send the new accessible tree and post a native focus event.
|
| - HandleFocusedNodeChanged(node, true);
|
| -}
|
| -
|
| -void RendererAccessibilityFocusOnly::DidFinishLoad() {
|
| - // Send an accessible tree to the browser, but do not post a native
|
| - // focus event. This is important so that if focus is initially in an
|
| - // editable text field, Windows will know to pop up the keyboard if the
|
| - // user touches it and focus doesn't change.
|
| - const WebDocument& document = GetMainDocument();
|
| - HandleFocusedNodeChanged(document.focusedElement(), false);
|
| -}
|
| -
|
| -void RendererAccessibilityFocusOnly::HandleFocusedNodeChanged(
|
| - const WebNode& node,
|
| - bool send_focus_event) {
|
| - const WebDocument& document = GetMainDocument();
|
| - if (document.isNull())
|
| - return;
|
| -
|
| - bool node_has_focus;
|
| - bool node_is_editable_text;
|
| - // Check HasIMETextFocus first, because it will correctly handle
|
| - // focus in a text box inside a ppapi plug-in. Otherwise fall back on
|
| - // checking the focused node in Blink.
|
| - if (render_frame_->render_view()->HasIMETextFocus()) {
|
| - node_has_focus = true;
|
| - node_is_editable_text = true;
|
| - } else {
|
| - node_has_focus = !node.isNull();
|
| - node_is_editable_text =
|
| - node_has_focus && render_frame_->render_view()->IsEditableNode(node);
|
| - }
|
| -
|
| - std::vector<AccessibilityHostMsg_EventParams> events;
|
| - events.push_back(AccessibilityHostMsg_EventParams());
|
| - AccessibilityHostMsg_EventParams& event = events[0];
|
| -
|
| - // If we want to update the browser's accessibility tree but not send a
|
| - // native focus changed event, we can send a LayoutComplete
|
| - // event, which doesn't post a native event on Windows.
|
| - event.event_type =
|
| - send_focus_event ? ui::AX_EVENT_FOCUS : ui::AX_EVENT_LAYOUT_COMPLETE;
|
| -
|
| - // Set the id that the event applies to: the root node if nothing
|
| - // has focus, otherwise the focused node.
|
| - event.id = node_has_focus ? next_id_ : 1;
|
| -
|
| - event.update.nodes.resize(2);
|
| - ui::AXNodeData& root = event.update.nodes[0];
|
| - ui::AXNodeData& child = event.update.nodes[1];
|
| -
|
| - // Always include the root of the tree, the document. It always has id 1.
|
| - root.id = 1;
|
| - root.role = ui::AX_ROLE_ROOT_WEB_AREA;
|
| - root.state =
|
| - (1 << ui::AX_STATE_READ_ONLY) |
|
| - (1 << ui::AX_STATE_FOCUSABLE);
|
| - if (!node_has_focus)
|
| - root.state |= (1 << ui::AX_STATE_FOCUSED);
|
| - root.location = gfx::Rect(render_frame_->render_view()->size());
|
| - root.child_ids.push_back(next_id_);
|
| -
|
| - child.id = next_id_;
|
| - child.role = ui::AX_ROLE_GROUP;
|
| -
|
| - if (!node.isNull() && node.isElementNode()) {
|
| - child.location = gfx::Rect(
|
| - const_cast<WebNode&>(node).to<WebElement>().boundsInViewportSpace());
|
| - } else if (render_frame_->render_view()->HasIMETextFocus()) {
|
| - child.location = root.location;
|
| - } else {
|
| - child.location = gfx::Rect();
|
| - }
|
| -
|
| - if (node_has_focus) {
|
| - child.state =
|
| - (1 << ui::AX_STATE_FOCUSABLE) |
|
| - (1 << ui::AX_STATE_FOCUSED);
|
| - if (!node_is_editable_text)
|
| - child.state |= (1 << ui::AX_STATE_READ_ONLY);
|
| - }
|
| -
|
| -#ifndef NDEBUG
|
| - /**
|
| - if (logging_) {
|
| - VLOG(0) << "Accessibility update: \n"
|
| - << "routing id=" << routing_id()
|
| - << " event="
|
| - << AccessibilityEventToString(event.event_type)
|
| - << "\n" << event.nodes[0].DebugString(true);
|
| - }
|
| - **/
|
| -#endif
|
| -
|
| - Send(new AccessibilityHostMsg_Events(routing_id(), events));
|
| -
|
| - // Increment the id, wrap back when we get past a million.
|
| - next_id_++;
|
| - if (next_id_ > 1000000)
|
| - next_id_ = kInitialId;
|
| -}
|
| -
|
| -} // namespace content
|
|
|