Index: third_party/WebKit/Source/platform/CrossThreadCopier.h |
diff --git a/third_party/WebKit/Source/platform/CrossThreadCopier.h b/third_party/WebKit/Source/platform/CrossThreadCopier.h |
index 8152f5858864c674925700bb8696be571dadf12f..ea57c88ac758d3066d224c3da795fead247da9ee 100644 |
--- a/third_party/WebKit/Source/platform/CrossThreadCopier.h |
+++ b/third_party/WebKit/Source/platform/CrossThreadCopier.h |
@@ -71,18 +71,18 @@ struct CrossThreadCopierPassThrough { |
} |
}; |
-template <typename T, bool isArithmeticOrEnum, bool isThreadSafeRefCounted, bool isGarbageCollected> |
+template <typename T, bool isArithmeticOrEnum, bool isThreadSafeRefCounted> |
struct CrossThreadCopierBase; |
// Arithmetic values (integers or floats) and enums can be safely copied. |
-template <typename T, bool isThreadSafeRefCounted, bool isGarbageCollected> |
-struct CrossThreadCopierBase<T, true, isThreadSafeRefCounted, isGarbageCollected> : public CrossThreadCopierPassThrough<T> { |
+template <typename T, bool isThreadSafeRefCounted> |
+struct CrossThreadCopierBase<T, true, isThreadSafeRefCounted> : public CrossThreadCopierPassThrough<T> { |
STATIC_ONLY(CrossThreadCopierBase); |
}; |
// Custom copy method for ThreadSafeRefCounted. |
-template <typename T, bool isGarbageCollected> |
-struct CrossThreadCopierBase<T, false, true, isGarbageCollected> { |
+template <typename T> |
+struct CrossThreadCopierBase<T, false, true> { |
STATIC_ONLY(CrossThreadCopierBase); |
typedef typename WTF::RemoveTemplate<T, RefPtr>::Type TypeWithoutRefPtr; |
typedef typename WTF::RemoveTemplate<TypeWithoutRefPtr, PassRefPtr>::Type TypeWithoutPassRefPtr; |
@@ -101,18 +101,6 @@ struct CrossThreadCopierBase<T, false, true, isGarbageCollected> { |
} |
}; |
-// A pointer to GarbageCollected. |
-template <typename T> |
-struct CrossThreadCopierBase<T, false, false, true> { |
- STATIC_ONLY(CrossThreadCopierBase); |
- typedef typename std::remove_pointer<T>::type TypeWithoutPointer; |
- typedef TypeWithoutPointer* Type; |
- static Type copy(const T& ptr) |
- { |
- return ptr; |
- } |
-}; |
- |
template <typename T> |
struct CrossThreadCopier : public CrossThreadCopierBase< |
T, |
@@ -122,8 +110,7 @@ struct CrossThreadCopier : public CrossThreadCopierBase< |
|| WTF::IsSubclassOfTemplate<typename WTF::RemoveTemplate<T, PassRefPtr>::Type, ThreadSafeRefCounted>::value |
|| std::is_base_of<SkRefCnt, typename WTF::RemoveTemplate<T, RefPtr>::Type>::value |
|| std::is_base_of<SkRefCnt, typename std::remove_pointer<T>::type>::value |
- || std::is_base_of<SkRefCnt, typename WTF::RemoveTemplate<T, PassRefPtr>::Type>::value, |
- WTF::IsSubclassOfTemplate<typename std::remove_pointer<T>::type, GarbageCollected>::value> { |
+ || std::is_base_of<SkRefCnt, typename WTF::RemoveTemplate<T, PassRefPtr>::Type>::value> { |
STATIC_ONLY(CrossThreadCopier); |
}; |
@@ -167,6 +154,11 @@ struct CrossThreadCopier<std::unique_ptr<T>> { |
} |
}; |
+template<typename T> |
+struct CrossThreadCopier<CrossThreadPersistent<T>> : public CrossThreadCopierPassThrough<CrossThreadPersistent<T>> { |
+ STATIC_ONLY(CrossThreadCopier); |
+}; |
+ |
template <typename T> |
struct CrossThreadCopier<WTF::PassedWrapper<T>> { |
STATIC_ONLY(CrossThreadCopier); |