OLD | NEW |
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 "components/test_runner/web_ax_object_proxy.h" | 5 #include "components/test_runner/web_ax_object_proxy.h" |
6 | 6 |
7 #include "base/strings/stringprintf.h" | 7 #include "base/strings/stringprintf.h" |
8 #include "gin/handle.h" | 8 #include "gin/handle.h" |
9 #include "third_party/WebKit/public/platform/WebPoint.h" | 9 #include "third_party/WebKit/public/platform/WebPoint.h" |
10 #include "third_party/WebKit/public/platform/WebRect.h" | 10 #include "third_party/WebKit/public/platform/WebRect.h" |
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
292 std::string value_description = object.valueDescription().utf8(); | 292 std::string value_description = object.valueDescription().utf8(); |
293 return value_description.insert(0, "AXValueDescription: "); | 293 return value_description.insert(0, "AXValueDescription: "); |
294 } | 294 } |
295 | 295 |
296 std::string GetLanguage(const blink::WebAXObject& object) { | 296 std::string GetLanguage(const blink::WebAXObject& object) { |
297 std::string language = object.language().utf8(); | 297 std::string language = object.language().utf8(); |
298 return language.insert(0, "AXLanguage: "); | 298 return language.insert(0, "AXLanguage: "); |
299 } | 299 } |
300 | 300 |
301 std::string GetAttributes(const blink::WebAXObject& object) { | 301 std::string GetAttributes(const blink::WebAXObject& object) { |
302 blink::WebAXNameFrom nameFrom; | 302 std::string attributes(object.name().utf8()); |
303 blink::WebVector<blink::WebAXObject> nameObjects; | |
304 std::string attributes(object.name(nameFrom, nameObjects).utf8()); | |
305 attributes.append("\n"); | 303 attributes.append("\n"); |
306 attributes.append(GetRole(object)); | 304 attributes.append(GetRole(object)); |
307 return attributes; | 305 return attributes; |
308 } | 306 } |
309 | 307 |
310 blink::WebRect BoundsForCharacter(const blink::WebAXObject& object, | 308 blink::WebRect BoundsForCharacter(const blink::WebAXObject& object, |
311 int characterIndex) { | 309 int characterIndex) { |
312 DCHECK_EQ(object.role(), blink::WebAXRoleStaticText); | 310 DCHECK_EQ(object.role(), blink::WebAXRoleStaticText); |
313 int end = 0; | 311 int end = 0; |
314 for (unsigned i = 0; i < object.childCount(); i++) { | 312 for (unsigned i = 0; i < object.childCount(); i++) { |
315 blink::WebAXObject inline_text_box = object.childAt(i); | 313 blink::WebAXObject inline_text_box = object.childAt(i); |
316 DCHECK_EQ(inline_text_box.role(), blink::WebAXRoleInlineTextBox); | 314 DCHECK_EQ(inline_text_box.role(), blink::WebAXRoleInlineTextBox); |
317 int start = end; | 315 int start = end; |
318 end += inline_text_box.stringValue().length(); | 316 blink::WebString name = inline_text_box.name(); |
| 317 end += name.length(); |
319 if (characterIndex < start || characterIndex >= end) | 318 if (characterIndex < start || characterIndex >= end) |
320 continue; | 319 continue; |
321 blink::WebRect inline_text_box_rect = inline_text_box.boundingBoxRect(); | 320 blink::WebRect inline_text_box_rect = inline_text_box.boundingBoxRect(); |
322 int localIndex = characterIndex - start; | 321 int localIndex = characterIndex - start; |
323 blink::WebVector<int> character_offsets; | 322 blink::WebVector<int> character_offsets; |
324 inline_text_box.characterOffsets(character_offsets); | 323 inline_text_box.characterOffsets(character_offsets); |
325 DCHECK(character_offsets.size() > 0 && | 324 DCHECK(character_offsets.size() > 0 && |
326 character_offsets.size() == inline_text_box.stringValue().length()); | 325 character_offsets.size() == name.length()); |
327 switch (inline_text_box.textDirection()) { | 326 switch (inline_text_box.textDirection()) { |
328 case blink::WebAXTextDirectionLR: { | 327 case blink::WebAXTextDirectionLR: { |
329 if (localIndex) { | 328 if (localIndex) { |
330 int left = inline_text_box_rect.x + character_offsets[localIndex - 1]; | 329 int left = inline_text_box_rect.x + character_offsets[localIndex - 1]; |
331 int width = character_offsets[localIndex] - | 330 int width = character_offsets[localIndex] - |
332 character_offsets[localIndex - 1]; | 331 character_offsets[localIndex - 1]; |
333 return blink::WebRect(left, inline_text_box_rect.y, | 332 return blink::WebRect(left, inline_text_box_rect.y, |
334 width, inline_text_box_rect.height); | 333 width, inline_text_box_rect.height); |
335 } | 334 } |
336 return blink::WebRect( | 335 return blink::WebRect( |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
386 | 385 |
387 void GetBoundariesForOneWord(const blink::WebAXObject& object, | 386 void GetBoundariesForOneWord(const blink::WebAXObject& object, |
388 int character_index, | 387 int character_index, |
389 int& word_start, | 388 int& word_start, |
390 int& word_end) { | 389 int& word_end) { |
391 int end = 0; | 390 int end = 0; |
392 for (unsigned i = 0; i < object.childCount(); i++) { | 391 for (unsigned i = 0; i < object.childCount(); i++) { |
393 blink::WebAXObject inline_text_box = object.childAt(i); | 392 blink::WebAXObject inline_text_box = object.childAt(i); |
394 DCHECK_EQ(inline_text_box.role(), blink::WebAXRoleInlineTextBox); | 393 DCHECK_EQ(inline_text_box.role(), blink::WebAXRoleInlineTextBox); |
395 int start = end; | 394 int start = end; |
396 end += inline_text_box.stringValue().length(); | 395 blink::WebString name = inline_text_box.name(); |
| 396 end += name.length(); |
397 if (end <= character_index) | 397 if (end <= character_index) |
398 continue; | 398 continue; |
399 int localIndex = character_index - start; | 399 int localIndex = character_index - start; |
400 | 400 |
401 blink::WebVector<int> starts; | 401 blink::WebVector<int> starts; |
402 blink::WebVector<int> ends; | 402 blink::WebVector<int> ends; |
403 inline_text_box.wordBoundaries(starts, ends); | 403 inline_text_box.wordBoundaries(starts, ends); |
404 size_t word_count = starts.size(); | 404 size_t word_count = starts.size(); |
405 DCHECK_EQ(ends.size(), word_count); | 405 DCHECK_EQ(ends.size(), word_count); |
406 | 406 |
(...skipping 885 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1292 accessibility_object_.updateLayoutAndCheckValidity(); | 1292 accessibility_object_.updateLayoutAndCheckValidity(); |
1293 blink::WebAXObject obj = accessibility_object_.previousOnLine(); | 1293 blink::WebAXObject obj = accessibility_object_.previousOnLine(); |
1294 if (obj.isNull()) | 1294 if (obj.isNull()) |
1295 return v8::Local<v8::Object>(); | 1295 return v8::Local<v8::Object>(); |
1296 | 1296 |
1297 return factory_->GetOrCreate(obj); | 1297 return factory_->GetOrCreate(obj); |
1298 } | 1298 } |
1299 | 1299 |
1300 std::string WebAXObjectProxy::Name() { | 1300 std::string WebAXObjectProxy::Name() { |
1301 accessibility_object_.updateLayoutAndCheckValidity(); | 1301 accessibility_object_.updateLayoutAndCheckValidity(); |
1302 blink::WebAXNameFrom nameFrom; | 1302 return accessibility_object_.name().utf8(); |
1303 blink::WebVector<blink::WebAXObject> nameObjects; | |
1304 return accessibility_object_.name(nameFrom, nameObjects).utf8(); | |
1305 } | 1303 } |
1306 | 1304 |
1307 std::string WebAXObjectProxy::NameFrom() { | 1305 std::string WebAXObjectProxy::NameFrom() { |
1308 accessibility_object_.updateLayoutAndCheckValidity(); | 1306 accessibility_object_.updateLayoutAndCheckValidity(); |
1309 blink::WebAXNameFrom nameFrom = blink::WebAXNameFromUninitialized; | 1307 blink::WebAXNameFrom nameFrom = blink::WebAXNameFromUninitialized; |
1310 blink::WebVector<blink::WebAXObject> nameObjects; | 1308 blink::WebVector<blink::WebAXObject> nameObjects; |
1311 accessibility_object_.name(nameFrom, nameObjects); | 1309 accessibility_object_.name(nameFrom, nameObjects); |
1312 switch(nameFrom) { | 1310 switch(nameFrom) { |
1313 case blink::WebAXNameFromUninitialized: | 1311 case blink::WebAXNameFromUninitialized: |
1314 return ""; | 1312 return ""; |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1475 v8::Local<v8::Value> value_handle = gin::CreateHandle( | 1473 v8::Local<v8::Value> value_handle = gin::CreateHandle( |
1476 isolate, new WebAXObjectProxy(object, this)).ToV8(); | 1474 isolate, new WebAXObjectProxy(object, this)).ToV8(); |
1477 if (value_handle.IsEmpty()) | 1475 if (value_handle.IsEmpty()) |
1478 return v8::Local<v8::Object>(); | 1476 return v8::Local<v8::Object>(); |
1479 v8::Local<v8::Object> handle = value_handle->ToObject(isolate); | 1477 v8::Local<v8::Object> handle = value_handle->ToObject(isolate); |
1480 elements_.Append(handle); | 1478 elements_.Append(handle); |
1481 return handle; | 1479 return handle; |
1482 } | 1480 } |
1483 | 1481 |
1484 } // namespace test_runner | 1482 } // namespace test_runner |
OLD | NEW |