| Index: chrome/browser/storage_monitor/volume_mount_watcher_win.cc
|
| diff --git a/chrome/browser/storage_monitor/volume_mount_watcher_win.cc b/chrome/browser/storage_monitor/volume_mount_watcher_win.cc
|
| index 0a76d1122e4233f0787a8c67719a7f4db24d9e36..e285e1ff437808dfeda94899a8f9c67615ae83d1 100644
|
| --- a/chrome/browser/storage_monitor/volume_mount_watcher_win.cc
|
| +++ b/chrome/browser/storage_monitor/volume_mount_watcher_win.cc
|
| @@ -8,6 +8,7 @@
|
| #include <dbt.h>
|
| #include <fileapi.h>
|
|
|
| +#include "base/bind_helpers.h"
|
| #include "base/stl_util.h"
|
| #include "base/string_util.h"
|
| #include "base/strings/string_number_conversions.h"
|
| @@ -174,12 +175,17 @@ const int kWorkerPoolNumThreads = 3;
|
| const char* kWorkerPoolNamePrefix = "DeviceInfoPool";
|
|
|
| VolumeMountWatcherWin::VolumeMountWatcherWin()
|
| - : device_info_worker_pool_(new base::SequencedWorkerPool(
|
| - kWorkerPoolNumThreads, kWorkerPoolNamePrefix)),
|
| - weak_factory_(this),
|
| + : weak_factory_(this),
|
| notifications_(NULL) {
|
| get_attached_devices_callback_ = base::Bind(&GetAttachedDevices);
|
| get_device_details_callback_ = base::Bind(&GetDeviceDetails);
|
| +
|
| + device_info_worker_pool_ = new base::SequencedWorkerPool(
|
| + kWorkerPoolNumThreads, kWorkerPoolNamePrefix);
|
| + task_runner_ =
|
| + device_info_worker_pool_->GetSequencedTaskRunnerWithShutdownBehavior(
|
| + device_info_worker_pool_->GetSequenceToken(),
|
| + base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN);
|
| }
|
|
|
| // static
|
| @@ -204,9 +210,14 @@ void VolumeMountWatcherWin::Init() {
|
| // When VolumeMountWatcherWin is created, the message pumps are not running
|
| // so a posted task from the constructor would never run. Therefore, do all
|
| // the initializations here.
|
| - device_info_worker_pool_->PostTask(FROM_HERE, base::Bind(
|
| - &FindExistingDevicesAndAdd, get_attached_devices_callback_,
|
| - weak_factory_.GetWeakPtr()));
|
| + // Disabled pending resolution of http://crbug.com/173953
|
| + // task_runner_->PostTask(FROM_HERE, base::Bind(
|
| + // &FindExistingDevicesAndAdd, get_attached_devices_callback_,
|
| + // weak_factory_.GetWeakPtr()));
|
| +
|
| + // This task is a mystery. Without it, the ToastCrasher test fails, but
|
| + // it isn't clear why. Need to move pool creation later?
|
| + task_runner_->PostTask(FROM_HERE, base::Bind(&base::DoNothing));
|
| }
|
|
|
| // static
|
| @@ -226,18 +237,15 @@ void VolumeMountWatcherWin::AddDevicesOnUIThread(
|
| std::vector<base::FilePath> removable_devices) {
|
| DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
|
|
| - scoped_refptr<base::TaskRunner> runner =
|
| - device_info_worker_pool_->GetTaskRunnerWithShutdownBehavior(
|
| - base::SequencedWorkerPool::CONTINUE_ON_SHUTDOWN);
|
| for (size_t i = 0; i < removable_devices.size(); i++) {
|
| if (ContainsKey(pending_device_checks_, removable_devices[i]))
|
| continue;
|
| pending_device_checks_.insert(removable_devices[i]);
|
| - runner->PostTask(FROM_HERE,
|
| - base::Bind(&RetrieveInfoForDeviceAndAdd,
|
| - removable_devices[i],
|
| - get_device_details_callback_,
|
| - weak_factory_.GetWeakPtr()));
|
| + task_runner_->PostTask(FROM_HERE,
|
| + base::Bind(&RetrieveInfoForDeviceAndAdd,
|
| + removable_devices[i],
|
| + get_device_details_callback_,
|
| + weak_factory_.GetWeakPtr()));
|
| }
|
| }
|
|
|
|
|