Index: trunk/src/chrome/browser/history/history_db_task.h |
=================================================================== |
--- trunk/src/chrome/browser/history/history_db_task.h (revision 285001) |
+++ trunk/src/chrome/browser/history/history_db_task.h (working copy) |
@@ -5,6 +5,8 @@ |
#ifndef CHROME_BROWSER_HISTORY_HISTORY_DB_TASK_H_ |
#define CHROME_BROWSER_HISTORY_HISTORY_DB_TASK_H_ |
+#include "base/memory/ref_counted.h" |
+ |
namespace history { |
class HistoryBackend; |
@@ -14,12 +16,9 @@ |
// thread. HistoryDBTask is scheduled using HistoryService::ScheduleDBTask. |
// When HistoryBackend processes the task it invokes RunOnDBThread. Once the |
// task completes and has not been canceled, DoneRunOnMainThread is invoked back |
-// on the main thread, after which this object is destroyed, also on the |
-// main thread. |
-class HistoryDBTask { |
+// on the main thread. |
+class HistoryDBTask : public base::RefCountedThreadSafe<HistoryDBTask> { |
public: |
- virtual ~HistoryDBTask() {} |
- |
// Invoked on the database thread. The return value indicates whether the |
// task is done. A return value of true signals the task is done and |
// RunOnDBThread should NOT be invoked again. A return value of false |
@@ -31,6 +30,11 @@ |
// only invoked if the request was not canceled and returned true from |
// RunOnDBThread. |
virtual void DoneRunOnMainThread() = 0; |
+ |
+ protected: |
+ friend class base::RefCountedThreadSafe<HistoryDBTask>; |
+ |
+ virtual ~HistoryDBTask() {} |
}; |
} // namespace history |