Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(970)

Unified Diff: components/suggestions/suggestions_service.cc

Issue 527943002: [Most Visited] Check for Sync state when using SuggestionsService. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@2125
Patch Set: Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/suggestions/suggestions_service.cc
diff --git a/components/suggestions/suggestions_service.cc b/components/suggestions/suggestions_service.cc
index db1e3fc9632156cf08337286ea1201c93acd7051..b12aae1a1cc4010f46d833ceba1282c6afc72962 100644
--- a/components/suggestions/suggestions_service.cc
+++ b/components/suggestions/suggestions_service.cc
@@ -156,8 +156,25 @@ bool SuggestionsService::IsControlGroup() {
}
void SuggestionsService::FetchSuggestionsData(
+ SyncState sync_state,
SuggestionsService::ResponseCallback callback) {
DCHECK(thread_checker_.CalledOnValidThread());
+ if (sync_state == NOT_INITIALIZED_ENABLED) {
+ // Sync is not initialized yet, but enabled. Serve previously cached
+ // suggestions if available.
+ waiting_requestors_.push_back(callback);
+ ServeFromCache();
+ return;
+ } else if (sync_state == SYNC_OR_HISTORY_SYNC_DISABLED) {
+ // Cancel any ongoing request (and the timeout closure). We must no longer
+ // interact with the server.
+ pending_request_.reset(NULL);
+ pending_timeout_closure_.reset(NULL);
+ suggestions_store_->ClearSuggestions();
+ callback.Run(SuggestionsProfile());
+ DispatchRequestsAndClear(SuggestionsProfile(), &waiting_requestors_);
+ return;
+ }
FetchSuggestionsDataNoTimeout(callback);
@@ -170,21 +187,6 @@ void SuggestionsService::FetchSuggestionsData(
base::TimeDelta::FromMilliseconds(request_timeout_ms_));
}
-void SuggestionsService::FetchSuggestionsDataNoTimeout(
- SuggestionsService::ResponseCallback callback) {
- DCHECK(thread_checker_.CalledOnValidThread());
- if (pending_request_.get()) {
- // Request already exists, so just add requestor to queue.
- waiting_requestors_.push_back(callback);
- return;
- }
-
- // Form new request.
- DCHECK(waiting_requestors_.empty());
- waiting_requestors_.push_back(callback);
- IssueRequest(suggestions_url_);
-}
-
void SuggestionsService::GetPageThumbnail(
const GURL& url,
base::Callback<void(const GURL&, const SkBitmap*)> callback) {
@@ -235,6 +237,33 @@ void SuggestionsService::RegisterProfilePrefs(
BlacklistStore::RegisterProfilePrefs(registry);
}
+void SuggestionsService::SetDefaultExpiryTimestamp(
+ SuggestionsProfile* suggestions, int64 default_timestamp_usec) {
+ for (int i = 0; i < suggestions->suggestions_size(); ++i) {
+ ChromeSuggestion* suggestion = suggestions->mutable_suggestions(i);
+ // Do not set expiry if the server has already provided a more specific
+ // expiry time for this suggestion.
+ if (!suggestion->has_expiry_ts()) {
+ suggestion->set_expiry_ts(default_timestamp_usec);
+ }
+ }
+}
+
+void SuggestionsService::FetchSuggestionsDataNoTimeout(
+ SuggestionsService::ResponseCallback callback) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+ if (pending_request_.get()) {
+ // Request already exists, so just add requestor to queue.
+ waiting_requestors_.push_back(callback);
+ return;
+ }
+
+ // Form new request.
+ DCHECK(waiting_requestors_.empty());
+ waiting_requestors_.push_back(callback);
+ IssueRequest(suggestions_url_);
+}
+
void SuggestionsService::IssueRequest(const GURL& url) {
pending_request_.reset(CreateSuggestionsRequest(url));
pending_request_->Start();
@@ -330,18 +359,6 @@ void SuggestionsService::OnURLFetchComplete(const net::URLFetcher* source) {
ScheduleBlacklistUpload(true);
}
-void SuggestionsService::SetDefaultExpiryTimestamp(
- SuggestionsProfile* suggestions, int64 default_timestamp_usec) {
- for (int i = 0; i < suggestions->suggestions_size(); ++i) {
- ChromeSuggestion* suggestion = suggestions->mutable_suggestions(i);
- // Do not set expiry if the server has already provided a more specific
- // expiry time for this suggestion.
- if (!suggestion->has_expiry_ts()) {
- suggestion->set_expiry_ts(default_timestamp_usec);
- }
- }
-}
-
void SuggestionsService::Shutdown() {
// Cancel pending request and timeout closure, then serve existing requestors
// from cache.
« no previous file with comments | « components/suggestions/suggestions_service.h ('k') | components/suggestions/suggestions_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698