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