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_file_system.h" | 5 #include "chrome/browser/chromeos/drive/drive_file_system.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
9 #include "base/json/json_file_value_serializer.h" | 9 #include "base/json/json_file_value_serializer.h" |
10 #include "base/message_loop_proxy.h" | 10 #include "base/message_loop_proxy.h" |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
204 std::string md5; | 204 std::string md5; |
205 }; | 205 }; |
206 | 206 |
207 | 207 |
208 // DriveFileSystem class implementation. | 208 // DriveFileSystem class implementation. |
209 | 209 |
210 DriveFileSystem::DriveFileSystem( | 210 DriveFileSystem::DriveFileSystem( |
211 Profile* profile, | 211 Profile* profile, |
212 DriveCache* cache, | 212 DriveCache* cache, |
213 google_apis::DriveServiceInterface* drive_service, | 213 google_apis::DriveServiceInterface* drive_service, |
| 214 DriveScheduler* scheduler, |
214 DriveWebAppsRegistry* webapps_registry, | 215 DriveWebAppsRegistry* webapps_registry, |
215 DriveResourceMetadata* resource_metadata, | 216 DriveResourceMetadata* resource_metadata, |
216 base::SequencedTaskRunner* blocking_task_runner) | 217 base::SequencedTaskRunner* blocking_task_runner) |
217 : profile_(profile), | 218 : profile_(profile), |
218 cache_(cache), | 219 cache_(cache), |
219 drive_service_(drive_service), | 220 drive_service_(drive_service), |
| 221 scheduler_(scheduler), |
220 webapps_registry_(webapps_registry), | 222 webapps_registry_(webapps_registry), |
221 resource_metadata_(resource_metadata), | 223 resource_metadata_(resource_metadata), |
222 last_update_check_error_(DRIVE_FILE_OK), | 224 last_update_check_error_(DRIVE_FILE_OK), |
223 hide_hosted_docs_(false), | 225 hide_hosted_docs_(false), |
224 blocking_task_runner_(blocking_task_runner), | 226 blocking_task_runner_(blocking_task_runner), |
225 scheduler_(new DriveScheduler(profile, drive_service)), | |
226 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { | 227 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { |
227 // Should be created from the file browser extension API on UI thread. | 228 // Should be created from the file browser extension API on UI thread. |
228 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 229 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
229 } | 230 } |
230 | 231 |
231 void DriveFileSystem::Reload() { | 232 void DriveFileSystem::Reload() { |
232 resource_metadata_->Reset(base::Bind(&DriveFileSystem::ReloadAfterReset, | 233 resource_metadata_->Reset(base::Bind(&DriveFileSystem::ReloadAfterReset, |
233 weak_ptr_factory_.GetWeakPtr())); | 234 weak_ptr_factory_.GetWeakPtr())); |
234 } | 235 } |
235 | 236 |
236 void DriveFileSystem::Initialize() { | 237 void DriveFileSystem::Initialize() { |
237 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 238 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
238 | 239 |
239 SetupChangeListLoader(); | 240 SetupChangeListLoader(); |
240 | 241 |
241 // Allocate the drive operation handlers. | 242 // Allocate the drive operation handlers. |
242 drive_operations_.Init(scheduler_.get(), | 243 drive_operations_.Init(scheduler_, |
243 this, // DriveFileSystemInterface | 244 this, // DriveFileSystemInterface |
244 cache_, | 245 cache_, |
245 resource_metadata_, | 246 resource_metadata_, |
246 blocking_task_runner_, | 247 blocking_task_runner_, |
247 this); // OperationObserver | 248 this); // OperationObserver |
248 | 249 |
249 PrefService* pref_service = profile_->GetPrefs(); | 250 PrefService* pref_service = profile_->GetPrefs(); |
250 hide_hosted_docs_ = pref_service->GetBoolean(prefs::kDisableDriveHostedFiles); | 251 hide_hosted_docs_ = pref_service->GetBoolean(prefs::kDisableDriveHostedFiles); |
251 | 252 |
252 scheduler_->Initialize(); | |
253 | |
254 InitializePreferenceObserver(); | 253 InitializePreferenceObserver(); |
255 } | 254 } |
256 | 255 |
257 void DriveFileSystem::ReloadAfterReset() { | 256 void DriveFileSystem::ReloadAfterReset() { |
258 SetupChangeListLoader(); | 257 SetupChangeListLoader(); |
259 | 258 |
260 change_list_loader_->LoadIfNeeded( | 259 change_list_loader_->LoadIfNeeded( |
261 DirectoryFetchInfo(), | 260 DirectoryFetchInfo(), |
262 base::Bind(&DriveFileSystem::OnUpdateChecked, | 261 base::Bind(&DriveFileSystem::OnUpdateChecked, |
263 weak_ptr_factory_.GetWeakPtr())); | 262 weak_ptr_factory_.GetWeakPtr())); |
264 } | 263 } |
265 | 264 |
266 void DriveFileSystem::SetupChangeListLoader() { | 265 void DriveFileSystem::SetupChangeListLoader() { |
267 change_list_loader_.reset(new ChangeListLoader(resource_metadata_, | 266 change_list_loader_.reset(new ChangeListLoader(resource_metadata_, |
268 scheduler_.get(), | 267 scheduler_, |
269 webapps_registry_)); | 268 webapps_registry_)); |
270 change_list_loader_->AddObserver(this); | 269 change_list_loader_->AddObserver(this); |
271 } | 270 } |
272 | 271 |
273 void DriveFileSystem::CheckForUpdates() { | 272 void DriveFileSystem::CheckForUpdates() { |
274 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 273 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
275 DVLOG(1) << "CheckForUpdates"; | 274 DVLOG(1) << "CheckForUpdates"; |
276 | 275 |
277 if (change_list_loader_) { | 276 if (change_list_loader_) { |
278 change_list_loader_->CheckForUpdates( | 277 change_list_loader_->CheckForUpdates( |
(...skipping 1405 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1684 return; | 1683 return; |
1685 } | 1684 } |
1686 | 1685 |
1687 PlatformFileInfoProto entry_file_info; | 1686 PlatformFileInfoProto entry_file_info; |
1688 util::ConvertPlatformFileInfoToProto(*file_info, &entry_file_info); | 1687 util::ConvertPlatformFileInfoToProto(*file_info, &entry_file_info); |
1689 *entry_proto->mutable_file_info() = entry_file_info; | 1688 *entry_proto->mutable_file_info() = entry_file_info; |
1690 callback.Run(DRIVE_FILE_OK, entry_proto.Pass()); | 1689 callback.Run(DRIVE_FILE_OK, entry_proto.Pass()); |
1691 } | 1690 } |
1692 | 1691 |
1693 } // namespace drive | 1692 } // namespace drive |
OLD | NEW |