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

Side by Side Diff: webkit/tools/test_shell/accessibility_ui_element.cc

Issue 15028002: Delete test_shell. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add dummy test_shell build target. Created 7 years, 7 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
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "base/bind.h"
6 #include "base/bind_helpers.h"
7 #include "base/logging.h"
8 #include "third_party/WebKit/Source/Platform/chromium/public/WebCString.h"
9 #include "third_party/WebKit/Source/Platform/chromium/public/WebString.h"
10 #include "third_party/WebKit/Source/WebKit/chromium/public/WebAccessibilityObjec t.h"
11 #include "webkit/tools/test_shell/accessibility_ui_element.h"
12
13 using WebKit::WebCString;
14 using WebKit::WebString;
15 using WebKit::WebAccessibilityObject;
16 using WebKit::WebAccessibilityRole;
17 using webkit_glue::CppArgumentList;
18 using webkit_glue::CppVariant;
19
20 namespace {
21
22 // Map role value to string, matching Safari/Mac platform implementation to
23 // avoid rebaselining layout tests.
24 static std::string RoleToString(WebAccessibilityRole role) {
25 std::string result = "AXRole: AX";
26 switch (role) {
27 case WebKit::WebAccessibilityRoleButton:
28 return result.append("Button");
29 case WebKit::WebAccessibilityRoleRadioButton:
30 return result.append("RadioButton");
31 case WebKit::WebAccessibilityRoleCheckBox:
32 return result.append("CheckBox");
33 case WebKit::WebAccessibilityRoleSlider:
34 return result.append("Slider");
35 case WebKit::WebAccessibilityRoleTabGroup:
36 return result.append("TabGroup");
37 case WebKit::WebAccessibilityRoleTextField:
38 return result.append("TextField");
39 case WebKit::WebAccessibilityRoleStaticText:
40 return result.append("StaticText");
41 case WebKit::WebAccessibilityRoleTextArea:
42 return result.append("TextArea");
43 case WebKit::WebAccessibilityRoleScrollArea:
44 return result.append("ScrollArea");
45 case WebKit::WebAccessibilityRolePopUpButton:
46 return result.append("PopUpButton");
47 case WebKit::WebAccessibilityRoleMenuButton:
48 return result.append("MenuButton");
49 case WebKit::WebAccessibilityRoleTable:
50 return result.append("Table");
51 case WebKit::WebAccessibilityRoleApplication:
52 return result.append("Application");
53 case WebKit::WebAccessibilityRoleGroup:
54 return result.append("Group");
55 case WebKit::WebAccessibilityRoleRadioGroup:
56 return result.append("RadioGroup");
57 case WebKit::WebAccessibilityRoleList:
58 return result.append("List");
59 case WebKit::WebAccessibilityRoleScrollBar:
60 return result.append("ScrollBar");
61 case WebKit::WebAccessibilityRoleValueIndicator:
62 return result.append("ValueIndicator");
63 case WebKit::WebAccessibilityRoleImage:
64 return result.append("Image");
65 case WebKit::WebAccessibilityRoleMenuBar:
66 return result.append("MenuBar");
67 case WebKit::WebAccessibilityRoleMenu:
68 return result.append("Menu");
69 case WebKit::WebAccessibilityRoleMenuItem:
70 return result.append("MenuItem");
71 case WebKit::WebAccessibilityRoleColumn:
72 return result.append("Column");
73 case WebKit::WebAccessibilityRoleRow:
74 return result.append("Row");
75 case WebKit::WebAccessibilityRoleToolbar:
76 return result.append("Toolbar");
77 case WebKit::WebAccessibilityRoleBusyIndicator:
78 return result.append("BusyIndicator");
79 case WebKit::WebAccessibilityRoleProgressIndicator:
80 return result.append("ProgressIndicator");
81 case WebKit::WebAccessibilityRoleWindow:
82 return result.append("Window");
83 case WebKit::WebAccessibilityRoleDrawer:
84 return result.append("Drawer");
85 case WebKit::WebAccessibilityRoleSystemWide:
86 return result.append("SystemWide");
87 case WebKit::WebAccessibilityRoleOutline:
88 return result.append("Outline");
89 case WebKit::WebAccessibilityRoleIncrementor:
90 return result.append("Incrementor");
91 case WebKit::WebAccessibilityRoleBrowser:
92 return result.append("Browser");
93 case WebKit::WebAccessibilityRoleComboBox:
94 return result.append("ComboBox");
95 case WebKit::WebAccessibilityRoleSplitGroup:
96 return result.append("SplitGroup");
97 case WebKit::WebAccessibilityRoleSplitter:
98 return result.append("Splitter");
99 case WebKit::WebAccessibilityRoleColorWell:
100 return result.append("ColorWell");
101 case WebKit::WebAccessibilityRoleGrowArea:
102 return result.append("GrowArea");
103 case WebKit::WebAccessibilityRoleSheet:
104 return result.append("Sheet");
105 case WebKit::WebAccessibilityRoleHelpTag:
106 return result.append("HelpTag");
107 case WebKit::WebAccessibilityRoleMatte:
108 return result.append("Matte");
109 case WebKit::WebAccessibilityRoleRuler:
110 return result.append("Ruler");
111 case WebKit::WebAccessibilityRoleRulerMarker:
112 return result.append("RulerMarker");
113 case WebKit::WebAccessibilityRoleLink:
114 return result.append("Link");
115 case WebKit::WebAccessibilityRoleDisclosureTriangle:
116 return result.append("DisclosureTriangle");
117 case WebKit::WebAccessibilityRoleGrid:
118 return result.append("Grid");
119 case WebKit::WebAccessibilityRoleCell:
120 return result.append("Cell");
121 case WebKit::WebAccessibilityRoleColumnHeader:
122 return result.append("ColumnHeader");
123 case WebKit::WebAccessibilityRoleRowHeader:
124 return result.append("RowHeader");
125 case WebKit::WebAccessibilityRoleWebCoreLink:
126 // Maps to Link role.
127 return result.append("Link");
128 case WebKit::WebAccessibilityRoleImageMapLink:
129 return result.append("ImageMapLink");
130 case WebKit::WebAccessibilityRoleImageMap:
131 return result.append("ImageMap");
132 case WebKit::WebAccessibilityRoleListMarker:
133 return result.append("ListMarker");
134 case WebKit::WebAccessibilityRoleWebArea:
135 return result.append("WebArea");
136 case WebKit::WebAccessibilityRoleHeading:
137 return result.append("Heading");
138 case WebKit::WebAccessibilityRoleListBox:
139 return result.append("ListBox");
140 case WebKit::WebAccessibilityRoleListBoxOption:
141 return result.append("ListBoxOption");
142 case WebKit::WebAccessibilityRoleTableHeaderContainer:
143 return result.append("TableHeaderContainer");
144 //case WebKit::WebAccessibilityRoleDefinitionListTerm:
145 // return result.append("DefinitionListTerm");
146 //case WebKit::WebAccessibilityRoleDefinitionListDefinition:
147 // return result.append("DefinitionListDefinition");
148 case WebKit::WebAccessibilityRoleAnnotation:
149 return result.append("Annotation");
150 case WebKit::WebAccessibilityRoleSliderThumb:
151 return result.append("SliderThumb");
152 case WebKit::WebAccessibilityRoleLandmarkApplication:
153 return result.append("LandmarkApplication");
154 case WebKit::WebAccessibilityRoleLandmarkBanner:
155 return result.append("LandmarkBanner");
156 case WebKit::WebAccessibilityRoleLandmarkComplementary:
157 return result.append("LandmarkComplementary");
158 case WebKit::WebAccessibilityRoleLandmarkContentInfo:
159 return result.append("LandmarkContentInfo");
160 case WebKit::WebAccessibilityRoleLandmarkMain:
161 return result.append("LandmarkMain");
162 case WebKit::WebAccessibilityRoleLandmarkNavigation:
163 return result.append("LandmarkNavigation");
164 case WebKit::WebAccessibilityRoleLandmarkSearch:
165 return result.append("LandmarkSearch");
166 case WebKit::WebAccessibilityRoleApplicationLog:
167 return result.append("ApplicationLog");
168 case WebKit::WebAccessibilityRoleApplicationMarquee:
169 return result.append("ApplicationMarquee");
170 case WebKit::WebAccessibilityRoleApplicationStatus:
171 return result.append("ApplicationStatus");
172 case WebKit::WebAccessibilityRoleApplicationTimer:
173 return result.append("ApplicationTimer");
174 case WebKit::WebAccessibilityRoleDocument:
175 return result.append("Document");
176 case WebKit::WebAccessibilityRoleDocumentArticle:
177 return result.append("DocumentArticle");
178 case WebKit::WebAccessibilityRoleDocumentNote:
179 return result.append("DocumentNote");
180 case WebKit::WebAccessibilityRoleDocumentRegion:
181 return result.append("DocumentRegion");
182 case WebKit::WebAccessibilityRoleUserInterfaceTooltip:
183 return result.append("UserInterfaceTooltip");
184 default:
185 // Also matches WebAccessibilityRoleUnknown.
186 return result.append("Unknown");
187 }
188 }
189
190 std::string GetDescription(const WebAccessibilityObject& object) {
191 std::string description = object.accessibilityDescription().utf8();
192 return description.insert(0, "AXDescription: ");
193 }
194
195 std::string GetRole(const WebAccessibilityObject& object) {
196 return RoleToString(object.roleValue());
197 }
198
199 std::string GetTitle(const WebAccessibilityObject& object) {
200 std::string title = object.title().utf8();
201 return title.insert(0, "AXTitle: ");
202 }
203
204 std::string GetAttributes(const WebAccessibilityObject& object) {
205 // TODO(dglazkov): Concatenate all attributes of the AccessibilityObject.
206 std::string attributes(GetTitle(object));
207 attributes.append("\n");
208 attributes.append(GetRole(object));
209 attributes.append("\n");
210 attributes.append(GetDescription(object));
211 return attributes;
212 }
213
214
215 // Collects attributes into a string, delimited by dashes. Used by all methods
216 // that output lists of attributes: AttributesOfLinkedUIElementsCallback,
217 // AttributesOfChildrenCallback, etc.
218 class AttributesCollector {
219 public:
220 void CollectAttributes(const WebAccessibilityObject& object) {
221 attributes_.append("\n------------\n");
222 attributes_.append(GetAttributes(object));
223 }
224 std::string attributes() const { return attributes_; }
225
226 private:
227 std::string attributes_;
228 };
229
230 } // namespace
231
232 AccessibilityUIElement::AccessibilityUIElement(
233 const WebKit::WebAccessibilityObject& object,
234 Factory* factory)
235 : accessibility_object_(object),
236 factory_(factory) {
237
238 DCHECK(factory);
239
240 BindCallback("allAttributes",
241 base::Bind(&AccessibilityUIElement::AllAttributesCallback,
242 base::Unretained(this)));
243 BindCallback(
244 "attributesOfLinkedUIElements",
245 base::Bind(&AccessibilityUIElement::AttributesOfLinkedUIElementsCallback,
246 base::Unretained(this)));
247 BindCallback(
248 "attributesOfDocumentLinks",
249 base::Bind(&AccessibilityUIElement::AttributesOfDocumentLinksCallback,
250 base::Unretained(this)));
251 BindCallback(
252 "attributesOfChildren",
253 base::Bind(&AccessibilityUIElement::AttributesOfChildrenCallback,
254 base::Unretained(this)));
255 BindCallback(
256 "parameterizedAttributeNames",
257 base::Bind(&AccessibilityUIElement::ParametrizedAttributeNamesCallback,
258 base::Unretained(this)));
259 BindCallback("lineForIndex",
260 base::Bind(&AccessibilityUIElement::LineForIndexCallback,
261 base::Unretained(this)));
262 BindCallback("boundsForRange",
263 base::Bind(&AccessibilityUIElement::BoundsForRangeCallback,
264 base::Unretained(this)));
265 BindCallback("stringForRange",
266 base::Bind(&AccessibilityUIElement::StringForRangeCallback,
267 base::Unretained(this)));
268 BindCallback("childAtIndex",
269 base::Bind(&AccessibilityUIElement::ChildAtIndexCallback,
270 base::Unretained(this)));
271 BindCallback("elementAtPoint",
272 base::Bind(&AccessibilityUIElement::ElementAtPointCallback,
273 base::Unretained(this)));
274 BindCallback(
275 "attributesOfColumnHeaders",
276 base::Bind(&AccessibilityUIElement::AttributesOfColumnHeadersCallback,
277 base::Unretained(this)));
278 BindCallback(
279 "attributesOfRowHeaders",
280 base::Bind(&AccessibilityUIElement::AttributesOfRowHeadersCallback,
281 base::Unretained(this)));
282 BindCallback("attributesOfColumns",
283 base::Bind(&AccessibilityUIElement::AttributesOfColumnsCallback,
284 base::Unretained(this)));
285 BindCallback("attributesOfRows",
286 base::Bind(&AccessibilityUIElement::AttributesOfRowsCallback,
287 base::Unretained(this)));
288 BindCallback(
289 "attributesOfVisibleCells",
290 base::Bind(&AccessibilityUIElement::AttributesOfVisibleCellsCallback,
291 base::Unretained(this)));
292 BindCallback("attributesOfHeader",
293 base::Bind(&AccessibilityUIElement::AttributesOfHeaderCallback,
294 base::Unretained(this)));
295 BindCallback("indexInTable",
296 base::Bind(&AccessibilityUIElement::IndexInTableCallback,
297 base::Unretained(this)));
298 BindCallback("rowIndexRange",
299 base::Bind(&AccessibilityUIElement::RowIndexRangeCallback,
300 base::Unretained(this)));
301 BindCallback("columnIndexRange",
302 base::Bind(&AccessibilityUIElement::ColumnIndexRangeCallback,
303 base::Unretained(this)));
304 BindCallback("cellForColumnAndRow",
305 base::Bind(&AccessibilityUIElement::CellForColumnAndRowCallback,
306 base::Unretained(this)));
307 BindCallback("titleUIElement",
308 base::Bind(&AccessibilityUIElement::TitleUIElementCallback,
309 base::Unretained(this)));
310 BindCallback("setSelectedTextRange",
311 base::Bind(&AccessibilityUIElement::SetSelectedTextRangeCallback,
312 base::Unretained(this)));
313 BindCallback("attributeValue",
314 base::Bind(&AccessibilityUIElement::AttributeValueCallback,
315 base::Unretained(this)));
316 BindCallback("isAttributeSettable",
317 base::Bind(&AccessibilityUIElement::IsAttributeSettableCallback,
318 base::Unretained(this)));
319 BindCallback("isActionSupported",
320 base::Bind(&AccessibilityUIElement::IsActionSupportedCallback,
321 base::Unretained(this)));
322 BindCallback("parentElement",
323 base::Bind(&AccessibilityUIElement::ParentElementCallback,
324 base::Unretained(this)));
325 BindCallback("increment",
326 base::Bind(&AccessibilityUIElement::IncrementCallback,
327 base::Unretained(this)));
328 BindCallback("decrement",
329 base::Bind(&AccessibilityUIElement::DecrementCallback,
330 base::Unretained(this)));
331
332 BindGetterCallback("role",
333 base::Bind(&AccessibilityUIElement::RoleGetterCallback,
334 base::Unretained(this)));
335 BindProperty("subrole", &subrole_);
336 BindGetterCallback("title",
337 base::Bind(&AccessibilityUIElement::TitleGetterCallback,
338 base::Unretained(this)));
339 BindGetterCallback(
340 "description",
341 base::Bind(&AccessibilityUIElement::DescriptionGetterCallback,
342 base::Unretained(this)));
343 BindProperty("language", &language_);
344 BindProperty("x", &x_);
345 BindProperty("y", &y_);
346 BindProperty("width", &width_);
347 BindProperty("height", &height_);
348 BindProperty("clickPointX", &click_point_x_);
349 BindProperty("clickPointY", &click_point_y_);
350 BindProperty("intValue", &int_value_);
351 BindProperty("minValue", &min_value_);
352 BindProperty("maxValue", &max_value_);
353 BindGetterCallback(
354 "childrenCount",
355 base::Bind(&AccessibilityUIElement::ChildrenCountGetterCallback,
356 base::Unretained(this)));
357 BindProperty("insertionPointLineNumber", &insertion_point_line_number_);
358 BindProperty("selectedTextRange", &selected_text_range);
359 BindGetterCallback(
360 "isEnabled",
361 base::Bind(&AccessibilityUIElement::IsEnabledGetterCallback,
362 base::Unretained(this)));
363 BindProperty("isRequired", &is_required_);
364 BindGetterCallback(
365 "isSelected",
366 base::Bind(&AccessibilityUIElement::IsSelectedGetterCallback,
367 base::Unretained(this)));
368 BindProperty("valueDescription", &value_description_);
369
370 BindFallbackCallback(base::Bind(&AccessibilityUIElement::FallbackCallback,
371 base::Unretained(this)));
372 }
373
374 AccessibilityUIElement::~AccessibilityUIElement() {}
375
376 AccessibilityUIElement* AccessibilityUIElement::GetChildAtIndex(
377 unsigned index) {
378 return factory_->Create(accessibility_object().childAt(index));
379 }
380
381 bool AccessibilityUIElement::IsRoot() const {
382 return false;
383 }
384
385 void AccessibilityUIElement::AllAttributesCallback(
386 const CppArgumentList& args, CppVariant* result) {
387 result->Set(GetAttributes(accessibility_object()));
388 }
389
390 void AccessibilityUIElement::AttributesOfLinkedUIElementsCallback(
391 const CppArgumentList& args, CppVariant* result) {
392 result->SetNull();
393 }
394
395 void AccessibilityUIElement::AttributesOfDocumentLinksCallback(
396 const CppArgumentList& args, CppVariant* result) {
397 result->SetNull();
398 }
399
400 void AccessibilityUIElement::AttributesOfChildrenCallback(
401 const CppArgumentList& args, CppVariant* result) {
402 AttributesCollector collector;
403 unsigned size = accessibility_object().childCount();
404 for(unsigned i = 0; i < size; ++i) {
405 collector.CollectAttributes(accessibility_object().childAt(i));
406 }
407 result->Set(collector.attributes());
408 }
409
410 void AccessibilityUIElement::ParametrizedAttributeNamesCallback(
411 const CppArgumentList& args, CppVariant* result) {
412 result->SetNull();
413 }
414
415 void AccessibilityUIElement::LineForIndexCallback(
416 const CppArgumentList& args, CppVariant* result) {
417 result->SetNull();
418 }
419
420 void AccessibilityUIElement::BoundsForRangeCallback(
421 const CppArgumentList& args, CppVariant* result) {
422 result->SetNull();
423 }
424
425 void AccessibilityUIElement::StringForRangeCallback(
426 const CppArgumentList& args, CppVariant* result) {
427 result->SetNull();
428 }
429
430 void AccessibilityUIElement::ChildAtIndexCallback(
431 const CppArgumentList& args, CppVariant* result) {
432 if (args.empty() || !args[0].isNumber()) {
433 result->SetNull();
434 return;
435 }
436
437 AccessibilityUIElement* child = GetChildAtIndex(args[0].ToInt32());
438 if (!child) {
439 result->SetNull();
440 return;
441 }
442
443 result->Set(*(child->GetAsCppVariant()));
444 }
445
446 void AccessibilityUIElement::ElementAtPointCallback(
447 const CppArgumentList& args, CppVariant* result) {
448 result->SetNull();
449 }
450
451 void AccessibilityUIElement::AttributesOfColumnHeadersCallback(
452 const CppArgumentList& args, CppVariant* result) {
453 result->SetNull();
454 }
455
456 void AccessibilityUIElement::AttributesOfRowHeadersCallback(
457 const CppArgumentList& args, CppVariant* result) {
458 result->SetNull();
459 }
460
461 void AccessibilityUIElement::AttributesOfColumnsCallback(
462 const CppArgumentList& args, CppVariant* result) {
463 result->SetNull();
464 }
465
466 void AccessibilityUIElement::AttributesOfRowsCallback(
467 const CppArgumentList& args, CppVariant* result) {
468 result->SetNull();
469 }
470
471 void AccessibilityUIElement::AttributesOfVisibleCellsCallback(
472 const CppArgumentList& args, CppVariant* result) {
473 result->SetNull();
474 }
475
476 void AccessibilityUIElement::AttributesOfHeaderCallback(
477 const CppArgumentList& args, CppVariant* result) {
478 result->SetNull();
479 }
480
481 void AccessibilityUIElement::IndexInTableCallback(
482 const CppArgumentList& args, CppVariant* result) {
483 result->SetNull();
484 }
485
486 void AccessibilityUIElement::RowIndexRangeCallback(
487 const CppArgumentList& args, CppVariant* result) {
488 result->SetNull();
489 }
490
491 void AccessibilityUIElement::ColumnIndexRangeCallback(
492 const CppArgumentList& args, CppVariant* result) {
493 result->SetNull();
494 }
495
496 void AccessibilityUIElement::CellForColumnAndRowCallback(
497 const CppArgumentList& args, CppVariant* result) {
498 result->SetNull();
499 }
500
501 void AccessibilityUIElement::TitleUIElementCallback(
502 const CppArgumentList& args, CppVariant* result) {
503 result->SetNull();
504 }
505
506 void AccessibilityUIElement::SetSelectedTextRangeCallback(
507 const CppArgumentList& args, CppVariant* result) {
508 result->SetNull();
509 }
510
511 void AccessibilityUIElement::AttributeValueCallback(
512 const CppArgumentList& args, CppVariant* result) {
513 result->SetNull();
514 }
515
516 void AccessibilityUIElement::IsAttributeSettableCallback(
517 const CppArgumentList& args, CppVariant* result) {
518 if (args.size() < 1 && !args[0].isString()) {
519 result->SetNull();
520 return;
521 }
522
523 std::string attribute = args[0].ToString();
524 bool settable = false;
525 if (attribute == "AXValue") {
526 settable = accessibility_object().canSetValueAttribute();
527 }
528 result->Set(settable);
529 }
530
531 void AccessibilityUIElement::IsActionSupportedCallback(
532 const CppArgumentList& args, CppVariant* result) {
533 // This one may be really hard to implement.
534 // Not exposed by AccessibilityObject.
535 result->SetNull();
536 }
537
538 void AccessibilityUIElement::ParentElementCallback(
539 const CppArgumentList& args, CppVariant* result) {
540 result->SetNull();
541 }
542
543 void AccessibilityUIElement::IncrementCallback(
544 const CppArgumentList& args, CppVariant* result) {
545 result->SetNull();
546 }
547
548 void AccessibilityUIElement::DecrementCallback(
549 const CppArgumentList& args, CppVariant* result) {
550 result->SetNull();
551 }
552
553 void AccessibilityUIElement::FallbackCallback(const CppArgumentList &args,
554 CppVariant *result) {
555 // TODO(dglazkov): Implement this.
556 result->SetNull();
557 }
558
559 void AccessibilityUIElement::ChildrenCountGetterCallback(CppVariant* result) {
560 int count = 1; // Root object always has only one child, the WebView.
561 if (!IsRoot())
562 count = accessibility_object().childCount();
563 result->Set(count);
564 }
565
566 void AccessibilityUIElement::DescriptionGetterCallback(CppVariant *result) {
567 result->Set(GetDescription(accessibility_object()));
568 }
569
570 void AccessibilityUIElement::IsEnabledGetterCallback(CppVariant* result) {
571 result->Set(accessibility_object().isEnabled());
572 }
573
574 void AccessibilityUIElement::IsSelectedGetterCallback(CppVariant* result) {
575 result->SetNull();
576 }
577
578 void AccessibilityUIElement::RoleGetterCallback(CppVariant* result) {
579 result->Set(GetRole(accessibility_object()));
580 }
581
582 void AccessibilityUIElement::TitleGetterCallback(CppVariant* result) {
583 result->Set(GetTitle(accessibility_object()));
584 }
585
586 RootAccessibilityUIElement::RootAccessibilityUIElement(
587 const WebKit::WebAccessibilityObject &object,
588 Factory *factory)
589 : AccessibilityUIElement(object, factory) {}
590
591 RootAccessibilityUIElement::~RootAccessibilityUIElement() {}
592
593 AccessibilityUIElement* RootAccessibilityUIElement::GetChildAtIndex(
594 unsigned index) {
595 if (index != 0)
596 return NULL;
597
598 return factory()->Create(accessibility_object());
599 }
600
601 bool RootAccessibilityUIElement::IsRoot() const {
602 return true;
603 }
604
605 AccessibilityUIElementList::AccessibilityUIElementList() {}
606
607 AccessibilityUIElementList::~AccessibilityUIElementList() {
608 Clear();
609 }
610
611 void AccessibilityUIElementList::Clear() {
612 for (ElementList::iterator i = elements_.begin(); i != elements_.end(); ++i)
613 delete (*i);
614 elements_.clear();
615 }
616
617 AccessibilityUIElement* AccessibilityUIElementList::Create(
618 const WebAccessibilityObject& object) {
619 if (object.isNull())
620 return NULL;
621
622 AccessibilityUIElement* element = new AccessibilityUIElement(object, this);
623 elements_.push_back(element);
624 return element;
625 }
626
627 AccessibilityUIElement* AccessibilityUIElementList::CreateRoot(
628 const WebAccessibilityObject& object) {
629 AccessibilityUIElement* element =
630 new RootAccessibilityUIElement(object, this);
631 elements_.push_back(element);
632 return element;
633 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698