Index: webkit/quota/quota_task.cc |
diff --git a/webkit/quota/quota_task.cc b/webkit/quota/quota_task.cc |
index 27542d77da8b4179024cb56f611a7823454b3938..728b999ea597a6d31f6f440054c172fa5348e5f6 100644 |
--- a/webkit/quota/quota_task.cc |
+++ b/webkit/quota/quota_task.cc |
@@ -30,7 +30,8 @@ void QuotaTask::Start() { |
QuotaTask::QuotaTask(QuotaTaskObserver* observer) |
: observer_(observer), |
- original_task_runner_(base::MessageLoopProxy::current()) { |
+ original_task_runner_(base::MessageLoopProxy::current()), |
+ delete_scheduled_(false) { |
} |
void QuotaTask::CallCompleted() { |
@@ -48,6 +49,10 @@ void QuotaTask::Abort() { |
} |
void QuotaTask::DeleteSoon() { |
+ DCHECK(original_task_runner_->BelongsToCurrentThread()); |
+ if (delete_scheduled_) |
+ return; |
+ delete_scheduled_ = true; |
MessageLoop::current()->DeleteSoon(FROM_HERE, this); |
} |