OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2008, 2009, 2010 Apple Inc. All rights reserved. | 2 * Copyright (C) 2008, 2009, 2010 Apple 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 322 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
333 | 333 |
334 AXObject* AXObjectCache::getOrCreate(Widget* widget) | 334 AXObject* AXObjectCache::getOrCreate(Widget* widget) |
335 { | 335 { |
336 if (!widget) | 336 if (!widget) |
337 return 0; | 337 return 0; |
338 | 338 |
339 if (AXObject* obj = get(widget)) | 339 if (AXObject* obj = get(widget)) |
340 return obj; | 340 return obj; |
341 | 341 |
342 RefPtr<AXObject> newObj = nullptr; | 342 RefPtr<AXObject> newObj = nullptr; |
| 343 // FIXME: test for isScrollView() instead? |
343 if (widget->isFrameView()) | 344 if (widget->isFrameView()) |
344 newObj = AXScrollView::create(toFrameView(widget)); | 345 newObj = AXScrollView::create(toFrameView(widget)); |
345 else if (widget->isScrollbar()) | 346 else if (widget->isScrollbar()) |
346 newObj = AXScrollbar::create(toScrollbar(widget)); | 347 newObj = AXScrollbar::create(toScrollbar(widget)); |
347 | 348 |
348 // Will crash later if we have two objects for the same widget. | 349 // Will crash later if we have two objects for the same widget. |
349 ASSERT(!get(widget)); | 350 ASSERT(!get(widget)); |
350 | 351 |
351 // Catch the case if an (unsupported) widget type is used. Only FrameView an
d ScrollBar are supported now. | 352 // Catch the case if an (unsupported) widget type is used. Only FrameView an
d ScrollBar are supported now. |
352 ASSERT(newObj); | 353 ASSERT(newObj); |
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
572 // FIXME: Oilpan: Use a weak hashmap for this instead. | 573 // FIXME: Oilpan: Use a weak hashmap for this instead. |
573 void AXObjectCache::clearWeakMembers(Visitor* visitor) | 574 void AXObjectCache::clearWeakMembers(Visitor* visitor) |
574 { | 575 { |
575 Vector<Node*> deadNodes; | 576 Vector<Node*> deadNodes; |
576 for (HashMap<Node*, AXID>::iterator it = m_nodeObjectMapping.begin(); it !=
m_nodeObjectMapping.end(); ++it) { | 577 for (HashMap<Node*, AXID>::iterator it = m_nodeObjectMapping.begin(); it !=
m_nodeObjectMapping.end(); ++it) { |
577 if (!visitor->isAlive(it->key)) | 578 if (!visitor->isAlive(it->key)) |
578 deadNodes.append(it->key); | 579 deadNodes.append(it->key); |
579 } | 580 } |
580 for (unsigned i = 0; i < deadNodes.size(); ++i) | 581 for (unsigned i = 0; i < deadNodes.size(); ++i) |
581 remove(deadNodes[i]); | 582 remove(deadNodes[i]); |
| 583 |
| 584 Vector<Widget*> deadWidgets; |
| 585 for (HashMap<Widget*, AXID>::iterator it = m_widgetObjectMapping.begin(); it
!= m_widgetObjectMapping.end(); ++it) { |
| 586 if (!visitor->isAlive(it->key)) |
| 587 deadWidgets.append(it->key); |
| 588 } |
| 589 for (unsigned i = 0; i < deadWidgets.size(); ++i) |
| 590 remove(deadWidgets[i]); |
582 } | 591 } |
583 | 592 |
584 AXID AXObjectCache::platformGenerateAXID() const | 593 AXID AXObjectCache::platformGenerateAXID() const |
585 { | 594 { |
586 static AXID lastUsedID = 0; | 595 static AXID lastUsedID = 0; |
587 | 596 |
588 // Generate a new ID. | 597 // Generate a new ID. |
589 AXID objID = lastUsedID; | 598 AXID objID = lastUsedID; |
590 do { | 599 do { |
591 ++objID; | 600 ++objID; |
(...skipping 448 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1040 void AXObjectCache::setCanvasObjectBounds(Element* element, const LayoutRect& re
ct) | 1049 void AXObjectCache::setCanvasObjectBounds(Element* element, const LayoutRect& re
ct) |
1041 { | 1050 { |
1042 AXObject* obj = getOrCreate(element); | 1051 AXObject* obj = getOrCreate(element); |
1043 if (!obj) | 1052 if (!obj) |
1044 return; | 1053 return; |
1045 | 1054 |
1046 obj->setElementRect(rect); | 1055 obj->setElementRect(rect); |
1047 } | 1056 } |
1048 | 1057 |
1049 } // namespace blink | 1058 } // namespace blink |
OLD | NEW |