Index: base/memory/scoped_callback_factory.h |
diff --git a/base/memory/scoped_callback_factory.h b/base/memory/scoped_callback_factory.h |
deleted file mode 100644 |
index 2c2b0eba695f8a7f10c2ecb7c61ea4435983a2b6..0000000000000000000000000000000000000000 |
--- a/base/memory/scoped_callback_factory.h |
+++ /dev/null |
@@ -1,133 +0,0 @@ |
-// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-// ScopedCallbackFactory helps in cases where you wish to allocate a Callback |
-// (see base/callback.h), but need to prevent any pending callbacks from |
-// executing when your object gets destroyed. |
-// |
-// EXAMPLE: |
-// |
-// void GatherDataAsynchronously(Callback1<Data>::Type* callback); |
-// |
-// class MyClass { |
-// public: |
-// MyClass() : factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { |
-// } |
-// |
-// void Process() { |
-// GatherDataAsynchronously(factory_.NewCallback(&MyClass::GotData)); |
-// } |
-// |
-// private: |
-// void GotData(const Data& data) { |
-// ... |
-// } |
-// |
-// base::ScopedCallbackFactory<MyClass> factory_; |
-// }; |
-// |
-// In the above example, the Process function calls GatherDataAsynchronously to |
-// kick off some asynchronous processing that upon completion will notify a |
-// callback. If in the meantime, the MyClass instance is destroyed, when the |
-// callback runs, it will notice that the MyClass instance is dead, and it will |
-// avoid calling the GotData method. |
- |
-#ifndef BASE_MEMORY_SCOPED_CALLBACK_FACTORY_H_ |
-#define BASE_MEMORY_SCOPED_CALLBACK_FACTORY_H_ |
- |
-#include "base/callback_old.h" |
-#include "base/memory/weak_ptr.h" |
- |
-namespace base { |
- |
-template <class T> |
-class ScopedCallbackFactory { |
- public: |
- explicit ScopedCallbackFactory(T* obj) : weak_factory_(obj) { |
- } |
- |
- typename Callback0::Type* NewCallback( |
- void (T::*method)()) { |
- return new CallbackImpl<void (T::*)(), Tuple0 >( |
- weak_factory_.GetWeakPtr(), method); |
- } |
- |
- template <typename Arg1> |
- typename Callback1<Arg1>::Type* NewCallback( |
- void (T::*method)(Arg1)) { |
- return new CallbackImpl<void (T::*)(Arg1), Tuple1<Arg1> >( |
- weak_factory_.GetWeakPtr(), method); |
- } |
- |
- template <typename Arg1, typename Arg2> |
- typename Callback2<Arg1, Arg2>::Type* NewCallback( |
- void (T::*method)(Arg1, Arg2)) { |
- return new CallbackImpl<void (T::*)(Arg1, Arg2), Tuple2<Arg1, Arg2> >( |
- weak_factory_.GetWeakPtr(), method); |
- } |
- |
- template <typename Arg1, typename Arg2, typename Arg3> |
- typename Callback3<Arg1, Arg2, Arg3>::Type* NewCallback( |
- void (T::*method)(Arg1, Arg2, Arg3)) { |
- return new CallbackImpl<void (T::*)(Arg1, Arg2, Arg3), |
- Tuple3<Arg1, Arg2, Arg3> >( |
- weak_factory_.GetWeakPtr(), method); |
- } |
- |
- template <typename Arg1, typename Arg2, typename Arg3, typename Arg4> |
- typename Callback4<Arg1, Arg2, Arg3, Arg4>::Type* NewCallback( |
- void (T::*method)(Arg1, Arg2, Arg3, Arg4)) { |
- return new CallbackImpl<void (T::*)(Arg1, Arg2, Arg3, Arg4), |
- Tuple4<Arg1, Arg2, Arg3, Arg4> >( |
- weak_factory_.GetWeakPtr(), method); |
- } |
- |
- template <typename Arg1, typename Arg2, typename Arg3, typename Arg4, |
- typename Arg5> |
- typename Callback5<Arg1, Arg2, Arg3, Arg4, Arg5>::Type* NewCallback( |
- void (T::*method)(Arg1, Arg2, Arg3, Arg4, Arg5)) { |
- return new CallbackImpl<void (T::*)(Arg1, Arg2, Arg3, Arg4, Arg5), |
- Tuple5<Arg1, Arg2, Arg3, Arg4, Arg5> >( |
- weak_factory_.GetWeakPtr(), method); |
- } |
- |
- void RevokeAll() { weak_factory_.InvalidateWeakPtrs(); } |
- bool HasPendingCallbacks() const { return weak_factory_.HasWeakPtrs(); } |
- |
- private: |
- template <typename Method> |
- class CallbackStorage { |
- public: |
- CallbackStorage(const WeakPtr<T>& obj, Method meth) |
- : obj_(obj), |
- meth_(meth) { |
- } |
- |
- protected: |
- WeakPtr<T> obj_; |
- Method meth_; |
- }; |
- |
- template <typename Method, typename Params> |
- class CallbackImpl : public CallbackStorage<Method>, |
- public CallbackRunner<Params> { |
- public: |
- CallbackImpl(const WeakPtr<T>& obj, Method meth) |
- : CallbackStorage<Method>(obj, meth) { |
- } |
- virtual void RunWithParams(const Params& params) { |
- // Use "this->" to force C++ to look inside our templatized base class; |
- // see Effective C++, 3rd Ed, item 43, p210 for details. |
- if (!this->obj_) |
- return; |
- DispatchToMethod(this->obj_.get(), this->meth_, params); |
- } |
- }; |
- |
- WeakPtrFactory<T> weak_factory_; |
-}; |
- |
-} // namespace base |
- |
-#endif // BASE_MEMORY_SCOPED_CALLBACK_FACTORY_H_ |