Title: [176078] trunk
- Revision
- 176078
- Author
- [email protected]
- Date
- 2014-11-13 11:07:11 -0800 (Thu, 13 Nov 2014)
Log Message
Allow constructing a base PassRef with a derived Ref
https://bugs.webkit.org/show_bug.cgi?id=138701
Reviewed by Andreas Kling
Source/WTF:
* wtf/PassRef.h:
(WTF::PassRef<T>::PassRef):
Tools:
* TestWebKitAPI/Tests/WTF/Ref.cpp:
(TestWebKitAPI::passWithPassRef):
(TestWebKitAPI::passWithPassRefPtr):
(TestWebKitAPI::TEST):
Modified Paths
Diff
Modified: trunk/Source/WTF/ChangeLog (176077 => 176078)
--- trunk/Source/WTF/ChangeLog 2014-11-13 18:52:55 UTC (rev 176077)
+++ trunk/Source/WTF/ChangeLog 2014-11-13 19:07:11 UTC (rev 176078)
@@ -1,3 +1,13 @@
+2014-11-13 Myles C. Maxfield <[email protected]>
+
+ Allow constructing a base PassRef with a derived Ref
+ https://bugs.webkit.org/show_bug.cgi?id=138701
+
+ Reviewed by Andreas Kling
+
+ * wtf/PassRef.h:
+ (WTF::PassRef<T>::PassRef):
+
2014-11-12 Ryuan Choi <[email protected]>
[EFL] Fix the build with EFL 1.12
Modified: trunk/Source/WTF/wtf/PassRef.h (176077 => 176078)
--- trunk/Source/WTF/wtf/PassRef.h 2014-11-13 18:52:55 UTC (rev 176077)
+++ trunk/Source/WTF/wtf/PassRef.h 2014-11-13 19:07:11 UTC (rev 176078)
@@ -100,7 +100,7 @@
}
template<typename T> template<typename U> inline PassRef<T>::PassRef(const Ref<U>& other)
- : m_reference(const_cast<T&>(other.get()))
+ : m_reference(static_cast<T&>(const_cast<U&>(other.get())))
#ifndef NDEBUG
, m_gaveUpReference(false)
#endif
Modified: trunk/Tools/ChangeLog (176077 => 176078)
--- trunk/Tools/ChangeLog 2014-11-13 18:52:55 UTC (rev 176077)
+++ trunk/Tools/ChangeLog 2014-11-13 19:07:11 UTC (rev 176078)
@@ -1,3 +1,15 @@
+2014-11-13 Myles C. Maxfield <[email protected]>
+
+ Allow constructing a base PassRef with a derived Ref
+ https://bugs.webkit.org/show_bug.cgi?id=138701
+
+ Reviewed by Andreas Kling
+
+ * TestWebKitAPI/Tests/WTF/Ref.cpp:
+ (TestWebKitAPI::passWithPassRef):
+ (TestWebKitAPI::passWithPassRefPtr):
+ (TestWebKitAPI::TEST):
+
2014-11-05 Ada Chan <[email protected]>
Implement new plug-in API for muting plug-ins
Modified: trunk/Tools/TestWebKitAPI/Tests/WTF/Ref.cpp (176077 => 176078)
--- trunk/Tools/TestWebKitAPI/Tests/WTF/Ref.cpp 2014-11-13 18:52:55 UTC (rev 176077)
+++ trunk/Tools/TestWebKitAPI/Tests/WTF/Ref.cpp 2014-11-13 19:07:11 UTC (rev 176078)
@@ -98,12 +98,12 @@
ASSERT_STREQ("ref(a) | deref(a) | deref(c) ", takeLogStr().c_str());
}
-PassRef<RefLogger> passWithPassRef(PassRef<RefLogger> reference)
+static PassRef<RefLogger> passWithPassRef(PassRef<RefLogger> reference)
{
return reference;
}
-RefPtr<RefLogger> passWithPassRefPtr(PassRefPtr<RefLogger> reference)
+static RefPtr<RefLogger> passWithPassRefPtr(PassRefPtr<RefLogger> reference)
{
return reference;
}
@@ -141,6 +141,22 @@
ASSERT_EQ(&a, ptr.get());
}
ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<DerivedRefLogger> ptr(&a);
+ RefPtr<RefLogger> ptr2(WTF::move(ptr));
+ ASSERT_EQ(nullptr, ptr.get());
+ ASSERT_EQ(&a, ptr2.get());
+ }
+ ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ Ref<DerivedRefLogger> derivedReference(a);
+ Ref<RefLogger> baseReference(passWithPassRef(derivedReference));
+ ASSERT_EQ(&a, derivedReference.ptr());
+ ASSERT_EQ(&a, baseReference.ptr());
+ }
+ ASSERT_STREQ("ref(a) ref(a) deref(a) deref(a) ", takeLogStr().c_str());
}
} // namespace TestWebKitAPI
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes