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/gdata/gdata_wapi_feed_loader.h" | 5 #include "chrome/browser/chromeos/gdata/gdata_wapi_feed_loader.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
9 #include "base/format_macros.h" | 9 #include "base/format_macros.h" |
10 #include "base/json/json_reader.h" | 10 #include "base/json/json_reader.h" |
11 #include "base/json/json_writer.h" | 11 #include "base/json/json_writer.h" |
12 #include "base/message_loop.h" | 12 #include "base/message_loop.h" |
13 #include "base/metrics/histogram.h" | 13 #include "base/metrics/histogram.h" |
14 #include "base/stringprintf.h" | 14 #include "base/stringprintf.h" |
15 #include "base/threading/sequenced_worker_pool.h" | 15 #include "base/threading/sequenced_worker_pool.h" |
16 #include "base/values.h" | 16 #include "base/values.h" |
17 #include "chrome/browser/chromeos/gdata/documents_service_interface.h" | |
18 #include "chrome/browser/chromeos/gdata/drive_api_parser.h" | 17 #include "chrome/browser/chromeos/gdata/drive_api_parser.h" |
| 18 #include "chrome/browser/chromeos/gdata/drive_service_interface.h" |
19 #include "chrome/browser/chromeos/gdata/drive_webapps_registry.h" | 19 #include "chrome/browser/chromeos/gdata/drive_webapps_registry.h" |
20 #include "chrome/browser/chromeos/gdata/gdata_cache.h" | 20 #include "chrome/browser/chromeos/gdata/gdata_cache.h" |
21 #include "chrome/browser/chromeos/gdata/gdata_util.h" | 21 #include "chrome/browser/chromeos/gdata/gdata_util.h" |
22 #include "chrome/browser/chromeos/gdata/gdata_wapi_feed_processor.h" | 22 #include "chrome/browser/chromeos/gdata/gdata_wapi_feed_processor.h" |
23 #include "chrome/common/chrome_switches.h" | 23 #include "chrome/common/chrome_switches.h" |
24 #include "content/public/browser/browser_thread.h" | 24 #include "content/public/browser/browser_thread.h" |
25 | 25 |
26 using content::BrowserThread; | 26 using content::BrowserThread; |
27 | 27 |
28 namespace gdata { | 28 namespace gdata { |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
229 base::TimeTicks start_time; | 229 base::TimeTicks start_time; |
230 | 230 |
231 // Time elapsed since the feed fetching was started. | 231 // Time elapsed since the feed fetching was started. |
232 base::TimeDelta feed_fetching_elapsed_time; | 232 base::TimeDelta feed_fetching_elapsed_time; |
233 | 233 |
234 base::WeakPtrFactory<GetDocumentsUiState> weak_ptr_factory; | 234 base::WeakPtrFactory<GetDocumentsUiState> weak_ptr_factory; |
235 }; | 235 }; |
236 | 236 |
237 GDataWapiFeedLoader::GDataWapiFeedLoader( | 237 GDataWapiFeedLoader::GDataWapiFeedLoader( |
238 GDataDirectoryService* directory_service, | 238 GDataDirectoryService* directory_service, |
239 DocumentsServiceInterface* documents_service, | 239 DriveServiceInterface* drive_service, |
240 DriveWebAppsRegistryInterface* webapps_registry, | 240 DriveWebAppsRegistryInterface* webapps_registry, |
241 GDataCache* cache, | 241 GDataCache* cache, |
242 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner) | 242 scoped_refptr<base::SequencedTaskRunner> blocking_task_runner) |
243 : directory_service_(directory_service), | 243 : directory_service_(directory_service), |
244 documents_service_(documents_service), | 244 drive_service_(drive_service), |
245 webapps_registry_(webapps_registry), | 245 webapps_registry_(webapps_registry), |
246 cache_(cache), | 246 cache_(cache), |
247 blocking_task_runner_(blocking_task_runner), | 247 blocking_task_runner_(blocking_task_runner), |
248 weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { | 248 weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { |
249 } | 249 } |
250 | 250 |
251 GDataWapiFeedLoader::~GDataWapiFeedLoader() { | 251 GDataWapiFeedLoader::~GDataWapiFeedLoader() { |
252 } | 252 } |
253 | 253 |
254 void GDataWapiFeedLoader::AddObserver(Observer* observer) { | 254 void GDataWapiFeedLoader::AddObserver(Observer* observer) { |
(...skipping 11 matching lines...) Expand all Loading... |
266 int64 local_changestamp, | 266 int64 local_changestamp, |
267 const FileOperationCallback& callback) { | 267 const FileOperationCallback& callback) { |
268 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 268 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
269 | 269 |
270 DVLOG(1) << "ReloadFeedFromServerIfNeeded local_changestamp=" | 270 DVLOG(1) << "ReloadFeedFromServerIfNeeded local_changestamp=" |
271 << local_changestamp << ", initial_origin=" << initial_origin; | 271 << local_changestamp << ", initial_origin=" << initial_origin; |
272 | 272 |
273 // First fetch the latest changestamp to see if there were any new changes | 273 // First fetch the latest changestamp to see if there were any new changes |
274 // there at all. | 274 // there at all. |
275 if (gdata::util::IsDriveV2ApiEnabled()) { | 275 if (gdata::util::IsDriveV2ApiEnabled()) { |
276 documents_service_->GetAccountMetadata( | 276 drive_service_->GetAccountMetadata( |
277 base::Bind(&GDataWapiFeedLoader::OnGetAboutResource, | 277 base::Bind(&GDataWapiFeedLoader::OnGetAboutResource, |
278 weak_ptr_factory_.GetWeakPtr(), | 278 weak_ptr_factory_.GetWeakPtr(), |
279 initial_origin, | 279 initial_origin, |
280 local_changestamp, | 280 local_changestamp, |
281 callback)); | 281 callback)); |
282 // Drive v2 needs a separate application list fetch operation. | 282 // Drive v2 needs a separate application list fetch operation. |
283 // TODO(kochi): Application list rarely changes and do not necessarily | 283 // TODO(kochi): Application list rarely changes and do not necessarily |
284 // refresed as often as files. | 284 // refresed as often as files. |
285 documents_service_->GetApplicationInfo( | 285 drive_service_->GetApplicationInfo( |
286 base::Bind(&GDataWapiFeedLoader::OnGetApplicationList, | 286 base::Bind(&GDataWapiFeedLoader::OnGetApplicationList, |
287 weak_ptr_factory_.GetWeakPtr())); | 287 weak_ptr_factory_.GetWeakPtr())); |
288 return; | 288 return; |
289 } | 289 } |
290 | 290 |
291 documents_service_->GetAccountMetadata( | 291 drive_service_->GetAccountMetadata( |
292 base::Bind(&GDataWapiFeedLoader::OnGetAccountMetadata, | 292 base::Bind(&GDataWapiFeedLoader::OnGetAccountMetadata, |
293 weak_ptr_factory_.GetWeakPtr(), | 293 weak_ptr_factory_.GetWeakPtr(), |
294 initial_origin, | 294 initial_origin, |
295 local_changestamp, | 295 local_changestamp, |
296 callback)); | 296 callback)); |
297 } | 297 } |
298 | 298 |
299 void GDataWapiFeedLoader::OnGetAccountMetadata( | 299 void GDataWapiFeedLoader::OnGetAccountMetadata( |
300 ContentOrigin initial_origin, | 300 ContentOrigin initial_origin, |
301 int64 local_changestamp, | 301 int64 local_changestamp, |
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
443 VLOG(1) << "applist get success"; | 443 VLOG(1) << "applist get success"; |
444 webapps_registry_->UpdateFromApplicationList(*applist.get()); | 444 webapps_registry_->UpdateFromApplicationList(*applist.get()); |
445 } | 445 } |
446 } | 446 } |
447 } | 447 } |
448 | 448 |
449 void GDataWapiFeedLoader::LoadFromServer(const LoadFeedParams& params) { | 449 void GDataWapiFeedLoader::LoadFromServer(const LoadFeedParams& params) { |
450 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 450 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
451 | 451 |
452 // |feed_list| will contain the list of all collected feed updates that | 452 // |feed_list| will contain the list of all collected feed updates that |
453 // we will receive through calls of DocumentsService::GetDocuments(). | 453 // we will receive through calls of GDataWapiService::GetDocuments(). |
454 scoped_ptr<std::vector<DocumentFeed*> > feed_list( | 454 scoped_ptr<std::vector<DocumentFeed*> > feed_list( |
455 new std::vector<DocumentFeed*>); | 455 new std::vector<DocumentFeed*>); |
456 const base::TimeTicks start_time = base::TimeTicks::Now(); | 456 const base::TimeTicks start_time = base::TimeTicks::Now(); |
457 | 457 |
458 if (gdata::util::IsDriveV2ApiEnabled()) { | 458 if (gdata::util::IsDriveV2ApiEnabled()) { |
459 documents_service_->GetDocuments( | 459 drive_service_->GetDocuments( |
460 params.feed_to_load, | 460 params.feed_to_load, |
461 params.start_changestamp, | 461 params.start_changestamp, |
462 std::string(), // No search query. | 462 std::string(), // No search query. |
463 std::string(), // No directory resource ID. | 463 std::string(), // No directory resource ID. |
464 base::Bind(&GDataWapiFeedLoader::OnGetChangelist, | 464 base::Bind(&GDataWapiFeedLoader::OnGetChangelist, |
465 weak_ptr_factory_.GetWeakPtr(), | 465 weak_ptr_factory_.GetWeakPtr(), |
466 params.initial_origin, | 466 params.initial_origin, |
467 params.feed_load_callback, | 467 params.feed_load_callback, |
468 base::Owned(new GetDocumentsParams( | 468 base::Owned(new GetDocumentsParams( |
469 params.start_changestamp, | 469 params.start_changestamp, |
470 params.root_feed_changestamp, | 470 params.root_feed_changestamp, |
471 feed_list.release(), | 471 feed_list.release(), |
472 params.search_query, | 472 params.search_query, |
473 params.directory_resource_id, | 473 params.directory_resource_id, |
474 params.load_finished_callback, | 474 params.load_finished_callback, |
475 NULL)), | 475 NULL)), |
476 start_time)); | 476 start_time)); |
477 return; | 477 return; |
478 } | 478 } |
479 | 479 |
480 documents_service_->GetDocuments( | 480 drive_service_->GetDocuments( |
481 params.feed_to_load, | 481 params.feed_to_load, |
482 params.start_changestamp, | 482 params.start_changestamp, |
483 params.search_query, | 483 params.search_query, |
484 params.directory_resource_id, | 484 params.directory_resource_id, |
485 base::Bind(&GDataWapiFeedLoader::OnGetDocuments, | 485 base::Bind(&GDataWapiFeedLoader::OnGetDocuments, |
486 weak_ptr_factory_.GetWeakPtr(), | 486 weak_ptr_factory_.GetWeakPtr(), |
487 params.initial_origin, | 487 params.initial_origin, |
488 params.feed_load_callback, | 488 params.feed_load_callback, |
489 base::Owned( | 489 base::Owned( |
490 new GetDocumentsParams(params.start_changestamp, | 490 new GetDocumentsParams(params.start_changestamp, |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
622 MessageLoop::current()->PostTask( | 622 MessageLoop::current()->PostTask( |
623 FROM_HERE, | 623 FROM_HERE, |
624 base::Bind(&GDataWapiFeedLoader::OnNotifyDocumentFeedFetched, | 624 base::Bind(&GDataWapiFeedLoader::OnNotifyDocumentFeedFetched, |
625 weak_ptr_factory_.GetWeakPtr(), | 625 weak_ptr_factory_.GetWeakPtr(), |
626 ui_state->weak_ptr_factory.GetWeakPtr())); | 626 ui_state->weak_ptr_factory.GetWeakPtr())); |
627 } | 627 } |
628 ui_state->num_fetched_documents = num_accumulated_entries; | 628 ui_state->num_fetched_documents = num_accumulated_entries; |
629 ui_state->feed_fetching_elapsed_time = base::TimeTicks::Now() - start_time; | 629 ui_state->feed_fetching_elapsed_time = base::TimeTicks::Now() - start_time; |
630 | 630 |
631 // Kick off the remaining part of the feeds. | 631 // Kick off the remaining part of the feeds. |
632 documents_service_->GetDocuments( | 632 drive_service_->GetDocuments( |
633 next_feed_url, | 633 next_feed_url, |
634 params->start_changestamp, | 634 params->start_changestamp, |
635 params->search_query, | 635 params->search_query, |
636 params->directory_resource_id, | 636 params->directory_resource_id, |
637 base::Bind(&GDataWapiFeedLoader::OnGetDocuments, | 637 base::Bind(&GDataWapiFeedLoader::OnGetDocuments, |
638 weak_ptr_factory_.GetWeakPtr(), | 638 weak_ptr_factory_.GetWeakPtr(), |
639 initial_origin, | 639 initial_origin, |
640 callback, | 640 callback, |
641 base::Owned( | 641 base::Owned( |
642 new GetDocumentsParams( | 642 new GetDocumentsParams( |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
738 MessageLoop::current()->PostTask( | 738 MessageLoop::current()->PostTask( |
739 FROM_HERE, | 739 FROM_HERE, |
740 base::Bind(&GDataWapiFeedLoader::OnNotifyDocumentFeedFetched, | 740 base::Bind(&GDataWapiFeedLoader::OnNotifyDocumentFeedFetched, |
741 weak_ptr_factory_.GetWeakPtr(), | 741 weak_ptr_factory_.GetWeakPtr(), |
742 ui_state->weak_ptr_factory.GetWeakPtr())); | 742 ui_state->weak_ptr_factory.GetWeakPtr())); |
743 } | 743 } |
744 ui_state->num_fetched_documents = num_accumulated_entries; | 744 ui_state->num_fetched_documents = num_accumulated_entries; |
745 ui_state->feed_fetching_elapsed_time = base::TimeTicks::Now() - start_time; | 745 ui_state->feed_fetching_elapsed_time = base::TimeTicks::Now() - start_time; |
746 | 746 |
747 // Kick off the remaining part of the feeds. | 747 // Kick off the remaining part of the feeds. |
748 documents_service_->GetDocuments( | 748 drive_service_->GetDocuments( |
749 current_feed->next_link(), | 749 current_feed->next_link(), |
750 params->start_changestamp, | 750 params->start_changestamp, |
751 std::string(), // No search query. | 751 std::string(), // No search query. |
752 std::string(), // No directory resource ID. | 752 std::string(), // No directory resource ID. |
753 base::Bind(&GDataWapiFeedLoader::OnGetChangelist, | 753 base::Bind(&GDataWapiFeedLoader::OnGetChangelist, |
754 weak_ptr_factory_.GetWeakPtr(), | 754 weak_ptr_factory_.GetWeakPtr(), |
755 initial_origin, | 755 initial_origin, |
756 callback, | 756 callback, |
757 base::Owned( | 757 base::Owned( |
758 new GetDocumentsParams( | 758 new GetDocumentsParams( |
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
957 dir_iter != changed_dirs.end(); ++dir_iter) { | 957 dir_iter != changed_dirs.end(); ++dir_iter) { |
958 FOR_EACH_OBSERVER(Observer, observers_, | 958 FOR_EACH_OBSERVER(Observer, observers_, |
959 OnDirectoryChanged(*dir_iter)); | 959 OnDirectoryChanged(*dir_iter)); |
960 } | 960 } |
961 } | 961 } |
962 | 962 |
963 return error; | 963 return error; |
964 } | 964 } |
965 | 965 |
966 } // namespace gdata | 966 } // namespace gdata |
OLD | NEW |