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

Unified Diff: content/renderer/renderer_accessibility_focus_only.cc

Issue 12226061: Move renderer accessibility to subdir and add OWNERS (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 years, 10 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/renderer/renderer_accessibility_focus_only.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « content/renderer/renderer_accessibility_focus_only.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698