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

Side by Side Diff: content/browser/frame_host/render_frame_host_impl.cc

Issue 2558933002: Add more fine-grained accessibility modes. (Closed)
Patch Set: Reformat enums as uppercase Created 4 years 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/browser/frame_host/render_frame_host_impl.h" 5 #include "content/browser/frame_host/render_frame_host_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/command_line.h" 10 #include "base/command_line.h"
11 #include "base/containers/hash_tables.h" 11 #include "base/containers/hash_tables.h"
12 #include "base/debug/dump_without_crashing.h" 12 #include "base/debug/dump_without_crashing.h"
13 #include "base/lazy_instance.h" 13 #include "base/lazy_instance.h"
14 #include "base/memory/ptr_util.h" 14 #include "base/memory/ptr_util.h"
15 #include "base/metrics/histogram_macros.h" 15 #include "base/metrics/histogram_macros.h"
16 #include "base/process/kill.h" 16 #include "base/process/kill.h"
17 #include "base/time/time.h" 17 #include "base/time/time.h"
18 #include "build/build_config.h" 18 #include "build/build_config.h"
19 #include "content/browser/accessibility/accessibility_mode_helper.h"
20 #include "content/browser/accessibility/ax_tree_id_registry.h" 19 #include "content/browser/accessibility/ax_tree_id_registry.h"
21 #include "content/browser/accessibility/browser_accessibility_manager.h" 20 #include "content/browser/accessibility/browser_accessibility_manager.h"
22 #include "content/browser/accessibility/browser_accessibility_state_impl.h" 21 #include "content/browser/accessibility/browser_accessibility_state_impl.h"
23 #include "content/browser/bluetooth/web_bluetooth_service_impl.h" 22 #include "content/browser/bluetooth/web_bluetooth_service_impl.h"
24 #include "content/browser/browser_main_loop.h" 23 #include "content/browser/browser_main_loop.h"
25 #include "content/browser/child_process_security_policy_impl.h" 24 #include "content/browser/child_process_security_policy_impl.h"
26 #include "content/browser/devtools/render_frame_devtools_agent_host.h" 25 #include "content/browser/devtools/render_frame_devtools_agent_host.h"
27 #include "content/browser/download/mhtml_generation_manager.h" 26 #include "content/browser/download/mhtml_generation_manager.h"
28 #include "content/browser/frame_host/cross_process_frame_connector.h" 27 #include "content/browser/frame_host/cross_process_frame_connector.h"
29 #include "content/browser/frame_host/debug_urls.h" 28 #include "content/browser/frame_host/debug_urls.h"
(...skipping 1872 matching lines...) Expand 10 before | Expand all | Expand 10 after
1902 if (accessibility_reset_token_ != reset_token) { 1901 if (accessibility_reset_token_ != reset_token) {
1903 Send(new AccessibilityMsg_Events_ACK(routing_id_, ack_token)); 1902 Send(new AccessibilityMsg_Events_ACK(routing_id_, ack_token));
1904 return; 1903 return;
1905 } 1904 }
1906 accessibility_reset_token_ = 0; 1905 accessibility_reset_token_ = 0;
1907 1906
1908 RenderWidgetHostViewBase* view = GetViewForAccessibility(); 1907 RenderWidgetHostViewBase* view = GetViewForAccessibility();
1909 1908
1910 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode(); 1909 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode();
1911 if ((accessibility_mode != AccessibilityModeOff) && view && is_active()) { 1910 if ((accessibility_mode != AccessibilityModeOff) && view && is_active()) {
1912 if (accessibility_mode & AccessibilityModeFlagPlatform) 1911 if (accessibility_mode & ACCESSIBILITY_MODE_FLAG_NATIVE_APIS)
1913 GetOrCreateBrowserAccessibilityManager(); 1912 GetOrCreateBrowserAccessibilityManager();
1914 1913
1915 std::vector<AXEventNotificationDetails> details; 1914 std::vector<AXEventNotificationDetails> details;
1916 details.reserve(params.size()); 1915 details.reserve(params.size());
1917 for (size_t i = 0; i < params.size(); ++i) { 1916 for (size_t i = 0; i < params.size(); ++i) {
1918 const AccessibilityHostMsg_EventParams& param = params[i]; 1917 const AccessibilityHostMsg_EventParams& param = params[i];
1919 AXEventNotificationDetails detail; 1918 AXEventNotificationDetails detail;
1920 detail.event_type = param.event_type; 1919 detail.event_type = param.event_type;
1921 detail.id = param.id; 1920 detail.id = param.id;
1922 detail.ax_tree_id = GetAXTreeID(); 1921 detail.ax_tree_id = GetAXTreeID();
1923 detail.event_from = param.event_from; 1922 detail.event_from = param.event_from;
1924 if (param.update.has_tree_data) { 1923 if (param.update.has_tree_data) {
1925 detail.update.has_tree_data = true; 1924 detail.update.has_tree_data = true;
1926 ax_content_tree_data_ = param.update.tree_data; 1925 ax_content_tree_data_ = param.update.tree_data;
1927 AXContentTreeDataToAXTreeData(&detail.update.tree_data); 1926 AXContentTreeDataToAXTreeData(&detail.update.tree_data);
1928 } 1927 }
1929 detail.update.root_id = param.update.root_id; 1928 detail.update.root_id = param.update.root_id;
1930 detail.update.node_id_to_clear = param.update.node_id_to_clear; 1929 detail.update.node_id_to_clear = param.update.node_id_to_clear;
1931 detail.update.nodes.resize(param.update.nodes.size()); 1930 detail.update.nodes.resize(param.update.nodes.size());
1932 for (size_t i = 0; i < param.update.nodes.size(); ++i) { 1931 for (size_t i = 0; i < param.update.nodes.size(); ++i) {
1933 AXContentNodeDataToAXNodeData(param.update.nodes[i], 1932 AXContentNodeDataToAXNodeData(param.update.nodes[i],
1934 &detail.update.nodes[i]); 1933 &detail.update.nodes[i]);
1935 } 1934 }
1936 details.push_back(detail); 1935 details.push_back(detail);
1937 } 1936 }
1938 1937
1939 if (accessibility_mode & AccessibilityModeFlagPlatform) { 1938 if (accessibility_mode & ACCESSIBILITY_MODE_FLAG_NATIVE_APIS) {
1940 if (browser_accessibility_manager_) 1939 if (browser_accessibility_manager_)
1941 browser_accessibility_manager_->OnAccessibilityEvents(details); 1940 browser_accessibility_manager_->OnAccessibilityEvents(details);
1942 } 1941 }
1943 1942
1944 // Send the updates to the automation extension API.
1945 delegate_->AccessibilityEventReceived(details); 1943 delegate_->AccessibilityEventReceived(details);
1946 1944
1947 // For testing only. 1945 // For testing only.
1948 if (!accessibility_testing_callback_.is_null()) { 1946 if (!accessibility_testing_callback_.is_null()) {
1949 for (size_t i = 0; i < details.size(); i++) { 1947 for (size_t i = 0; i < details.size(); i++) {
1950 const AXEventNotificationDetails& detail = details[i]; 1948 const AXEventNotificationDetails& detail = details[i];
1951 if (static_cast<int>(detail.event_type) < 0) 1949 if (static_cast<int>(detail.event_type) < 0)
1952 continue; 1950 continue;
1953 1951
1954 if (!ax_tree_for_testing_) { 1952 if (!ax_tree_for_testing_) {
(...skipping 20 matching lines...) Expand all
1975 1973
1976 void RenderFrameHostImpl::OnAccessibilityLocationChanges( 1974 void RenderFrameHostImpl::OnAccessibilityLocationChanges(
1977 const std::vector<AccessibilityHostMsg_LocationChangeParams>& params) { 1975 const std::vector<AccessibilityHostMsg_LocationChangeParams>& params) {
1978 if (accessibility_reset_token_) 1976 if (accessibility_reset_token_)
1979 return; 1977 return;
1980 1978
1981 RenderWidgetHostViewBase* view = static_cast<RenderWidgetHostViewBase*>( 1979 RenderWidgetHostViewBase* view = static_cast<RenderWidgetHostViewBase*>(
1982 render_view_host_->GetWidget()->GetView()); 1980 render_view_host_->GetWidget()->GetView());
1983 if (view && is_active()) { 1981 if (view && is_active()) {
1984 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode(); 1982 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode();
1985 if (accessibility_mode & AccessibilityModeFlagPlatform) { 1983 if (accessibility_mode & ACCESSIBILITY_MODE_FLAG_NATIVE_APIS) {
1986 BrowserAccessibilityManager* manager = 1984 BrowserAccessibilityManager* manager =
1987 GetOrCreateBrowserAccessibilityManager(); 1985 GetOrCreateBrowserAccessibilityManager();
1988 if (manager) 1986 if (manager)
1989 manager->OnLocationChanges(params); 1987 manager->OnLocationChanges(params);
1990 } 1988 }
1991 1989
1992 // Send the updates to the automation extension API. 1990 // Send the updates to the automation extension API.
1993 std::vector<AXLocationChangeNotificationDetails> details; 1991 std::vector<AXLocationChangeNotificationDetails> details;
1994 details.reserve(params.size()); 1992 details.reserve(params.size());
1995 for (size_t i = 0; i < params.size(); ++i) { 1993 for (size_t i = 0; i < params.size(); ++i) {
1996 const AccessibilityHostMsg_LocationChangeParams& param = params[i]; 1994 const AccessibilityHostMsg_LocationChangeParams& param = params[i];
1997 AXLocationChangeNotificationDetails detail; 1995 AXLocationChangeNotificationDetails detail;
1998 detail.id = param.id; 1996 detail.id = param.id;
1999 detail.ax_tree_id = GetAXTreeID(); 1997 detail.ax_tree_id = GetAXTreeID();
2000 detail.new_location = param.new_location; 1998 detail.new_location = param.new_location;
2001 details.push_back(detail); 1999 details.push_back(detail);
2002 } 2000 }
2003 delegate_->AccessibilityLocationChangesReceived(details); 2001 delegate_->AccessibilityLocationChangesReceived(details);
2004 } 2002 }
2005 } 2003 }
2006 2004
2007 void RenderFrameHostImpl::OnAccessibilityFindInPageResult( 2005 void RenderFrameHostImpl::OnAccessibilityFindInPageResult(
2008 const AccessibilityHostMsg_FindInPageResultParams& params) { 2006 const AccessibilityHostMsg_FindInPageResultParams& params) {
2009 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode(); 2007 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode();
2010 if (accessibility_mode & AccessibilityModeFlagPlatform) { 2008 if (accessibility_mode & ACCESSIBILITY_MODE_FLAG_NATIVE_APIS) {
2011 BrowserAccessibilityManager* manager = 2009 BrowserAccessibilityManager* manager =
2012 GetOrCreateBrowserAccessibilityManager(); 2010 GetOrCreateBrowserAccessibilityManager();
2013 if (manager) { 2011 if (manager) {
2014 manager->OnFindInPageResult( 2012 manager->OnFindInPageResult(
2015 params.request_id, params.match_index, params.start_id, 2013 params.request_id, params.match_index, params.start_id,
2016 params.start_offset, params.end_id, params.end_offset); 2014 params.start_offset, params.end_id, params.end_offset);
2017 } 2015 }
2018 } 2016 }
2019 } 2017 }
2020 2018
(...skipping 853 matching lines...) Expand 10 before | Expand all | Expand 10 after
2874 bool is_root_frame = !frame_tree_node()->parent(); 2872 bool is_root_frame = !frame_tree_node()->parent();
2875 browser_accessibility_manager_.reset( 2873 browser_accessibility_manager_.reset(
2876 view->CreateBrowserAccessibilityManager(this, is_root_frame)); 2874 view->CreateBrowserAccessibilityManager(this, is_root_frame));
2877 } 2875 }
2878 return browser_accessibility_manager_.get(); 2876 return browser_accessibility_manager_.get();
2879 } 2877 }
2880 2878
2881 void RenderFrameHostImpl::ActivateFindInPageResultForAccessibility( 2879 void RenderFrameHostImpl::ActivateFindInPageResultForAccessibility(
2882 int request_id) { 2880 int request_id) {
2883 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode(); 2881 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode();
2884 if (accessibility_mode & AccessibilityModeFlagPlatform) { 2882 if (accessibility_mode & ACCESSIBILITY_MODE_FLAG_NATIVE_APIS) {
2885 BrowserAccessibilityManager* manager = 2883 BrowserAccessibilityManager* manager =
2886 GetOrCreateBrowserAccessibilityManager(); 2884 GetOrCreateBrowserAccessibilityManager();
2887 if (manager) 2885 if (manager)
2888 manager->ActivateFindInPageResult(request_id); 2886 manager->ActivateFindInPageResult(request_id);
2889 } 2887 }
2890 } 2888 }
2891 2889
2892 void RenderFrameHostImpl::InsertVisualStateCallback( 2890 void RenderFrameHostImpl::InsertVisualStateCallback(
2893 const VisualStateCallback& callback) { 2891 const VisualStateCallback& callback) {
2894 static uint64_t next_id = 1; 2892 static uint64_t next_id = 1;
(...skipping 435 matching lines...) Expand 10 before | Expand all | Expand 10 after
3330 // pending_nav_entry_id. If the previous handle was a prematurely aborted 3328 // pending_nav_entry_id. If the previous handle was a prematurely aborted
3331 // navigation loaded via LoadDataWithBaseURL, propagate the entry id. 3329 // navigation loaded via LoadDataWithBaseURL, propagate the entry id.
3332 return NavigationHandleImpl::Create( 3330 return NavigationHandleImpl::Create(
3333 params.url, frame_tree_node_, is_renderer_initiated, 3331 params.url, frame_tree_node_, is_renderer_initiated,
3334 params.was_within_same_page, base::TimeTicks::Now(), 3332 params.was_within_same_page, base::TimeTicks::Now(),
3335 entry_id_for_data_nav, params.gesture, 3333 entry_id_for_data_nav, params.gesture,
3336 false); // started_from_context_menu 3334 false); // started_from_context_menu
3337 } 3335 }
3338 3336
3339 } // namespace content 3337 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/frame_host/render_frame_host_delegate.h ('k') | content/browser/renderer_host/render_widget_host_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698