Index: chrome/browser/chromeos/gdata/gdata_wapi_feed_loader.cc |
diff --git a/chrome/browser/chromeos/gdata/gdata_wapi_feed_loader.cc b/chrome/browser/chromeos/gdata/gdata_wapi_feed_loader.cc |
index b33094616da0af145a3adec49f6cc56892beb369..19148c6c488867836b69da8b0255f4d11698689d 100644 |
--- a/chrome/browser/chromeos/gdata/gdata_wapi_feed_loader.cc |
+++ b/chrome/browser/chromeos/gdata/gdata_wapi_feed_loader.cc |
@@ -138,23 +138,10 @@ bool UseLevelDB() { |
} // namespace |
-LoadRootFeedParams::LoadRootFeedParams( |
- bool should_load_from_server, |
- const FileOperationCallback& callback) |
- : should_load_from_server(should_load_from_server), |
- load_error(GDATA_FILE_OK), |
- load_start_time(base::Time::Now()), |
- callback(callback) { |
-} |
- |
-LoadRootFeedParams::~LoadRootFeedParams() { |
-} |
- |
GetDocumentsParams::GetDocumentsParams( |
int64 start_changestamp, |
int64 root_feed_changestamp, |
std::vector<DocumentFeed*>* feed_list, |
- bool should_fetch_multiple_feeds, |
satorux1
2012/08/17 11:01:31
so the parameter was unsed in the existing code?
kochi
2012/08/17 15:56:37
Yes, it is unused.
The default value was true, and
|
const std::string& search_query, |
const std::string& directory_resource_id, |
const FileOperationCallback& callback, |
@@ -162,7 +149,6 @@ GetDocumentsParams::GetDocumentsParams( |
: start_changestamp(start_changestamp), |
root_feed_changestamp(root_feed_changestamp), |
feed_list(feed_list), |
- should_fetch_multiple_feeds(should_fetch_multiple_feeds), |
search_query(search_query), |
directory_resource_id(directory_resource_id), |
callback(callback), |
@@ -173,6 +159,51 @@ GetDocumentsParams::~GetDocumentsParams() { |
STLDeleteElements(feed_list.get()); |
} |
+LoadRootFeedParams::LoadRootFeedParams( |
+ bool should_load_from_server, |
+ const FileOperationCallback& callback) |
+ : should_load_from_server(should_load_from_server), |
+ load_error(GDATA_FILE_OK), |
+ load_start_time(base::Time::Now()), |
+ callback(callback) { |
+} |
+ |
+LoadRootFeedParams::~LoadRootFeedParams() { |
+} |
+ |
+// Defines set of parameters for calling GDataWapiFeedLoader::LoadFromServer(). |
+// Value of |start_changestamp| determines the type of feed to load - 0 means |
+// root feed, every other value would trigger delta feed. |
+// In the case of loading the root feed we use |root_feed_changestamp| as its |
+// initial changestamp value since it does not come with that info. |
+// |
+// When all feeds are loaded, |feed_load_callback| is invoked with the retrieved |
+// feeds. Then |load_finished_callback| is invoked with the error code. |
+// |
+// If invoked as a part of content search, query will be set in |search_query|. |
+// If |feed_to_load| is set, this is feed url that will be used to load feed. |
+// |
+// |load_finished_callback| may be null. |
+// |feed_load_callback| must not be null. |
+struct GDataWapiFeedLoader::LoadFeedParams { |
+ LoadFeedParams(ContentOrigin initial_origin, |
+ const LoadDocumentFeedCallback& feed_load_callback) |
+ : initial_origin(initial_origin), |
+ start_changestamp(0), |
+ root_feed_changestamp(0), |
+ feed_load_callback(feed_load_callback) {} |
+ ~LoadFeedParams() {} |
+ |
+ ContentOrigin initial_origin; |
+ int64 start_changestamp; |
+ int64 root_feed_changestamp; |
+ std::string search_query; |
+ GURL feed_to_load; |
+ std::string directory_resource_id; |
+ FileOperationCallback load_finished_callback; |
+ const LoadDocumentFeedCallback feed_load_callback; |
+}; |
+ |
// Defines set of parameters sent to callback OnNotifyDocumentFeedFetched(). |
// This is a trick to update the number of fetched documents frequently on |
// UI. Due to performance reason, we need to fetch a number of files at |
@@ -273,18 +304,16 @@ void GDataWapiFeedLoader::OnGetAccountMetadata( |
scoped_ptr<base::Value> feed_data) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ LoadFeedParams params(initial_origin, |
+ base::Bind(&GDataWapiFeedLoader::OnFeedFromServerLoaded, |
+ weak_ptr_factory_.GetWeakPtr())); |
+ params.start_changestamp = local_changestamp + 1; |
+ params.load_finished_callback = callback; |
+ |
GDataFileError error = util::GDataToGDataFileError(status); |
if (error != GDATA_FILE_OK) { |
// Get changes starting from the next changestamp from what we have locally. |
- LoadFromServer(initial_origin, |
- local_changestamp + 1, 0, |
- true, /* should_fetch_multiple_feeds */ |
- std::string() /* no search query */, |
- GURL(), /* feed not explicitly set */ |
- std::string() /* no directory resource ID */, |
- callback, |
- base::Bind(&GDataWapiFeedLoader::OnFeedFromServerLoaded, |
- weak_ptr_factory_.GetWeakPtr())); |
+ LoadFromServer(params); |
return; |
} |
@@ -305,15 +334,7 @@ void GDataWapiFeedLoader::OnGetAccountMetadata( |
} |
if (!account_metadata.get()) { |
- LoadFromServer(initial_origin, |
- local_changestamp + 1, 0, |
- true, /* should_fetch_multiple_feeds */ |
- std::string() /* no search query */, |
- GURL(), /* feed not explicitly set */ |
- std::string() /* no directory resource ID */, |
- callback, |
- base::Bind(&GDataWapiFeedLoader::OnFeedFromServerLoaded, |
- weak_ptr_factory_.GetWeakPtr())); |
satorux1
2012/08/17 11:01:31
glad that the large copy-paste is gone.
|
+ LoadFromServer(params); |
return; |
} |
@@ -342,16 +363,9 @@ void GDataWapiFeedLoader::OnGetAccountMetadata( |
} |
// Load changes from the server. |
- LoadFromServer(initial_origin, |
- local_changestamp > 0 ? local_changestamp + 1 : 0, |
- account_metadata->largest_changestamp(), |
- true, /* should_fetch_multiple_feeds */ |
- std::string() /* no search query */, |
- GURL(), /* feed not explicitly set */ |
- std::string() /* no directory resource ID */, |
- callback, |
- base::Bind(&GDataWapiFeedLoader::OnFeedFromServerLoaded, |
- weak_ptr_factory_.GetWeakPtr())); |
+ params.start_changestamp = local_changestamp > 0 ? local_changestamp + 1 : 0; |
+ params.root_feed_changestamp = account_metadata->largest_changestamp(); |
+ LoadFromServer(params); |
} |
void GDataWapiFeedLoader::OnGetAboutResource( |
@@ -362,18 +376,15 @@ void GDataWapiFeedLoader::OnGetAboutResource( |
scoped_ptr<base::Value> feed_data) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ LoadFeedParams params(initial_origin, |
+ base::Bind(&GDataWapiFeedLoader::OnFeedFromServerLoaded, |
+ weak_ptr_factory_.GetWeakPtr())); |
+ params.load_finished_callback = callback; |
+ |
GDataFileError error = util::GDataToGDataFileError(status); |
if (error != GDATA_FILE_OK) { |
// Get changes starting from the next changestamp from what we have locally. |
- LoadFromServer(initial_origin, |
- local_changestamp + 1, 0, |
- true, /* should_fetch_multiple_feeds */ |
- std::string() /* no search query */, |
- GURL(), /* feed not explicitly set */ |
- std::string() /* no directory resource ID */, |
- callback, |
- base::Bind(&GDataWapiFeedLoader::OnFeedFromServerLoaded, |
- weak_ptr_factory_.GetWeakPtr())); |
+ LoadFromServer(params); |
return; |
} |
@@ -382,15 +393,7 @@ void GDataWapiFeedLoader::OnGetAboutResource( |
about_resource = AboutResource::CreateFrom(*feed_data); |
if (!about_resource.get()) { |
- LoadFromServer(initial_origin, |
- local_changestamp + 1, 0, |
- true, /* should_fetch_multiple_feeds */ |
- std::string() /* no search query */, |
- GURL(), /* feed not explicitly set */ |
- std::string() /* no directory resource ID */, |
- callback, |
- base::Bind(&GDataWapiFeedLoader::OnFeedFromServerLoaded, |
- weak_ptr_factory_.GetWeakPtr())); |
+ LoadFromServer(params); |
return; |
} |
@@ -420,16 +423,9 @@ void GDataWapiFeedLoader::OnGetAboutResource( |
} |
// Load changes from the server. |
- LoadFromServer(initial_origin, |
- local_changestamp > 0 ? local_changestamp + 1 : 0, |
- largest_changestamp, |
- true, /* should_fetch_multiple_feeds */ |
- std::string() /* no search query */, |
- GURL(), /* feed not explicitly set */ |
- std::string() /* no directory resource ID */, |
- callback, |
- base::Bind(&GDataWapiFeedLoader::OnFeedFromServerLoaded, |
- weak_ptr_factory_.GetWeakPtr())); |
+ params.start_changestamp = local_changestamp > 0 ? local_changestamp + 1 : 0; |
+ params.root_feed_changestamp = largest_changestamp; |
+ LoadFromServer(params); |
} |
void GDataWapiFeedLoader::OnGetApplicationList( |
@@ -450,19 +446,8 @@ void GDataWapiFeedLoader::OnGetApplicationList( |
} |
} |
-// TODO(kochi): Fix too many parameters. http://crbug.com/141359 |
-void GDataWapiFeedLoader::LoadFromServer( |
- ContentOrigin initial_origin, |
- int64 start_changestamp, |
- int64 root_feed_changestamp, |
- bool should_fetch_multiple_feeds, |
- const std::string& search_query, |
- const GURL& feed_to_load, |
- const std::string& directory_resource_id, |
- const FileOperationCallback& load_finished_callback, |
- const LoadDocumentFeedCallback& feed_load_callback) { |
+void GDataWapiFeedLoader::LoadFromServer(const LoadFeedParams& params) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- DCHECK(!feed_load_callback.is_null()); |
// |feed_list| will contain the list of all collected feed updates that |
// we will receive through calls of DocumentsService::GetDocuments(). |
@@ -472,45 +457,64 @@ void GDataWapiFeedLoader::LoadFromServer( |
if (gdata::util::IsDriveV2ApiEnabled()) { |
documents_service_->GetChangelist( |
- feed_to_load, |
- start_changestamp, |
+ params.feed_to_load, |
+ params.start_changestamp, |
base::Bind(&GDataWapiFeedLoader::OnGetChangelist, |
weak_ptr_factory_.GetWeakPtr(), |
- initial_origin, |
- feed_load_callback, |
+ params.initial_origin, |
+ params.feed_load_callback, |
base::Owned(new GetDocumentsParams( |
- start_changestamp, |
- root_feed_changestamp, |
+ params.start_changestamp, |
+ params.root_feed_changestamp, |
feed_list.release(), |
- should_fetch_multiple_feeds, |
- search_query, |
- directory_resource_id, |
- load_finished_callback, |
+ params.search_query, |
+ params.directory_resource_id, |
+ params.load_finished_callback, |
NULL)), |
start_time)); |
return; |
} |
documents_service_->GetDocuments( |
- feed_to_load, |
- start_changestamp, |
- search_query, |
- directory_resource_id, |
+ params.feed_to_load, |
+ params.start_changestamp, |
+ params.search_query, |
+ params.directory_resource_id, |
base::Bind(&GDataWapiFeedLoader::OnGetDocuments, |
weak_ptr_factory_.GetWeakPtr(), |
- initial_origin, |
- feed_load_callback, |
- base::Owned(new GetDocumentsParams(start_changestamp, |
- root_feed_changestamp, |
- feed_list.release(), |
- should_fetch_multiple_feeds, |
- search_query, |
- directory_resource_id, |
- load_finished_callback, |
- NULL)), |
+ params.initial_origin, |
+ params.feed_load_callback, |
+ base::Owned( |
+ new GetDocumentsParams(params.start_changestamp, |
+ params.root_feed_changestamp, |
+ feed_list.release(), |
+ params.search_query, |
+ params.directory_resource_id, |
+ params.load_finished_callback, |
+ NULL)), |
start_time)); |
} |
+void GDataWapiFeedLoader::LoadDirectoryFromServer( |
+ ContentOrigin initial_origin, |
+ const std::string& directory_resource_id, |
+ const LoadDocumentFeedCallback& feed_load_callback) { |
+ LoadFeedParams params(initial_origin, feed_load_callback); |
+ params.directory_resource_id = directory_resource_id; |
+ LoadFromServer(params); |
+} |
+ |
+void GDataWapiFeedLoader::SearchFromServer( |
+ ContentOrigin initial_origin, |
+ const std::string& search_query, |
+ const GURL& next_feed, |
+ const LoadDocumentFeedCallback& feed_load_callback) { |
+ LoadFeedParams params(initial_origin, feed_load_callback); |
+ params.search_query = search_query; |
+ params.feed_to_load = next_feed; |
+ LoadFromServer(params); |
+} |
+ |
void GDataWapiFeedLoader::OnFeedFromServerLoaded(GetDocumentsParams* params, |
GDataFileError error) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
@@ -601,8 +605,7 @@ void GDataWapiFeedLoader::OnGetDocuments( |
num_accumulated_entries += params->feed_list->at(i)->entries().size(); |
// Check if we need to collect more data to complete the directory list. |
- if (params->should_fetch_multiple_feeds && has_next_feed_url && |
- !next_feed_url.is_empty()) { |
+ if (has_next_feed_url && !next_feed_url.is_empty()) { |
// Post an UI update event to make the UI smoother. |
GetDocumentsUiState* ui_state = params->ui_state.get(); |
if (ui_state == NULL) { |
@@ -638,7 +641,6 @@ void GDataWapiFeedLoader::OnGetDocuments( |
params->start_changestamp, |
params->root_feed_changestamp, |
params->feed_list.release(), |
- params->should_fetch_multiple_feeds, |
params->search_query, |
params->directory_resource_id, |
params->callback, |
@@ -718,7 +720,7 @@ void GDataWapiFeedLoader::OnGetChangelist( |
num_accumulated_entries += params->feed_list->at(i)->entries().size(); |
// Check if we need to collect more data to complete the directory list. |
- if (params->should_fetch_multiple_feeds && has_next_feed) { |
+ if (has_next_feed) { |
// Post an UI update event to make the UI smoother. |
GetDocumentsUiState* ui_state = params->ui_state.get(); |
@@ -753,7 +755,6 @@ void GDataWapiFeedLoader::OnGetChangelist( |
params->start_changestamp, |
params->root_feed_changestamp, |
params->feed_list.release(), |
- params->should_fetch_multiple_feeds, |
params->search_query, |
params->directory_resource_id, |
params->callback, |