Index: chrome/browser/chromeos/gdata/gdata_file_system.cc |
diff --git a/chrome/browser/chromeos/gdata/gdata_file_system.cc b/chrome/browser/chromeos/gdata/gdata_file_system.cc |
index 876a13c09d75ea793d4d25b9ed04742fea52b699..9d7aa28116ea8814c0c227b536c3c91e6ab5710f 100644 |
--- a/chrome/browser/chromeos/gdata/gdata_file_system.cc |
+++ b/chrome/browser/chromeos/gdata/gdata_file_system.cc |
@@ -558,8 +558,36 @@ void RunGetEntryInfoWithFilePathCallback( |
} // namespace |
-// GDataFileSystem::GetDocumentsParams struct implementation. |
-struct GDataFileSystem::GetDocumentsParams { |
+GDataWapiFeedLoader::GDataWapiFeedLoader( |
+ GDataDirectoryService* directory_service, |
+ DocumentsServiceInterface* documents_service, |
+ DriveWebAppsRegistryInterface* webapps_registry, |
+ GDataCache* cache, |
+ scoped_refptr<base::SequencedTaskRunner> blocking_task_runner) |
+ : directory_service_(directory_service), |
+ documents_service_(documents_service), |
+ webapps_registry_(webapps_registry), |
+ cache_(cache), |
+ blocking_task_runner_(blocking_task_runner), |
+ weak_ptr_factory_(ALLOW_THIS_IN_INITIALIZER_LIST(this)) { |
+} |
+ |
+GDataWapiFeedLoader::~GDataWapiFeedLoader() { |
+} |
+ |
+void GDataWapiFeedLoader::AddObserver(Observer* observer) { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ observers_.AddObserver(observer); |
+} |
+ |
+void GDataWapiFeedLoader::RemoveObserver(Observer* observer) { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ observers_.RemoveObserver(observer); |
+} |
+ |
+// Defines set of parameters sent to callback OnGetDocuments(). |
+// TODO(satorux): Move this to a new file: crbug.com/138268 |
+struct GetDocumentsParams { |
GetDocumentsParams(int start_changestamp, |
int root_feed_changestamp, |
std::vector<DocumentFeed*>* feed_list, |
@@ -586,7 +614,7 @@ struct GDataFileSystem::GetDocumentsParams { |
FindEntryCallback callback; |
}; |
-GDataFileSystem::GetDocumentsParams::GetDocumentsParams( |
+GetDocumentsParams::GetDocumentsParams( |
int start_changestamp, |
int root_feed_changestamp, |
std::vector<DocumentFeed*>* feed_list, |
@@ -605,7 +633,7 @@ GDataFileSystem::GetDocumentsParams::GetDocumentsParams( |
callback(callback) { |
} |
-GDataFileSystem::GetDocumentsParams::~GetDocumentsParams() { |
+GetDocumentsParams::~GetDocumentsParams() { |
STLDeleteElements(feed_list.get()); |
} |
@@ -748,6 +776,12 @@ void GDataFileSystem::Initialize() { |
documents_service_->Initialize(profile_); |
directory_service_.reset(new GDataDirectoryService); |
+ feed_loader_.reset(new GDataWapiFeedLoader(directory_service_.get(), |
+ documents_service_, |
+ webapps_registry_, |
+ cache_, |
+ blocking_task_runner_)); |
+ feed_loader_->AddObserver(this); |
PrefService* pref_service = profile_->GetPrefs(); |
hide_hosted_docs_ = pref_service->GetBoolean(prefs::kDisableGDataHostedFiles); |
@@ -760,7 +794,7 @@ void GDataFileSystem::CheckForUpdates() { |
ContentOrigin initial_origin = directory_service_->origin(); |
if (initial_origin == FROM_SERVER) { |
directory_service_->set_origin(REFRESHING); |
- ReloadFeedFromServerIfNeeded( |
+ feed_loader_->ReloadFromServerIfNeeded( |
initial_origin, |
directory_service_->largest_changestamp(), |
directory_service_->root()->GetFilePath(), |
@@ -784,17 +818,21 @@ GDataFileSystem::~GDataFileSystem() { |
// This should be called from UI thread, from GDataSystemService shutdown. |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ feed_loader_->RemoveObserver(this); |
+ |
// Cancel all the in-flight operations. |
// This asynchronously cancels the URL fetch operations. |
documents_service_->CancelAll(); |
} |
-void GDataFileSystem::AddObserver(Observer* observer) { |
+void GDataFileSystem::AddObserver( |
+ GDataFileSystemInterface::Observer* observer) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
observers_.AddObserver(observer); |
} |
-void GDataFileSystem::RemoveObserver(Observer* observer) { |
+void GDataFileSystem::RemoveObserver( |
+ GDataFileSystemInterface::Observer* observer) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
observers_.RemoveObserver(observer); |
} |
@@ -877,7 +915,7 @@ void GDataFileSystem::FindEntryByPathAsyncOnUIThread( |
// Load root feed from this disk cache. Upon completion, kick off server |
// fetching. |
directory_service_->set_origin(INITIALIZING); |
- LoadRootFeedFromCache( |
+ feed_loader_->LoadFromCache( |
true, // should_load_from_server |
search_file_path, |
// This is the initial load, hence we'll notify when it's done. |
@@ -902,12 +940,10 @@ void GDataFileSystem::FindEntryByPathSyncOnUIThread( |
const FindEntryCallback& callback) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- GDataEntry* entry = directory_service_->FindEntryByPathSync( |
- search_file_path); |
- callback.Run(entry ? GDATA_FILE_OK : GDATA_FILE_ERROR_NOT_FOUND, entry); |
+ directory_service_->FindEntryByPathAndRunSync(search_file_path, callback); |
} |
-void GDataFileSystem::ReloadFeedFromServerIfNeeded( |
+void GDataWapiFeedLoader::ReloadFromServerIfNeeded( |
ContentOrigin initial_origin, |
int local_changestamp, |
const FilePath& search_file_path, |
@@ -917,15 +953,15 @@ void GDataFileSystem::ReloadFeedFromServerIfNeeded( |
// First fetch the latest changestamp to see if there were any new changes |
// there at all. |
documents_service_->GetAccountMetadata( |
- base::Bind(&GDataFileSystem::OnGetAccountMetadata, |
- ui_weak_ptr_, |
+ base::Bind(&GDataWapiFeedLoader::OnGetAccountMetadata, |
+ weak_ptr_factory_.GetWeakPtr(), |
initial_origin, |
local_changestamp, |
search_file_path, |
callback)); |
} |
-void GDataFileSystem::OnGetAccountMetadata( |
+void GDataWapiFeedLoader::OnGetAccountMetadata( |
ContentOrigin initial_origin, |
int local_changestamp, |
const FilePath& search_file_path, |
@@ -937,15 +973,15 @@ void GDataFileSystem::OnGetAccountMetadata( |
GDataFileError error = GDataToGDataFileError(status); |
if (error != GDATA_FILE_OK) { |
// Get changes starting from the next changestamp from what we have locally. |
- LoadFeedFromServer(initial_origin, |
- local_changestamp + 1, 0, |
- true, /* should_fetch_multiple_feeds */ |
- search_file_path, |
- std::string() /* no search query */, |
- std::string() /* no directory resource ID */, |
- callback, |
- base::Bind(&GDataFileSystem::OnFeedFromServerLoaded, |
- ui_weak_ptr_)); |
+ LoadFromServer(initial_origin, |
+ local_changestamp + 1, 0, |
+ true, /* should_fetch_multiple_feeds */ |
+ search_file_path, |
+ std::string() /* no search query */, |
+ std::string() /* no directory resource ID */, |
+ callback, |
+ base::Bind(&GDataWapiFeedLoader::OnFeedFromServerLoaded, |
+ weak_ptr_factory_.GetWeakPtr())); |
return; |
} |
@@ -966,15 +1002,15 @@ void GDataFileSystem::OnGetAccountMetadata( |
} |
if (!account_metadata.get()) { |
- LoadFeedFromServer(initial_origin, |
- local_changestamp + 1, 0, |
- true, /* should_fetch_multiple_feeds */ |
- search_file_path, |
- std::string() /* no search query */, |
- std::string() /* no directory resource ID */, |
- callback, |
- base::Bind(&GDataFileSystem::OnFeedFromServerLoaded, |
- ui_weak_ptr_)); |
+ LoadFromServer(initial_origin, |
+ local_changestamp + 1, 0, |
+ true, /* should_fetch_multiple_feeds */ |
+ search_file_path, |
+ std::string() /* no search query */, |
+ std::string() /* no directory resource ID */, |
+ callback, |
+ base::Bind(&GDataWapiFeedLoader::OnFeedFromServerLoaded, |
+ weak_ptr_factory_.GetWeakPtr())); |
return; |
} |
@@ -997,25 +1033,27 @@ void GDataFileSystem::OnGetAccountMetadata( |
// No changes detected, continue with search as planned. |
if (!changes_detected) { |
- if (!callback.is_null()) |
- FindEntryByPathSyncOnUIThread(search_file_path, callback); |
+ if (!callback.is_null()) { |
+ directory_service_->FindEntryByPathAndRunSync(search_file_path, |
+ callback); |
+ } |
return; |
} |
// Load changes from the server. |
- LoadFeedFromServer(initial_origin, |
- local_changestamp > 0 ? local_changestamp + 1 : 0, |
- account_metadata->largest_changestamp(), |
- true, /* should_fetch_multiple_feeds */ |
- search_file_path, |
- std::string() /* no search query */, |
- std::string() /* no directory resource ID */, |
- callback, |
- base::Bind(&GDataFileSystem::OnFeedFromServerLoaded, |
- ui_weak_ptr_)); |
-} |
- |
-void GDataFileSystem::LoadFeedFromServer( |
+ LoadFromServer(initial_origin, |
+ local_changestamp > 0 ? local_changestamp + 1 : 0, |
+ account_metadata->largest_changestamp(), |
+ true, /* should_fetch_multiple_feeds */ |
+ search_file_path, |
+ std::string() /* no search query */, |
+ std::string() /* no directory resource ID */, |
+ callback, |
+ base::Bind(&GDataWapiFeedLoader::OnFeedFromServerLoaded, |
+ weak_ptr_factory_.GetWeakPtr())); |
+} |
+ |
+void GDataWapiFeedLoader::LoadFromServer( |
ContentOrigin initial_origin, |
int start_changestamp, |
int root_feed_changestamp, |
@@ -1037,8 +1075,8 @@ void GDataFileSystem::LoadFeedFromServer( |
start_changestamp, |
search_query, |
directory_resource_id, |
- base::Bind(&GDataFileSystem::OnGetDocuments, |
- ui_weak_ptr_, |
+ base::Bind(&GDataWapiFeedLoader::OnGetDocuments, |
+ weak_ptr_factory_.GetWeakPtr(), |
initial_origin, |
feed_load_callback, |
base::Owned(new GetDocumentsParams(start_changestamp, |
@@ -1052,8 +1090,8 @@ void GDataFileSystem::LoadFeedFromServer( |
start_time)); |
} |
-void GDataFileSystem::OnFeedFromServerLoaded(GetDocumentsParams* params, |
- GDataFileError error) { |
+void GDataWapiFeedLoader::OnFeedFromServerLoaded(GetDocumentsParams* params, |
+ GDataFileError error) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
if (error != GDATA_FILE_OK) { |
@@ -1078,8 +1116,10 @@ void GDataFileSystem::OnFeedFromServerLoaded(GetDocumentsParams* params, |
// If we had someone to report this too, then this retrieval was done in a |
// context of search... so continue search. |
- if (!params->callback.is_null()) |
- FindEntryByPathSyncOnUIThread(params->search_file_path, params->callback); |
+ if (!params->callback.is_null()) { |
+ directory_service_->FindEntryByPathAndRunSync(params->search_file_path, |
+ params->callback); |
+ } |
FOR_EACH_OBSERVER(Observer, observers_, OnFeedFromServerLoaded()); |
} |
@@ -2315,16 +2355,17 @@ void GDataFileSystem::RequestDirectoryRefreshOnUIThreadAfterGetEntryInfo( |
return; |
} |
- LoadFeedFromServer(directory_service_->origin(), |
- 0, // Not delta feed. |
- 0, // Not used. |
- true, // multiple feeds |
- file_path, |
- std::string(), // No search query |
- entry_proto->resource_id(), |
- FindEntryCallback(), // Not used. |
- base::Bind(&GDataFileSystem::OnRequestDirectoryRefresh, |
- ui_weak_ptr_)); |
+ feed_loader_->LoadFromServer( |
+ directory_service_->origin(), |
+ 0, // Not delta feed. |
+ 0, // Not used. |
+ true, // multiple feeds |
+ file_path, |
+ std::string(), // No search query |
+ entry_proto->resource_id(), |
+ FindEntryCallback(), // Not used. |
+ base::Bind(&GDataFileSystem::OnRequestDirectoryRefresh, |
+ ui_weak_ptr_)); |
} |
void GDataFileSystem::OnRequestDirectoryRefresh( |
@@ -2392,7 +2433,8 @@ void GDataFileSystem::RequestDirectoryRefreshByEntry( |
// Note that there may be no change in the directory, but it's expensive to |
// check if the new metadata matches the existing one, so we just always |
// notify that the directory is changed. |
- FOR_EACH_OBSERVER(Observer, observers_, OnDirectoryChanged(directory_path)); |
+ FOR_EACH_OBSERVER(GDataFileSystemInterface::Observer, |
+ observers_, OnDirectoryChanged(directory_path)); |
DVLOG(1) << "Directory refreshed: " << directory_path.value(); |
} |
@@ -2716,26 +2758,27 @@ void GDataFileSystem::SearchAsyncOnUIThread( |
new std::vector<DocumentFeed*>); |
ContentOrigin initial_origin = directory_service_->origin(); |
- LoadFeedFromServer(initial_origin, |
- 0, 0, // We don't use change stamps when fetching search |
- // data; we always fetch the whole result feed. |
- false, // Stop fetching search results after first feed |
- // chunk to avoid displaying huge number of search |
- // results (especially since we don't cache them). |
- FilePath(), // Not used. |
- search_query, |
- std::string(), // No directory resource ID. |
- FindEntryCallback(), // Not used. |
- base::Bind(&GDataFileSystem::OnSearch, |
- ui_weak_ptr_, callback)); |
-} |
- |
-void GDataFileSystem::OnGetDocuments(ContentOrigin initial_origin, |
- const LoadDocumentFeedCallback& callback, |
- GetDocumentsParams* params, |
- base::TimeTicks start_time, |
- GDataErrorCode status, |
- scoped_ptr<base::Value> data) { |
+ feed_loader_->LoadFromServer( |
+ initial_origin, |
+ 0, 0, // We don't use change stamps when fetching search |
+ // data; we always fetch the whole result feed. |
+ false, // Stop fetching search results after first feed |
+ // chunk to avoid displaying huge number of search |
+ // results (especially since we don't cache them). |
+ FilePath(), // Not used. |
+ search_query, |
+ std::string(), // No directory resource ID. |
+ FindEntryCallback(), // Not used. |
+ base::Bind(&GDataFileSystem::OnSearch, ui_weak_ptr_, callback)); |
+} |
+ |
+void GDataWapiFeedLoader::OnGetDocuments( |
+ ContentOrigin initial_origin, |
+ const LoadDocumentFeedCallback& callback, |
+ GetDocumentsParams* params, |
+ base::TimeTicks start_time, |
+ GDataErrorCode status, |
+ scoped_ptr<base::Value> data) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
if (params->feed_list->empty()) { |
@@ -2804,8 +2847,8 @@ void GDataFileSystem::OnGetDocuments(ContentOrigin initial_origin, |
params->start_changestamp, |
params->search_query, |
params->directory_resource_id, |
- base::Bind(&GDataFileSystem::OnGetDocuments, |
- ui_weak_ptr_, |
+ base::Bind(&GDataWapiFeedLoader::OnGetDocuments, |
+ weak_ptr_factory_.GetWeakPtr(), |
initial_origin, |
callback, |
base::Owned( |
@@ -2829,7 +2872,7 @@ void GDataFileSystem::OnGetDocuments(ContentOrigin initial_origin, |
callback.Run(params, error); |
} |
-void GDataFileSystem::LoadRootFeedFromCache( |
+void GDataWapiFeedLoader::LoadFromCache( |
bool should_load_from_server, |
const FilePath& search_file_path, |
const FindEntryCallback& callback) { |
@@ -2843,22 +2886,54 @@ void GDataFileSystem::LoadRootFeedFromCache( |
callback); |
BrowserThread::GetBlockingPool()->PostTaskAndReply(FROM_HERE, |
base::Bind(&LoadProtoOnBlockingPool, path, params), |
- base::Bind(&GDataFileSystem::OnProtoLoaded, |
- ui_weak_ptr_, |
+ base::Bind(&GDataWapiFeedLoader::OnProtoLoaded, |
+ weak_ptr_factory_.GetWeakPtr(), |
base::Owned(params))); |
} |
+void GDataFileSystem::OnDirectoryChanged(const FilePath& directory_path) { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ |
+ FOR_EACH_OBSERVER(GDataFileSystemInterface::Observer, observers_, |
+ OnDirectoryChanged(directory_path)); |
+} |
+ |
+void GDataFileSystem::OnDocumentFeedFetched(int num_accumulated_entries) { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ |
+ FOR_EACH_OBSERVER(GDataFileSystemInterface::Observer, observers_, |
+ OnDocumentFeedFetched(num_accumulated_entries)); |
+} |
+ |
+void GDataFileSystem::OnFeedFromServerLoaded() { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ |
+ FOR_EACH_OBSERVER(GDataFileSystemInterface::Observer, observers_, |
+ OnFeedFromServerLoaded()); |
+} |
+ |
void GDataFileSystem::LoadRootFeedFromCacheForTesting() { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- LoadRootFeedFromCache( |
+ feed_loader_->LoadFromCache( |
false, // should_load_from_server. |
// search_path doesn't matter if FindEntryCallback parameter is null . |
FilePath(), |
FindEntryCallback()); |
} |
-void GDataFileSystem::OnProtoLoaded(LoadRootFeedParams* params) { |
+GDataFileError GDataFileSystem::UpdateFromFeedForTesting( |
+ const std::vector<DocumentFeed*>& feed_list, |
+ int start_changestamp, |
+ int root_feed_changestamp) { |
+ DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ |
+ return feed_loader_->UpdateFromFeed(feed_list, |
+ start_changestamp, |
+ root_feed_changestamp); |
+} |
+ |
+void GDataWapiFeedLoader::OnProtoLoaded(LoadRootFeedParams* params) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
// If we have already received updates from the server, bail out. |
@@ -2885,14 +2960,15 @@ void GDataFileSystem::OnProtoLoaded(LoadRootFeedParams* params) { |
if (params->load_error == GDATA_FILE_OK && !callback.is_null()) { |
// Continue file content search operation if the delegate hasn't terminated |
// this search branch already. |
- FindEntryByPathSyncOnUIThread(params->search_file_path, callback); |
+ directory_service_->FindEntryByPathAndRunSync(params->search_file_path, |
+ callback); |
callback.Reset(); |
} |
if (!params->should_load_from_server) |
return; |
- // Decide the |initial_origin| to pass to ReloadFeedFromServerIfNeeded(). |
+ // Decide the |initial_origin| to pass to ReloadFromServerIfNeeded(). |
// This is used to restore directory content origin to its initial value when |
// we fail to retrieve the feed from server. |
// By default, if directory content is not yet initialized, restore content |
@@ -2908,13 +2984,13 @@ void GDataFileSystem::OnProtoLoaded(LoadRootFeedParams* params) { |
// Kick of the retrieval of the feed from server. If we have previously |
// |reported| to the original callback, then we just need to refresh the |
// content without continuing search upon operation completion. |
- ReloadFeedFromServerIfNeeded(initial_origin, |
- local_changestamp, |
- params->search_file_path, |
- callback); |
+ ReloadFromServerIfNeeded(initial_origin, |
+ local_changestamp, |
+ params->search_file_path, |
+ callback); |
} |
-void GDataFileSystem::SaveFileSystemAsProto() { |
+void GDataWapiFeedLoader::SaveFileSystemAsProto() { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
DVLOG(1) << "SaveFileSystemAsProto"; |
@@ -3191,7 +3267,7 @@ GDataFileError GDataFileSystem::RenameFileOnFilesystem( |
*updated_file_path = entry->GetFilePath(); |
- FOR_EACH_OBSERVER(Observer, observers_, |
+ FOR_EACH_OBSERVER(GDataFileSystemInterface::Observer, observers_, |
OnDirectoryChanged(updated_file_path->DirName())); |
return GDATA_FILE_OK; |
} |
@@ -3212,7 +3288,8 @@ GDataFileError GDataFileSystem::AddEntryToDirectoryOnFilesystem( |
if (!dir->TakeEntry(entry)) |
return GDATA_FILE_ERROR_FAILED; |
- FOR_EACH_OBSERVER(Observer, observers_, OnDirectoryChanged(dir_path)); |
+ FOR_EACH_OBSERVER(GDataFileSystemInterface::Observer, observers_, |
+ OnDirectoryChanged(dir_path)); |
return GDATA_FILE_OK; |
} |
@@ -3240,7 +3317,7 @@ GDataFileError GDataFileSystem::RemoveEntryFromDirectoryOnFilesystem( |
*updated_file_path = entry->GetFilePath(); |
- FOR_EACH_OBSERVER(Observer, observers_, |
+ FOR_EACH_OBSERVER(GDataFileSystemInterface::Observer, observers_, |
OnDirectoryChanged(updated_file_path->DirName())); |
return GDATA_FILE_OK; |
} |
@@ -3261,7 +3338,7 @@ GDataFileError GDataFileSystem::RemoveEntryFromFileSystem( |
return GDATA_FILE_OK; |
} |
-GDataFileError GDataFileSystem::UpdateFromFeed( |
+GDataFileError GDataWapiFeedLoader::UpdateFromFeed( |
const std::vector<DocumentFeed*>& feed_list, |
int start_changestamp, |
int root_feed_changestamp) { |
@@ -3270,7 +3347,7 @@ GDataFileError GDataFileSystem::UpdateFromFeed( |
std::set<FilePath> changed_dirs; |
- GDataWapiFeedProcessor feed_processor(directory_service_.get()); |
+ GDataWapiFeedProcessor feed_processor(directory_service_); |
const GDataFileError error = feed_processor.ApplyFeeds( |
feed_list, |
start_changestamp, |
@@ -3283,7 +3360,8 @@ GDataFileError GDataFileSystem::UpdateFromFeed( |
if (should_notify_directory_changed) { |
for (std::set<FilePath>::iterator dir_iter = changed_dirs.begin(); |
dir_iter != changed_dirs.end(); ++dir_iter) { |
- FOR_EACH_OBSERVER(Observer, observers_, OnDirectoryChanged(*dir_iter)); |
+ FOR_EACH_OBSERVER(Observer, observers_, |
+ OnDirectoryChanged(*dir_iter)); |
} |
} |
@@ -3315,7 +3393,8 @@ void GDataFileSystem::RunAndNotifyInitialLoadFinished( |
callback.Run(error, entry); |
// Notify the observers that root directory has been initialized. |
- FOR_EACH_OBSERVER(Observer, observers_, OnInitialLoadFinished()); |
+ FOR_EACH_OBSERVER(GDataFileSystemInterface::Observer, observers_, |
+ OnInitialLoadFinished()); |
} |
GDataFileError GDataFileSystem::AddNewDirectory( |
@@ -3349,7 +3428,8 @@ GDataFileError GDataFileSystem::AddNewDirectory( |
parent_dir->AddEntry(new_entry); |
- FOR_EACH_OBSERVER(Observer, observers_, OnDirectoryChanged(directory_path)); |
+ FOR_EACH_OBSERVER(GDataFileSystemInterface::Observer, observers_, |
+ OnDirectoryChanged(directory_path)); |
return GDATA_FILE_OK; |
} |
@@ -3411,7 +3491,7 @@ GDataFileError GDataFileSystem::RemoveEntryFromGData( |
if (!parent_dir->RemoveEntry(entry)) |
return GDATA_FILE_ERROR_NOT_FOUND; |
- FOR_EACH_OBSERVER(Observer, observers_, |
+ FOR_EACH_OBSERVER(GDataFileSystemInterface::Observer, observers_, |
OnDirectoryChanged(parent_dir->GetFilePath())); |
return GDATA_FILE_OK; |
} |
@@ -3489,7 +3569,7 @@ void GDataFileSystem::AddUploadedFileOnUIThread( |
const std::string& md5 = file->file_md5(); |
parent_dir->AddEntry(new_entry.release()); |
- FOR_EACH_OBSERVER(Observer, observers_, |
+ FOR_EACH_OBSERVER(GDataFileSystemInterface::Observer, observers_, |
OnDirectoryChanged(virtual_dir_path)); |
if (upload_mode == UPLOAD_NEW_FILE) { |
@@ -3538,7 +3618,8 @@ void GDataFileSystem::SetHideHostedDocuments(bool hide) { |
const FilePath root_path = directory_service_->root()->GetFilePath(); |
// Kick off directory refresh when this setting changes. |
- FOR_EACH_OBSERVER(Observer, observers_, OnDirectoryChanged(root_path)); |
+ FOR_EACH_OBSERVER(GDataFileSystemInterface::Observer, observers_, |
+ OnDirectoryChanged(root_path)); |
} |
//============= GDataFileSystem: internal helper functions ===================== |