Index: components/ntp_snippets/ntp_snippets_service.cc |
diff --git a/components/ntp_snippets/ntp_snippets_service.cc b/components/ntp_snippets/ntp_snippets_service.cc |
index a2cf72c8713c9943f2b19b92e1ee1fe5a8e6b008..ff447c08ba4c31e589d26876ba7cc0d2ccc7391e 100644 |
--- a/components/ntp_snippets/ntp_snippets_service.cc |
+++ b/components/ntp_snippets/ntp_snippets_service.cc |
@@ -259,6 +259,8 @@ void NTPSnippetsService::FetchSnippetsFromHosts( |
bool force_request) { |
if (!ready()) |
return; |
+ LOG(INFO) << "DGN - Initiating fetch"; |
+ EnterState(state_, ContentSuggestionsCategoryStatus::AVAILABLE_LOADING); |
Marc Treib
2016/07/29 10:19:47
I don't think this is right. AVAILABLE_LOADING is
dgn
2016/07/29 10:42:48
Ah ok I didn't understand AVAILABLE_LOADING proper
Marc Treib
2016/07/29 10:45:46
Also while we're waiting for results from the DB (
dgn
2016/07/29 16:37:46
What about when the service was disabled, so we cl
Marc Treib
2016/08/01 09:03:31
Yes, that sounds right.
|
snippets_fetcher_->FetchSnippetsFromHosts(hosts, application_language_code_, |
kMaxSnippetCount, force_request); |
} |
@@ -416,6 +418,8 @@ void NTPSnippetsService::OnDatabaseError() { |
EnterState(State::SHUT_DOWN, ContentSuggestionsCategoryStatus::LOADING_ERROR); |
} |
+// TODO(dgn): name clash between content suggestions and suggestions hosts. |
+// method name should be changed. |
void NTPSnippetsService::OnSuggestionsChanged( |
const SuggestionsProfile& suggestions) { |
DCHECK(initialized()); |
@@ -439,6 +443,7 @@ void NTPSnippetsService::OnSuggestionsChanged( |
StoreSnippetHostsToPrefs(hosts); |
+ // TODO(dgn) Why do we do that BEFORE fetching? |
NotifyNewSuggestions(); |
dgn
2016/07/29 09:58:36
Why do we do that BEFORE fetching?
Marc Treib
2016/07/29 10:19:47
We potentially deleted some snippets above, so we
dgn
2016/07/29 10:42:48
Wouldn't they be notified of the new list when the
Marc Treib
2016/07/29 10:45:46
True, but that might take any amount of time, and
dgn
2016/07/29 16:37:46
Added a comment about this.
|
FetchSnippetsFromHosts(hosts, /*force_request=*/false); |
@@ -705,6 +710,15 @@ void NTPSnippetsService::FinishInitialization() { |
snippets_status_service_->Init(base::Bind( |
&NTPSnippetsService::OnDisabledReasonChanged, base::Unretained(this))); |
+ // TODO(dgn): If we started a fetch as a result of the state being updated |
+ // and not having snippets from the DB, because of the call below we would |
+ // still notify the client with no snippets and force the "AVAILABLE" status. |
+ // WAI? |
+ // IMO that seems wrong. Skipping this call will put us either: |
+ // - in AVAILABLE_LOADING: because of the pending fetch started above. |
+ // - in INITIALIZING status: If it's right on startup and because we don't |
+ // have sync data, the fetch can't start. We appropriately report that we |
+ // are still initializing. |
NotifyNewSuggestions(); |
dgn
2016/07/29 09:58:36
If we started a fetch as a result of the state bei
Marc Treib
2016/07/29 10:19:47
I guess this is here because we "probably" loaded
dgn
2016/07/29 10:42:48
So the intent is that while a fetch is pending and
Marc Treib
2016/07/29 10:45:46
I think so, yes. We should also be in _LOADING if
|
} |
@@ -714,9 +728,13 @@ void NTPSnippetsService::OnDisabledReasonChanged( |
NTPSnippetsServiceDisabledReasonChanged(disabled_reason)); |
switch (disabled_reason) { |
- case DisabledReason::NONE: |
- EnterState(State::READY, ContentSuggestionsCategoryStatus::AVAILABLE); |
+ case DisabledReason::NONE: { |
+ // Do not change the status. As the service becomes enabled, it will |
+ // either start a new fetch (and transition to |AVAILABLE_LOADING|), or |
+ // send cached suggestions (and transition to |AVAILABLE|). |
+ EnterState(State::READY, category_status_); |
break; |
+ } |
case DisabledReason::HISTORY_SYNC_STATE_UNKNOWN: |
// HistorySync is not initialized yet, so we don't know what the actual |
@@ -757,6 +775,8 @@ void NTPSnippetsService::OnDisabledReasonChanged( |
void NTPSnippetsService::EnterState(State state, |
ContentSuggestionsCategoryStatus status) { |
+ LOG(INFO) << "DGN - EnterState(" << (int)state << ", " << (int)status << ")"; |
+ |
if (status != category_status_) { |
category_status_ = status; |
NotifyCategoryStatusChanged(); |
@@ -799,6 +819,8 @@ void NTPSnippetsService::EnterState(State state, |
} |
void NTPSnippetsService::NotifyNewSuggestions() { |
+ EnterState(state_, ContentSuggestionsCategoryStatus::AVAILABLE); |
Marc Treib
2016/07/29 10:19:47
Huh, seems like we should already be in this state
|
+ |
// TODO(pke): Remove this as soon as this becomes a pure provider. |
FOR_EACH_OBSERVER(NTPSnippetsServiceObserver, observers_, |
NTPSnippetsServiceLoaded()); |
@@ -826,6 +848,7 @@ void NTPSnippetsService::NotifyNewSuggestions() { |
} |
void NTPSnippetsService::NotifyCategoryStatusChanged() { |
+ LOG(INFO) << "DGN - NotifyCategoryStatusChanged " << (int)category_status_; |
if (observer_) { |
observer_->OnCategoryStatusChanged(ContentSuggestionsCategory::ARTICLES, |
category_status_); |