| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // ============================================================================ | 5 // ============================================================================ |
| 6 // **************************************************************************** | 6 // **************************************************************************** |
| 7 // * THIS HEADER IS DEPRECATED, SEE base/callback.h FOR NEW IMPLEMENTATION * | 7 // * THIS HEADER IS DEPRECATED, SEE base/callback.h FOR NEW IMPLEMENTATION * |
| 8 // **************************************************************************** | 8 // **************************************************************************** |
| 9 // ============================================================================ | 9 // ============================================================================ |
| 10 // ============================================================================ | 10 // ============================================================================ |
| (...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 217 delete obj_; | 217 delete obj_; |
| 218 } | 218 } |
| 219 virtual void Cancel() { | 219 virtual void Cancel() { |
| 220 obj_ = NULL; | 220 obj_ = NULL; |
| 221 } | 221 } |
| 222 | 222 |
| 223 private: | 223 private: |
| 224 const T* obj_; | 224 const T* obj_; |
| 225 }; | 225 }; |
| 226 | 226 |
| 227 // Task to Release() an object | |
| 228 template<class T> | |
| 229 class ReleaseTask : public CancelableTask { | |
| 230 public: | |
| 231 explicit ReleaseTask(const T* obj) : obj_(obj) { | |
| 232 } | |
| 233 virtual void Run() { | |
| 234 if (obj_) | |
| 235 obj_->Release(); | |
| 236 } | |
| 237 virtual void Cancel() { | |
| 238 obj_ = NULL; | |
| 239 } | |
| 240 | |
| 241 private: | |
| 242 const T* obj_; | |
| 243 }; | |
| 244 | |
| 245 // Equivalents for use by base::Bind(). | 227 // Equivalents for use by base::Bind(). |
| 246 template<typename T> | 228 template<typename T> |
| 247 void DeletePointer(T* obj) { | 229 void DeletePointer(T* obj) { |
| 248 delete obj; | 230 delete obj; |
| 249 } | 231 } |
| 250 | 232 |
| 251 template<typename T> | |
| 252 void ReleasePointer(T* obj) { | |
| 253 obj->Release(); | |
| 254 } | |
| 255 | |
| 256 // RunnableMethodTraits -------------------------------------------------------- | 233 // RunnableMethodTraits -------------------------------------------------------- |
| 257 // | 234 // |
| 258 // This traits-class is used by RunnableMethod to manage the lifetime of the | 235 // This traits-class is used by RunnableMethod to manage the lifetime of the |
| 259 // callee object. By default, it is assumed that the callee supports AddRef | 236 // callee object. By default, it is assumed that the callee supports AddRef |
| 260 // and Release methods. A particular class can specialize this template to | 237 // and Release methods. A particular class can specialize this template to |
| 261 // define other lifetime management. For example, if the callee is known to | 238 // define other lifetime management. For example, if the callee is known to |
| 262 // live longer than the RunnableMethod object, then a RunnableMethodTraits | 239 // live longer than the RunnableMethod object, then a RunnableMethodTraits |
| 263 // struct could be defined with empty RetainCallee and ReleaseCallee methods. | 240 // struct could be defined with empty RetainCallee and ReleaseCallee methods. |
| 264 // | 241 // |
| 265 // The DISABLE_RUNNABLE_METHOD_REFCOUNT macro is provided as a convenient way | 242 // The DISABLE_RUNNABLE_METHOD_REFCOUNT macro is provided as a convenient way |
| (...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 639 Task* task_; | 616 Task* task_; |
| 640 bool* should_leak_task_; | 617 bool* should_leak_task_; |
| 641 static bool kTaskLeakingDefault; | 618 static bool kTaskLeakingDefault; |
| 642 }; | 619 }; |
| 643 | 620 |
| 644 } // namespace subtle | 621 } // namespace subtle |
| 645 | 622 |
| 646 } // namespace base | 623 } // namespace base |
| 647 | 624 |
| 648 #endif // BASE_TASK_H_ | 625 #endif // BASE_TASK_H_ |
| OLD | NEW |