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

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

Issue 25943003: Support accessible inline text boxes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 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 | Annotate | Revision Log
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/renderer/accessibility/accessibility_node_serializer.h" 5 #include "content/renderer/accessibility/accessibility_node_serializer.h"
6 6
7 #include <set> 7 #include <set>
8 8
9 #include "base/strings/string_number_conversions.h" 9 #include "base/strings/string_number_conversions.h"
10 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 } 144 }
145 145
146 if (dst->role == WebKit::WebAXRoleColorWell) { 146 if (dst->role == WebKit::WebAXRoleColorWell) {
147 int r, g, b; 147 int r, g, b;
148 src.colorValue(r, g, b); 148 src.colorValue(r, g, b);
149 dst->AddIntAttribute(dst->ATTR_COLOR_VALUE_RED, r); 149 dst->AddIntAttribute(dst->ATTR_COLOR_VALUE_RED, r);
150 dst->AddIntAttribute(dst->ATTR_COLOR_VALUE_GREEN, g); 150 dst->AddIntAttribute(dst->ATTR_COLOR_VALUE_GREEN, g);
151 dst->AddIntAttribute(dst->ATTR_COLOR_VALUE_BLUE, b); 151 dst->AddIntAttribute(dst->ATTR_COLOR_VALUE_BLUE, b);
152 } 152 }
153 153
154 if (dst->role == WebKit::WebAXRoleInlineTextBox) {
155 dst->AddIntAttribute(dst->ATTR_TEXT_DIRECTION, src.textDirection());
156
157 WebVector<int> src_character_offsets;
158 src.characterOffsets(src_character_offsets);
159 std::vector<int32> character_offsets;
160 character_offsets.reserve(src_character_offsets.size());
161 for (size_t i = 0; i < src_character_offsets.size(); ++i)
162 character_offsets.push_back(src_character_offsets[i]);
163 dst->AddIntListAttribute(dst->ATTR_CHARACTER_OFFSETS, character_offsets);
164
165 WebVector<int> src_word_starts;
166 WebVector<int> src_word_ends;
167 src.wordBoundaries(src_word_starts, src_word_ends);
168 std::vector<int32> word_starts;
169 std::vector<int32> word_ends;
170 word_starts.reserve(src_word_starts.size());
171 word_ends.reserve(src_word_starts.size());
172 for (size_t i = 0; i < src_word_starts.size(); ++i) {
173 word_starts.push_back(src_word_starts[i]);
174 word_ends.push_back(src_word_ends[i]);
175 }
176 dst->AddIntListAttribute(dst->ATTR_WORD_STARTS, word_starts);
177 dst->AddIntListAttribute(dst->ATTR_WORD_ENDS, word_ends);
David Tseng 2013/10/17 22:56:29 It seems like a good idea to perhaps have a few du
dmazzoni 2013/10/21 17:26:57 Agreed about testing these. I don't want to use d
178 }
179
154 if (src.accessKey().length()) 180 if (src.accessKey().length())
155 dst->AddStringAttribute(dst->ATTR_ACCESS_KEY, UTF16ToUTF8(src.accessKey())); 181 dst->AddStringAttribute(dst->ATTR_ACCESS_KEY, UTF16ToUTF8(src.accessKey()));
156 if (src.actionVerb().length()) 182 if (src.actionVerb().length())
157 dst->AddStringAttribute(dst->ATTR_ACTION, UTF16ToUTF8(src.actionVerb())); 183 dst->AddStringAttribute(dst->ATTR_ACTION, UTF16ToUTF8(src.actionVerb()));
158 if (src.isAriaReadOnly()) 184 if (src.isAriaReadOnly())
159 dst->AddBoolAttribute(dst->ATTR_ARIA_READONLY, true); 185 dst->AddBoolAttribute(dst->ATTR_ARIA_READONLY, true);
160 if (src.isButtonStateMixed()) 186 if (src.isButtonStateMixed())
161 dst->AddBoolAttribute(dst->ATTR_BUTTON_MIXED, true); 187 dst->AddBoolAttribute(dst->ATTR_BUTTON_MIXED, true);
162 if (src.canSetValueAttribute()) 188 if (src.canSetValueAttribute())
163 dst->AddBoolAttribute(dst->ATTR_CAN_SET_VALUE, true); 189 dst->AddBoolAttribute(dst->ATTR_CAN_SET_VALUE, true);
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 WebNode node = parent.node(); 488 WebNode node = parent.node();
463 if (!node.isNull() && node.isElementNode()) { 489 if (!node.isNull() && node.isElementNode()) {
464 WebElement element = node.to<WebElement>(); 490 WebElement element = node.to<WebElement>();
465 is_iframe = (element.tagName() == ASCIIToUTF16("IFRAME")); 491 is_iframe = (element.tagName() == ASCIIToUTF16("IFRAME"));
466 } 492 }
467 493
468 return (is_iframe || IsParentUnignoredOf(parent, child)); 494 return (is_iframe || IsParentUnignoredOf(parent, child));
469 } 495 }
470 496
471 } // namespace content 497 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698