Chromium Code Reviews| Index: sync/internal_api/public/util/weak_handle.h |
| diff --git a/sync/internal_api/public/util/weak_handle.h b/sync/internal_api/public/util/weak_handle.h |
| index bac7c379230f5e23886b78a35eb45f1810554a0e..dcf1ef5743e90c02737d994387551f59bebd4250 100644 |
| --- a/sync/internal_api/public/util/weak_handle.h |
| +++ b/sync/internal_api/public/util/weak_handle.h |
| @@ -58,6 +58,7 @@ |
| #include "base/logging.h" |
| #include "base/memory/ref_counted.h" |
| #include "base/memory/weak_ptr.h" |
| +#include "sync/base/sync_export.h" |
| namespace base { |
| class MessageLoopProxy; |
| @@ -99,7 +100,7 @@ struct ParamTraits<T[]> { |
| // Base class for WeakHandleCore<T> to avoid template bloat. Handles |
| // the interaction with the owner thread and its message loop. |
| -class WeakHandleCoreBase { |
| +class SYNC_EXPORT WeakHandleCoreBase { |
|
Raghu Simha
2012/12/26 08:02:38
Unfortunately, WeakHandleCoreBase must be exported
|
| public: |
| // Assumes the current thread is the owner thread. |
| WeakHandleCoreBase(); |
| @@ -109,7 +110,7 @@ class WeakHandleCoreBase { |
| protected: |
| // May be destroyed on any thread. |
| - ~WeakHandleCoreBase(); |
| + virtual ~WeakHandleCoreBase(); |
| // May be called on any thread. |
| void PostToOwnerThread(const tracked_objects::Location& from_here, |
| @@ -125,7 +126,7 @@ class WeakHandleCoreBase { |
| // WeakHandleCore<T> contains all the logic for WeakHandle<T>. |
| template <typename T> |
| class WeakHandleCore |
| - : public NON_EXPORTED_BASE(WeakHandleCoreBase), |
| + : public WeakHandleCoreBase, |
| public base::RefCountedThreadSafe<WeakHandleCore<T> > { |
| public: |
| // Must be called on |ptr|'s owner thread, which is assumed to be |
| @@ -199,7 +200,7 @@ class WeakHandleCore |
| friend class base::RefCountedThreadSafe<WeakHandleCore<T> >; |
| // May be destroyed on any thread. |
| - ~WeakHandleCore() {} |
| + virtual ~WeakHandleCore() {} |
| // GCC 4.2.1 on OS X gets confused if all the DoCall functions are |
| // named the same, so we distinguish them. |
| @@ -291,6 +292,8 @@ class WeakHandle { |
| new internal::WeakHandleCore<T>(other.Get()) : |
| NULL) {} |
| + virtual ~WeakHandle() {} |
| + |
| // Returns true iff this WeakHandle is initialized. Note that being |
| // initialized isn't a guarantee that the underlying object is still |
| // alive. |