| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/chromeos/drive/drive_system_service.h" | 5 #include "chrome/browser/chromeos/drive/drive_system_service.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "chrome/browser/browser_process.h" | 8 #include "chrome/browser/browser_process.h" |
| 9 #include "chrome/browser/chromeos/drive/drive_api_service.h" | 9 #include "chrome/browser/chromeos/drive/drive_api_service.h" |
| 10 #include "chrome/browser/chromeos/drive/drive_download_observer.h" | 10 #include "chrome/browser/chromeos/drive/drive_download_observer.h" |
| 11 #include "chrome/browser/chromeos/drive/drive_file_system.h" | 11 #include "chrome/browser/chromeos/drive/drive_file_system.h" |
| 12 #include "chrome/browser/chromeos/drive/drive_file_system_proxy.h" | 12 #include "chrome/browser/chromeos/drive/drive_file_system_proxy.h" |
| 13 #include "chrome/browser/chromeos/drive/drive_file_system_util.h" | 13 #include "chrome/browser/chromeos/drive/drive_file_system_util.h" |
| 14 #include "chrome/browser/chromeos/drive/drive_prefetcher.h" | 14 #include "chrome/browser/chromeos/drive/drive_prefetcher.h" |
| 15 #include "chrome/browser/chromeos/drive/drive_sync_client.h" | 15 #include "chrome/browser/chromeos/drive/drive_sync_client.h" |
| 16 #include "chrome/browser/chromeos/drive/drive_webapps_registry.h" | 16 #include "chrome/browser/chromeos/drive/drive_webapps_registry.h" |
| 17 #include "chrome/browser/chromeos/drive/event_logger.h" |
| 17 #include "chrome/browser/chromeos/drive/file_write_helper.h" | 18 #include "chrome/browser/chromeos/drive/file_write_helper.h" |
| 18 #include "chrome/browser/chromeos/drive/stale_cache_files_remover.h" | 19 #include "chrome/browser/chromeos/drive/stale_cache_files_remover.h" |
| 19 #include "chrome/browser/download/download_service.h" | 20 #include "chrome/browser/download/download_service.h" |
| 20 #include "chrome/browser/download/download_service_factory.h" | 21 #include "chrome/browser/download/download_service_factory.h" |
| 21 #include "chrome/browser/download/download_util.h" | 22 #include "chrome/browser/download/download_util.h" |
| 22 #include "chrome/browser/google_apis/drive_uploader.h" | 23 #include "chrome/browser/google_apis/drive_uploader.h" |
| 23 #include "chrome/browser/google_apis/gdata_util.h" | 24 #include "chrome/browser/google_apis/gdata_util.h" |
| 24 #include "chrome/browser/google_apis/gdata_wapi_service.h" | 25 #include "chrome/browser/google_apis/gdata_wapi_service.h" |
| 25 #include "chrome/browser/prefs/pref_service.h" | 26 #include "chrome/browser/prefs/pref_service.h" |
| 26 #include "chrome/browser/profiles/profile.h" | 27 #include "chrome/browser/profiles/profile.h" |
| 27 #include "chrome/browser/profiles/profile_dependency_manager.h" | 28 #include "chrome/browser/profiles/profile_dependency_manager.h" |
| 28 #include "chrome/browser/sync/profile_sync_service.h" | 29 #include "chrome/browser/sync/profile_sync_service.h" |
| 29 #include "chrome/browser/sync/profile_sync_service_factory.h" | 30 #include "chrome/browser/sync/profile_sync_service_factory.h" |
| 30 #include "chrome/common/pref_names.h" | 31 #include "chrome/common/pref_names.h" |
| 31 #include "content/public/browser/browser_context.h" | 32 #include "content/public/browser/browser_context.h" |
| 32 #include "content/public/browser/browser_thread.h" | 33 #include "content/public/browser/browser_thread.h" |
| 33 #include "content/public/browser/storage_partition.h" | 34 #include "content/public/browser/storage_partition.h" |
| 34 #include "google/cacheinvalidation/types.pb.h" | 35 #include "google/cacheinvalidation/types.pb.h" |
| 35 #include "webkit/fileapi/file_system_context.h" | 36 #include "webkit/fileapi/file_system_context.h" |
| 36 #include "webkit/fileapi/file_system_mount_point_provider.h" | 37 #include "webkit/fileapi/file_system_mount_point_provider.h" |
| 37 | 38 |
| 38 using content::BrowserContext; | 39 using content::BrowserContext; |
| 39 using content::BrowserThread; | 40 using content::BrowserThread; |
| 40 | 41 |
| 41 namespace drive { | 42 namespace drive { |
| 42 namespace { | 43 namespace { |
| 43 | 44 |
| 45 static const size_t kEventLogHistorySize = 100; |
| 46 |
| 44 // Used in test to setup system service. | 47 // Used in test to setup system service. |
| 45 google_apis::DriveServiceInterface* g_test_drive_service = NULL; | 48 google_apis::DriveServiceInterface* g_test_drive_service = NULL; |
| 46 const std::string* g_test_cache_root = NULL; | 49 const std::string* g_test_cache_root = NULL; |
| 47 | 50 |
| 48 // Returns true if Drive is enabled for the given Profile. | 51 // Returns true if Drive is enabled for the given Profile. |
| 49 bool IsDriveEnabledForProfile(Profile* profile) { | 52 bool IsDriveEnabledForProfile(Profile* profile) { |
| 50 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 53 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 51 | 54 |
| 52 if (!google_apis::AuthService::CanAuthenticate(profile)) | 55 if (!google_apis::AuthService::CanAuthenticate(profile)) |
| 53 return false; | 56 return false; |
| (...skipping 27 matching lines...) Expand all Loading... |
| 81 DriveSystemService::~DriveSystemService() { | 84 DriveSystemService::~DriveSystemService() { |
| 82 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 85 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 83 cache_->Destroy(); | 86 cache_->Destroy(); |
| 84 } | 87 } |
| 85 | 88 |
| 86 void DriveSystemService::Initialize( | 89 void DriveSystemService::Initialize( |
| 87 google_apis::DriveServiceInterface* drive_service, | 90 google_apis::DriveServiceInterface* drive_service, |
| 88 const FilePath& cache_root) { | 91 const FilePath& cache_root) { |
| 89 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 92 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 90 | 93 |
| 94 event_logger_.reset(new EventLogger(kEventLogHistorySize)); |
| 91 drive_service_.reset(drive_service); | 95 drive_service_.reset(drive_service); |
| 92 cache_ = DriveCache::CreateDriveCache(cache_root, blocking_task_runner_); | 96 cache_ = DriveCache::CreateDriveCache(cache_root, blocking_task_runner_); |
| 93 uploader_.reset(new google_apis::DriveUploader(drive_service_.get())); | 97 uploader_.reset(new google_apis::DriveUploader(drive_service_.get())); |
| 94 webapps_registry_.reset(new DriveWebAppsRegistry); | 98 webapps_registry_.reset(new DriveWebAppsRegistry); |
| 95 file_system_.reset(new DriveFileSystem(profile_, | 99 file_system_.reset(new DriveFileSystem(profile_, |
| 96 cache(), | 100 cache(), |
| 97 drive_service_.get(), | 101 drive_service_.get(), |
| 98 uploader(), | 102 uploader(), |
| 99 webapps_registry(), | 103 webapps_registry(), |
| 100 blocking_task_runner_)); | 104 blocking_task_runner_)); |
| (...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 213 } | 217 } |
| 214 | 218 |
| 215 void DriveSystemService::AddDriveMountPoint() { | 219 void DriveSystemService::AddDriveMountPoint() { |
| 216 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 220 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 217 | 221 |
| 218 const FilePath mount_point = util::GetDriveMountPointPath(); | 222 const FilePath mount_point = util::GetDriveMountPointPath(); |
| 219 fileapi::ExternalFileSystemMountPointProvider* provider = | 223 fileapi::ExternalFileSystemMountPointProvider* provider = |
| 220 BrowserContext::GetDefaultStoragePartition(profile_)-> | 224 BrowserContext::GetDefaultStoragePartition(profile_)-> |
| 221 GetFileSystemContext()->external_provider(); | 225 GetFileSystemContext()->external_provider(); |
| 222 if (provider && !provider->HasMountPoint(mount_point)) { | 226 if (provider && !provider->HasMountPoint(mount_point)) { |
| 227 event_logger_->Log("AddDriveMountPoint"); |
| 223 provider->AddRemoteMountPoint( | 228 provider->AddRemoteMountPoint( |
| 224 mount_point, | 229 mount_point, |
| 225 new DriveFileSystemProxy(file_system_.get())); | 230 new DriveFileSystemProxy(file_system_.get())); |
| 226 } | 231 } |
| 227 | 232 |
| 228 file_system_->NotifyFileSystemMounted(); | 233 file_system_->NotifyFileSystemMounted(); |
| 229 } | 234 } |
| 230 | 235 |
| 231 void DriveSystemService::RemoveDriveMountPoint() { | 236 void DriveSystemService::RemoveDriveMountPoint() { |
| 232 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 237 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 233 | 238 |
| 234 file_system_->NotifyFileSystemToBeUnmounted(); | 239 file_system_->NotifyFileSystemToBeUnmounted(); |
| 235 file_system_->StopPolling(); | 240 file_system_->StopPolling(); |
| 236 | 241 |
| 237 const FilePath mount_point = util::GetDriveMountPointPath(); | 242 const FilePath mount_point = util::GetDriveMountPointPath(); |
| 238 fileapi::ExternalFileSystemMountPointProvider* provider = | 243 fileapi::ExternalFileSystemMountPointProvider* provider = |
| 239 BrowserContext::GetDefaultStoragePartition(profile_)-> | 244 BrowserContext::GetDefaultStoragePartition(profile_)-> |
| 240 GetFileSystemContext()->external_provider(); | 245 GetFileSystemContext()->external_provider(); |
| 241 if (provider && provider->HasMountPoint(mount_point)) | 246 if (provider && provider->HasMountPoint(mount_point)) { |
| 242 provider->RemoveMountPoint(mount_point); | 247 provider->RemoveMountPoint(mount_point); |
| 248 event_logger_->Log("RemoveDriveMountPoint"); |
| 249 } |
| 243 } | 250 } |
| 244 | 251 |
| 245 void DriveSystemService::OnCacheInitialized(bool success) { | 252 void DriveSystemService::OnCacheInitialized(bool success) { |
| 246 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 253 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 247 | 254 |
| 248 if (!success) { | 255 if (!success) { |
| 249 LOG(WARNING) << "Failed to initialize the cache. Disabling Drive"; | 256 LOG(WARNING) << "Failed to initialize the cache. Disabling Drive"; |
| 250 DisableDrive(); | 257 DisableDrive(); |
| 251 return; | 258 return; |
| 252 } | 259 } |
| (...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 368 g_test_cache_root ? FilePath(*g_test_cache_root) : | 375 g_test_cache_root ? FilePath(*g_test_cache_root) : |
| 369 DriveCache::GetCacheRootPath(profile); | 376 DriveCache::GetCacheRootPath(profile); |
| 370 delete g_test_cache_root; | 377 delete g_test_cache_root; |
| 371 g_test_cache_root = NULL; | 378 g_test_cache_root = NULL; |
| 372 | 379 |
| 373 service->Initialize(drive_service, cache_root); | 380 service->Initialize(drive_service, cache_root); |
| 374 return service; | 381 return service; |
| 375 } | 382 } |
| 376 | 383 |
| 377 } // namespace drive | 384 } // namespace drive |
| OLD | NEW |