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 de30baa00edcbd544efed937b4cce778f137a8a7..520a8e9fdb8fdc9b3b5b5b98ae8b2a6f18a8bae0 100644 |
--- a/third_party/WebKit/Source/platform/CrossThreadCopier.h |
+++ b/third_party/WebKit/Source/platform/CrossThreadCopier.h |
@@ -241,9 +241,15 @@ template <typename T> |
struct AllowCrossThreadAccessWrapper { |
STACK_ALLOCATED(); |
public: |
- explicit AllowCrossThreadAccessWrapper(T value) : m_value(value) { } |
T value() const { return m_value; } |
private: |
+ // Only constructible from AllowCrossThreadAccess(). |
+ explicit AllowCrossThreadAccessWrapper(T value) : m_value(value) { } |
+ template <typename U> |
+ friend AllowCrossThreadAccessWrapper<U*> AllowCrossThreadAccess(U*); |
+ template <typename U> |
+ friend AllowCrossThreadAccessWrapper<const WeakPtr<U>&> AllowCrossThreadAccess(const WeakPtr<U>&); |
+ |
// This raw pointer is safe since AllowCrossThreadAccessWrapper is |
// always stack-allocated. Ideally this should be Member<T> if T is |
// garbage-collected and T* otherwise, but we don't want to introduce |