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

Unified Diff: chrome/browser/chromeos/drive/drive_resource_metadata.cc

Issue 12706012: chromeos: Destruct DriveResourceMetadata on the blocking pool (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add note Created 7 years, 9 months 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
Index: chrome/browser/chromeos/drive/drive_resource_metadata.cc
diff --git a/chrome/browser/chromeos/drive/drive_resource_metadata.cc b/chrome/browser/chromeos/drive/drive_resource_metadata.cc
index c646e58d4d91774d5b1bcb1b4a14b93be6752ab8..77dee2d81eb4ba18cecae4ffd88325e5c799c9a8 100644
--- a/chrome/browser/chromeos/drive/drive_resource_metadata.cc
+++ b/chrome/browser/chromeos/drive/drive_resource_metadata.cc
@@ -162,6 +162,8 @@ DriveResourceMetadata::DriveResourceMetadata(
largest_changestamp_(0),
loaded_(false),
ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+
DriveEntryProto root;
root.mutable_file_info()->set_is_directory(true);
root.set_resource_id(root_resource_id);
@@ -169,8 +171,24 @@ DriveResourceMetadata::DriveResourceMetadata(
storage_->PutEntry(CreateEntryWithProperBaseName(root));
}
-DriveResourceMetadata::~DriveResourceMetadata() {
+void DriveResourceMetadata::Destroy() {
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+
ClearRoot();
+ weak_ptr_factory_.InvalidateWeakPtrs();
+ blocking_task_runner_->PostTask(
+ FROM_HERE,
+ base::Bind(&DriveResourceMetadata::DestroyOnBlockingPool,
+ base::Unretained(this)));
+}
+
+DriveResourceMetadata::~DriveResourceMetadata() {
+ DCHECK(blocking_task_runner_->RunsTasksOnCurrentThread());
+}
+
+void DriveResourceMetadata::DestroyOnBlockingPool() {
+ DCHECK(blocking_task_runner_->RunsTasksOnCurrentThread());
+ delete this;
}
void DriveResourceMetadata::ClearRoot() {

Powered by Google App Engine
This is Rietveld 408576698