text: // Copyright 2014 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.
  //
  // Helper to initialize PrefService for cast shell.
  
  #ifndef CHROMECAST_BROWSER_PREF_SERVICE_HELPER_H_
  #define CHROMECAST_BROWSER_PREF_SERVICE_HELPER_H_
  
  #include <memory>
  #include <set>
  #include <string>
  
  #include "base/memory/ref_counted.h"
  #include "base/threading/thread_checker.h"
  #include "chromecast/base/process_types.h"
  #include "components/prefs/pref_service.h"
  
  class PrefRegistrySimple;
  
  namespace chromecast {
  namespace shell {
  
  // It uses JsonPrefStore internally and/so the format of config file is same to
  // that of JsonPrefStore.
  class PrefServiceHelper {
   public:
    // Loads configs from config file. Returns true if successful.
    static std::unique_ptr<PrefService> CreatePrefService(
        PrefRegistrySimple* registry,
        ProcessType process_type = ProcessType::kCastService);
  
    // Provides names of prefs that take a large amount of storage, and are
    // therefore stored in a different file.
    static std::set<std::string> LargePrefNames() __attribute__((weak));
  
   private:
    // Registers any needed preferences for the current platform.
    static void RegisterPlatformPrefs(PrefRegistrySimple* registry);
  
    // Called after the pref file has been loaded.
    static void OnPrefsLoaded(PrefService* pref_service);
  };
  
  }  // namespace shell
  }  // namespace chromecast
  
  #endif  // CHROMECAST_BROWSER_PREF_SERVICE_HELPER_H_
  