| 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);
 | 
| 
 |