| Index: content/renderer/renderer_accessibility_focus_only.cc
|
| diff --git a/content/renderer/renderer_accessibility_focus_only.cc b/content/renderer/renderer_accessibility_focus_only.cc
|
| deleted file mode 100644
|
| index 53020ebaf8222ea17d5e947be52dcad92269c1da..0000000000000000000000000000000000000000
|
| --- a/content/renderer/renderer_accessibility_focus_only.cc
|
| +++ /dev/null
|
| @@ -1,153 +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/renderer_accessibility_focus_only.h"
|
| -
|
| -#include "content/common/accessibility_node_data.h"
|
| -#include "content/renderer/render_view_impl.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebElement.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebNode.h"
|
| -#include "third_party/WebKit/Source/WebKit/chromium/public/WebView.h"
|
| -
|
| -using WebKit::WebDocument;
|
| -using WebKit::WebElement;
|
| -using WebKit::WebFrame;
|
| -using WebKit::WebNode;
|
| -using WebKit::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(
|
| - RenderViewImpl* render_view)
|
| - : RendererAccessibility(render_view),
|
| - next_id_(kInitialId) {
|
| -}
|
| -
|
| -RendererAccessibilityFocusOnly::~RendererAccessibilityFocusOnly() {
|
| -}
|
| -
|
| -void RendererAccessibilityFocusOnly::HandleWebAccessibilityNotification(
|
| - const WebKit::WebAccessibilityObject& obj,
|
| - WebKit::WebAccessibilityNotification notification) {
|
| - // Do nothing.
|
| -}
|
| -
|
| -void RendererAccessibilityFocusOnly::FocusedNodeChanged(const WebNode& node) {
|
| - // Send the new accessible tree and post a native focus event.
|
| - HandleFocusedNodeChanged(node, true);
|
| -}
|
| -
|
| -void RendererAccessibilityFocusOnly::DidFinishLoad(WebKit::WebFrame* frame) {
|
| - WebView* view = render_view()->GetWebView();
|
| - if (view->focusedFrame() != frame)
|
| - return;
|
| -
|
| - WebDocument document = frame->document();
|
| - // 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.
|
| - HandleFocusedNodeChanged(document.focusedNode(), 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 WebKit.
|
| - if (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_view_->IsEditableNode(node);
|
| - }
|
| -
|
| - std::vector<AccessibilityHostMsg_NotificationParams> notifications;
|
| - notifications.push_back(AccessibilityHostMsg_NotificationParams());
|
| - AccessibilityHostMsg_NotificationParams& notification = notifications[0];
|
| -
|
| - // If we want to update the browser's accessibility tree but not send a
|
| - // native focus changed notification, we can send a LayoutComplete
|
| - // notification, which doesn't post a native event on Windows.
|
| - notification.notification_type =
|
| - send_focus_event ?
|
| - AccessibilityNotificationFocusChanged :
|
| - AccessibilityNotificationLayoutComplete;
|
| -
|
| - // This means that the new tree we send supercedes any previous tree,
|
| - // not just a previous node.
|
| - notification.includes_children = true;
|
| -
|
| - // Set the id that the notification applies to: the root node if nothing
|
| - // has focus, otherwise the focused node.
|
| - notification.id = node_has_focus ? next_id_ : 1;
|
| -
|
| - // Always include the root of the tree, the document. It always has id 1.
|
| - notification.acc_tree.id = 1;
|
| - notification.acc_tree.role = AccessibilityNodeData::ROLE_ROOT_WEB_AREA;
|
| - notification.acc_tree.state =
|
| - (1 << AccessibilityNodeData::STATE_READONLY) |
|
| - (1 << AccessibilityNodeData::STATE_FOCUSABLE);
|
| - if (!node_has_focus)
|
| - notification.acc_tree.state |= (1 << AccessibilityNodeData::STATE_FOCUSED);
|
| - notification.acc_tree.location = gfx::Rect(render_view_->size());
|
| -
|
| - notification.acc_tree.children.push_back(AccessibilityNodeData());
|
| - AccessibilityNodeData& child = notification.acc_tree.children[0];
|
| - child.id = next_id_;
|
| - child.role = AccessibilityNodeData::ROLE_GROUP;
|
| -
|
| - if (!node.isNull() && node.isElementNode()) {
|
| - child.location = gfx::Rect(
|
| - const_cast<WebNode&>(node).to<WebElement>().boundsInViewportSpace());
|
| - } else if (render_view_->HasIMETextFocus()) {
|
| - child.location = notification.acc_tree.location;
|
| - } else {
|
| - child.location = gfx::Rect();
|
| - }
|
| -
|
| - if (node_has_focus) {
|
| - child.state =
|
| - (1 << AccessibilityNodeData::STATE_FOCUSABLE) |
|
| - (1 << AccessibilityNodeData::STATE_FOCUSED);
|
| - if (!node_is_editable_text)
|
| - child.state |= (1 << AccessibilityNodeData::STATE_READONLY);
|
| - }
|
| -
|
| -#ifndef NDEBUG
|
| - if (logging_) {
|
| - LOG(INFO) << "Accessibility update: \n"
|
| - << "routing id=" << routing_id()
|
| - << " notification="
|
| - << AccessibilityNotificationToString(notification.notification_type)
|
| - << "\n" << notification.acc_tree.DebugString(true);
|
| - }
|
| -#endif
|
| -
|
| - Send(new AccessibilityHostMsg_Notifications(routing_id(), notifications));
|
| -
|
| - // Increment the id, wrap back when we get past a million.
|
| - next_id_++;
|
| - if (next_id_ > 1000000)
|
| - next_id_ = kInitialId;
|
| -}
|
| -
|
| -} // namespace content
|
|
|