Title: [185887] trunk
Revision
185887
Author
[email protected]
Date
2015-06-23 15:46:56 -0700 (Tue, 23 Jun 2015)

Log Message

Add operator! and copy/move constructors to WeakObjCPtr
https://bugs.webkit.org/show_bug.cgi?id=146255

Reviewed by Andreas Kling.

Source/WebKit2:

* Shared/mac/WeakObjCPtr.h:
(WebKit::WeakObjCPtr::WeakObjCPtr):
(WebKit::WeakObjCPtr::operator!):

Tools:

* TestWebKitAPI/Tests/WebKit2/cocoa/WeakObjCPtr.mm:
(TEST):

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (185886 => 185887)


--- trunk/Source/WebKit2/ChangeLog	2015-06-23 22:09:05 UTC (rev 185886)
+++ trunk/Source/WebKit2/ChangeLog	2015-06-23 22:46:56 UTC (rev 185887)
@@ -1,3 +1,14 @@
+2015-06-23  Anders Carlsson  <[email protected]>
+
+        Add operator! and copy/move constructors to WeakObjCPtr
+        https://bugs.webkit.org/show_bug.cgi?id=146255
+
+        Reviewed by Andreas Kling.
+
+        * Shared/mac/WeakObjCPtr.h:
+        (WebKit::WeakObjCPtr::WeakObjCPtr):
+        (WebKit::WeakObjCPtr::operator!):
+
 2015-06-23  Antti Koivisto  <[email protected]>
 
         CrashTracer: com.apple.WebKit.Networking at _javascript_Core: WTF::String::isolatedCopy const &

Modified: trunk/Source/WebKit2/Shared/mac/WeakObjCPtr.h (185886 => 185887)


--- trunk/Source/WebKit2/Shared/mac/WeakObjCPtr.h	2015-06-23 22:09:05 UTC (rev 185886)
+++ trunk/Source/WebKit2/Shared/mac/WeakObjCPtr.h	2015-06-23 22:46:56 UTC (rev 185887)
@@ -37,6 +37,8 @@
 id objc_loadWeakRetained(id*);
 id objc_initWeak(id*, id);
 void objc_destroyWeak(id*);
+void objc_copyWeak(id*, id*);
+void objc_moveWeak(id*, id*);
 }
 #endif
 
@@ -56,6 +58,16 @@
         objc_initWeak(&m_weakReference, ptr);
     }
 
+    WeakObjCPtr(const WeakObjCPtr& other)
+    {
+        objc_copyWeak(&m_weakReference, const_cast<id*>(&other.m_weakReference));
+    }
+
+    WeakObjCPtr(WeakObjCPtr&& other)
+    {
+        objc_moveWeak(&m_weakReference, &other.m_weakReference);
+    }
+
     ~WeakObjCPtr()
     {
         objc_destroyWeak(&m_weakReference);
@@ -68,6 +80,11 @@
         return *this;
     }
 
+    bool operator!() const
+    {
+        return !get();
+    }
+
     RetainPtr<ValueType> get() const
     {
         return adoptNS(objc_loadWeakRetained(const_cast<id*>(&m_weakReference)));

Modified: trunk/Tools/ChangeLog (185886 => 185887)


--- trunk/Tools/ChangeLog	2015-06-23 22:09:05 UTC (rev 185886)
+++ trunk/Tools/ChangeLog	2015-06-23 22:46:56 UTC (rev 185887)
@@ -1,3 +1,13 @@
+2015-06-23  Anders Carlsson  <[email protected]>
+
+        Add operator! and copy/move constructors to WeakObjCPtr
+        https://bugs.webkit.org/show_bug.cgi?id=146255
+
+        Reviewed by Andreas Kling.
+
+        * TestWebKitAPI/Tests/WebKit2/cocoa/WeakObjCPtr.mm:
+        (TEST):
+
 2015-06-23  Simon Fraser  <[email protected]>
 
         Expose some more rendering progress events, and have MiniBrowser log for each of them

Modified: trunk/Tools/TestWebKitAPI/Tests/WebKit2/cocoa/WeakObjCPtr.mm (185886 => 185887)


--- trunk/Tools/TestWebKitAPI/Tests/WebKit2/cocoa/WeakObjCPtr.mm	2015-06-23 22:09:05 UTC (rev 185886)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit2/cocoa/WeakObjCPtr.mm	2015-06-23 22:46:56 UTC (rev 185887)
@@ -106,3 +106,49 @@
 
     EXPECT_EQ(weak.get(), (void*)nil);
 }
+
+TEST(WebKit2_WeakObjCPtr, LogicalNegation)
+{
+    id object = [[NSObject alloc] init];
+    WeakObjCPtr<id> weak(object);
+
+    EXPECT_FALSE(!weak);
+
+    [object release];
+
+    EXPECT_TRUE(!weak);
+}
+
+TEST(WebKit2_WeakObjCPtr, CopyConstructor)
+{
+    id object = [[NSObject alloc] init];
+    WeakObjCPtr<id> weak1(object);
+    WeakObjCPtr<id> weak2(weak1);
+
+    EXPECT_EQ(weak1.get(), object);
+    EXPECT_EQ(weak2.get(), object);
+
+    {
+        WeakObjCPtr<id> weak3(weak2);
+    }
+
+    [object release];
+
+    EXPECT_EQ(weak1.get(), (void*)nil);
+    EXPECT_EQ(weak2.get(), (void*)nil);
+}
+
+TEST(WebKit2_WeakObjCPtr, MoveConstructor)
+{
+    id object = [[NSObject alloc] init];
+    WeakObjCPtr<id> weak1(object);
+    WeakObjCPtr<id> weak2(WTF::move(weak1));
+
+    EXPECT_EQ(weak1.get(), (void*)nil);
+    EXPECT_EQ(weak2.get(), object);
+
+    [object release];
+
+    EXPECT_EQ(weak1.get(), (void*)nil);
+    EXPECT_EQ(weak2.get(), (void*)nil);
+}
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to