| 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 |