OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "components/ntp_snippets/ntp_snippets_service.h" | 5 #include "components/ntp_snippets/ntp_snippets_service.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <iterator> | 8 #include <iterator> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 682 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
693 snippets_status_service_->Init(base::Bind( | 693 snippets_status_service_->Init(base::Bind( |
694 &NTPSnippetsService::UpdateStateForStatus, base::Unretained(this))); | 694 &NTPSnippetsService::UpdateStateForStatus, base::Unretained(this))); |
695 | 695 |
696 NotifyNewSuggestions(); | 696 NotifyNewSuggestions(); |
697 } | 697 } |
698 | 698 |
699 void NTPSnippetsService::UpdateStateForStatus(DisabledReason disabled_reason) { | 699 void NTPSnippetsService::UpdateStateForStatus(DisabledReason disabled_reason) { |
700 FOR_EACH_OBSERVER(NTPSnippetsServiceObserver, observers_, | 700 FOR_EACH_OBSERVER(NTPSnippetsServiceObserver, observers_, |
701 NTPSnippetsServiceDisabledReasonChanged(disabled_reason)); | 701 NTPSnippetsServiceDisabledReasonChanged(disabled_reason)); |
702 | 702 |
703 State new_state; | |
704 ContentSuggestionsCategoryStatus new_status; | |
705 switch (disabled_reason) { | 703 switch (disabled_reason) { |
706 case DisabledReason::NONE: | 704 case DisabledReason::NONE: |
707 new_state = State::READY; | 705 EnterState(State::READY, ContentSuggestionsCategoryStatus::AVAILABLE); |
708 new_status = ContentSuggestionsCategoryStatus::AVAILABLE; | |
709 break; | 706 break; |
710 | 707 |
711 case DisabledReason::HISTORY_SYNC_STATE_UNKNOWN: | 708 case DisabledReason::HISTORY_SYNC_STATE_UNKNOWN: |
712 // HistorySync is not initialized yet, so we don't know what the actual | 709 // HistorySync is not initialized yet, so we don't know what the actual |
713 // state is and we just return the current one. If things change, | 710 // state is and we just return the current one. If things change, |
714 // |OnStateChanged| will call this function again to update the state. | 711 // |OnStateChanged| will call this function again to update the state. |
715 DVLOG(1) << "Sync configuration incomplete, continuing based on the " | 712 DVLOG(1) << "Sync configuration incomplete, continuing based on the " |
716 "current state."; | 713 "current state."; |
717 new_state = state_; | 714 EnterState(state_, ContentSuggestionsCategoryStatus::INITIALIZING); |
718 new_status = ContentSuggestionsCategoryStatus::INITIALIZING; | |
719 break; | 715 break; |
720 | 716 |
721 case DisabledReason::EXPLICITLY_DISABLED: | 717 case DisabledReason::EXPLICITLY_DISABLED: |
722 new_state = State::DISABLED; | 718 EnterState( |
723 new_status = | 719 State::DISABLED, |
724 ContentSuggestionsCategoryStatus::CATEGORY_EXPLICITLY_DISABLED; | 720 ContentSuggestionsCategoryStatus::CATEGORY_EXPLICITLY_DISABLED); |
725 break; | 721 break; |
726 | 722 |
727 case DisabledReason::SIGNED_OUT: | 723 case DisabledReason::SIGNED_OUT: |
728 new_state = State::DISABLED; | 724 EnterState(State::DISABLED, ContentSuggestionsCategoryStatus::SIGNED_OUT); |
729 new_status = ContentSuggestionsCategoryStatus::SIGNED_OUT; | |
730 break; | 725 break; |
731 | 726 |
732 case DisabledReason::SYNC_DISABLED: | 727 case DisabledReason::SYNC_DISABLED: |
733 new_state = State::DISABLED; | 728 EnterState(State::DISABLED, |
734 new_status = ContentSuggestionsCategoryStatus::SYNC_DISABLED; | 729 ContentSuggestionsCategoryStatus::SYNC_DISABLED); |
735 break; | 730 break; |
736 | 731 |
737 case DisabledReason::PASSPHRASE_ENCRYPTION_ENABLED: | 732 case DisabledReason::PASSPHRASE_ENCRYPTION_ENABLED: |
738 new_state = State::DISABLED; | 733 EnterState( |
739 new_status = | 734 State::DISABLED, |
740 ContentSuggestionsCategoryStatus::PASSPHRASE_ENCRYPTION_ENABLED; | 735 ContentSuggestionsCategoryStatus::PASSPHRASE_ENCRYPTION_ENABLED); |
741 break; | 736 break; |
742 | 737 |
743 case DisabledReason::HISTORY_SYNC_DISABLED: | 738 case DisabledReason::HISTORY_SYNC_DISABLED: |
744 new_state = State::DISABLED; | 739 EnterState(State::DISABLED, |
745 new_status = ContentSuggestionsCategoryStatus::HISTORY_SYNC_DISABLED; | 740 ContentSuggestionsCategoryStatus::HISTORY_SYNC_DISABLED); |
746 break; | |
747 | |
748 default: | |
749 // All cases should be handled by the above switch | |
750 NOTREACHED(); | |
751 new_state = State::DISABLED; | |
752 new_status = ContentSuggestionsCategoryStatus::LOADING_ERROR; | |
753 break; | 741 break; |
754 } | 742 } |
755 | |
756 EnterState(new_state, new_status); | |
757 } | 743 } |
758 | 744 |
759 void NTPSnippetsService::EnterState(State state, | 745 void NTPSnippetsService::EnterState(State state, |
760 ContentSuggestionsCategoryStatus status) { | 746 ContentSuggestionsCategoryStatus status) { |
761 if (status != category_status_) { | 747 if (status != category_status_) { |
762 category_status_ = status; | 748 category_status_ = status; |
763 NotifyCategoryStatusChanged(); | 749 NotifyCategoryStatusChanged(); |
764 } | 750 } |
765 | 751 |
766 if (state == state_) | 752 if (state == state_) |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
827 } | 813 } |
828 | 814 |
829 void NTPSnippetsService::NotifyCategoryStatusChanged() { | 815 void NTPSnippetsService::NotifyCategoryStatusChanged() { |
830 if (observer_) { | 816 if (observer_) { |
831 observer_->OnCategoryStatusChanged(ContentSuggestionsCategory::ARTICLES, | 817 observer_->OnCategoryStatusChanged(ContentSuggestionsCategory::ARTICLES, |
832 category_status_); | 818 category_status_); |
833 } | 819 } |
834 } | 820 } |
835 | 821 |
836 } // namespace ntp_snippets | 822 } // namespace ntp_snippets |
OLD | NEW |