Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(279)

Unified Diff: base/memory/scoped_callback_factory.h

Issue 9032010: base::Bind: Remove scoped_callback_factory.h. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/base.gypi ('k') | chrome/browser/browsing_data_quota_helper_impl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_
« no previous file with comments | « base/base.gypi ('k') | chrome/browser/browsing_data_quota_helper_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698