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

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

Issue 2694413006: Scope and clean up uses of AccessibilityMode. (Closed)
Patch Set: address comments Created 3 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 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 <algorithm> 7 #include <algorithm>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 1983 matching lines...) Expand 10 before | Expand all | Expand 10 after
1994 // reset but this message includes a reset token. 1994 // reset but this message includes a reset token.
1995 if (accessibility_reset_token_ != reset_token) { 1995 if (accessibility_reset_token_ != reset_token) {
1996 Send(new AccessibilityMsg_Events_ACK(routing_id_, ack_token)); 1996 Send(new AccessibilityMsg_Events_ACK(routing_id_, ack_token));
1997 return; 1997 return;
1998 } 1998 }
1999 accessibility_reset_token_ = 0; 1999 accessibility_reset_token_ = 0;
2000 2000
2001 RenderWidgetHostViewBase* view = GetViewForAccessibility(); 2001 RenderWidgetHostViewBase* view = GetViewForAccessibility();
2002 2002
2003 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode(); 2003 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode();
2004 if ((accessibility_mode != AccessibilityModeOff) && view && is_active()) { 2004 if (accessibility_mode != AccessibilityMode::kOff && view && is_active()) {
2005 if (accessibility_mode & ACCESSIBILITY_MODE_FLAG_NATIVE_APIS) 2005 if (accessibility_mode.hasMode(AccessibilityMode::kNativeAPIs))
2006 GetOrCreateBrowserAccessibilityManager(); 2006 GetOrCreateBrowserAccessibilityManager();
2007 2007
2008 std::vector<AXEventNotificationDetails> details; 2008 std::vector<AXEventNotificationDetails> details;
2009 details.reserve(params.size()); 2009 details.reserve(params.size());
2010 for (size_t i = 0; i < params.size(); ++i) { 2010 for (size_t i = 0; i < params.size(); ++i) {
2011 const AccessibilityHostMsg_EventParams& param = params[i]; 2011 const AccessibilityHostMsg_EventParams& param = params[i];
2012 AXEventNotificationDetails detail; 2012 AXEventNotificationDetails detail;
2013 detail.event_type = param.event_type; 2013 detail.event_type = param.event_type;
2014 detail.id = param.id; 2014 detail.id = param.id;
2015 detail.ax_tree_id = GetAXTreeID(); 2015 detail.ax_tree_id = GetAXTreeID();
2016 detail.event_from = param.event_from; 2016 detail.event_from = param.event_from;
2017 if (param.update.has_tree_data) { 2017 if (param.update.has_tree_data) {
2018 detail.update.has_tree_data = true; 2018 detail.update.has_tree_data = true;
2019 ax_content_tree_data_ = param.update.tree_data; 2019 ax_content_tree_data_ = param.update.tree_data;
2020 AXContentTreeDataToAXTreeData(&detail.update.tree_data); 2020 AXContentTreeDataToAXTreeData(&detail.update.tree_data);
2021 } 2021 }
2022 detail.update.root_id = param.update.root_id; 2022 detail.update.root_id = param.update.root_id;
2023 detail.update.node_id_to_clear = param.update.node_id_to_clear; 2023 detail.update.node_id_to_clear = param.update.node_id_to_clear;
2024 detail.update.nodes.resize(param.update.nodes.size()); 2024 detail.update.nodes.resize(param.update.nodes.size());
2025 for (size_t i = 0; i < param.update.nodes.size(); ++i) { 2025 for (size_t i = 0; i < param.update.nodes.size(); ++i) {
2026 AXContentNodeDataToAXNodeData(param.update.nodes[i], 2026 AXContentNodeDataToAXNodeData(param.update.nodes[i],
2027 &detail.update.nodes[i]); 2027 &detail.update.nodes[i]);
2028 } 2028 }
2029 details.push_back(detail); 2029 details.push_back(detail);
2030 } 2030 }
2031 2031
2032 if (accessibility_mode & ACCESSIBILITY_MODE_FLAG_NATIVE_APIS) { 2032 if (accessibility_mode.hasMode(AccessibilityMode::kNativeAPIs)) {
2033 if (browser_accessibility_manager_) 2033 if (browser_accessibility_manager_)
2034 browser_accessibility_manager_->OnAccessibilityEvents(details); 2034 browser_accessibility_manager_->OnAccessibilityEvents(details);
2035 } 2035 }
2036 2036
2037 delegate_->AccessibilityEventReceived(details); 2037 delegate_->AccessibilityEventReceived(details);
2038 2038
2039 // For testing only. 2039 // For testing only.
2040 if (!accessibility_testing_callback_.is_null()) { 2040 if (!accessibility_testing_callback_.is_null()) {
2041 for (size_t i = 0; i < details.size(); i++) { 2041 for (size_t i = 0; i < details.size(); i++) {
2042 const AXEventNotificationDetails& detail = details[i]; 2042 const AXEventNotificationDetails& detail = details[i];
(...skipping 24 matching lines...) Expand all
2067 2067
2068 void RenderFrameHostImpl::OnAccessibilityLocationChanges( 2068 void RenderFrameHostImpl::OnAccessibilityLocationChanges(
2069 const std::vector<AccessibilityHostMsg_LocationChangeParams>& params) { 2069 const std::vector<AccessibilityHostMsg_LocationChangeParams>& params) {
2070 if (accessibility_reset_token_) 2070 if (accessibility_reset_token_)
2071 return; 2071 return;
2072 2072
2073 RenderWidgetHostViewBase* view = static_cast<RenderWidgetHostViewBase*>( 2073 RenderWidgetHostViewBase* view = static_cast<RenderWidgetHostViewBase*>(
2074 render_view_host_->GetWidget()->GetView()); 2074 render_view_host_->GetWidget()->GetView());
2075 if (view && is_active()) { 2075 if (view && is_active()) {
2076 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode(); 2076 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode();
2077 if (accessibility_mode & ACCESSIBILITY_MODE_FLAG_NATIVE_APIS) { 2077 if (accessibility_mode.hasMode(AccessibilityMode::kNativeAPIs)) {
2078 BrowserAccessibilityManager* manager = 2078 BrowserAccessibilityManager* manager =
2079 GetOrCreateBrowserAccessibilityManager(); 2079 GetOrCreateBrowserAccessibilityManager();
2080 if (manager) 2080 if (manager)
2081 manager->OnLocationChanges(params); 2081 manager->OnLocationChanges(params);
2082 } 2082 }
2083 2083
2084 // Send the updates to the automation extension API. 2084 // Send the updates to the automation extension API.
2085 std::vector<AXLocationChangeNotificationDetails> details; 2085 std::vector<AXLocationChangeNotificationDetails> details;
2086 details.reserve(params.size()); 2086 details.reserve(params.size());
2087 for (size_t i = 0; i < params.size(); ++i) { 2087 for (size_t i = 0; i < params.size(); ++i) {
2088 const AccessibilityHostMsg_LocationChangeParams& param = params[i]; 2088 const AccessibilityHostMsg_LocationChangeParams& param = params[i];
2089 AXLocationChangeNotificationDetails detail; 2089 AXLocationChangeNotificationDetails detail;
2090 detail.id = param.id; 2090 detail.id = param.id;
2091 detail.ax_tree_id = GetAXTreeID(); 2091 detail.ax_tree_id = GetAXTreeID();
2092 detail.new_location = param.new_location; 2092 detail.new_location = param.new_location;
2093 details.push_back(detail); 2093 details.push_back(detail);
2094 } 2094 }
2095 delegate_->AccessibilityLocationChangesReceived(details); 2095 delegate_->AccessibilityLocationChangesReceived(details);
2096 } 2096 }
2097 } 2097 }
2098 2098
2099 void RenderFrameHostImpl::OnAccessibilityFindInPageResult( 2099 void RenderFrameHostImpl::OnAccessibilityFindInPageResult(
2100 const AccessibilityHostMsg_FindInPageResultParams& params) { 2100 const AccessibilityHostMsg_FindInPageResultParams& params) {
2101 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode(); 2101 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode();
2102 if (accessibility_mode & ACCESSIBILITY_MODE_FLAG_NATIVE_APIS) { 2102 if (accessibility_mode.hasMode(AccessibilityMode::kNativeAPIs)) {
2103 BrowserAccessibilityManager* manager = 2103 BrowserAccessibilityManager* manager =
2104 GetOrCreateBrowserAccessibilityManager(); 2104 GetOrCreateBrowserAccessibilityManager();
2105 if (manager) { 2105 if (manager) {
2106 manager->OnFindInPageResult( 2106 manager->OnFindInPageResult(
2107 params.request_id, params.match_index, params.start_id, 2107 params.request_id, params.match_index, params.start_id,
2108 params.start_offset, params.end_id, params.end_offset); 2108 params.start_offset, params.end_id, params.end_offset);
2109 } 2109 }
2110 } 2110 }
2111 } 2111 }
2112 2112
(...skipping 830 matching lines...) Expand 10 before | Expand all | Expand 10 after
2943 2943
2944 bool RenderFrameHostImpl::IsSameSiteInstance( 2944 bool RenderFrameHostImpl::IsSameSiteInstance(
2945 RenderFrameHostImpl* other_render_frame_host) { 2945 RenderFrameHostImpl* other_render_frame_host) {
2946 // As a sanity check, make sure the frame belongs to the same BrowserContext. 2946 // As a sanity check, make sure the frame belongs to the same BrowserContext.
2947 CHECK_EQ(GetSiteInstance()->GetBrowserContext(), 2947 CHECK_EQ(GetSiteInstance()->GetBrowserContext(),
2948 other_render_frame_host->GetSiteInstance()->GetBrowserContext()); 2948 other_render_frame_host->GetSiteInstance()->GetBrowserContext());
2949 return GetSiteInstance() == other_render_frame_host->GetSiteInstance(); 2949 return GetSiteInstance() == other_render_frame_host->GetSiteInstance();
2950 } 2950 }
2951 2951
2952 void RenderFrameHostImpl::UpdateAccessibilityMode() { 2952 void RenderFrameHostImpl::UpdateAccessibilityMode() {
2953 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode(); 2953 int accessibility_mode_raw = delegate_->GetAccessibilityMode().get();
2954 Send(new FrameMsg_SetAccessibilityMode(routing_id_, accessibility_mode)); 2954 Send(new FrameMsg_SetAccessibilityMode(routing_id_, accessibility_mode_raw));
2955 } 2955 }
2956 2956
2957 void RenderFrameHostImpl::RequestAXTreeSnapshot( 2957 void RenderFrameHostImpl::RequestAXTreeSnapshot(
2958 AXTreeSnapshotCallback callback) { 2958 AXTreeSnapshotCallback callback) {
2959 static int next_id = 1; 2959 static int next_id = 1;
2960 int callback_id = next_id++; 2960 int callback_id = next_id++;
2961 Send(new AccessibilityMsg_SnapshotTree(routing_id_, callback_id)); 2961 Send(new AccessibilityMsg_SnapshotTree(routing_id_, callback_id));
2962 ax_tree_snapshot_callbacks_.insert(std::make_pair(callback_id, callback)); 2962 ax_tree_snapshot_callbacks_.insert(std::make_pair(callback_id, callback));
2963 } 2963 }
2964 2964
2965 void RenderFrameHostImpl::SetAccessibilityCallbackForTesting( 2965 void RenderFrameHostImpl::SetAccessibilityCallbackForTesting(
2966 const base::Callback<void(RenderFrameHostImpl*, ui::AXEvent, int)>& 2966 const base::Callback<void(RenderFrameHostImpl*, ui::AXEvent, int)>&
2967 callback) { 2967 callback) {
2968 accessibility_testing_callback_ = callback; 2968 accessibility_testing_callback_ = callback;
2969 } 2969 }
2970 2970
2971 void RenderFrameHostImpl::UpdateAXTreeData() { 2971 void RenderFrameHostImpl::UpdateAXTreeData() {
2972 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode(); 2972 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode();
2973 if (accessibility_mode == AccessibilityModeOff || !is_active()) { 2973 if (accessibility_mode == AccessibilityMode::kOff || !is_active()) {
2974 return; 2974 return;
2975 } 2975 }
2976 2976
2977 std::vector<AXEventNotificationDetails> details; 2977 std::vector<AXEventNotificationDetails> details;
2978 details.reserve(1U); 2978 details.reserve(1U);
2979 AXEventNotificationDetails detail; 2979 AXEventNotificationDetails detail;
2980 detail.ax_tree_id = GetAXTreeID(); 2980 detail.ax_tree_id = GetAXTreeID();
2981 detail.update.has_tree_data = true; 2981 detail.update.has_tree_data = true;
2982 AXContentTreeDataToAXTreeData(&detail.update.tree_data); 2982 AXContentTreeDataToAXTreeData(&detail.update.tree_data);
2983 details.push_back(detail); 2983 details.push_back(detail);
(...skipping 23 matching lines...) Expand all
3007 bool is_root_frame = !frame_tree_node()->parent(); 3007 bool is_root_frame = !frame_tree_node()->parent();
3008 browser_accessibility_manager_.reset( 3008 browser_accessibility_manager_.reset(
3009 view->CreateBrowserAccessibilityManager(this, is_root_frame)); 3009 view->CreateBrowserAccessibilityManager(this, is_root_frame));
3010 } 3010 }
3011 return browser_accessibility_manager_.get(); 3011 return browser_accessibility_manager_.get();
3012 } 3012 }
3013 3013
3014 void RenderFrameHostImpl::ActivateFindInPageResultForAccessibility( 3014 void RenderFrameHostImpl::ActivateFindInPageResultForAccessibility(
3015 int request_id) { 3015 int request_id) {
3016 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode(); 3016 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode();
3017 if (accessibility_mode & ACCESSIBILITY_MODE_FLAG_NATIVE_APIS) { 3017 if (accessibility_mode.hasMode(AccessibilityMode::kNativeAPIs)) {
3018 BrowserAccessibilityManager* manager = 3018 BrowserAccessibilityManager* manager =
3019 GetOrCreateBrowserAccessibilityManager(); 3019 GetOrCreateBrowserAccessibilityManager();
3020 if (manager) 3020 if (manager)
3021 manager->ActivateFindInPageResult(request_id); 3021 manager->ActivateFindInPageResult(request_id);
3022 } 3022 }
3023 } 3023 }
3024 3024
3025 void RenderFrameHostImpl::InsertVisualStateCallback( 3025 void RenderFrameHostImpl::InsertVisualStateCallback(
3026 const VisualStateCallback& callback) { 3026 const VisualStateCallback& callback) {
3027 static uint64_t next_id = 1; 3027 static uint64_t next_id = 1;
(...skipping 449 matching lines...) Expand 10 before | Expand all | Expand 10 after
3477 // There is no pending NavigationEntry in these cases, so pass 0 as the 3477 // There is no pending NavigationEntry in these cases, so pass 0 as the
3478 // pending_nav_entry_id. If the previous handle was a prematurely aborted 3478 // pending_nav_entry_id. If the previous handle was a prematurely aborted
3479 // navigation loaded via LoadDataWithBaseURL, propagate the entry id. 3479 // navigation loaded via LoadDataWithBaseURL, propagate the entry id.
3480 return NavigationHandleImpl::Create( 3480 return NavigationHandleImpl::Create(
3481 params.url, params.redirects, frame_tree_node_, is_renderer_initiated, 3481 params.url, params.redirects, frame_tree_node_, is_renderer_initiated,
3482 params.was_within_same_page, base::TimeTicks::Now(), 3482 params.was_within_same_page, base::TimeTicks::Now(),
3483 entry_id_for_data_nav, false); // started_from_context_menu 3483 entry_id_for_data_nav, false); // started_from_context_menu
3484 } 3484 }
3485 3485
3486 } // namespace content 3486 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698