WeakPtr should have a move constructor
authorggaren@apple.com <ggaren@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 3 Oct 2017 00:42:05 +0000 (00:42 +0000)
committerggaren@apple.com <ggaren@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 3 Oct 2017 00:42:05 +0000 (00:42 +0000)
https://bugs.webkit.org/show_bug.cgi?id=177789

Reviewed by Chris Dumez.

Source/WTF:

* wtf/WeakPtr.h: Now that we just have a RefPtr data member,
the default operators are sufficient.

Tools:

Chris made me write an API test. It wasn't that painful.

* TestWebKitAPI/Tests/WTF/WeakPtr.cpp:
(TestWebKitAPI::TEST):

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

Source/WTF/ChangeLog
Source/WTF/wtf/WeakPtr.h
Tools/ChangeLog
Tools/TestWebKitAPI/Tests/WTF/WeakPtr.cpp

index 8c86712..1fdedc0 100644 (file)
@@ -1,5 +1,15 @@
 2017-10-02  Geoffrey Garen  <ggaren@apple.com>
 
+        WeakPtr should have a move constructor
+        https://bugs.webkit.org/show_bug.cgi?id=177789
+
+        Reviewed by Chris Dumez.
+
+        * wtf/WeakPtr.h: Now that we just have a RefPtr data member,
+        the default operators are sufficient.
+
+2017-10-02  Geoffrey Garen  <ggaren@apple.com>
+
         NULL WeakPtr should not malloc!
         https://bugs.webkit.org/show_bug.cgi?id=177773
 
index 7157d03..1377113 100644 (file)
@@ -67,13 +67,11 @@ class WeakPtr {
 public:
     WeakPtr() { }
     WeakPtr(std::nullptr_t) { }
-    WeakPtr(const WeakPtr& o) : m_ref(o.m_ref) { }
     WeakPtr(Ref<WeakReference<T>>&& ref) : m_ref(std::forward<Ref<WeakReference<T>>>(ref)) { }
 
     T* get() const { return m_ref ? m_ref->get() : nullptr; }
     operator bool() const { return m_ref && m_ref->get(); }
 
-    WeakPtr& operator=(const WeakPtr& o) { m_ref = o.m_ref; return *this; }
     WeakPtr& operator=(std::nullptr_t) { m_ref = nullptr; return *this; }
 
     T* operator->() const { return m_ref->get(); }
index 62c1274..3057f54 100644 (file)
@@ -1,3 +1,15 @@
+2017-10-02  Geoffrey Garen  <ggaren@apple.com>
+
+        WeakPtr should have a move constructor
+        https://bugs.webkit.org/show_bug.cgi?id=177789
+
+        Reviewed by Chris Dumez.
+
+        Chris made me write an API test. It wasn't that painful.
+
+        * TestWebKitAPI/Tests/WTF/WeakPtr.cpp:
+        (TestWebKitAPI::TEST):
+
 2017-10-02  Filip Pizlo  <fpizlo@apple.com>
 
         WSL ^ should be *
index cd74fc3..7a9acf5 100644 (file)
@@ -116,6 +116,24 @@ TEST(WTF_WeakPtr, Dereference)
     weakPtr->bar();
 }
 
+TEST(WTF_WeakPtr, Operators)
+{
+    Foo f;
+    WeakPtrFactory<Foo> factory;
+    WeakPtr<Foo> weakPtr = factory.createWeakPtr(f);
+
+    WeakPtr<Foo> weakPtr2 = weakPtr;
+    EXPECT_EQ(weakPtr2.get(), &f);
+
+    WeakPtr<Foo> weakPtr3;
+    weakPtr3 = weakPtr;
+    EXPECT_EQ(weakPtr3.get(), &f);
+
+    WeakPtr<Foo> weakPtr4 = WTFMove(weakPtr);
+    EXPECT_EQ(weakPtr4.get(), &f);
+    EXPECT_FALSE(weakPtr);
+}
+
 TEST(WTF_WeakPtr, Forget)
 {
     int dummy = 5;