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

Side by Side Diff: components/test_runner/web_ax_object_proxy.cc

Issue 1435113003: Make use of new AX name calc in Chromium. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix ChromeVox and Automation API tests Created 5 years, 1 month 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 "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 297 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 } 308 }
309 309
310 blink::WebRect BoundsForCharacter(const blink::WebAXObject& object, 310 blink::WebRect BoundsForCharacter(const blink::WebAXObject& object,
311 int characterIndex) { 311 int characterIndex) {
312 DCHECK_EQ(object.role(), blink::WebAXRoleStaticText); 312 DCHECK_EQ(object.role(), blink::WebAXRoleStaticText);
313 int end = 0; 313 int end = 0;
314 for (unsigned i = 0; i < object.childCount(); i++) { 314 for (unsigned i = 0; i < object.childCount(); i++) {
315 blink::WebAXObject inline_text_box = object.childAt(i); 315 blink::WebAXObject inline_text_box = object.childAt(i);
316 DCHECK_EQ(inline_text_box.role(), blink::WebAXRoleInlineTextBox); 316 DCHECK_EQ(inline_text_box.role(), blink::WebAXRoleInlineTextBox);
317 int start = end; 317 int start = end;
318 end += inline_text_box.stringValue().length(); 318 blink::WebAXNameFrom nameFrom;
319 blink::WebVector<blink::WebAXObject> nameObjects;
320 blink::WebString name = inline_text_box.name(nameFrom, nameObjects);
321 end += name.length();
319 if (characterIndex < start || characterIndex >= end) 322 if (characterIndex < start || characterIndex >= end)
320 continue; 323 continue;
321 blink::WebRect inline_text_box_rect = inline_text_box.boundingBoxRect(); 324 blink::WebRect inline_text_box_rect = inline_text_box.boundingBoxRect();
322 int localIndex = characterIndex - start; 325 int localIndex = characterIndex - start;
323 blink::WebVector<int> character_offsets; 326 blink::WebVector<int> character_offsets;
324 inline_text_box.characterOffsets(character_offsets); 327 inline_text_box.characterOffsets(character_offsets);
325 DCHECK(character_offsets.size() > 0 && 328 DCHECK(character_offsets.size() > 0 &&
326 character_offsets.size() == inline_text_box.stringValue().length()); 329 character_offsets.size() == name.length());
327 switch (inline_text_box.textDirection()) { 330 switch (inline_text_box.textDirection()) {
328 case blink::WebAXTextDirectionLR: { 331 case blink::WebAXTextDirectionLR: {
329 if (localIndex) { 332 if (localIndex) {
330 int left = inline_text_box_rect.x + character_offsets[localIndex - 1]; 333 int left = inline_text_box_rect.x + character_offsets[localIndex - 1];
331 int width = character_offsets[localIndex] - 334 int width = character_offsets[localIndex] -
332 character_offsets[localIndex - 1]; 335 character_offsets[localIndex - 1];
333 return blink::WebRect(left, inline_text_box_rect.y, 336 return blink::WebRect(left, inline_text_box_rect.y,
334 width, inline_text_box_rect.height); 337 width, inline_text_box_rect.height);
335 } 338 }
336 return blink::WebRect( 339 return blink::WebRect(
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
386 389
387 void GetBoundariesForOneWord(const blink::WebAXObject& object, 390 void GetBoundariesForOneWord(const blink::WebAXObject& object,
388 int character_index, 391 int character_index,
389 int& word_start, 392 int& word_start,
390 int& word_end) { 393 int& word_end) {
391 int end = 0; 394 int end = 0;
392 for (unsigned i = 0; i < object.childCount(); i++) { 395 for (unsigned i = 0; i < object.childCount(); i++) {
393 blink::WebAXObject inline_text_box = object.childAt(i); 396 blink::WebAXObject inline_text_box = object.childAt(i);
394 DCHECK_EQ(inline_text_box.role(), blink::WebAXRoleInlineTextBox); 397 DCHECK_EQ(inline_text_box.role(), blink::WebAXRoleInlineTextBox);
395 int start = end; 398 int start = end;
396 end += inline_text_box.stringValue().length(); 399 blink::WebAXNameFrom nameFrom;
400 blink::WebVector<blink::WebAXObject> nameObjects;
401 blink::WebString name = inline_text_box.name(nameFrom, nameObjects);
402 end += name.length();
397 if (end <= character_index) 403 if (end <= character_index)
398 continue; 404 continue;
399 int localIndex = character_index - start; 405 int localIndex = character_index - start;
400 406
401 blink::WebVector<int> starts; 407 blink::WebVector<int> starts;
402 blink::WebVector<int> ends; 408 blink::WebVector<int> ends;
403 inline_text_box.wordBoundaries(starts, ends); 409 inline_text_box.wordBoundaries(starts, ends);
404 size_t word_count = starts.size(); 410 size_t word_count = starts.size();
405 DCHECK_EQ(ends.size(), word_count); 411 DCHECK_EQ(ends.size(), word_count);
406 412
(...skipping 1068 matching lines...) Expand 10 before | Expand all | Expand 10 after
1475 v8::Local<v8::Value> value_handle = gin::CreateHandle( 1481 v8::Local<v8::Value> value_handle = gin::CreateHandle(
1476 isolate, new WebAXObjectProxy(object, this)).ToV8(); 1482 isolate, new WebAXObjectProxy(object, this)).ToV8();
1477 if (value_handle.IsEmpty()) 1483 if (value_handle.IsEmpty())
1478 return v8::Local<v8::Object>(); 1484 return v8::Local<v8::Object>();
1479 v8::Local<v8::Object> handle = value_handle->ToObject(isolate); 1485 v8::Local<v8::Object> handle = value_handle->ToObject(isolate);
1480 elements_.Append(handle); 1486 elements_.Append(handle);
1481 return handle; 1487 return handle;
1482 } 1488 }
1483 1489
1484 } // namespace test_runner 1490 } // namespace test_runner
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698