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

Side by Side Diff: content/renderer/accessibility/blink_ax_tree_source.cc

Issue 1768753003: Implemented the reporting of text style and language information on Windows. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Updated to using HashTable from base and GetInheritedStringAttribute instead of specialized methods… Created 4 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/renderer/accessibility/blink_ax_tree_source.h" 5 #include "content/renderer/accessibility/blink_ax_tree_source.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <set> 9 #include <set>
10 10
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
131 } 131 }
132 return false; 132 return false;
133 } 133 }
134 134
135 AXContentTreeData BlinkAXTreeSource::GetTreeData() const { 135 AXContentTreeData BlinkAXTreeSource::GetTreeData() const {
136 AXContentTreeData tree_data; 136 AXContentTreeData tree_data;
137 137
138 blink::WebDocument document = BlinkAXTreeSource::GetMainDocument(); 138 blink::WebDocument document = BlinkAXTreeSource::GetMainDocument();
139 const blink::WebAXObject& root = GetRoot(); 139 const blink::WebAXObject& root = GetRoot();
140 140
141 tree_data.doctype = "html";
142 tree_data.loaded = root.isLoaded();
143 tree_data.loading_progress = root.estimatedLoadingProgress();
144 tree_data.mimetype = document.isXHTMLDocument() ? "text/xhtml" : "text/html";
141 tree_data.title = document.title().utf8(); 145 tree_data.title = document.title().utf8();
142 tree_data.url = document.url().string().utf8(); 146 tree_data.url = document.url().string().utf8();
143 tree_data.mimetype = document.isXHTMLDocument() ? "text/xhtml" : "text/html";
144 tree_data.loaded = root.isLoaded();
145 tree_data.loading_progress = root.estimatedLoadingProgress();
146 tree_data.doctype = "html";
147 147
148 WebAXObject focus = document.focusedAccessibilityObject(); 148 WebAXObject focus = document.focusedAccessibilityObject();
149 if (!focus.isNull()) 149 if (!focus.isNull())
150 tree_data.focus_id = focus.axID(); 150 tree_data.focus_id = focus.axID();
151 151
152 WebAXObject anchor_object, focus_object; 152 WebAXObject anchor_object, focus_object;
153 int anchor_offset, focus_offset; 153 int anchor_offset, focus_offset;
154 root.selection(anchor_object, anchor_offset, focus_object, focus_offset); 154 root.selection(anchor_object, anchor_offset, focus_object, focus_offset);
155 if (!anchor_object.isNull() && !focus_object.isNull() && 155 if (!anchor_object.isNull() && !focus_object.isNull() &&
156 anchor_offset >= 0 && focus_offset >= 0) { 156 anchor_offset >= 0 && focus_offset >= 0) {
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 dst->AddIntAttribute(ui::AX_ATTR_COLOR_VALUE, src.colorValue()); 302 dst->AddIntAttribute(ui::AX_ATTR_COLOR_VALUE, src.colorValue());
303 303
304 304
305 // Text attributes. 305 // Text attributes.
306 if (src.backgroundColor()) 306 if (src.backgroundColor())
307 dst->AddIntAttribute(ui::AX_ATTR_BACKGROUND_COLOR, src.backgroundColor()); 307 dst->AddIntAttribute(ui::AX_ATTR_BACKGROUND_COLOR, src.backgroundColor());
308 308
309 if (src.color()) 309 if (src.color())
310 dst->AddIntAttribute(ui::AX_ATTR_COLOR, src.color()); 310 dst->AddIntAttribute(ui::AX_ATTR_COLOR, src.color());
311 311
312 if (src.fontFamily().length()) {
313 WebAXObject parent = src.parentObject();
314 if (parent.isNull() || parent.fontFamily() != src.fontFamily())
315 dst->AddStringAttribute(ui::AX_ATTR_FONT_FAMILY, src.fontFamily().utf8());
316 }
317
312 // Font size is in pixels. 318 // Font size is in pixels.
313 if (src.fontSize()) 319 if (src.fontSize())
314 dst->AddFloatAttribute(ui::AX_ATTR_FONT_SIZE, src.fontSize()); 320 dst->AddFloatAttribute(ui::AX_ATTR_FONT_SIZE, src.fontSize());
315 321
316 if (src.invalidState()) { 322 if (src.invalidState()) {
317 dst->AddIntAttribute(ui::AX_ATTR_INVALID_STATE, 323 dst->AddIntAttribute(ui::AX_ATTR_INVALID_STATE,
318 AXInvalidStateFromBlink(src.invalidState())); 324 AXInvalidStateFromBlink(src.invalidState()));
319 } 325 }
320 if (src.invalidState() == blink::WebAXInvalidStateOther) { 326 if (src.invalidState() == blink::WebAXInvalidStateOther &&
327 src.ariaInvalidValue().length()) {
321 dst->AddStringAttribute( 328 dst->AddStringAttribute(
322 ui::AX_ATTR_ARIA_INVALID_VALUE, src.ariaInvalidValue().utf8()); 329 ui::AX_ATTR_ARIA_INVALID_VALUE, src.ariaInvalidValue().utf8());
323 } 330 }
324 331
325 if (src.textDirection()) { 332 if (src.textDirection()) {
326 dst->AddIntAttribute(ui::AX_ATTR_TEXT_DIRECTION, 333 dst->AddIntAttribute(ui::AX_ATTR_TEXT_DIRECTION,
327 AXTextDirectionFromBlink(src.textDirection())); 334 AXTextDirectionFromBlink(src.textDirection()));
328 } 335 }
329 336
330 if (src.textStyle()) { 337 if (src.textStyle()) {
(...skipping 26 matching lines...) Expand all
357 dst->AddIntListAttribute(ui::AX_ATTR_WORD_ENDS, word_ends); 364 dst->AddIntListAttribute(ui::AX_ATTR_WORD_ENDS, word_ends);
358 } 365 }
359 366
360 if (src.accessKey().length()) { 367 if (src.accessKey().length()) {
361 dst->AddStringAttribute(ui::AX_ATTR_ACCESS_KEY, src.accessKey().utf8()); 368 dst->AddStringAttribute(ui::AX_ATTR_ACCESS_KEY, src.accessKey().utf8());
362 } 369 }
363 370
364 if (src.actionVerb().length()) { 371 if (src.actionVerb().length()) {
365 dst->AddStringAttribute(ui::AX_ATTR_ACTION, src.actionVerb().utf8()); 372 dst->AddStringAttribute(ui::AX_ATTR_ACTION, src.actionVerb().utf8());
366 } 373 }
367 if (src.ariaAutoComplete().length()) 374
375 if (src.ariaAutoComplete().length()) {
368 dst->AddStringAttribute( 376 dst->AddStringAttribute(
369 ui::AX_ATTR_AUTO_COMPLETE, 377 ui::AX_ATTR_AUTO_COMPLETE,
370 src.ariaAutoComplete().utf8()); 378 src.ariaAutoComplete().utf8());
379 }
380
371 if (src.isAriaReadOnly()) 381 if (src.isAriaReadOnly())
372 dst->AddBoolAttribute(ui::AX_ATTR_ARIA_READONLY, true); 382 dst->AddBoolAttribute(ui::AX_ATTR_ARIA_READONLY, true);
383
373 if (src.isButtonStateMixed()) 384 if (src.isButtonStateMixed())
374 dst->AddBoolAttribute(ui::AX_ATTR_STATE_MIXED, true); 385 dst->AddBoolAttribute(ui::AX_ATTR_STATE_MIXED, true);
386
375 if (src.canSetValueAttribute()) 387 if (src.canSetValueAttribute())
376 dst->AddBoolAttribute(ui::AX_ATTR_CAN_SET_VALUE, true); 388 dst->AddBoolAttribute(ui::AX_ATTR_CAN_SET_VALUE, true);
389
377 if (src.hasComputedStyle()) { 390 if (src.hasComputedStyle()) {
378 dst->AddStringAttribute( 391 dst->AddStringAttribute(
379 ui::AX_ATTR_DISPLAY, src.computedStyleDisplay().utf8()); 392 ui::AX_ATTR_DISPLAY, src.computedStyleDisplay().utf8());
380 } 393 }
394
395 if (src.language().length()) {
396 WebAXObject parent = src.parentObject();
397 if (parent.isNull() || parent.language() != src.language())
398 dst->AddStringAttribute(ui::AX_ATTR_LANGUAGE, src.language().utf8());
399 }
400
381 if (src.keyboardShortcut().length()) { 401 if (src.keyboardShortcut().length()) {
382 dst->AddStringAttribute( 402 dst->AddStringAttribute(
383 ui::AX_ATTR_SHORTCUT, 403 ui::AX_ATTR_SHORTCUT,
384 src.keyboardShortcut().utf8()); 404 src.keyboardShortcut().utf8());
385 } 405 }
406
386 if (!src.ariaActiveDescendant().isDetached()) { 407 if (!src.ariaActiveDescendant().isDetached()) {
387 dst->AddIntAttribute(ui::AX_ATTR_ACTIVEDESCENDANT_ID, 408 dst->AddIntAttribute(ui::AX_ATTR_ACTIVEDESCENDANT_ID,
388 src.ariaActiveDescendant().axID()); 409 src.ariaActiveDescendant().axID());
389 } 410 }
390 411
391 if (!src.url().isEmpty()) 412 if (!src.url().isEmpty())
392 dst->AddStringAttribute(ui::AX_ATTR_URL, src.url().string().utf8()); 413 dst->AddStringAttribute(ui::AX_ATTR_URL, src.url().string().utf8());
393 414
394 if (dst->role == ui::AX_ROLE_HEADING) 415 if (dst->role == ui::AX_ROLE_HEADING)
395 dst->AddIntAttribute(ui::AX_ATTR_HIERARCHICAL_LEVEL, src.headingLevel()); 416 dst->AddIntAttribute(ui::AX_ATTR_HIERARCHICAL_LEVEL, src.headingLevel());
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
621 } 642 }
622 } 643 }
623 644
624 blink::WebDocument BlinkAXTreeSource::GetMainDocument() const { 645 blink::WebDocument BlinkAXTreeSource::GetMainDocument() const {
625 if (render_frame_ && render_frame_->GetWebFrame()) 646 if (render_frame_ && render_frame_->GetWebFrame())
626 return render_frame_->GetWebFrame()->document(); 647 return render_frame_->GetWebFrame()->document();
627 return WebDocument(); 648 return WebDocument();
628 } 649 }
629 650
630 } // namespace content 651 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698