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_feed_loader.h" | 5 #include "chrome/browser/chromeos/drive/drive_feed_loader.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
10 #include "base/file_util.h" | 10 #include "base/file_util.h" |
11 #include "base/format_macros.h" | 11 #include "base/format_macros.h" |
12 #include "base/json/json_reader.h" | 12 #include "base/json/json_reader.h" |
13 #include "base/json/json_writer.h" | 13 #include "base/json/json_writer.h" |
14 #include "base/metrics/histogram.h" | 14 #include "base/metrics/histogram.h" |
15 #include "base/stringprintf.h" | 15 #include "base/stringprintf.h" |
16 #include "base/threading/sequenced_worker_pool.h" | 16 #include "base/threading/sequenced_worker_pool.h" |
17 #include "base/values.h" | 17 #include "base/values.h" |
18 #include "chrome/browser/chromeos/drive/drive_cache.h" | 18 #include "chrome/browser/chromeos/drive/drive_cache.h" |
19 #include "chrome/browser/chromeos/drive/drive_feed_loader_observer.h" | 19 #include "chrome/browser/chromeos/drive/drive_feed_loader_observer.h" |
20 #include "chrome/browser/chromeos/drive/drive_feed_processor.h" | 20 #include "chrome/browser/chromeos/drive/drive_feed_processor.h" |
21 #include "chrome/browser/chromeos/drive/drive_file_system_util.h" | 21 #include "chrome/browser/chromeos/drive/drive_file_system_util.h" |
| 22 #include "chrome/browser/chromeos/drive/drive_scheduler.h" |
22 #include "chrome/browser/chromeos/drive/drive_webapps_registry.h" | 23 #include "chrome/browser/chromeos/drive/drive_webapps_registry.h" |
23 #include "chrome/browser/google_apis/drive_api_parser.h" | 24 #include "chrome/browser/google_apis/drive_api_parser.h" |
24 #include "chrome/browser/google_apis/drive_api_util.h" | 25 #include "chrome/browser/google_apis/drive_api_util.h" |
25 #include "chrome/browser/google_apis/drive_service_interface.h" | 26 #include "chrome/browser/google_apis/drive_service_interface.h" |
26 #include "chrome/common/chrome_switches.h" | 27 #include "chrome/common/chrome_switches.h" |
27 #include "content/public/browser/browser_thread.h" | 28 #include "content/public/browser/browser_thread.h" |
28 | 29 |
29 using content::BrowserThread; | 30 using content::BrowserThread; |
30 | 31 |
31 namespace drive { | 32 namespace drive { |
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
247 | 248 |
248 // Time elapsed since the feed fetching was started. | 249 // Time elapsed since the feed fetching was started. |
249 base::TimeDelta feed_fetching_elapsed_time; | 250 base::TimeDelta feed_fetching_elapsed_time; |
250 | 251 |
251 base::WeakPtrFactory<GetDocumentsUiState> weak_ptr_factory; | 252 base::WeakPtrFactory<GetDocumentsUiState> weak_ptr_factory; |
252 }; | 253 }; |
253 | 254 |
254 DriveFeedLoader::DriveFeedLoader( | 255 DriveFeedLoader::DriveFeedLoader( |
255 DriveResourceMetadata* resource_metadata, | 256 DriveResourceMetadata* resource_metadata, |
256 google_apis::DriveServiceInterface* drive_service, | 257 google_apis::DriveServiceInterface* drive_service, |
| 258 DriveScheduler* scheduler, |
257 DriveWebAppsRegistryInterface* webapps_registry, | 259 DriveWebAppsRegistryInterface* webapps_registry, |
258 DriveCache* cache, | 260 DriveCache* cache, |
259 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner) | 261 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner) |
260 : resource_metadata_(resource_metadata), | 262 : resource_metadata_(resource_metadata), |
261 drive_service_(drive_service), | 263 drive_service_(drive_service), |
| 264 scheduler_(scheduler), |
262 webapps_registry_(webapps_registry), | 265 webapps_registry_(webapps_registry), |
263 cache_(cache), | 266 cache_(cache), |
264 blocking_task_runner_(blocking_task_runner), | 267 blocking_task_runner_(blocking_task_runner), |
265 refreshing_(false), | 268 refreshing_(false), |
266 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { | 269 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { |
267 } | 270 } |
268 | 271 |
269 DriveFeedLoader::~DriveFeedLoader() { | 272 DriveFeedLoader::~DriveFeedLoader() { |
270 } | 273 } |
271 | 274 |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
398 } | 401 } |
399 | 402 |
400 void DriveFeedLoader::LoadFromServer(scoped_ptr<LoadFeedParams> params) { | 403 void DriveFeedLoader::LoadFromServer(scoped_ptr<LoadFeedParams> params) { |
401 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 404 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
402 | 405 |
403 const base::TimeTicks start_time = base::TimeTicks::Now(); | 406 const base::TimeTicks start_time = base::TimeTicks::Now(); |
404 | 407 |
405 // base::Passed() may get evaluated first, so get a pointer to params. | 408 // base::Passed() may get evaluated first, so get a pointer to params. |
406 LoadFeedParams* params_ptr = params.get(); | 409 LoadFeedParams* params_ptr = params.get(); |
407 if (google_apis::util::IsDriveV2ApiEnabled()) { | 410 if (google_apis::util::IsDriveV2ApiEnabled()) { |
408 drive_service_->GetDocuments( | 411 scheduler_->GetDocuments( |
409 params_ptr->feed_to_load, | 412 params_ptr->feed_to_load, |
410 params_ptr->start_changestamp, | 413 params_ptr->start_changestamp, |
411 std::string(), // No search query. | 414 std::string(), // No search query. |
412 params_ptr->shared_with_me, | 415 params_ptr->shared_with_me, |
413 std::string(), // No directory resource ID. | 416 std::string(), // No directory resource ID. |
414 base::Bind(&DriveFeedLoader::OnGetChangelist, | 417 base::Bind(&DriveFeedLoader::OnGetChangelist, |
415 weak_ptr_factory_.GetWeakPtr(), | 418 weak_ptr_factory_.GetWeakPtr(), |
416 base::Passed(¶ms), | 419 base::Passed(¶ms), |
417 start_time)); | 420 start_time)); |
418 } else { | 421 } else { |
419 drive_service_->GetDocuments( | 422 scheduler_->GetDocuments( |
420 params_ptr->feed_to_load, | 423 params_ptr->feed_to_load, |
421 params_ptr->start_changestamp, | 424 params_ptr->start_changestamp, |
422 params_ptr->search_query, | 425 params_ptr->search_query, |
423 params_ptr->shared_with_me, | 426 params_ptr->shared_with_me, |
424 params_ptr->directory_resource_id, | 427 params_ptr->directory_resource_id, |
425 base::Bind(&DriveFeedLoader::OnGetDocuments, | 428 base::Bind(&DriveFeedLoader::OnGetDocuments, |
426 weak_ptr_factory_.GetWeakPtr(), | 429 weak_ptr_factory_.GetWeakPtr(), |
427 base::Passed(¶ms), | 430 base::Passed(¶ms), |
428 start_time)); | 431 start_time)); |
429 } | 432 } |
(...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
552 weak_ptr_factory_.GetWeakPtr(), | 555 weak_ptr_factory_.GetWeakPtr(), |
553 ui_state->weak_ptr_factory.GetWeakPtr())); | 556 ui_state->weak_ptr_factory.GetWeakPtr())); |
554 } | 557 } |
555 ui_state->num_fetched_documents = num_accumulated_entries; | 558 ui_state->num_fetched_documents = num_accumulated_entries; |
556 ui_state->feed_fetching_elapsed_time = base::TimeTicks::Now() - start_time; | 559 ui_state->feed_fetching_elapsed_time = base::TimeTicks::Now() - start_time; |
557 | 560 |
558 // |params| will be passed to the callback and thus nulled. Extract the | 561 // |params| will be passed to the callback and thus nulled. Extract the |
559 // pointer so we can use it bellow. | 562 // pointer so we can use it bellow. |
560 LoadFeedParams* params_ptr = params.get(); | 563 LoadFeedParams* params_ptr = params.get(); |
561 // Kick off the remaining part of the feeds. | 564 // Kick off the remaining part of the feeds. |
562 drive_service_->GetDocuments( | 565 scheduler_->GetDocuments( |
563 next_feed_url, | 566 next_feed_url, |
564 params_ptr->start_changestamp, | 567 params_ptr->start_changestamp, |
565 params_ptr->search_query, | 568 params_ptr->search_query, |
566 params_ptr->shared_with_me, | 569 params_ptr->shared_with_me, |
567 params_ptr->directory_resource_id, | 570 params_ptr->directory_resource_id, |
568 base::Bind(&DriveFeedLoader::OnGetDocuments, | 571 base::Bind(&DriveFeedLoader::OnGetDocuments, |
569 weak_ptr_factory_.GetWeakPtr(), | 572 weak_ptr_factory_.GetWeakPtr(), |
570 base::Passed(¶ms), | 573 base::Passed(¶ms), |
571 start_time)); | 574 start_time)); |
572 return; | 575 return; |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
655 base::Bind(&DriveFeedLoader::OnNotifyDocumentFeedFetched, | 658 base::Bind(&DriveFeedLoader::OnNotifyDocumentFeedFetched, |
656 weak_ptr_factory_.GetWeakPtr(), | 659 weak_ptr_factory_.GetWeakPtr(), |
657 ui_state->weak_ptr_factory.GetWeakPtr())); | 660 ui_state->weak_ptr_factory.GetWeakPtr())); |
658 } | 661 } |
659 ui_state->num_fetched_documents = num_accumulated_entries; | 662 ui_state->num_fetched_documents = num_accumulated_entries; |
660 ui_state->feed_fetching_elapsed_time = base::TimeTicks::Now() - start_time; | 663 ui_state->feed_fetching_elapsed_time = base::TimeTicks::Now() - start_time; |
661 | 664 |
662 // Kick off the remaining part of the feeds. | 665 // Kick off the remaining part of the feeds. |
663 // Extract the pointer so we can use it bellow. | 666 // Extract the pointer so we can use it bellow. |
664 LoadFeedParams* params_ptr = params.get(); | 667 LoadFeedParams* params_ptr = params.get(); |
665 drive_service_->GetDocuments( | 668 scheduler_->GetDocuments( |
666 current_feed->next_link(), | 669 current_feed->next_link(), |
667 params_ptr->start_changestamp, | 670 params_ptr->start_changestamp, |
668 std::string(), // No search query. | 671 std::string(), // No search query. |
669 false, // Not shared with me. | 672 false, // Not shared with me. |
670 std::string(), // No directory resource ID. | 673 std::string(), // No directory resource ID. |
671 base::Bind(&DriveFeedLoader::OnGetChangelist, | 674 base::Bind(&DriveFeedLoader::OnGetChangelist, |
672 weak_ptr_factory_.GetWeakPtr(), | 675 weak_ptr_factory_.GetWeakPtr(), |
673 base::Passed(¶ms), | 676 base::Passed(¶ms), |
674 start_time)); | 677 start_time)); |
675 return; | 678 return; |
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
893 | 896 |
894 // Run the callback now that the filesystem is ready. | 897 // Run the callback now that the filesystem is ready. |
895 load_finished_callback.Run(DRIVE_FILE_OK); | 898 load_finished_callback.Run(DRIVE_FILE_OK); |
896 | 899 |
897 FOR_EACH_OBSERVER(DriveFeedLoaderObserver, | 900 FOR_EACH_OBSERVER(DriveFeedLoaderObserver, |
898 observers_, | 901 observers_, |
899 OnFeedFromServerLoaded()); | 902 OnFeedFromServerLoaded()); |
900 } | 903 } |
901 | 904 |
902 } // namespace drive | 905 } // namespace drive |
OLD | NEW |