| // Copyright 2017 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef COMPONENTS_NTP_SNIPPETS_REMOTE_REMOTE_SUGGESTIONS_STATUS_SERVICE_IMPL_H_ |
| #define COMPONENTS_NTP_SNIPPETS_REMOTE_REMOTE_SUGGESTIONS_STATUS_SERVICE_IMPL_H_ |
| |
| #include "base/callback.h" |
| #include "base/scoped_observer.h" |
| #include "components/ntp_snippets/remote/remote_suggestions_status_service.h" |
| #include "components/prefs/pref_change_registrar.h" |
| |
| class PrefRegistrySimple; |
| class PrefService; |
| |
| namespace ntp_snippets { |
| |
| class RemoteSuggestionsStatusServiceImpl |
| : public RemoteSuggestionsStatusService { |
| public: |
| RemoteSuggestionsStatusServiceImpl(bool is_signed_in, |
| PrefService* pref_service, |
| const std::string& additional_toggle_pref); |
| |
| ~RemoteSuggestionsStatusServiceImpl() override; |
| |
| static void RegisterProfilePrefs(PrefRegistrySimple* registry); |
| |
| // RemoteSuggestionsStatusService implementation. |
| void Init(const StatusChangeCallback& callback) override; |
| void OnSignInStateChanged(bool has_signed_in) override; |
| |
| private: |
| // Callbacks for the PrefChangeRegistrar. |
| void OnSnippetsEnabledChanged(); |
| void OnListVisibilityChanged(); |
| |
| void OnStateChanged(RemoteSuggestionsStatus new_status); |
| |
| bool IsSignedIn() const; |
| |
| // Returns whether the service is explicitly disabled, by the user or by a |
| // policy for example. |
| bool IsExplicitlyDisabled() const; |
| |
| RemoteSuggestionsStatus GetStatusFromDeps() const; |
| |
| RemoteSuggestionsStatus status_; |
| StatusChangeCallback status_change_callback_; |
| |
| // Name of a preference to be used as an additional toggle to guard the |
| // remote suggestions provider. |
| std::string additional_toggle_pref_; |
| bool is_signed_in_; |
| // Whether the list of remote suggestions was ever visible during the session. |
| // In case it was visible and then gets hidden, the service will only be |
| // disabled on the next startup of browser, provided that the list is still |
| // hidden then. |
| bool list_visible_during_session_; |
| PrefService* pref_service_; |
| |
| PrefChangeRegistrar pref_change_registrar_; |
| |
| DISALLOW_COPY_AND_ASSIGN(RemoteSuggestionsStatusServiceImpl); |
| }; |
| |
| } // namespace ntp_snippets |
| |
| #endif // COMPONENTS_NTP_SNIPPETS_REMOTE_REMOTE_SUGGESTIONS_STATUS_SERVICE_IMPL_H_ |