Commit ab56e7fc authored by kinaba@chromium.org's avatar kinaba@chromium.org

Change owner of DriveScheduler from DriveFileSystem to DriveSystemService.

DriveSystemService exposes only the JobListInterface of DriveScheduler.

BUG=128079

Review URL: https://codereview.chromium.org/14118006

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@194734 0039d316-1c4b-4281-b951-d872f2087c98
parent 9f239cef
......@@ -211,18 +211,19 @@ DriveFileSystem::DriveFileSystem(
Profile* profile,
DriveCache* cache,
google_apis::DriveServiceInterface* drive_service,
DriveScheduler* scheduler,
DriveWebAppsRegistry* webapps_registry,
DriveResourceMetadata* resource_metadata,
base::SequencedTaskRunner* blocking_task_runner)
: profile_(profile),
cache_(cache),
drive_service_(drive_service),
scheduler_(scheduler),
webapps_registry_(webapps_registry),
resource_metadata_(resource_metadata),
last_update_check_error_(DRIVE_FILE_OK),
hide_hosted_docs_(false),
blocking_task_runner_(blocking_task_runner),
scheduler_(new DriveScheduler(profile, drive_service)),
ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) {
// Should be created from the file browser extension API on UI thread.
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
......@@ -239,7 +240,7 @@ void DriveFileSystem::Initialize() {
SetupChangeListLoader();
// Allocate the drive operation handlers.
drive_operations_.Init(scheduler_.get(),
drive_operations_.Init(scheduler_,
this, // DriveFileSystemInterface
cache_,
resource_metadata_,
......@@ -249,8 +250,6 @@ void DriveFileSystem::Initialize() {
PrefService* pref_service = profile_->GetPrefs();
hide_hosted_docs_ = pref_service->GetBoolean(prefs::kDisableDriveHostedFiles);
scheduler_->Initialize();
InitializePreferenceObserver();
}
......@@ -265,7 +264,7 @@ void DriveFileSystem::ReloadAfterReset() {
void DriveFileSystem::SetupChangeListLoader() {
change_list_loader_.reset(new ChangeListLoader(resource_metadata_,
scheduler_.get(),
scheduler_,
webapps_registry_));
change_list_loader_->AddObserver(this);
}
......
......@@ -57,6 +57,7 @@ class DriveFileSystem : public DriveFileSystemInterface,
DriveFileSystem(Profile* profile,
DriveCache* cache,
google_apis::DriveServiceInterface* drive_service,
DriveScheduler* scheduler,
DriveWebAppsRegistry* webapps_registry,
DriveResourceMetadata* resource_metadata,
base::SequencedTaskRunner* blocking_task_runner);
......@@ -451,15 +452,11 @@ class DriveFileSystem : public DriveFileSystemInterface,
// The profile hosts the DriveFileSystem via DriveSystemService.
Profile* profile_;
// The cache owned by DriveSystemService.
// Sub components owned by DriveSystemService.
DriveCache* cache_;
// The document service owned by DriveSystemService.
google_apis::DriveServiceInterface* drive_service_;
// The webapps registry owned by DriveSystemService.
DriveScheduler* scheduler_;
DriveWebAppsRegistry* webapps_registry_;
DriveResourceMetadata* resource_metadata_;
// Time of the last update check.
......@@ -485,8 +482,6 @@ class DriveFileSystem : public DriveFileSystemInterface,
file_system::DriveOperations drive_operations_;
scoped_ptr<DriveScheduler> scheduler_;
// Polling interval for checking updates in seconds.
int polling_interval_sec_;
......
......@@ -19,6 +19,7 @@
#include "base/values.h"
#include "chrome/browser/chromeos/drive/drive.pb.h"
#include "chrome/browser/chromeos/drive/drive_file_system_util.h"
#include "chrome/browser/chromeos/drive/drive_scheduler.h"
#include "chrome/browser/chromeos/drive/drive_test_util.h"
#include "chrome/browser/chromeos/drive/drive_webapps_registry.h"
#include "chrome/browser/chromeos/drive/fake_free_disk_space_getter.h"
......@@ -133,6 +134,9 @@ class DriveFileSystemTest : public testing::Test {
fake_free_disk_space_getter_.reset(new FakeFreeDiskSpaceGetter);
scheduler_.reset(new DriveScheduler(profile_.get(),
fake_drive_service_.get()));
scoped_refptr<base::SequencedWorkerPool> pool =
content::BrowserThread::GetBlockingPool();
blocking_task_runner_ =
......@@ -163,6 +167,7 @@ class DriveFileSystemTest : public testing::Test {
file_system_.reset(new DriveFileSystem(profile_.get(),
cache_.get(),
fake_drive_service_.get(),
scheduler_.get(),
drive_webapps_registry_.get(),
resource_metadata_.get(),
blocking_task_runner_));
......@@ -179,6 +184,7 @@ class DriveFileSystemTest : public testing::Test {
virtual void TearDown() OVERRIDE {
ASSERT_TRUE(file_system_);
file_system_.reset();
scheduler_.reset();
fake_drive_service_.reset();
cache_.reset();
profile_.reset(NULL);
......@@ -461,6 +467,7 @@ class DriveFileSystemTest : public testing::Test {
scoped_ptr<DriveCache, test_util::DestroyHelperForTests> cache_;
scoped_ptr<DriveFileSystem> file_system_;
scoped_ptr<google_apis::FakeDriveService> fake_drive_service_;
scoped_ptr<DriveScheduler> scheduler_;
scoped_ptr<DriveWebAppsRegistry> drive_webapps_registry_;
scoped_ptr<DriveResourceMetadata, test_util::DestroyHelperForTests>
resource_metadata_;
......
......@@ -54,17 +54,17 @@ DriveScheduler::DriveScheduler(
drive_service_(drive_service),
uploader_(new google_apis::DriveUploader(drive_service)),
profile_(profile),
initialized_(false),
weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
for (int i = 0; i < NUM_QUEUES; ++i) {
jobs_running_[i] = 0;
}
net::NetworkChangeNotifier::AddConnectionTypeObserver(this);
}
DriveScheduler::~DriveScheduler() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
DCHECK(initialized_);
size_t num_pending_jobs = 0;
size_t num_running_jobs = 0;
......@@ -80,18 +80,6 @@ DriveScheduler::~DriveScheduler() {
net::NetworkChangeNotifier::RemoveConnectionTypeObserver(this);
}
void DriveScheduler::Initialize() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
// Initialize() may be called more than once for the lifetime when the
// file system is remounted.
if (initialized_)
return;
net::NetworkChangeNotifier::AddConnectionTypeObserver(this);
initialized_ = true;
}
std::vector<JobInfo> DriveScheduler::GetJobInfoList() {
std::vector<JobInfo> job_info_list;
for (JobIDMap::iterator iter(&job_map_); !iter.IsAtEnd(); iter.Advance())
......
......@@ -32,10 +32,6 @@ class DriveScheduler
google_apis::DriveServiceInterface* drive_service);
virtual ~DriveScheduler();
// Initializes the object. This function should be called before any
// other functions.
void Initialize();
// JobListInterface overrides.
virtual std::vector<JobInfo> GetJobInfoList() OVERRIDE;
virtual void AddObserver(JobListObserver* observer) OVERRIDE;
......@@ -405,9 +401,6 @@ class DriveScheduler
Profile* profile_;
// Whether this instance is initialized or not.
bool initialized_;
// Note: This should remain the last member so it'll be destroyed and
// invalidate its weak pointers before any other members are destroyed.
base::WeakPtrFactory<DriveScheduler> weak_ptr_factory_;
......
......@@ -68,8 +68,6 @@ class DriveSchedulerTest : public testing::Test {
scheduler_.reset(new DriveScheduler(profile_.get(),
fake_drive_service_.get()));
scheduler_->Initialize();
scheduler_->SetDisableThrottling(true);
}
......
......@@ -127,6 +127,7 @@ DriveSystemService::DriveSystemService(
GURL(google_apis::GDataWapiUrlGenerator::kBaseUrlForProduction),
GetDriveUserAgent()));
}
scheduler_.reset(new DriveScheduler(profile_, drive_service_.get()));
cache_.reset(new DriveCache(!test_cache_root.empty() ? test_cache_root :
DriveCache::GetCacheRootPath(profile),
blocking_task_runner_,
......@@ -143,6 +144,7 @@ DriveSystemService::DriveSystemService(
new DriveFileSystem(profile_,
cache(),
drive_service_.get(),
scheduler_.get(),
webapps_registry(),
resource_metadata_.get(),
blocking_task_runner_));
......
......@@ -15,6 +15,7 @@
#include "base/threading/sequenced_worker_pool.h"
#include "chrome/browser/chromeos/drive/drive_file_error.h"
#include "chrome/browser/chromeos/drive/drive_file_system_util.h"
#include "chrome/browser/chromeos/drive/drive_scheduler.h"
#include "chrome/browser/profiles/profile_keyed_service.h"
#include "chrome/browser/profiles/profile_keyed_service_factory.h"
#include "sync/notifier/invalidation_handler.h"
......@@ -39,6 +40,7 @@ class DrivePrefetcher;
class DriveResourceMetadata;
class EventLogger;
class FileWriteHelper;
class JobListInterface;
class StaleCacheFilesRemover;
// Interface for classes that need to observe events from DriveSystemService.
......@@ -96,6 +98,7 @@ class DriveSystemService : public ProfileKeyedService,
DriveDownloadHandler* download_handler() { return download_handler_.get(); }
DriveWebAppsRegistry* webapps_registry() { return webapps_registry_.get(); }
EventLogger* event_logger() { return event_logger_.get(); }
JobListInterface* job_list() { return scheduler_.get(); }
// Clears all the local cache files and in-memory data, and remounts the
// file system. |callback| is called with true when this operation is done
......@@ -163,6 +166,7 @@ class DriveSystemService : public ProfileKeyedService,
scoped_ptr<EventLogger> event_logger_;
scoped_ptr<DriveCache, util::DestroyHelper> cache_;
scoped_ptr<google_apis::DriveServiceInterface> drive_service_;
scoped_ptr<DriveScheduler> scheduler_;
scoped_ptr<DriveWebAppsRegistry> webapps_registry_;
scoped_ptr<DriveResourceMetadata, util::DestroyHelper> resource_metadata_;
scoped_ptr<DriveFileSystemInterface> file_system_;
......
......@@ -57,7 +57,6 @@ class CreateDirectoryOperationTest
scheduler_.reset(
new DriveScheduler(profile_.get(), fake_drive_service_.get()));
scheduler_->Initialize();
DriveWebAppsRegistry drive_web_apps_registry;
ChangeListLoader change_list_loader(
......
......@@ -15,6 +15,7 @@
#include "base/values.h"
#include "chrome/browser/chromeos/drive/drive.pb.h"
#include "chrome/browser/chromeos/drive/drive_file_system.h"
#include "chrome/browser/chromeos/drive/drive_scheduler.h"
#include "chrome/browser/chromeos/drive/drive_test_util.h"
#include "chrome/browser/chromeos/drive/drive_webapps_registry.h"
#include "chrome/browser/chromeos/drive/fake_free_disk_space_getter.h"
......@@ -68,6 +69,9 @@ class StaleCacheFilesRemoverTest : public testing::Test {
fake_free_disk_space_getter_.reset(new FakeFreeDiskSpaceGetter);
scheduler_.reset(new DriveScheduler(profile_.get(),
fake_drive_service_.get()));
scoped_refptr<base::SequencedWorkerPool> pool =
content::BrowserThread::GetBlockingPool();
blocking_task_runner_ =
......@@ -88,6 +92,7 @@ class StaleCacheFilesRemoverTest : public testing::Test {
file_system_ = new DriveFileSystem(profile_.get(),
cache_.get(),
fake_drive_service_.get(),
scheduler_.get(),
drive_webapps_registry_.get(),
resource_metadata_.get(),
blocking_task_runner_);
......@@ -132,6 +137,7 @@ class StaleCacheFilesRemoverTest : public testing::Test {
scoped_ptr<DriveCache, test_util::DestroyHelperForTests> cache_;
DriveFileSystem* file_system_;
scoped_ptr<google_apis::FakeDriveService> fake_drive_service_;
scoped_ptr<DriveScheduler> scheduler_;
scoped_ptr<DriveWebAppsRegistry> drive_webapps_registry_;
scoped_ptr<DriveResourceMetadata, test_util::DestroyHelperForTests>
resource_metadata_;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment