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

Unified Diff: Source/modules/accessibility/AXObjectCacheImpl.cpp

Issue 1072273006: Oilpan: Prepare moving AXObject to heap (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 5 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: Source/modules/accessibility/AXObjectCacheImpl.cpp
diff --git a/Source/modules/accessibility/AXObjectCacheImpl.cpp b/Source/modules/accessibility/AXObjectCacheImpl.cpp
index 3d99deaa1c0ac1b7bf134064612c15e4c814b402..dc012ebd3060e9af169eaae0149954db375ce931 100644
--- a/Source/modules/accessibility/AXObjectCacheImpl.cpp
+++ b/Source/modules/accessibility/AXObjectCacheImpl.cpp
@@ -108,9 +108,8 @@ void AXObjectCacheImpl::dispose()
{
m_notificationPostTimer.stop();
- HashMap<AXID, RefPtr<AXObject>>::iterator end = m_objects.end();
- for (HashMap<AXID, RefPtr<AXObject>>::iterator it = m_objects.begin(); it != end; ++it) {
- AXObject* obj = (*it).value.get();
+ for (auto& entry : m_objects) {
+ AXObject* obj = entry.value.get();
obj->detach();
removeAXID(obj);
}
@@ -122,7 +121,7 @@ void AXObjectCacheImpl::dispose()
AXObject* AXObjectCacheImpl::root()
{
- return getOrCreate(&m_document);
+ return getOrCreate(m_document);
}
AXObject* AXObjectCacheImpl::focusedImageMapUIElement(HTMLAreaElement* areaElement)
@@ -278,7 +277,7 @@ bool nodeHasRole(Node* node, const String& role)
return equalIgnoringCase(toElement(node)->getAttribute(roleAttr), role);
}
-PassRefPtr<AXObject> AXObjectCacheImpl::createFromRenderer(LayoutObject* layoutObject)
+PassRefPtrWillBeRawPtr<AXObject> AXObjectCacheImpl::createFromRenderer(LayoutObject* layoutObject)
{
// FIXME: How could layoutObject->node() ever not be an Element?
Node* node = layoutObject->node();
@@ -334,7 +333,7 @@ PassRefPtr<AXObject> AXObjectCacheImpl::createFromRenderer(LayoutObject* layoutO
return AXLayoutObject::create(layoutObject, *this);
}
-PassRefPtr<AXObject> AXObjectCacheImpl::createFromNode(Node* node)
+PassRefPtrWillBeRawPtr<AXObject> AXObjectCacheImpl::createFromNode(Node* node)
{
if (isMenuListOption(node))
return AXMenuListOption::create(toHTMLOptionElement(node), *this);
@@ -342,7 +341,7 @@ PassRefPtr<AXObject> AXObjectCacheImpl::createFromNode(Node* node)
return AXNodeObject::create(node, *this);
}
-PassRefPtr<AXObject> AXObjectCacheImpl::createFromInlineTextBox(AbstractInlineTextBox* inlineTextBox)
+PassRefPtrWillBeRawPtr<AXObject> AXObjectCacheImpl::createFromInlineTextBox(AbstractInlineTextBox* inlineTextBox)
{
return AXInlineTextBox::create(inlineTextBox, *this);
}
@@ -355,7 +354,7 @@ AXObject* AXObjectCacheImpl::getOrCreate(Widget* widget)
if (AXObject* obj = get(widget))
return obj;
- RefPtr<AXObject> newObj = nullptr;
+ RefPtrWillBeRawPtr<AXObject> newObj = nullptr;
if (widget->isFrameView()) {
FrameView* frameView = toFrameView(widget);
@@ -402,7 +401,7 @@ AXObject* AXObjectCacheImpl::getOrCreate(Node* node)
if (isHTMLHeadElement(node))
return 0;
- RefPtr<AXObject> newObj = createFromNode(node);
+ RefPtrWillBeRawPtr<AXObject> newObj = createFromNode(node);
// Will crash later if we have two objects for the same node.
ASSERT(!get(node));
@@ -428,7 +427,7 @@ AXObject* AXObjectCacheImpl::getOrCreate(LayoutObject* layoutObject)
if (AXObject* obj = get(layoutObject))
return obj;
- RefPtr<AXObject> newObj = createFromRenderer(layoutObject);
+ RefPtrWillBeRawPtr<AXObject> newObj = createFromRenderer(layoutObject);
// Will crash later if we have two objects for the same layoutObject.
ASSERT(!get(layoutObject));
@@ -451,7 +450,7 @@ AXObject* AXObjectCacheImpl::getOrCreate(AbstractInlineTextBox* inlineTextBox)
if (AXObject* obj = get(inlineTextBox))
return obj;
- RefPtr<AXObject> newObj = createFromInlineTextBox(inlineTextBox);
+ RefPtrWillBeRawPtr<AXObject> newObj = createFromInlineTextBox(inlineTextBox);
// Will crash later if we have two objects for the same inlineTextBox.
ASSERT(!get(inlineTextBox));
@@ -471,12 +470,12 @@ AXObject* AXObjectCacheImpl::rootObject()
if (!accessibilityEnabled())
return 0;
- return getOrCreate(m_document.view());
+ return getOrCreate(m_document->view());
}
AXObject* AXObjectCacheImpl::getOrCreate(AccessibilityRole role)
{
- RefPtr<AXObject> obj = nullptr;
+ RefPtrWillBeRawPtr<AXObject> obj = nullptr;
// will be filled in...
switch (role) {
@@ -583,27 +582,6 @@ void AXObjectCacheImpl::remove(AbstractInlineTextBox* inlineTextBox)
m_inlineTextBoxObjectMapping.remove(inlineTextBox);
}
-// FIXME: Oilpan: Use a weak hashmap for this instead.
-void AXObjectCacheImpl::clearWeakMembers(Visitor* visitor)
-{
- Vector<Node*> deadNodes;
- for (HashMap<Node*, AXID>::iterator it = m_nodeObjectMapping.begin(); it != m_nodeObjectMapping.end(); ++it) {
- if (!Heap::isHeapObjectAlive(it->key))
- deadNodes.append(it->key);
- }
- for (unsigned i = 0; i < deadNodes.size(); ++i)
- remove(deadNodes[i]);
-
- Vector<Widget*> deadWidgets;
- for (HashMap<Widget*, AXID>::iterator it = m_widgetObjectMapping.begin();
- it != m_widgetObjectMapping.end(); ++it) {
- if (!Heap::isHeapObjectAlive(it->key))
- deadWidgets.append(it->key);
- }
- for (unsigned i = 0; i < deadWidgets.size(); ++i)
- remove(deadWidgets[i]);
-}
-
AXID AXObjectCacheImpl::platformGenerateAXID() const
{
static AXID lastUsedID = 0;
@@ -714,7 +692,7 @@ void AXObjectCacheImpl::childrenChanged(AXObject* obj)
void AXObjectCacheImpl::notificationPostTimerFired(Timer<AXObjectCacheImpl>*)
{
- RefPtrWillBeRawPtr<Document> protectorForCacheOwner(m_document);
+ RefPtrWillBeRawPtr<Document> protectorForCacheOwner(m_document.get());
m_notificationPostTimer.stop();
@@ -1114,7 +1092,7 @@ void AXObjectCacheImpl::inlineTextBoxesUpdated(LayoutObject* layoutObject)
Settings* AXObjectCacheImpl::settings()
{
- return m_document.settings();
+ return m_document->settings();
}
bool AXObjectCacheImpl::accessibilityEnabled()
@@ -1234,7 +1212,7 @@ void AXObjectCacheImpl::handleFocusedUIElementChanged(Node*, Node* newFocusedNod
void AXObjectCacheImpl::handleInitialFocus()
{
- postNotification(&m_document, AXObjectCache::AXFocusedUIElementChanged);
+ postNotification(m_document, AXObjectCache::AXFocusedUIElementChanged);
}
void AXObjectCacheImpl::handleEditableTextContentChanged(Node* node)
@@ -1368,7 +1346,14 @@ void AXObjectCacheImpl::setCanvasObjectBounds(Element* element, const LayoutRect
DEFINE_TRACE(AXObjectCacheImpl)
{
- visitor->template registerWeakMembers<AXObjectCacheImpl, &AXObjectCacheImpl::clearWeakMembers>(this);
+#if ENABLE(OILPAN)
+ visitor->trace(m_document);
+ visitor->trace(m_objects);
+ visitor->trace(m_widgetObjectMapping);
+ visitor->trace(m_nodeObjectMapping);
+ visitor->trace(m_notificationsToPost);
+ visitor->trace(m_textMarkerNodes);
+#endif
AXObjectCache::trace(visitor);
}
« no previous file with comments | « Source/modules/accessibility/AXObjectCacheImpl.h ('k') | Source/modules/accessibility/AXProgressIndicator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698