Chromium Code Reviews| 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_file_system.h" | 5 #include "chrome/browser/chromeos/gdata/gdata_file_system.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 542 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 553 initial_origin, | 553 initial_origin, |
| 554 directory_service_->largest_changestamp(), | 554 directory_service_->largest_changestamp(), |
| 555 directory_service_->root()->GetFilePath(), | 555 directory_service_->root()->GetFilePath(), |
| 556 base::Bind(&GDataFileSystem::OnUpdateChecked, | 556 base::Bind(&GDataFileSystem::OnUpdateChecked, |
| 557 ui_weak_ptr_, | 557 ui_weak_ptr_, |
| 558 initial_origin)); | 558 initial_origin)); |
| 559 } | 559 } |
| 560 } | 560 } |
| 561 | 561 |
| 562 void GDataFileSystem::OnUpdateChecked(ContentOrigin initial_origin, | 562 void GDataFileSystem::OnUpdateChecked(ContentOrigin initial_origin, |
| 563 GDataFileError error, | 563 GDataFileError error) { |
| 564 GDataEntry* /* entry */) { | |
| 565 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 564 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 566 | 565 |
| 567 if (error != GDATA_FILE_OK) { | 566 if (error != GDATA_FILE_OK) |
| 568 directory_service_->set_origin(initial_origin); | 567 directory_service_->set_origin(initial_origin); |
| 569 } | |
| 570 } | 568 } |
| 571 | 569 |
| 572 GDataFileSystem::~GDataFileSystem() { | 570 GDataFileSystem::~GDataFileSystem() { |
| 573 // This should be called from UI thread, from GDataSystemService shutdown. | 571 // This should be called from UI thread, from GDataSystemService shutdown. |
| 574 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 572 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 575 | 573 |
| 576 feed_loader_->RemoveObserver(this); | 574 feed_loader_->RemoveObserver(this); |
| 577 | 575 |
| 578 // Cancel all the in-flight operations. | 576 // Cancel all the in-flight operations. |
| 579 // This asynchronously cancels the URL fetch operations. | 577 // This asynchronously cancels the URL fetch operations. |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 680 callback))); | 678 callback))); |
| 681 return; | 679 return; |
| 682 } else if (directory_service_->origin() == UNINITIALIZED) { | 680 } else if (directory_service_->origin() == UNINITIALIZED) { |
| 683 // Load root feed from this disk cache. Upon completion, kick off server | 681 // Load root feed from this disk cache. Upon completion, kick off server |
| 684 // fetching. | 682 // fetching. |
| 685 directory_service_->set_origin(INITIALIZING); | 683 directory_service_->set_origin(INITIALIZING); |
| 686 feed_loader_->LoadFromCache( | 684 feed_loader_->LoadFromCache( |
| 687 true, // should_load_from_server | 685 true, // should_load_from_server |
| 688 search_file_path, | 686 search_file_path, |
| 689 // This is the initial load, hence we'll notify when it's done. | 687 // This is the initial load, hence we'll notify when it's done. |
| 690 base::Bind(&GDataFileSystem::RunAndNotifyInitialLoadFinished, | 688 base::Bind(&GDataFileSystem::FindAndNotifyInitialLoadFinished, |
| 691 ui_weak_ptr_, | 689 ui_weak_ptr_, |
| 690 search_file_path, | |
| 692 callback)); | 691 callback)); |
| 693 return; | 692 return; |
| 694 } | 693 } |
| 695 | 694 |
| 696 // Post a task to the same thread, rather than calling it here, as | 695 // Post a task to the same thread, rather than calling it here, as |
| 697 // FindEntryByPath() is asynchronous. | 696 // FindEntryByPath() is asynchronous. |
| 698 base::MessageLoopProxy::current()->PostTask( | 697 base::MessageLoopProxy::current()->PostTask( |
| 699 FROM_HERE, | 698 FROM_HERE, |
| 700 base::Bind(&GDataFileSystem::FindEntryByPathSyncOnUIThread, | 699 base::Bind(&GDataFileSystem::FindEntryByPathSyncOnUIThread, |
| 701 ui_weak_ptr_, | 700 ui_weak_ptr_, |
| (...skipping 1301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2003 | 2002 |
| 2004 feed_loader_->LoadFromServer( | 2003 feed_loader_->LoadFromServer( |
| 2005 directory_service_->origin(), | 2004 directory_service_->origin(), |
| 2006 0, // Not delta feed. | 2005 0, // Not delta feed. |
| 2007 0, // Not used. | 2006 0, // Not used. |
| 2008 true, // multiple feeds | 2007 true, // multiple feeds |
| 2009 file_path, | 2008 file_path, |
| 2010 std::string(), // No search query | 2009 std::string(), // No search query |
| 2011 GURL(), /* feed not explicitly set */ | 2010 GURL(), /* feed not explicitly set */ |
| 2012 entry_proto->resource_id(), | 2011 entry_proto->resource_id(), |
| 2013 FindEntryCallback(), // Not used. | 2012 FileOperationCallback(), // Not used. |
| 2014 base::Bind(&GDataFileSystem::OnRequestDirectoryRefresh, | 2013 base::Bind(&GDataFileSystem::OnRequestDirectoryRefresh, |
| 2015 ui_weak_ptr_)); | 2014 ui_weak_ptr_)); |
| 2016 } | 2015 } |
| 2017 | 2016 |
| 2018 void GDataFileSystem::OnRequestDirectoryRefresh( | 2017 void GDataFileSystem::OnRequestDirectoryRefresh( |
| 2019 GetDocumentsParams* params, | 2018 GetDocumentsParams* params, |
| 2020 GDataFileError error) { | 2019 GDataFileError error) { |
| 2021 DCHECK(params); | 2020 DCHECK(params); |
| 2022 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 2021 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 2023 | 2022 |
| (...skipping 428 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2452 initial_origin, | 2451 initial_origin, |
| 2453 0, 0, // We don't use change stamps when fetching search | 2452 0, 0, // We don't use change stamps when fetching search |
| 2454 // data; we always fetch the whole result feed. | 2453 // data; we always fetch the whole result feed. |
| 2455 false, // Stop fetching search results after first feed | 2454 false, // Stop fetching search results after first feed |
| 2456 // chunk to avoid displaying huge number of search | 2455 // chunk to avoid displaying huge number of search |
| 2457 // results (especially since we don't cache them). | 2456 // results (especially since we don't cache them). |
| 2458 FilePath(), // Not used. | 2457 FilePath(), // Not used. |
| 2459 search_query, | 2458 search_query, |
| 2460 next_feed, | 2459 next_feed, |
| 2461 std::string(), // No directory resource ID. | 2460 std::string(), // No directory resource ID. |
| 2462 FindEntryCallback(), // Not used. | 2461 FileOperationCallback(), // Not used. |
| 2463 base::Bind(&GDataFileSystem::OnSearch, ui_weak_ptr_, callback)); | 2462 base::Bind(&GDataFileSystem::OnSearch, ui_weak_ptr_, callback)); |
| 2464 } | 2463 } |
| 2465 | 2464 |
| 2466 void GDataFileSystem::OnDirectoryChanged(const FilePath& directory_path) { | 2465 void GDataFileSystem::OnDirectoryChanged(const FilePath& directory_path) { |
| 2467 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 2466 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 2468 | 2467 |
| 2469 FOR_EACH_OBSERVER(GDataFileSystemInterface::Observer, observers_, | 2468 FOR_EACH_OBSERVER(GDataFileSystemInterface::Observer, observers_, |
| 2470 OnDirectoryChanged(directory_path)); | 2469 OnDirectoryChanged(directory_path)); |
| 2471 } | 2470 } |
| 2472 | 2471 |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 2484 OnFeedFromServerLoaded()); | 2483 OnFeedFromServerLoaded()); |
| 2485 } | 2484 } |
| 2486 | 2485 |
| 2487 void GDataFileSystem::LoadRootFeedFromCacheForTesting() { | 2486 void GDataFileSystem::LoadRootFeedFromCacheForTesting() { |
| 2488 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 2487 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 2489 | 2488 |
| 2490 feed_loader_->LoadFromCache( | 2489 feed_loader_->LoadFromCache( |
| 2491 false, // should_load_from_server. | 2490 false, // should_load_from_server. |
| 2492 // search_path doesn't matter if FindEntryCallback parameter is null . | 2491 // search_path doesn't matter if FindEntryCallback parameter is null . |
| 2493 FilePath(), | 2492 FilePath(), |
| 2494 FindEntryCallback()); | 2493 FileOperationCallback()); |
| 2495 } | 2494 } |
| 2496 | 2495 |
| 2497 GDataFileError GDataFileSystem::UpdateFromFeedForTesting( | 2496 GDataFileError GDataFileSystem::UpdateFromFeedForTesting( |
| 2498 const std::vector<DocumentFeed*>& feed_list, | 2497 const std::vector<DocumentFeed*>& feed_list, |
| 2499 int64 start_changestamp, | 2498 int64 start_changestamp, |
| 2500 int64 root_feed_changestamp) { | 2499 int64 root_feed_changestamp) { |
| 2501 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 2500 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 2502 | 2501 |
| 2503 return feed_loader_->UpdateFromFeed(feed_list, | 2502 return feed_loader_->UpdateFromFeed(feed_list, |
| 2504 start_changestamp, | 2503 start_changestamp, |
| (...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2834 | 2833 |
| 2835 void GDataFileSystem::NotifyFileSystemToBeUnmounted() { | 2834 void GDataFileSystem::NotifyFileSystemToBeUnmounted() { |
| 2836 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 2835 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 2837 | 2836 |
| 2838 DVLOG(1) << "File System is to be unmounted"; | 2837 DVLOG(1) << "File System is to be unmounted"; |
| 2839 // Notify the observers that the file system is being unmounted. | 2838 // Notify the observers that the file system is being unmounted. |
| 2840 FOR_EACH_OBSERVER(GDataFileSystemInterface::Observer, observers_, | 2839 FOR_EACH_OBSERVER(GDataFileSystemInterface::Observer, observers_, |
| 2841 OnFileSystemBeingUnmounted()); | 2840 OnFileSystemBeingUnmounted()); |
| 2842 } | 2841 } |
| 2843 | 2842 |
| 2844 void GDataFileSystem::RunAndNotifyInitialLoadFinished( | 2843 void GDataFileSystem::FindAndNotifyInitialLoadFinished( |
| 2844 const FilePath& search_file_path, | |
| 2845 const FindEntryCallback& callback, | 2845 const FindEntryCallback& callback, |
| 2846 GDataFileError error, | 2846 GDataFileError error) { |
| 2847 GDataEntry* entry) { | |
| 2848 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 2847 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 2849 DCHECK(!callback.is_null()); | 2848 DCHECK(!callback.is_null()); |
| 2850 | 2849 |
| 2851 callback.Run(error, entry); | 2850 // TODO(satorux): Remove this: crbug.com/141196. |
| 2851 directory_service_->FindEntryByPathAndRunSync(search_file_path, callback); | |
|
achuithb
2012/08/14 23:57:36
Why not just fix this? It's easy, right?
satorux1
2012/08/15 00:03:26
I'll fix this in the next patch, which makes thing
| |
| 2852 | 2852 |
| 2853 DVLOG(1) << "RunAndNotifyInitialLoadFinished"; | 2853 DVLOG(1) << "RunAndNotifyInitialLoadFinished"; |
| 2854 | 2854 |
| 2855 // Notify the observers that root directory has been initialized. | 2855 // Notify the observers that root directory has been initialized. |
| 2856 FOR_EACH_OBSERVER(GDataFileSystemInterface::Observer, observers_, | 2856 FOR_EACH_OBSERVER(GDataFileSystemInterface::Observer, observers_, |
| 2857 OnInitialLoadFinished()); | 2857 OnInitialLoadFinished()); |
| 2858 } | 2858 } |
| 2859 | 2859 |
| 2860 GDataFileError GDataFileSystem::AddNewDirectory( | 2860 GDataFileError GDataFileSystem::AddNewDirectory( |
| 2861 const FilePath& directory_path, base::Value* entry_value) { | 2861 const FilePath& directory_path, base::Value* entry_value) { |
| (...skipping 544 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3406 return; | 3406 return; |
| 3407 } | 3407 } |
| 3408 | 3408 |
| 3409 PlatformFileInfoProto entry_file_info; | 3409 PlatformFileInfoProto entry_file_info; |
| 3410 GDataEntry::ConvertPlatformFileInfoToProto(*file_info, &entry_file_info); | 3410 GDataEntry::ConvertPlatformFileInfoToProto(*file_info, &entry_file_info); |
| 3411 *entry_proto->mutable_file_info() = entry_file_info; | 3411 *entry_proto->mutable_file_info() = entry_file_info; |
| 3412 callback.Run(GDATA_FILE_OK, entry_proto.Pass()); | 3412 callback.Run(GDATA_FILE_OK, entry_proto.Pass()); |
| 3413 } | 3413 } |
| 3414 | 3414 |
| 3415 } // namespace gdata | 3415 } // namespace gdata |
| OLD | NEW |