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 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
207 | 208 |
208 // Time elapsed since the feed fetching was started. | 209 // Time elapsed since the feed fetching was started. |
209 base::TimeDelta feed_fetching_elapsed_time; | 210 base::TimeDelta feed_fetching_elapsed_time; |
210 | 211 |
211 base::WeakPtrFactory<GetDocumentsUiState> weak_ptr_factory; | 212 base::WeakPtrFactory<GetDocumentsUiState> weak_ptr_factory; |
212 }; | 213 }; |
213 | 214 |
214 DriveFeedLoader::DriveFeedLoader( | 215 DriveFeedLoader::DriveFeedLoader( |
215 DriveResourceMetadata* resource_metadata, | 216 DriveResourceMetadata* resource_metadata, |
216 google_apis::DriveServiceInterface* drive_service, | 217 google_apis::DriveServiceInterface* drive_service, |
| 218 DriveScheduler* scheduler, |
217 DriveWebAppsRegistryInterface* webapps_registry, | 219 DriveWebAppsRegistryInterface* webapps_registry, |
218 DriveCache* cache, | 220 DriveCache* cache, |
219 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner) | 221 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner) |
220 : resource_metadata_(resource_metadata), | 222 : resource_metadata_(resource_metadata), |
221 drive_service_(drive_service), | 223 drive_service_(drive_service), |
| 224 scheduler_(scheduler), |
222 webapps_registry_(webapps_registry), | 225 webapps_registry_(webapps_registry), |
223 cache_(cache), | 226 cache_(cache), |
224 blocking_task_runner_(blocking_task_runner), | 227 blocking_task_runner_(blocking_task_runner), |
225 refreshing_(false), | 228 refreshing_(false), |
226 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { | 229 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { |
227 } | 230 } |
228 | 231 |
229 DriveFeedLoader::~DriveFeedLoader() { | 232 DriveFeedLoader::~DriveFeedLoader() { |
230 } | 233 } |
231 | 234 |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
356 } | 359 } |
357 | 360 |
358 void DriveFeedLoader::LoadFromServer(scoped_ptr<LoadFeedParams> params) { | 361 void DriveFeedLoader::LoadFromServer(scoped_ptr<LoadFeedParams> params) { |
359 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 362 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
360 | 363 |
361 const base::TimeTicks start_time = base::TimeTicks::Now(); | 364 const base::TimeTicks start_time = base::TimeTicks::Now(); |
362 | 365 |
363 // base::Passed() may get evaluated first, so get a pointer to params. | 366 // base::Passed() may get evaluated first, so get a pointer to params. |
364 LoadFeedParams* params_ptr = params.get(); | 367 LoadFeedParams* params_ptr = params.get(); |
365 if (google_apis::util::IsDriveV2ApiEnabled()) { | 368 if (google_apis::util::IsDriveV2ApiEnabled()) { |
366 drive_service_->GetDocuments( | 369 scheduler_->GetDocuments( |
367 params_ptr->feed_to_load, | 370 params_ptr->feed_to_load, |
368 params_ptr->start_changestamp, | 371 params_ptr->start_changestamp, |
369 std::string(), // No search query. | 372 std::string(), // No search query. |
370 params_ptr->shared_with_me, | 373 params_ptr->shared_with_me, |
371 std::string(), // No directory resource ID. | 374 std::string(), // No directory resource ID. |
372 base::Bind(&DriveFeedLoader::OnGetChangelist, | 375 base::Bind(&DriveFeedLoader::OnGetChangelist, |
373 weak_ptr_factory_.GetWeakPtr(), | 376 weak_ptr_factory_.GetWeakPtr(), |
374 base::Passed(¶ms), | 377 base::Passed(¶ms), |
375 start_time)); | 378 start_time)); |
376 } else { | 379 } else { |
377 drive_service_->GetDocuments( | 380 scheduler_->GetDocuments( |
378 params_ptr->feed_to_load, | 381 params_ptr->feed_to_load, |
379 params_ptr->start_changestamp, | 382 params_ptr->start_changestamp, |
380 params_ptr->search_query, | 383 params_ptr->search_query, |
381 params_ptr->shared_with_me, | 384 params_ptr->shared_with_me, |
382 params_ptr->directory_resource_id, | 385 params_ptr->directory_resource_id, |
383 base::Bind(&DriveFeedLoader::OnGetDocuments, | 386 base::Bind(&DriveFeedLoader::OnGetDocuments, |
384 weak_ptr_factory_.GetWeakPtr(), | 387 weak_ptr_factory_.GetWeakPtr(), |
385 base::Passed(¶ms), | 388 base::Passed(¶ms), |
386 start_time)); | 389 start_time)); |
387 } | 390 } |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
513 weak_ptr_factory_.GetWeakPtr(), | 516 weak_ptr_factory_.GetWeakPtr(), |
514 ui_state->weak_ptr_factory.GetWeakPtr())); | 517 ui_state->weak_ptr_factory.GetWeakPtr())); |
515 } | 518 } |
516 ui_state->num_fetched_documents = num_accumulated_entries; | 519 ui_state->num_fetched_documents = num_accumulated_entries; |
517 ui_state->feed_fetching_elapsed_time = base::TimeTicks::Now() - start_time; | 520 ui_state->feed_fetching_elapsed_time = base::TimeTicks::Now() - start_time; |
518 | 521 |
519 // |params| will be passed to the callback and thus nulled. Extract the | 522 // |params| will be passed to the callback and thus nulled. Extract the |
520 // pointer so we can use it bellow. | 523 // pointer so we can use it bellow. |
521 LoadFeedParams* params_ptr = params.get(); | 524 LoadFeedParams* params_ptr = params.get(); |
522 // Kick off the remaining part of the feeds. | 525 // Kick off the remaining part of the feeds. |
523 drive_service_->GetDocuments( | 526 scheduler_->GetDocuments( |
524 next_feed_url, | 527 next_feed_url, |
525 params_ptr->start_changestamp, | 528 params_ptr->start_changestamp, |
526 params_ptr->search_query, | 529 params_ptr->search_query, |
527 params_ptr->shared_with_me, | 530 params_ptr->shared_with_me, |
528 params_ptr->directory_resource_id, | 531 params_ptr->directory_resource_id, |
529 base::Bind(&DriveFeedLoader::OnGetDocuments, | 532 base::Bind(&DriveFeedLoader::OnGetDocuments, |
530 weak_ptr_factory_.GetWeakPtr(), | 533 weak_ptr_factory_.GetWeakPtr(), |
531 base::Passed(¶ms), | 534 base::Passed(¶ms), |
532 start_time)); | 535 start_time)); |
533 return; | 536 return; |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
616 base::Bind(&DriveFeedLoader::OnNotifyDocumentFeedFetched, | 619 base::Bind(&DriveFeedLoader::OnNotifyDocumentFeedFetched, |
617 weak_ptr_factory_.GetWeakPtr(), | 620 weak_ptr_factory_.GetWeakPtr(), |
618 ui_state->weak_ptr_factory.GetWeakPtr())); | 621 ui_state->weak_ptr_factory.GetWeakPtr())); |
619 } | 622 } |
620 ui_state->num_fetched_documents = num_accumulated_entries; | 623 ui_state->num_fetched_documents = num_accumulated_entries; |
621 ui_state->feed_fetching_elapsed_time = base::TimeTicks::Now() - start_time; | 624 ui_state->feed_fetching_elapsed_time = base::TimeTicks::Now() - start_time; |
622 | 625 |
623 // Kick off the remaining part of the feeds. | 626 // Kick off the remaining part of the feeds. |
624 // Extract the pointer so we can use it bellow. | 627 // Extract the pointer so we can use it bellow. |
625 LoadFeedParams* params_ptr = params.get(); | 628 LoadFeedParams* params_ptr = params.get(); |
626 drive_service_->GetDocuments( | 629 scheduler_->GetDocuments( |
627 current_feed->next_link(), | 630 current_feed->next_link(), |
628 params_ptr->start_changestamp, | 631 params_ptr->start_changestamp, |
629 std::string(), // No search query. | 632 std::string(), // No search query. |
630 false, // Not shared with me. | 633 false, // Not shared with me. |
631 std::string(), // No directory resource ID. | 634 std::string(), // No directory resource ID. |
632 base::Bind(&DriveFeedLoader::OnGetChangelist, | 635 base::Bind(&DriveFeedLoader::OnGetChangelist, |
633 weak_ptr_factory_.GetWeakPtr(), | 636 weak_ptr_factory_.GetWeakPtr(), |
634 base::Passed(¶ms), | 637 base::Passed(¶ms), |
635 start_time)); | 638 start_time)); |
636 return; | 639 return; |
(...skipping 213 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
850 | 853 |
851 // Run the callback now that the filesystem is ready. | 854 // Run the callback now that the filesystem is ready. |
852 load_finished_callback.Run(DRIVE_FILE_OK); | 855 load_finished_callback.Run(DRIVE_FILE_OK); |
853 | 856 |
854 FOR_EACH_OBSERVER(DriveFeedLoaderObserver, | 857 FOR_EACH_OBSERVER(DriveFeedLoaderObserver, |
855 observers_, | 858 observers_, |
856 OnFeedFromServerLoaded()); | 859 OnFeedFromServerLoaded()); |
857 } | 860 } |
858 | 861 |
859 } // namespace drive | 862 } // namespace drive |
OLD | NEW |