Move TreeScope, IdTargetObserverRegistry to std::unique_ptr
authorzandobersek@gmail.com <zandobersek@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 8 Feb 2014 20:10:00 +0000 (20:10 +0000)
committerzandobersek@gmail.com <zandobersek@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 8 Feb 2014 20:10:00 +0000 (20:10 +0000)
https://bugs.webkit.org/show_bug.cgi?id=127276

Reviewed by Andreas Kling.

Replace uses of OwnPtr in the TreeScope and IdTargetObserverRegistry classes with std::unique_ptr.

* dom/IdTargetObserverRegistry.cpp:
(WebCore::IdTargetObserverRegistry::addObserver):
* dom/IdTargetObserverRegistry.h:
(WebCore::IdTargetObserverRegistry::IdTargetObserverRegistry):
* dom/TreeScope.cpp:
(WebCore::TreeScope::TreeScope):
(WebCore::TreeScope::destroyTreeScopeData):
(WebCore::TreeScope::addElementById):
(WebCore::TreeScope::addElementByName):
(WebCore::TreeScope::addImageMap):
(WebCore::TreeScope::labelElementForId):
* dom/TreeScope.h:
(WebCore::TreeScope::shouldCacheLabelsByForAttribute):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@163719 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/dom/IdTargetObserverRegistry.cpp
Source/WebCore/dom/IdTargetObserverRegistry.h
Source/WebCore/dom/TreeScope.cpp
Source/WebCore/dom/TreeScope.h

index 54c87e1..7e44e04 100644 (file)
@@ -1,3 +1,26 @@
+2014-02-08  Zan Dobersek  <zdobersek@igalia.com>
+
+        Move TreeScope, IdTargetObserverRegistry to std::unique_ptr
+        https://bugs.webkit.org/show_bug.cgi?id=127276
+
+        Reviewed by Andreas Kling.
+
+        Replace uses of OwnPtr in the TreeScope and IdTargetObserverRegistry classes with std::unique_ptr.
+
+        * dom/IdTargetObserverRegistry.cpp:
+        (WebCore::IdTargetObserverRegistry::addObserver):
+        * dom/IdTargetObserverRegistry.h:
+        (WebCore::IdTargetObserverRegistry::IdTargetObserverRegistry):
+        * dom/TreeScope.cpp:
+        (WebCore::TreeScope::TreeScope):
+        (WebCore::TreeScope::destroyTreeScopeData):
+        (WebCore::TreeScope::addElementById):
+        (WebCore::TreeScope::addElementByName):
+        (WebCore::TreeScope::addImageMap):
+        (WebCore::TreeScope::labelElementForId):
+        * dom/TreeScope.h:
+        (WebCore::TreeScope::shouldCacheLabelsByForAttribute):
+
 2014-02-08  Anders Carlsson  <andersca@apple.com>
 
         Slight CTTE in PingLoader
