| 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() {
|
|
|