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

Unified Diff: content/renderer/accessibility/renderer_accessibility_focus_only.cc

Issue 651593002: Remove RendererAccessibilityFocusOnly. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Revert patch set #4 Created 6 years, 2 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
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
« no previous file with comments | « content/renderer/accessibility/renderer_accessibility_focus_only.h ('k') | content/renderer/render_frame_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698