index 914dd48..b3d6fd4 100644 (file)
 
 namespace WebCore {
 
-PassOwnPtr<IdTargetObserverRegistry> IdTargetObserverRegistry::create()
-{
-    return adoptPtr(new IdTargetObserverRegistry());
-}
-
 void IdTargetObserverRegistry::addObserver(const AtomicString& id, IdTargetObserver* observer)
 {
     if (id.isEmpty())
@@ -42,7 +37,7 @@ void IdTargetObserverRegistry::addObserver(const AtomicString& id, IdTargetObser
     
     IdToObserverSetMap::AddResult result = m_registry.add(id.impl(), nullptr);
     if (result.isNewEntry)
-        result.iterator->value = adoptPtr(new ObserverSet());
+        result.iterator->value = std::make_unique<ObserverSet>();
 
     result.iterator->value->add(observer);
 }
index 29c40f7..20ccc9b 100644 (file)
 #ifndef IdTargetObserverRegistry_h
 #define IdTargetObserverRegistry_h
 
+#include <memory>
 #include <wtf/Forward.h>
 #include <wtf/HashMap.h>
 #include <wtf/HashSet.h>
-#include <wtf/PassOwnPtr.h>
 #include <wtf/text/AtomicString.h>
 
 namespace WebCore {
@@ -40,18 +40,20 @@ class IdTargetObserverRegistry {
     WTF_MAKE_FAST_ALLOCATED;
     friend class IdTargetObserver;
 public:
-    static PassOwnPtr<IdTargetObserverRegistry> create();
+    IdTargetObserverRegistry()
+        : m_notifyingObserversInSet(0)
+    { }
+
     void notifyObservers(const AtomicString& id);
     void notifyObservers(const AtomicStringImpl& id);
 
 private:
-    IdTargetObserverRegistry() : m_notifyingObserversInSet(0) { }
     void addObserver(const AtomicString& id, IdTargetObserver*);
     void removeObserver(const AtomicString& id, IdTargetObserver*);
     void notifyObserversInternal(const AtomicStringImpl& id);
 
     typedef HashSet<IdTargetObserver*> ObserverSet;
-    typedef HashMap<const AtomicStringImpl*, OwnPtr<ObserverSet>> IdToObserverSetMap;
+    typedef HashMap<const AtomicStringImpl*, std::unique_ptr<ObserverSet>> IdToObserverSetMap;
     IdToObserverSetMap m_registry;
     ObserverSet* m_notifyingObserversInSet;
 };
index 0aa90bf..c6c3f49 100644 (file)
@@ -63,7 +63,7 @@ TreeScope::TreeScope(ContainerNode* rootNode, Document* document)
     , m_documentScope(document)
     , m_parentTreeScope(document)
     , m_selfOnlyRefCount(0)
-    , m_idTargetObserverRegistry(IdTargetObserverRegistry::create())
+    , m_idTargetObserverRegistry(std::make_unique<IdTargetObserverRegistry>())
 {
     ASSERT(rootNode);
     ASSERT(document);
@@ -77,7 +77,7 @@ TreeScope::TreeScope(Document* document)
     , m_documentScope(document)
     , m_parentTreeScope(nullptr)
     , m_selfOnlyRefCount(0)
-    , m_idTargetObserverRegistry(IdTargetObserverRegistry::create())
+    , m_idTargetObserverRegistry(std::make_unique<IdTargetObserverRegistry>())
 {
     ASSERT(document);
     m_rootNode->setTreeScope(*this);
@@ -107,9 +107,9 @@ TreeScope::~TreeScope()
 
 void TreeScope::destroyTreeScopeData()
 {
-    m_elementsById.clear();
-    m_imageMapsByName.clear();
-    m_labelsByForAttribute.clear();
+    m_elementsById = nullptr;
+    m_imageMapsByName = nullptr;
+    m_labelsByForAttribute = nullptr;
 }
 
 void TreeScope::clearDocumentScope()
@@ -153,7 +153,7 @@ const Vector<Element*>* TreeScope::getAllElementsById(const AtomicString& elemen
 void TreeScope::addElementById(const AtomicStringImpl& elementId, Element& element)
 {
     if (!m_elementsById)
-        m_elementsById = adoptPtr(new DocumentOrderedMap);
+        m_elementsById = std::make_unique<DocumentOrderedMap>();
     m_elementsById->add(elementId, element, *this);
     m_idTargetObserverRegistry->notifyObservers(elementId);
 }
@@ -178,7 +178,7 @@ Element* TreeScope::getElementByName(const AtomicString& name) const
 void TreeScope::addElementByName(const AtomicStringImpl& name, Element& element)
 {
     if (!m_elementsByName)
-        m_elementsByName = adoptPtr(new DocumentOrderedMap);
+        m_elementsByName = std::make_unique<DocumentOrderedMap>();
     m_elementsByName->add(name, element, *this);
 }
 
@@ -206,7 +206,7 @@ void TreeScope::addImageMap(HTMLMapElement& imageMap)
     if (!name)
         return;
     if (!m_imageMapsByName)
-        m_imageMapsByName = adoptPtr(new DocumentOrderedMap);
+        m_imageMapsByName = std::make_unique<DocumentOrderedMap>();
     m_imageMapsByName->add(*name, imageMap, *this);
 }
 
@@ -298,7 +298,7 @@ HTMLLabelElement* TreeScope::labelElementForId(const AtomicString& forAttributeV
 
     if (!m_labelsByForAttribute) {
         // Populate the map on first access.
-        m_labelsByForAttribute = adoptPtr(new DocumentOrderedMap);
+        m_labelsByForAttribute = std::make_unique<DocumentOrderedMap>();
 
         for (auto& label : descendantsOfType<HTMLLabelElement>(*rootNode())) {
             const AtomicString& forValue = label.fastGetAttribute(forAttr);
index c1c1dec..e3c5d43 100644 (file)
@@ -28,6 +28,7 @@
 #define TreeScope_h
 
 #include "DocumentOrderedMap.h"
+#include <memory>
 #include <wtf/Forward.h>
 #include <wtf/text/AtomicString.h>
 
@@ -79,7 +80,7 @@ public:
     Element* elementFromPoint(int x, int y) const;
 
     // For accessibility.
-    bool shouldCacheLabelsByForAttribute() const { return m_labelsByForAttribute; }
+    bool shouldCacheLabelsByForAttribute() const { return !!m_labelsByForAttribute; }
     void addLabel(const AtomicStringImpl& forAttributeValue, HTMLLabelElement&);
     void removeLabel(const AtomicStringImpl& forAttributeValue, HTMLLabelElement&);
     HTMLLabelElement* labelElementForId(const AtomicString& forAttributeValue);
@@ -164,12 +165,12 @@ private:
     TreeScope* m_parentTreeScope;
     unsigned m_selfOnlyRefCount;
 
-    OwnPtr<DocumentOrderedMap> m_elementsById;
-    OwnPtr<DocumentOrderedMap> m_elementsByName;
-    OwnPtr<DocumentOrderedMap> m_imageMapsByName;
-    OwnPtr<DocumentOrderedMap> m_labelsByForAttribute;
+    std::unique_ptr<DocumentOrderedMap> m_elementsById;
+    std::unique_ptr<DocumentOrderedMap> m_elementsByName;
+    std::unique_ptr<DocumentOrderedMap> m_imageMapsByName;
+    std::unique_ptr<DocumentOrderedMap> m_labelsByForAttribute;
 
-    OwnPtr<IdTargetObserverRegistry> m_idTargetObserverRegistry;
+    std::unique_ptr<IdTargetObserverRegistry> m_idTargetObserverRegistry;
 
     mutable RefPtr<DOMSelection> m_selection;
 };