OLD | NEW |
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 1984 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1995 // reset but this message includes a reset token. | 1995 // reset but this message includes a reset token. |
1996 if (accessibility_reset_token_ != reset_token) { | 1996 if (accessibility_reset_token_ != reset_token) { |
1997 Send(new AccessibilityMsg_Events_ACK(routing_id_, ack_token)); | 1997 Send(new AccessibilityMsg_Events_ACK(routing_id_, ack_token)); |
1998 return; | 1998 return; |
1999 } | 1999 } |
2000 accessibility_reset_token_ = 0; | 2000 accessibility_reset_token_ = 0; |
2001 | 2001 |
2002 RenderWidgetHostViewBase* view = GetViewForAccessibility(); | 2002 RenderWidgetHostViewBase* view = GetViewForAccessibility(); |
2003 | 2003 |
2004 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode(); | 2004 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode(); |
2005 if ((accessibility_mode != AccessibilityModeOff) && view && is_active()) { | 2005 if ((accessibility_mode != AccessibilityMode::OFF) && view && is_active()) { |
2006 if (accessibility_mode & ACCESSIBILITY_MODE_FLAG_NATIVE_APIS) | 2006 if (accessibility_mode & AccessibilityMode::NATIVE_APIS) |
2007 GetOrCreateBrowserAccessibilityManager(); | 2007 GetOrCreateBrowserAccessibilityManager(); |
2008 | 2008 |
2009 std::vector<AXEventNotificationDetails> details; | 2009 std::vector<AXEventNotificationDetails> details; |
2010 details.reserve(params.size()); | 2010 details.reserve(params.size()); |
2011 for (size_t i = 0; i < params.size(); ++i) { | 2011 for (size_t i = 0; i < params.size(); ++i) { |
2012 const AccessibilityHostMsg_EventParams& param = params[i]; | 2012 const AccessibilityHostMsg_EventParams& param = params[i]; |
2013 AXEventNotificationDetails detail; | 2013 AXEventNotificationDetails detail; |
2014 detail.event_type = param.event_type; | 2014 detail.event_type = param.event_type; |
2015 detail.id = param.id; | 2015 detail.id = param.id; |
2016 detail.ax_tree_id = GetAXTreeID(); | 2016 detail.ax_tree_id = GetAXTreeID(); |
2017 detail.event_from = param.event_from; | 2017 detail.event_from = param.event_from; |
2018 if (param.update.has_tree_data) { | 2018 if (param.update.has_tree_data) { |
2019 detail.update.has_tree_data = true; | 2019 detail.update.has_tree_data = true; |
2020 ax_content_tree_data_ = param.update.tree_data; | 2020 ax_content_tree_data_ = param.update.tree_data; |
2021 AXContentTreeDataToAXTreeData(&detail.update.tree_data); | 2021 AXContentTreeDataToAXTreeData(&detail.update.tree_data); |
2022 } | 2022 } |
2023 detail.update.root_id = param.update.root_id; | 2023 detail.update.root_id = param.update.root_id; |
2024 detail.update.node_id_to_clear = param.update.node_id_to_clear; | 2024 detail.update.node_id_to_clear = param.update.node_id_to_clear; |
2025 detail.update.nodes.resize(param.update.nodes.size()); | 2025 detail.update.nodes.resize(param.update.nodes.size()); |
2026 for (size_t i = 0; i < param.update.nodes.size(); ++i) { | 2026 for (size_t i = 0; i < param.update.nodes.size(); ++i) { |
2027 AXContentNodeDataToAXNodeData(param.update.nodes[i], | 2027 AXContentNodeDataToAXNodeData(param.update.nodes[i], |
2028 &detail.update.nodes[i]); | 2028 &detail.update.nodes[i]); |
2029 } | 2029 } |
2030 details.push_back(detail); | 2030 details.push_back(detail); |
2031 } | 2031 } |
2032 | 2032 |
2033 if (accessibility_mode & ACCESSIBILITY_MODE_FLAG_NATIVE_APIS) { | 2033 if (accessibility_mode & AccessibilityMode::NATIVE_APIS) { |
2034 if (browser_accessibility_manager_) | 2034 if (browser_accessibility_manager_) |
2035 browser_accessibility_manager_->OnAccessibilityEvents(details); | 2035 browser_accessibility_manager_->OnAccessibilityEvents(details); |
2036 } | 2036 } |
2037 | 2037 |
2038 delegate_->AccessibilityEventReceived(details); | 2038 delegate_->AccessibilityEventReceived(details); |
2039 | 2039 |
2040 // For testing only. | 2040 // For testing only. |
2041 if (!accessibility_testing_callback_.is_null()) { | 2041 if (!accessibility_testing_callback_.is_null()) { |
2042 for (size_t i = 0; i < details.size(); i++) { | 2042 for (size_t i = 0; i < details.size(); i++) { |
2043 const AXEventNotificationDetails& detail = details[i]; | 2043 const AXEventNotificationDetails& detail = details[i]; |
(...skipping 24 matching lines...) Expand all Loading... |
2068 | 2068 |
2069 void RenderFrameHostImpl::OnAccessibilityLocationChanges( | 2069 void RenderFrameHostImpl::OnAccessibilityLocationChanges( |
2070 const std::vector<AccessibilityHostMsg_LocationChangeParams>& params) { | 2070 const std::vector<AccessibilityHostMsg_LocationChangeParams>& params) { |
2071 if (accessibility_reset_token_) | 2071 if (accessibility_reset_token_) |
2072 return; | 2072 return; |
2073 | 2073 |
2074 RenderWidgetHostViewBase* view = static_cast<RenderWidgetHostViewBase*>( | 2074 RenderWidgetHostViewBase* view = static_cast<RenderWidgetHostViewBase*>( |
2075 render_view_host_->GetWidget()->GetView()); | 2075 render_view_host_->GetWidget()->GetView()); |
2076 if (view && is_active()) { | 2076 if (view && is_active()) { |
2077 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode(); | 2077 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode(); |
2078 if (accessibility_mode & ACCESSIBILITY_MODE_FLAG_NATIVE_APIS) { | 2078 if (accessibility_mode & AccessibilityMode::NATIVE_APIS) { |
2079 BrowserAccessibilityManager* manager = | 2079 BrowserAccessibilityManager* manager = |
2080 GetOrCreateBrowserAccessibilityManager(); | 2080 GetOrCreateBrowserAccessibilityManager(); |
2081 if (manager) | 2081 if (manager) |
2082 manager->OnLocationChanges(params); | 2082 manager->OnLocationChanges(params); |
2083 } | 2083 } |
2084 | 2084 |
2085 // Send the updates to the automation extension API. | 2085 // Send the updates to the automation extension API. |
2086 std::vector<AXLocationChangeNotificationDetails> details; | 2086 std::vector<AXLocationChangeNotificationDetails> details; |
2087 details.reserve(params.size()); | 2087 details.reserve(params.size()); |
2088 for (size_t i = 0; i < params.size(); ++i) { | 2088 for (size_t i = 0; i < params.size(); ++i) { |
2089 const AccessibilityHostMsg_LocationChangeParams& param = params[i]; | 2089 const AccessibilityHostMsg_LocationChangeParams& param = params[i]; |
2090 AXLocationChangeNotificationDetails detail; | 2090 AXLocationChangeNotificationDetails detail; |
2091 detail.id = param.id; | 2091 detail.id = param.id; |
2092 detail.ax_tree_id = GetAXTreeID(); | 2092 detail.ax_tree_id = GetAXTreeID(); |
2093 detail.new_location = param.new_location; | 2093 detail.new_location = param.new_location; |
2094 details.push_back(detail); | 2094 details.push_back(detail); |
2095 } | 2095 } |
2096 delegate_->AccessibilityLocationChangesReceived(details); | 2096 delegate_->AccessibilityLocationChangesReceived(details); |
2097 } | 2097 } |
2098 } | 2098 } |
2099 | 2099 |
2100 void RenderFrameHostImpl::OnAccessibilityFindInPageResult( | 2100 void RenderFrameHostImpl::OnAccessibilityFindInPageResult( |
2101 const AccessibilityHostMsg_FindInPageResultParams& params) { | 2101 const AccessibilityHostMsg_FindInPageResultParams& params) { |
2102 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode(); | 2102 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode(); |
2103 if (accessibility_mode & ACCESSIBILITY_MODE_FLAG_NATIVE_APIS) { | 2103 if (accessibility_mode & AccessibilityMode::NATIVE_APIS) { |
2104 BrowserAccessibilityManager* manager = | 2104 BrowserAccessibilityManager* manager = |
2105 GetOrCreateBrowserAccessibilityManager(); | 2105 GetOrCreateBrowserAccessibilityManager(); |
2106 if (manager) { | 2106 if (manager) { |
2107 manager->OnFindInPageResult( | 2107 manager->OnFindInPageResult( |
2108 params.request_id, params.match_index, params.start_id, | 2108 params.request_id, params.match_index, params.start_id, |
2109 params.start_offset, params.end_id, params.end_offset); | 2109 params.start_offset, params.end_id, params.end_offset); |
2110 } | 2110 } |
2111 } | 2111 } |
2112 } | 2112 } |
2113 | 2113 |
(...skipping 852 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2966 } | 2966 } |
2967 | 2967 |
2968 void RenderFrameHostImpl::SetAccessibilityCallbackForTesting( | 2968 void RenderFrameHostImpl::SetAccessibilityCallbackForTesting( |
2969 const base::Callback<void(RenderFrameHostImpl*, ui::AXEvent, int)>& | 2969 const base::Callback<void(RenderFrameHostImpl*, ui::AXEvent, int)>& |
2970 callback) { | 2970 callback) { |
2971 accessibility_testing_callback_ = callback; | 2971 accessibility_testing_callback_ = callback; |
2972 } | 2972 } |
2973 | 2973 |
2974 void RenderFrameHostImpl::UpdateAXTreeData() { | 2974 void RenderFrameHostImpl::UpdateAXTreeData() { |
2975 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode(); | 2975 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode(); |
2976 if (accessibility_mode == AccessibilityModeOff || !is_active()) { | 2976 if (accessibility_mode == AccessibilityMode::OFF || !is_active()) { |
2977 return; | 2977 return; |
2978 } | 2978 } |
2979 | 2979 |
2980 std::vector<AXEventNotificationDetails> details; | 2980 std::vector<AXEventNotificationDetails> details; |
2981 details.reserve(1U); | 2981 details.reserve(1U); |
2982 AXEventNotificationDetails detail; | 2982 AXEventNotificationDetails detail; |
2983 detail.ax_tree_id = GetAXTreeID(); | 2983 detail.ax_tree_id = GetAXTreeID(); |
2984 detail.update.has_tree_data = true; | 2984 detail.update.has_tree_data = true; |
2985 AXContentTreeDataToAXTreeData(&detail.update.tree_data); | 2985 AXContentTreeDataToAXTreeData(&detail.update.tree_data); |
2986 details.push_back(detail); | 2986 details.push_back(detail); |
(...skipping 23 matching lines...) Expand all Loading... |
3010 bool is_root_frame = !frame_tree_node()->parent(); | 3010 bool is_root_frame = !frame_tree_node()->parent(); |
3011 browser_accessibility_manager_.reset( | 3011 browser_accessibility_manager_.reset( |
3012 view->CreateBrowserAccessibilityManager(this, is_root_frame)); | 3012 view->CreateBrowserAccessibilityManager(this, is_root_frame)); |
3013 } | 3013 } |
3014 return browser_accessibility_manager_.get(); | 3014 return browser_accessibility_manager_.get(); |
3015 } | 3015 } |
3016 | 3016 |
3017 void RenderFrameHostImpl::ActivateFindInPageResultForAccessibility( | 3017 void RenderFrameHostImpl::ActivateFindInPageResultForAccessibility( |
3018 int request_id) { | 3018 int request_id) { |
3019 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode(); | 3019 AccessibilityMode accessibility_mode = delegate_->GetAccessibilityMode(); |
3020 if (accessibility_mode & ACCESSIBILITY_MODE_FLAG_NATIVE_APIS) { | 3020 if (accessibility_mode & AccessibilityMode::NATIVE_APIS) { |
3021 BrowserAccessibilityManager* manager = | 3021 BrowserAccessibilityManager* manager = |
3022 GetOrCreateBrowserAccessibilityManager(); | 3022 GetOrCreateBrowserAccessibilityManager(); |
3023 if (manager) | 3023 if (manager) |
3024 manager->ActivateFindInPageResult(request_id); | 3024 manager->ActivateFindInPageResult(request_id); |
3025 } | 3025 } |
3026 } | 3026 } |
3027 | 3027 |
3028 void RenderFrameHostImpl::InsertVisualStateCallback( | 3028 void RenderFrameHostImpl::InsertVisualStateCallback( |
3029 const VisualStateCallback& callback) { | 3029 const VisualStateCallback& callback) { |
3030 static uint64_t next_id = 1; | 3030 static uint64_t next_id = 1; |
(...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3493 // There is no pending NavigationEntry in these cases, so pass 0 as the | 3493 // There is no pending NavigationEntry in these cases, so pass 0 as the |
3494 // pending_nav_entry_id. If the previous handle was a prematurely aborted | 3494 // pending_nav_entry_id. If the previous handle was a prematurely aborted |
3495 // navigation loaded via LoadDataWithBaseURL, propagate the entry id. | 3495 // navigation loaded via LoadDataWithBaseURL, propagate the entry id. |
3496 return NavigationHandleImpl::Create( | 3496 return NavigationHandleImpl::Create( |
3497 params.url, params.redirects, frame_tree_node_, is_renderer_initiated, | 3497 params.url, params.redirects, frame_tree_node_, is_renderer_initiated, |
3498 params.was_within_same_page, base::TimeTicks::Now(), | 3498 params.was_within_same_page, base::TimeTicks::Now(), |
3499 entry_id_for_data_nav, false); // started_from_context_menu | 3499 entry_id_for_data_nav, false); // started_from_context_menu |
3500 } | 3500 } |
3501 | 3501 |
3502 } // namespace content | 3502 } // namespace content |
OLD | NEW |