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

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

Issue 1407413002: Move some AX attrs from AXNodeData to AXTreeData. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Finish automation API changes Created 5 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 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 "base/bind.h" 7 #include "base/bind.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/containers/hash_tables.h" 9 #include "base/containers/hash_tables.h"
10 #include "base/lazy_instance.h" 10 #include "base/lazy_instance.h"
(...skipping 1152 matching lines...) Expand 10 before | Expand all | Expand 10 after
1163 frame_tree_node_->ResetForNewProcess(); 1163 frame_tree_node_->ResetForNewProcess();
1164 1164
1165 // Reset state for the current RenderFrameHost once the FrameTreeNode has been 1165 // Reset state for the current RenderFrameHost once the FrameTreeNode has been
1166 // reset. 1166 // reset.
1167 SetRenderFrameCreated(false); 1167 SetRenderFrameCreated(false);
1168 InvalidateMojoConnection(); 1168 InvalidateMojoConnection();
1169 1169
1170 // Execute any pending AX tree snapshot callbacks with an empty response, 1170 // Execute any pending AX tree snapshot callbacks with an empty response,
1171 // since we're never going to get a response from this renderer. 1171 // since we're never going to get a response from this renderer.
1172 for (const auto& iter : ax_tree_snapshot_callbacks_) 1172 for (const auto& iter : ax_tree_snapshot_callbacks_)
1173 iter.second.Run(ui::AXTreeUpdate<ui::AXNodeData>()); 1173 iter.second.Run(ui::AXTreeUpdate());
1174 ax_tree_snapshot_callbacks_.clear(); 1174 ax_tree_snapshot_callbacks_.clear();
1175 1175
1176 // Note: don't add any more code at this point in the function because 1176 // Note: don't add any more code at this point in the function because
1177 // |this| may be deleted. Any additional cleanup should happen before 1177 // |this| may be deleted. Any additional cleanup should happen before
1178 // the last block of code here. 1178 // the last block of code here.
1179 } 1179 }
1180 1180
1181 void RenderFrameHostImpl::OnSwappedOut() { 1181 void RenderFrameHostImpl::OnSwappedOut() {
1182 // Ignore spurious swap out ack. 1182 // Ignore spurious swap out ack.
1183 if (rfh_state_ != STATE_PENDING_SWAP_OUT) 1183 if (rfh_state_ != STATE_PENDING_SWAP_OUT)
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
1416 GetOrCreateBrowserAccessibilityManager(); 1416 GetOrCreateBrowserAccessibilityManager();
1417 1417
1418 std::vector<AXEventNotificationDetails> details; 1418 std::vector<AXEventNotificationDetails> details;
1419 details.reserve(params.size()); 1419 details.reserve(params.size());
1420 for (size_t i = 0; i < params.size(); ++i) { 1420 for (size_t i = 0; i < params.size(); ++i) {
1421 const AccessibilityHostMsg_EventParams& param = params[i]; 1421 const AccessibilityHostMsg_EventParams& param = params[i];
1422 AXEventNotificationDetails detail; 1422 AXEventNotificationDetails detail;
1423 detail.event_type = param.event_type; 1423 detail.event_type = param.event_type;
1424 detail.id = param.id; 1424 detail.id = param.id;
1425 detail.ax_tree_id = GetAXTreeID(); 1425 detail.ax_tree_id = GetAXTreeID();
1426 if (param.update.has_tree_data) {
1427 detail.update.has_tree_data = true;
1428 AXContentTreeDataToAXTreeData(param.update.tree_data,
1429 &detail.update.tree_data);
1430 }
1426 detail.update.node_id_to_clear = param.update.node_id_to_clear; 1431 detail.update.node_id_to_clear = param.update.node_id_to_clear;
1427 detail.update.nodes.resize(param.update.nodes.size()); 1432 detail.update.nodes.resize(param.update.nodes.size());
1428 for (size_t i = 0; i < param.update.nodes.size(); ++i) { 1433 for (size_t i = 0; i < param.update.nodes.size(); ++i) {
1429 AXContentNodeDataToAXNodeData(param.update.nodes[i], 1434 AXContentNodeDataToAXNodeData(param.update.nodes[i],
1430 &detail.update.nodes[i]); 1435 &detail.update.nodes[i]);
1431 } 1436 }
1432 details.push_back(detail); 1437 details.push_back(detail);
1433 } 1438 }
1434 1439
1435 if (accessibility_mode & AccessibilityModeFlagPlatform) { 1440 if (accessibility_mode & AccessibilityModeFlagPlatform) {
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
1497 if (manager) { 1502 if (manager) {
1498 manager->OnFindInPageResult( 1503 manager->OnFindInPageResult(
1499 params.request_id, params.match_index, params.start_id, 1504 params.request_id, params.match_index, params.start_id,
1500 params.start_offset, params.end_id, params.end_offset); 1505 params.start_offset, params.end_id, params.end_offset);
1501 } 1506 }
1502 } 1507 }
1503 } 1508 }
1504 1509
1505 void RenderFrameHostImpl::OnAccessibilitySnapshotResponse( 1510 void RenderFrameHostImpl::OnAccessibilitySnapshotResponse(
1506 int callback_id, 1511 int callback_id,
1507 const ui::AXTreeUpdate<AXContentNodeData>& snapshot) { 1512 const AXContentTreeUpdate& snapshot) {
1508 const auto& it = ax_tree_snapshot_callbacks_.find(callback_id); 1513 const auto& it = ax_tree_snapshot_callbacks_.find(callback_id);
1509 if (it != ax_tree_snapshot_callbacks_.end()) { 1514 if (it != ax_tree_snapshot_callbacks_.end()) {
1510 ui::AXTreeUpdate<ui::AXNodeData> dst_snapshot; 1515 ui::AXTreeUpdate dst_snapshot;
1511 dst_snapshot.nodes.resize(snapshot.nodes.size()); 1516 dst_snapshot.nodes.resize(snapshot.nodes.size());
1512 for (size_t i = 0; i < snapshot.nodes.size(); ++i) { 1517 for (size_t i = 0; i < snapshot.nodes.size(); ++i) {
1513 AXContentNodeDataToAXNodeData(snapshot.nodes[i], 1518 AXContentNodeDataToAXNodeData(snapshot.nodes[i],
1514 &dst_snapshot.nodes[i]); 1519 &dst_snapshot.nodes[i]);
1515 } 1520 }
1521 if (snapshot.has_tree_data) {
1522 AXContentTreeDataToAXTreeData(snapshot.tree_data,
1523 &dst_snapshot.tree_data);
1524 }
1516 it->second.Run(dst_snapshot); 1525 it->second.Run(dst_snapshot);
1517 ax_tree_snapshot_callbacks_.erase(it); 1526 ax_tree_snapshot_callbacks_.erase(it);
1518 } else { 1527 } else {
1519 NOTREACHED() << "Received AX tree snapshot response for unknown id"; 1528 NOTREACHED() << "Received AX tree snapshot response for unknown id";
1520 } 1529 }
1521 } 1530 }
1522 1531
1523 void RenderFrameHostImpl::OnToggleFullscreen(bool enter_fullscreen) { 1532 void RenderFrameHostImpl::OnToggleFullscreen(bool enter_fullscreen) {
1524 if (enter_fullscreen) 1533 if (enter_fullscreen)
1525 delegate_->EnterFullscreenMode(GetLastCommittedURL().GetOrigin()); 1534 delegate_->EnterFullscreenMode(GetLastCommittedURL().GetOrigin());
(...skipping 716 matching lines...) Expand 10 before | Expand all | Expand 10 after
2242 ui::AXNodeData* dst) { 2251 ui::AXNodeData* dst) {
2243 // Copy the common fields. 2252 // Copy the common fields.
2244 *dst = src; 2253 *dst = src;
2245 2254
2246 // Map content-specific attributes based on routing IDs or browser plugin 2255 // Map content-specific attributes based on routing IDs or browser plugin
2247 // instance IDs to generic attributes with global AXTreeIDs. 2256 // instance IDs to generic attributes with global AXTreeIDs.
2248 for (auto iter : src.content_int_attributes) { 2257 for (auto iter : src.content_int_attributes) {
2249 AXContentIntAttribute attr = iter.first; 2258 AXContentIntAttribute attr = iter.first;
2250 int32 value = iter.second; 2259 int32 value = iter.second;
2251 switch (attr) { 2260 switch (attr) {
2252 case AX_CONTENT_ATTR_ROUTING_ID:
2253 dst->int_attributes.push_back(std::make_pair(
2254 ui::AX_ATTR_TREE_ID, RoutingIDToAXTreeID(value)));
2255 break;
2256 case AX_CONTENT_ATTR_PARENT_ROUTING_ID:
2257 dst->int_attributes.push_back(std::make_pair(
2258 ui::AX_ATTR_PARENT_TREE_ID, RoutingIDToAXTreeID(value)));
2259 break;
2260 case AX_CONTENT_ATTR_CHILD_ROUTING_ID: 2261 case AX_CONTENT_ATTR_CHILD_ROUTING_ID:
2261 dst->int_attributes.push_back(std::make_pair( 2262 dst->int_attributes.push_back(std::make_pair(
2262 ui::AX_ATTR_CHILD_TREE_ID, RoutingIDToAXTreeID(value))); 2263 ui::AX_ATTR_CHILD_TREE_ID, RoutingIDToAXTreeID(value)));
2263 break; 2264 break;
2264 case AX_CONTENT_ATTR_CHILD_BROWSER_PLUGIN_INSTANCE_ID: 2265 case AX_CONTENT_ATTR_CHILD_BROWSER_PLUGIN_INSTANCE_ID:
2265 dst->int_attributes.push_back(std::make_pair( 2266 dst->int_attributes.push_back(std::make_pair(
2266 ui::AX_ATTR_CHILD_TREE_ID, 2267 ui::AX_ATTR_CHILD_TREE_ID,
2267 BrowserPluginInstanceIDToAXTreeID(value))); 2268 BrowserPluginInstanceIDToAXTreeID(value)));
2268 break; 2269 break;
2269 case AX_CONTENT_INT_ATTRIBUTE_LAST: 2270 case AX_CONTENT_INT_ATTRIBUTE_LAST:
2270 NOTREACHED(); 2271 NOTREACHED();
2271 break; 2272 break;
2272 } 2273 }
2273 } 2274 }
2274 } 2275 }
2275 2276
2277 void RenderFrameHostImpl::AXContentTreeDataToAXTreeData(
2278 const AXContentTreeData& src,
2279 ui::AXTreeData* dst) {
2280 // Copy the common fields.
2281 *dst = src;
2282
2283 if (src.routing_id != -1)
2284 dst->tree_id = RoutingIDToAXTreeID(src.routing_id);
2285
2286 if (src.parent_routing_id != -1)
2287 dst->parent_tree_id = RoutingIDToAXTreeID(src.parent_routing_id);
2288 }
2289
2276 } // namespace content 2290 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698