| Index: third_party/WebKit/Source/wtf/WeakPtr.h
|
| diff --git a/third_party/WebKit/Source/wtf/WeakPtr.h b/third_party/WebKit/Source/wtf/WeakPtr.h
|
| index e04fd5a5fe151f2fe3f4560f237d4547bf731752..86bd8c7598518870442c3b0b26d20c2d5fa48c80 100644
|
| --- a/third_party/WebKit/Source/wtf/WeakPtr.h
|
| +++ b/third_party/WebKit/Source/wtf/WeakPtr.h
|
| @@ -34,122 +34,120 @@
|
|
|
| namespace WTF {
|
|
|
| -template<typename T>
|
| +template <typename T>
|
| class WeakReference : public ThreadSafeRefCounted<WeakReference<T>> {
|
| - WTF_MAKE_NONCOPYABLE(WeakReference<T>);
|
| - USING_FAST_MALLOC(WeakReference);
|
| -public:
|
| - static PassRefPtr<WeakReference<T>> create(T* ptr) { return adoptRef(new WeakReference(ptr)); }
|
| - static PassRefPtr<WeakReference<T>> createUnbound() { return adoptRef(new WeakReference()); }
|
| -
|
| - T* get() const
|
| - {
|
| - ASSERT(m_boundThread == currentThread());
|
| - return m_ptr;
|
| - }
|
| -
|
| - void clear()
|
| - {
|
| - ASSERT(m_boundThread == currentThread());
|
| - m_ptr = 0;
|
| - }
|
| -
|
| - void bindTo(T* ptr)
|
| - {
|
| - ASSERT(!m_ptr);
|
| + WTF_MAKE_NONCOPYABLE(WeakReference<T>);
|
| + USING_FAST_MALLOC(WeakReference);
|
| +
|
| + public:
|
| + static PassRefPtr<WeakReference<T>> create(T* ptr) {
|
| + return adoptRef(new WeakReference(ptr));
|
| + }
|
| + static PassRefPtr<WeakReference<T>> createUnbound() {
|
| + return adoptRef(new WeakReference());
|
| + }
|
| +
|
| + T* get() const {
|
| + ASSERT(m_boundThread == currentThread());
|
| + return m_ptr;
|
| + }
|
| +
|
| + void clear() {
|
| + ASSERT(m_boundThread == currentThread());
|
| + m_ptr = 0;
|
| + }
|
| +
|
| + void bindTo(T* ptr) {
|
| + ASSERT(!m_ptr);
|
| #if ENABLE(ASSERT)
|
| - m_boundThread = currentThread();
|
| + m_boundThread = currentThread();
|
| #endif
|
| - m_ptr = ptr;
|
| - }
|
| + m_ptr = ptr;
|
| + }
|
|
|
| -private:
|
| - WeakReference() : m_ptr(0) { }
|
| + private:
|
| + WeakReference() : m_ptr(0) {}
|
|
|
| - explicit WeakReference(T* ptr)
|
| - : m_ptr(ptr)
|
| + explicit WeakReference(T* ptr)
|
| + : m_ptr(ptr)
|
| #if ENABLE(ASSERT)
|
| - , m_boundThread(currentThread())
|
| + ,
|
| + m_boundThread(currentThread())
|
| #endif
|
| - {
|
| - }
|
| + {
|
| + }
|
|
|
| - T* m_ptr;
|
| + T* m_ptr;
|
| #if ENABLE(ASSERT)
|
| - ThreadIdentifier m_boundThread;
|
| + ThreadIdentifier m_boundThread;
|
| #endif
|
| };
|
|
|
| -template<typename T>
|
| +template <typename T>
|
| class WeakPtr {
|
| - USING_FAST_MALLOC(WeakPtr);
|
| -public:
|
| - WeakPtr() { }
|
| - WeakPtr(std::nullptr_t) { }
|
| - WeakPtr(PassRefPtr<WeakReference<T>> ref) : m_ref(ref) { }
|
| -
|
| - T* get() const { return m_ref ? m_ref->get() : 0; }
|
| - void clear() { m_ref.clear(); }
|
| -
|
| - T* operator->() const
|
| - {
|
| - ASSERT(get());
|
| - return get();
|
| - }
|
| -
|
| - typedef RefPtr<WeakReference<T>> (WeakPtr::*UnspecifiedBoolType);
|
| - operator UnspecifiedBoolType() const { return get() ? &WeakPtr::m_ref : 0; }
|
| -
|
| -private:
|
| - RefPtr<WeakReference<T>> m_ref;
|
| + USING_FAST_MALLOC(WeakPtr);
|
| +
|
| + public:
|
| + WeakPtr() {}
|
| + WeakPtr(std::nullptr_t) {}
|
| + WeakPtr(PassRefPtr<WeakReference<T>> ref) : m_ref(ref) {}
|
| +
|
| + T* get() const { return m_ref ? m_ref->get() : 0; }
|
| + void clear() { m_ref.clear(); }
|
| +
|
| + T* operator->() const {
|
| + ASSERT(get());
|
| + return get();
|
| + }
|
| +
|
| + typedef RefPtr<WeakReference<T>>(WeakPtr::*UnspecifiedBoolType);
|
| + operator UnspecifiedBoolType() const { return get() ? &WeakPtr::m_ref : 0; }
|
| +
|
| + private:
|
| + RefPtr<WeakReference<T>> m_ref;
|
| };
|
|
|
| -template<typename T, typename U> inline bool operator==(const WeakPtr<T>& a, const WeakPtr<U>& b)
|
| -{
|
| - return a.get() == b.get();
|
| +template <typename T, typename U>
|
| +inline bool operator==(const WeakPtr<T>& a, const WeakPtr<U>& b) {
|
| + return a.get() == b.get();
|
| }
|
|
|
| -template<typename T, typename U> inline bool operator!=(const WeakPtr<T>& a, const WeakPtr<U>& b)
|
| -{
|
| - return a.get() != b.get();
|
| +template <typename T, typename U>
|
| +inline bool operator!=(const WeakPtr<T>& a, const WeakPtr<U>& b) {
|
| + return a.get() != b.get();
|
| }
|
|
|
| -template<typename T>
|
| +template <typename T>
|
| class WeakPtrFactory {
|
| - WTF_MAKE_NONCOPYABLE(WeakPtrFactory<T>);
|
| - USING_FAST_MALLOC(WeakPtrFactory);
|
| -public:
|
| - explicit WeakPtrFactory(T* ptr) : m_ref(WeakReference<T>::create(ptr)) { }
|
| -
|
| - WeakPtrFactory(PassRefPtr<WeakReference<T>> ref, T* ptr)
|
| - : m_ref(ref)
|
| - {
|
| - m_ref->bindTo(ptr);
|
| - }
|
| -
|
| - ~WeakPtrFactory() { m_ref->clear(); }
|
| -
|
| - // We should consider having createWeakPtr populate m_ref the first time createWeakPtr is called.
|
| - WeakPtr<T> createWeakPtr() { return WeakPtr<T>(m_ref); }
|
| -
|
| - void revokeAll()
|
| - {
|
| - T* ptr = m_ref->get();
|
| - m_ref->clear();
|
| - // We create a new WeakReference so that future calls to createWeakPtr() create nonzero WeakPtrs.
|
| - m_ref = WeakReference<T>::create(ptr);
|
| - }
|
| -
|
| - bool hasWeakPtrs() const
|
| - {
|
| - return m_ref->refCount() > 1;
|
| - }
|
| -
|
| -private:
|
| - RefPtr<WeakReference<T>> m_ref;
|
| + WTF_MAKE_NONCOPYABLE(WeakPtrFactory<T>);
|
| + USING_FAST_MALLOC(WeakPtrFactory);
|
| +
|
| + public:
|
| + explicit WeakPtrFactory(T* ptr) : m_ref(WeakReference<T>::create(ptr)) {}
|
| +
|
| + WeakPtrFactory(PassRefPtr<WeakReference<T>> ref, T* ptr) : m_ref(ref) {
|
| + m_ref->bindTo(ptr);
|
| + }
|
| +
|
| + ~WeakPtrFactory() { m_ref->clear(); }
|
| +
|
| + // We should consider having createWeakPtr populate m_ref the first time createWeakPtr is called.
|
| + WeakPtr<T> createWeakPtr() { return WeakPtr<T>(m_ref); }
|
| +
|
| + void revokeAll() {
|
| + T* ptr = m_ref->get();
|
| + m_ref->clear();
|
| + // We create a new WeakReference so that future calls to createWeakPtr() create nonzero WeakPtrs.
|
| + m_ref = WeakReference<T>::create(ptr);
|
| + }
|
| +
|
| + bool hasWeakPtrs() const { return m_ref->refCount() > 1; }
|
| +
|
| + private:
|
| + RefPtr<WeakReference<T>> m_ref;
|
| };
|
|
|
| -} // namespace WTF
|
| +} // namespace WTF
|
|
|
| using WTF::WeakPtr;
|
| using WTF::WeakPtrFactory;
|
|
|