OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2012, Google Inc. All rights reserved. | 2 * Copyright (C) 2012, Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 1270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1281 return false; | 1281 return false; |
1282 | 1282 |
1283 // Skip big container elements like lists, tables, etc. | 1283 // Skip big container elements like lists, tables, etc. |
1284 if (obj->isList() || obj->isAXTable() || obj->isTree() || obj->isCanvas()) | 1284 if (obj->isList() || obj->isAXTable() || obj->isTree() || obj->isCanvas()) |
1285 return false; | 1285 return false; |
1286 | 1286 |
1287 return true; | 1287 return true; |
1288 } | 1288 } |
1289 | 1289 |
1290 // Returns true if |r1| and |r2| are both non-null and are contained within the | 1290 // Returns true if |r1| and |r2| are both non-null and are contained within the |
1291 // same RenderBox. | 1291 // same LayoutBox. |
1292 static bool isSameRenderBox(LayoutObject* r1, LayoutObject* r2) | 1292 static bool isSameLayoutBox(LayoutObject* r1, LayoutObject* r2) |
1293 { | 1293 { |
1294 if (!r1 || !r2) | 1294 if (!r1 || !r2) |
1295 return false; | 1295 return false; |
1296 RenderBox* b1 = r1->enclosingBox(); | 1296 LayoutBox* b1 = r1->enclosingBox(); |
1297 RenderBox* b2 = r2->enclosingBox(); | 1297 LayoutBox* b2 = r2->enclosingBox(); |
1298 return b1 && b2 && b1 == b2; | 1298 return b1 && b2 && b1 == b2; |
1299 } | 1299 } |
1300 | 1300 |
1301 String AXNodeObject::textUnderElement(TextUnderElementMode mode) const | 1301 String AXNodeObject::textUnderElement(TextUnderElementMode mode) const |
1302 { | 1302 { |
1303 Node* node = this->node(); | 1303 Node* node = this->node(); |
1304 if (node && node->isTextNode()) | 1304 if (node && node->isTextNode()) |
1305 return toText(node)->wholeText(); | 1305 return toText(node)->wholeText(); |
1306 | 1306 |
1307 StringBuilder builder; | 1307 StringBuilder builder; |
1308 AXObject* previous = nullptr; | 1308 AXObject* previous = nullptr; |
1309 for (AXObject* child = firstChild(); child; child = child->nextSibling()) { | 1309 for (AXObject* child = firstChild(); child; child = child->nextSibling()) { |
1310 if (!shouldUseAccessibilityObjectInnerText(child)) | 1310 if (!shouldUseAccessibilityObjectInnerText(child)) |
1311 continue; | 1311 continue; |
1312 | 1312 |
1313 if (child->isAXNodeObject()) { | 1313 if (child->isAXNodeObject()) { |
1314 Vector<AccessibilityText> textOrder; | 1314 Vector<AccessibilityText> textOrder; |
1315 toAXNodeObject(child)->alternativeText(textOrder); | 1315 toAXNodeObject(child)->alternativeText(textOrder); |
1316 if (textOrder.size() > 0) { | 1316 if (textOrder.size() > 0) { |
1317 builder.append(textOrder[0].text); | 1317 builder.append(textOrder[0].text); |
1318 if (mode == TextUnderElementAny) | 1318 if (mode == TextUnderElementAny) |
1319 break; | 1319 break; |
1320 continue; | 1320 continue; |
1321 } | 1321 } |
1322 } | 1322 } |
1323 | 1323 |
1324 // If we're going between two renderers that are in separate RenderBoxes
, add | 1324 // If we're going between two renderers that are in separate LayoutBoxes
, add |
1325 // whitespace if it wasn't there already. Intuitively if you have | 1325 // whitespace if it wasn't there already. Intuitively if you have |
1326 // <span>Hello</span><span>World</span>, those are part of the same Rend
erBox | 1326 // <span>Hello</span><span>World</span>, those are part of the same Layo
utBox |
1327 // so we should return "HelloWorld", but given <div>Hello</div><div>Worl
d</div> the | 1327 // so we should return "HelloWorld", but given <div>Hello</div><div>Worl
d</div> the |
1328 // strings are in separate boxes so we should return "Hello World". | 1328 // strings are in separate boxes so we should return "Hello World". |
1329 if (previous && builder.length() && !isHTMLSpace(builder[builder.length(
) - 1])) { | 1329 if (previous && builder.length() && !isHTMLSpace(builder[builder.length(
) - 1])) { |
1330 if (!isSameRenderBox(child->renderer(), previous->renderer())) | 1330 if (!isSameLayoutBox(child->renderer(), previous->renderer())) |
1331 builder.append(' '); | 1331 builder.append(' '); |
1332 } | 1332 } |
1333 | 1333 |
1334 builder.append(child->textUnderElement(mode)); | 1334 builder.append(child->textUnderElement(mode)); |
1335 previous = child; | 1335 previous = child; |
1336 | 1336 |
1337 if (mode == TextUnderElementAny && !builder.isEmpty()) | 1337 if (mode == TextUnderElementAny && !builder.isEmpty()) |
1338 break; | 1338 break; |
1339 } | 1339 } |
1340 | 1340 |
(...skipping 651 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1992 float range = maxValueForRange() - minValueForRange(); | 1992 float range = maxValueForRange() - minValueForRange(); |
1993 float value = valueForRange(); | 1993 float value = valueForRange(); |
1994 | 1994 |
1995 value += range * (percentChange / 100); | 1995 value += range * (percentChange / 100); |
1996 setValue(String::number(value)); | 1996 setValue(String::number(value)); |
1997 | 1997 |
1998 axObjectCache()->postNotification(node(), AXObjectCacheImpl::AXValueChanged,
true); | 1998 axObjectCache()->postNotification(node(), AXObjectCacheImpl::AXValueChanged,
true); |
1999 } | 1999 } |
2000 | 2000 |
2001 } // namespace blink | 2001 } // namespace blink |
OLD | NEW |