1 // Copyright 2018 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef COMPONENTS_SYNC_SESSIONS_SESSION_MODEL_TYPE_CONTROLLER_H_ 6 #define COMPONENTS_SYNC_SESSIONS_SESSION_MODEL_TYPE_CONTROLLER_H_ 7 8 #include <memory> 9 #include <string> 10 11 #include "base/macros.h" 12 #include "components/prefs/pref_change_registrar.h" 13 #include "components/sync/driver/model_type_controller.h" 14 #include "components/sync/driver/sync_service_observer.h" 15 16 class PrefService; 17 18 namespace syncer { 19 class SyncService; 20 } // namespace syncer 21 22 namespace sync_sessions { 23 24 // Overrides LoadModels to check if history sync is allowed by policy. 25 class SessionModelTypeController : public syncer::ModelTypeController, 26 public syncer::SyncServiceObserver { 27 public: 28 SessionModelTypeController( 29 syncer::SyncService* sync_service, 30 PrefService* pref_service, 31 std::unique_ptr<syncer::ModelTypeControllerDelegate> delegate, 32 const std::string& history_disabled_pref_name); 33 ~SessionModelTypeController() override; 34 35 // DataTypeController overrides. 36 PreconditionState GetPreconditionState() const override; 37 38 // syncer::SyncServiceObserver implementation. 39 void OnStateChanged(syncer::SyncService* sync) override; 40 41 private: 42 void OnSavingBrowserHistoryPrefChanged(); 43 44 syncer::SyncService* const sync_service_; 45 PrefService* const pref_service_; 46 47 // Name of the pref that indicates whether saving history is disabled. 48 const std::string history_disabled_pref_name_; 49 50 PrefChangeRegistrar pref_registrar_; 51 52 DISALLOW_COPY_AND_ASSIGN(SessionModelTypeController); 53 }; 54 55 } // namespace sync_sessions 56 57 #endif // COMPONENTS_SYNC_SESSIONS_SESSION_MODEL_TYPE_CONTROLLER_H_ 58