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

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: use param traits Created 3 years, 9 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 1950 matching lines...) Expand 10 before | Expand all | Expand 10 after
1961 // reset but this message includes a reset token. 1961 // reset but this message includes a reset token.
1962 if (accessibility_reset_token_ != reset_token) { 1962 if (accessibility_reset_token_ != reset_token) {
1963 Send(new AccessibilityMsg_Events_ACK(routing_id_, ack_token)); 1963 Send(new AccessibilityMsg_Events_ACK(routing_id_, ack_token));
1964 return; 1964 return;
1965 } 1965 }
1966 accessibility_reset_token_ = 0; 1966 accessibility_reset_token_ = 0;
1967 1967
1968 RenderWidgetHostViewBase* view = GetViewForAccessibility(); 1968 RenderWidgetHostViewBase* view = GetViewForAccessibility();
1969 1969
1970 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode(); 1970 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode();
1971 if ((accessibility_mode != AccessibilityModeOff) && view && is_active()) { 1971 if (!accessibility_mode.is_mode_off() && view && is_active()) {
1972 if (accessibility_mode & ACCESSIBILITY_MODE_FLAG_NATIVE_APIS) 1972 if (accessibility_mode.has_mode(AccessibilityMode::kNativeAPIs))
1973 GetOrCreateBrowserAccessibilityManager(); 1973 GetOrCreateBrowserAccessibilityManager();
1974 1974
1975 std::vector<AXEventNotificationDetails> details; 1975 std::vector<AXEventNotificationDetails> details;
1976 details.reserve(params.size()); 1976 details.reserve(params.size());
1977 for (size_t i = 0; i < params.size(); ++i) { 1977 for (size_t i = 0; i < params.size(); ++i) {
1978 const AccessibilityHostMsg_EventParams& param = params[i]; 1978 const AccessibilityHostMsg_EventParams& param = params[i];
1979 AXEventNotificationDetails detail; 1979 AXEventNotificationDetails detail;
1980 detail.event_type = param.event_type; 1980 detail.event_type = param.event_type;
1981 detail.id = param.id; 1981 detail.id = param.id;
1982 detail.ax_tree_id = GetAXTreeID(); 1982 detail.ax_tree_id = GetAXTreeID();
1983 detail.event_from = param.event_from; 1983 detail.event_from = param.event_from;
1984 if (param.update.has_tree_data) { 1984 if (param.update.has_tree_data) {
1985 detail.update.has_tree_data = true; 1985 detail.update.has_tree_data = true;
1986 ax_content_tree_data_ = param.update.tree_data; 1986 ax_content_tree_data_ = param.update.tree_data;
1987 AXContentTreeDataToAXTreeData(&detail.update.tree_data); 1987 AXContentTreeDataToAXTreeData(&detail.update.tree_data);
1988 } 1988 }
1989 detail.update.root_id = param.update.root_id; 1989 detail.update.root_id = param.update.root_id;
1990 detail.update.node_id_to_clear = param.update.node_id_to_clear; 1990 detail.update.node_id_to_clear = param.update.node_id_to_clear;
1991 detail.update.nodes.resize(param.update.nodes.size()); 1991 detail.update.nodes.resize(param.update.nodes.size());
1992 for (size_t i = 0; i < param.update.nodes.size(); ++i) { 1992 for (size_t i = 0; i < param.update.nodes.size(); ++i) {
1993 AXContentNodeDataToAXNodeData(param.update.nodes[i], 1993 AXContentNodeDataToAXNodeData(param.update.nodes[i],
1994 &detail.update.nodes[i]); 1994 &detail.update.nodes[i]);
1995 } 1995 }
1996 details.push_back(detail); 1996 details.push_back(detail);
1997 } 1997 }
1998 1998
1999 if (accessibility_mode & ACCESSIBILITY_MODE_FLAG_NATIVE_APIS) { 1999 if (accessibility_mode.has_mode(AccessibilityMode::kNativeAPIs)) {
2000 if (browser_accessibility_manager_) 2000 if (browser_accessibility_manager_)
2001 browser_accessibility_manager_->OnAccessibilityEvents(details); 2001 browser_accessibility_manager_->OnAccessibilityEvents(details);
2002 } 2002 }
2003 2003
2004 delegate_->AccessibilityEventReceived(details); 2004 delegate_->AccessibilityEventReceived(details);
2005 2005
2006 // For testing only. 2006 // For testing only.
2007 if (!accessibility_testing_callback_.is_null()) { 2007 if (!accessibility_testing_callback_.is_null()) {
2008 for (size_t i = 0; i < details.size(); i++) { 2008 for (size_t i = 0; i < details.size(); i++) {
2009 const AXEventNotificationDetails& detail = details[i]; 2009 const AXEventNotificationDetails& detail = details[i];
(...skipping 24 matching lines...) Expand all
2034 2034
2035 void RenderFrameHostImpl::OnAccessibilityLocationChanges( 2035 void RenderFrameHostImpl::OnAccessibilityLocationChanges(
2036 const std::vector<AccessibilityHostMsg_LocationChangeParams>& params) { 2036 const std::vector<AccessibilityHostMsg_LocationChangeParams>& params) {
2037 if (accessibility_reset_token_) 2037 if (accessibility_reset_token_)
2038 return; 2038 return;
2039 2039
2040 RenderWidgetHostViewBase* view = static_cast<RenderWidgetHostViewBase*>( 2040 RenderWidgetHostViewBase* view = static_cast<RenderWidgetHostViewBase*>(
2041 render_view_host_->GetWidget()->GetView()); 2041 render_view_host_->GetWidget()->GetView());
2042 if (view && is_active()) { 2042 if (view && is_active()) {
2043 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode(); 2043 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode();
2044 if (accessibility_mode & ACCESSIBILITY_MODE_FLAG_NATIVE_APIS) { 2044 if (accessibility_mode.has_mode(AccessibilityMode::kNativeAPIs)) {
2045 BrowserAccessibilityManager* manager = 2045 BrowserAccessibilityManager* manager =
2046 GetOrCreateBrowserAccessibilityManager(); 2046 GetOrCreateBrowserAccessibilityManager();
2047 if (manager) 2047 if (manager)
2048 manager->OnLocationChanges(params); 2048 manager->OnLocationChanges(params);
2049 } 2049 }
2050 2050
2051 // Send the updates to the automation extension API. 2051 // Send the updates to the automation extension API.
2052 std::vector<AXLocationChangeNotificationDetails> details; 2052 std::vector<AXLocationChangeNotificationDetails> details;
2053 details.reserve(params.size()); 2053 details.reserve(params.size());
2054 for (size_t i = 0; i < params.size(); ++i) { 2054 for (size_t i = 0; i < params.size(); ++i) {
2055 const AccessibilityHostMsg_LocationChangeParams& param = params[i]; 2055 const AccessibilityHostMsg_LocationChangeParams& param = params[i];
2056 AXLocationChangeNotificationDetails detail; 2056 AXLocationChangeNotificationDetails detail;
2057 detail.id = param.id; 2057 detail.id = param.id;
2058 detail.ax_tree_id = GetAXTreeID(); 2058 detail.ax_tree_id = GetAXTreeID();
2059 detail.new_location = param.new_location; 2059 detail.new_location = param.new_location;
2060 details.push_back(detail); 2060 details.push_back(detail);
2061 } 2061 }
2062 delegate_->AccessibilityLocationChangesReceived(details); 2062 delegate_->AccessibilityLocationChangesReceived(details);
2063 } 2063 }
2064 } 2064 }
2065 2065
2066 void RenderFrameHostImpl::OnAccessibilityFindInPageResult( 2066 void RenderFrameHostImpl::OnAccessibilityFindInPageResult(
2067 const AccessibilityHostMsg_FindInPageResultParams& params) { 2067 const AccessibilityHostMsg_FindInPageResultParams& params) {
2068 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode(); 2068 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode();
2069 if (accessibility_mode & ACCESSIBILITY_MODE_FLAG_NATIVE_APIS) { 2069 if (accessibility_mode.has_mode(AccessibilityMode::kNativeAPIs)) {
2070 BrowserAccessibilityManager* manager = 2070 BrowserAccessibilityManager* manager =
2071 GetOrCreateBrowserAccessibilityManager(); 2071 GetOrCreateBrowserAccessibilityManager();
2072 if (manager) { 2072 if (manager) {
2073 manager->OnFindInPageResult( 2073 manager->OnFindInPageResult(
2074 params.request_id, params.match_index, params.start_id, 2074 params.request_id, params.match_index, params.start_id,
2075 params.start_offset, params.end_id, params.end_offset); 2075 params.start_offset, params.end_id, params.end_offset);
2076 } 2076 }
2077 } 2077 }
2078 } 2078 }
2079 2079
(...skipping 845 matching lines...) Expand 10 before | Expand all | Expand 10 after
2925 2925
2926 bool RenderFrameHostImpl::IsSameSiteInstance( 2926 bool RenderFrameHostImpl::IsSameSiteInstance(
2927 RenderFrameHostImpl* other_render_frame_host) { 2927 RenderFrameHostImpl* other_render_frame_host) {
2928 // As a sanity check, make sure the frame belongs to the same BrowserContext. 2928 // As a sanity check, make sure the frame belongs to the same BrowserContext.
2929 CHECK_EQ(GetSiteInstance()->GetBrowserContext(), 2929 CHECK_EQ(GetSiteInstance()->GetBrowserContext(),
2930 other_render_frame_host->GetSiteInstance()->GetBrowserContext()); 2930 other_render_frame_host->GetSiteInstance()->GetBrowserContext());
2931 return GetSiteInstance() == other_render_frame_host->GetSiteInstance(); 2931 return GetSiteInstance() == other_render_frame_host->GetSiteInstance();
2932 } 2932 }
2933 2933
2934 void RenderFrameHostImpl::UpdateAccessibilityMode() { 2934 void RenderFrameHostImpl::UpdateAccessibilityMode() {
2935 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode(); 2935 int accessibility_mode_raw = delegate_->GetAccessibilityMode().mode();
2936 Send(new FrameMsg_SetAccessibilityMode(routing_id_, accessibility_mode)); 2936 Send(new FrameMsg_SetAccessibilityMode(routing_id_, accessibility_mode_raw));
2937 } 2937 }
2938 2938
2939 void RenderFrameHostImpl::RequestAXTreeSnapshot( 2939 void RenderFrameHostImpl::RequestAXTreeSnapshot(
2940 AXTreeSnapshotCallback callback) { 2940 AXTreeSnapshotCallback callback) {
2941 static int next_id = 1; 2941 static int next_id = 1;
2942 int callback_id = next_id++; 2942 int callback_id = next_id++;
2943 Send(new AccessibilityMsg_SnapshotTree(routing_id_, callback_id)); 2943 Send(new AccessibilityMsg_SnapshotTree(routing_id_, callback_id));
2944 ax_tree_snapshot_callbacks_.insert(std::make_pair(callback_id, callback)); 2944 ax_tree_snapshot_callbacks_.insert(std::make_pair(callback_id, callback));
2945 } 2945 }
2946 2946
2947 void RenderFrameHostImpl::SetAccessibilityCallbackForTesting( 2947 void RenderFrameHostImpl::SetAccessibilityCallbackForTesting(
2948 const base::Callback<void(RenderFrameHostImpl*, ui::AXEvent, int)>& 2948 const base::Callback<void(RenderFrameHostImpl*, ui::AXEvent, int)>&
2949 callback) { 2949 callback) {
2950 accessibility_testing_callback_ = callback; 2950 accessibility_testing_callback_ = callback;
2951 } 2951 }
2952 2952
2953 void RenderFrameHostImpl::UpdateAXTreeData() { 2953 void RenderFrameHostImpl::UpdateAXTreeData() {
2954 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode(); 2954 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode();
2955 if (accessibility_mode == AccessibilityModeOff || !is_active()) { 2955 if (accessibility_mode.is_mode_off() || !is_active()) {
2956 return; 2956 return;
2957 } 2957 }
2958 2958
2959 std::vector<AXEventNotificationDetails> details; 2959 std::vector<AXEventNotificationDetails> details;
2960 details.reserve(1U); 2960 details.reserve(1U);
2961 AXEventNotificationDetails detail; 2961 AXEventNotificationDetails detail;
2962 detail.ax_tree_id = GetAXTreeID(); 2962 detail.ax_tree_id = GetAXTreeID();
2963 detail.update.has_tree_data = true; 2963 detail.update.has_tree_data = true;
2964 AXContentTreeDataToAXTreeData(&detail.update.tree_data); 2964 AXContentTreeDataToAXTreeData(&detail.update.tree_data);
2965 details.push_back(detail); 2965 details.push_back(detail);
(...skipping 23 matching lines...) Expand all
2989 bool is_root_frame = !frame_tree_node()->parent(); 2989 bool is_root_frame = !frame_tree_node()->parent();
2990 browser_accessibility_manager_.reset( 2990 browser_accessibility_manager_.reset(
2991 view->CreateBrowserAccessibilityManager(this, is_root_frame)); 2991 view->CreateBrowserAccessibilityManager(this, is_root_frame));
2992 } 2992 }
2993 return browser_accessibility_manager_.get(); 2993 return browser_accessibility_manager_.get();
2994 } 2994 }
2995 2995
2996 void RenderFrameHostImpl::ActivateFindInPageResultForAccessibility( 2996 void RenderFrameHostImpl::ActivateFindInPageResultForAccessibility(
2997 int request_id) { 2997 int request_id) {
2998 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode(); 2998 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode();
2999 if (accessibility_mode & ACCESSIBILITY_MODE_FLAG_NATIVE_APIS) { 2999 if (accessibility_mode.has_mode(AccessibilityMode::kNativeAPIs)) {
3000 BrowserAccessibilityManager* manager = 3000 BrowserAccessibilityManager* manager =
3001 GetOrCreateBrowserAccessibilityManager(); 3001 GetOrCreateBrowserAccessibilityManager();
3002 if (manager) 3002 if (manager)
3003 manager->ActivateFindInPageResult(request_id); 3003 manager->ActivateFindInPageResult(request_id);
3004 } 3004 }
3005 } 3005 }
3006 3006
3007 void RenderFrameHostImpl::InsertVisualStateCallback( 3007 void RenderFrameHostImpl::InsertVisualStateCallback(
3008 const VisualStateCallback& callback) { 3008 const VisualStateCallback& callback) {
3009 static uint64_t next_id = 1; 3009 static uint64_t next_id = 1;
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after
3458 // There is no pending NavigationEntry in these cases, so pass 0 as the 3458 // There is no pending NavigationEntry in these cases, so pass 0 as the
3459 // pending_nav_entry_id. If the previous handle was a prematurely aborted 3459 // pending_nav_entry_id. If the previous handle was a prematurely aborted
3460 // navigation loaded via LoadDataWithBaseURL, propagate the entry id. 3460 // navigation loaded via LoadDataWithBaseURL, propagate the entry id.
3461 return NavigationHandleImpl::Create( 3461 return NavigationHandleImpl::Create(
3462 params.url, params.redirects, frame_tree_node_, is_renderer_initiated, 3462 params.url, params.redirects, frame_tree_node_, is_renderer_initiated,
3463 params.was_within_same_page, base::TimeTicks::Now(), 3463 params.was_within_same_page, base::TimeTicks::Now(),
3464 entry_id_for_data_nav, false); // started_from_context_menu 3464 entry_id_for_data_nav, false); // started_from_context_menu
3465 } 3465 }
3466 3466
3467 } // namespace content 3467 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698