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

Side by Side Diff: content/browser/accessibility/browser_accessibility_manager.cc

Issue 2759903002: Accessible bounds should include device scale factor on Windows. (Closed)
Patch Set: Rename to use_custom_device_scale_factor_for_testing 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/accessibility/browser_accessibility_manager.h" 5 #include "content/browser/accessibility/browser_accessibility_manager.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 BrowserAccessibilityFactory* factory) 129 BrowserAccessibilityFactory* factory)
130 : delegate_(delegate), 130 : delegate_(delegate),
131 factory_(factory), 131 factory_(factory),
132 tree_(new ui::AXSerializableTree()), 132 tree_(new ui::AXSerializableTree()),
133 user_is_navigating_away_(false), 133 user_is_navigating_away_(false),
134 osk_state_(OSK_ALLOWED), 134 osk_state_(OSK_ALLOWED),
135 last_focused_node_(nullptr), 135 last_focused_node_(nullptr),
136 last_focused_manager_(nullptr), 136 last_focused_manager_(nullptr),
137 connected_to_parent_tree_node_(false), 137 connected_to_parent_tree_node_(false),
138 ax_tree_id_(ui::AXTreeIDRegistry::kNoAXTreeID), 138 ax_tree_id_(ui::AXTreeIDRegistry::kNoAXTreeID),
139 parent_node_id_from_parent_tree_(0) { 139 parent_node_id_from_parent_tree_(0),
140 device_scale_factor_(1.0f),
141 use_custom_device_scale_factor_for_testing_(false) {
140 tree_->SetDelegate(this); 142 tree_->SetDelegate(this);
141 } 143 }
142 144
143 BrowserAccessibilityManager::BrowserAccessibilityManager( 145 BrowserAccessibilityManager::BrowserAccessibilityManager(
144 const ui::AXTreeUpdate& initial_tree, 146 const ui::AXTreeUpdate& initial_tree,
145 BrowserAccessibilityDelegate* delegate, 147 BrowserAccessibilityDelegate* delegate,
146 BrowserAccessibilityFactory* factory) 148 BrowserAccessibilityFactory* factory)
147 : delegate_(delegate), 149 : delegate_(delegate),
148 factory_(factory), 150 factory_(factory),
149 tree_(new ui::AXSerializableTree()), 151 tree_(new ui::AXSerializableTree()),
150 user_is_navigating_away_(false), 152 user_is_navigating_away_(false),
151 osk_state_(OSK_ALLOWED), 153 osk_state_(OSK_ALLOWED),
152 last_focused_node_(nullptr), 154 last_focused_node_(nullptr),
153 last_focused_manager_(nullptr), 155 last_focused_manager_(nullptr),
154 ax_tree_id_(ui::AXTreeIDRegistry::kNoAXTreeID), 156 ax_tree_id_(ui::AXTreeIDRegistry::kNoAXTreeID),
155 parent_node_id_from_parent_tree_(0) { 157 parent_node_id_from_parent_tree_(0),
158 device_scale_factor_(1.0f),
159 use_custom_device_scale_factor_for_testing_(false) {
156 tree_->SetDelegate(this); 160 tree_->SetDelegate(this);
157 Initialize(initial_tree); 161 Initialize(initial_tree);
158 } 162 }
159 163
160 BrowserAccessibilityManager::~BrowserAccessibilityManager() { 164 BrowserAccessibilityManager::~BrowserAccessibilityManager() {
161 tree_.reset(NULL); 165 tree_.reset(NULL);
162 g_ax_tree_id_map.Get().erase(ax_tree_id_); 166 g_ax_tree_id_map.Get().erase(ax_tree_id_);
163 } 167 }
164 168
165 void BrowserAccessibilityManager::Initialize( 169 void BrowserAccessibilityManager::Initialize(
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
329 void BrowserAccessibilityManager::NavigationFailed() { 333 void BrowserAccessibilityManager::NavigationFailed() {
330 user_is_navigating_away_ = false; 334 user_is_navigating_away_ = false;
331 } 335 }
332 336
333 bool BrowserAccessibilityManager::UseRootScrollOffsetsWhenComputingBounds() { 337 bool BrowserAccessibilityManager::UseRootScrollOffsetsWhenComputingBounds() {
334 return true; 338 return true;
335 } 339 }
336 340
337 void BrowserAccessibilityManager::OnAccessibilityEvents( 341 void BrowserAccessibilityManager::OnAccessibilityEvents(
338 const std::vector<AXEventNotificationDetails>& details) { 342 const std::vector<AXEventNotificationDetails>& details) {
343 // Update the cached device scale factor.
344 if (delegate_ && !use_custom_device_scale_factor_for_testing_)
345 device_scale_factor_ = delegate_->AccessibilityGetDeviceScaleFactor();
346
339 // Process all changes to the accessibility tree first. 347 // Process all changes to the accessibility tree first.
340 for (uint32_t index = 0; index < details.size(); ++index) { 348 for (uint32_t index = 0; index < details.size(); ++index) {
341 const AXEventNotificationDetails& detail = details[index]; 349 const AXEventNotificationDetails& detail = details[index];
342 if (!tree_->Unserialize(detail.update)) { 350 if (!tree_->Unserialize(detail.update)) {
343 if (delegate_) { 351 if (delegate_) {
344 LOG(ERROR) << tree_->error(); 352 LOG(ERROR) << tree_->error();
345 delegate_->AccessibilityFatalError(); 353 delegate_->AccessibilityFatalError();
346 } else { 354 } else {
347 CHECK(false) << tree_->error(); 355 CHECK(false) << tree_->error();
348 } 356 }
(...skipping 843 matching lines...) Expand 10 before | Expand all | Expand 10 after
1192 ui::AXTreeSource<const ui::AXNode*, ui::AXNodeData, ui::AXTreeData>> 1200 ui::AXTreeSource<const ui::AXNode*, ui::AXNodeData, ui::AXTreeData>>
1193 tree_source(tree_->CreateTreeSource()); 1201 tree_source(tree_->CreateTreeSource());
1194 ui::AXTreeSerializer<const ui::AXNode*, 1202 ui::AXTreeSerializer<const ui::AXNode*,
1195 ui::AXNodeData, 1203 ui::AXNodeData,
1196 ui::AXTreeData> serializer(tree_source.get()); 1204 ui::AXTreeData> serializer(tree_source.get());
1197 ui::AXTreeUpdate update; 1205 ui::AXTreeUpdate update;
1198 serializer.SerializeChanges(tree_->root(), &update); 1206 serializer.SerializeChanges(tree_->root(), &update);
1199 return update; 1207 return update;
1200 } 1208 }
1201 1209
1210 void BrowserAccessibilityManager::UseCustomDeviceScaleFactorForTesting(
1211 float device_scale_factor) {
1212 use_custom_device_scale_factor_for_testing_ = true;
1213 device_scale_factor_ = device_scale_factor;
1214 }
1215
1202 BrowserAccessibility* BrowserAccessibilityManager::CachingAsyncHitTest( 1216 BrowserAccessibility* BrowserAccessibilityManager::CachingAsyncHitTest(
1203 const gfx::Point& screen_point) { 1217 const gfx::Point& screen_point) {
1204 BrowserAccessibilityManager* root_manager = GetRootManager(); 1218 BrowserAccessibilityManager* root_manager = GetRootManager();
1205 if (root_manager && root_manager != this) 1219 if (root_manager && root_manager != this)
1206 return root_manager->CachingAsyncHitTest(screen_point); 1220 return root_manager->CachingAsyncHitTest(screen_point);
1207 1221
1208 if (delegate()) { 1222 if (delegate()) {
1209 // This triggers an asynchronous request to compute the true object that's 1223 // This triggers an asynchronous request to compute the true object that's
1210 // under |screen_point|. 1224 // under |screen_point|.
1211 HitTest(screen_point - GetViewBounds().OffsetFromOrigin()); 1225 HitTest(screen_point - GetViewBounds().OffsetFromOrigin());
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
1244 hit_test_result = parent; 1258 hit_test_result = parent;
1245 parent = parent->GetParent(); 1259 parent = parent->GetParent();
1246 } 1260 }
1247 1261
1248 last_hover_ax_tree_id_ = hit_test_result->manager()->ax_tree_id(); 1262 last_hover_ax_tree_id_ = hit_test_result->manager()->ax_tree_id();
1249 last_hover_node_id_ = hit_test_result->GetId(); 1263 last_hover_node_id_ = hit_test_result->GetId();
1250 last_hover_bounds_ = hit_test_result->GetScreenBoundsRect(); 1264 last_hover_bounds_ = hit_test_result->GetScreenBoundsRect();
1251 } 1265 }
1252 1266
1253 } // namespace content 1267 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698