blob: c9837923f19583e2226d2ef6c385eb3ba10a944b [file] [log] [blame]
// Copyright 2016 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.
#include "components/filesystem/public/cpp/prefs/pref_service_factory.h"
#include "base/bind.h"
#include "components/filesystem/public/cpp/prefs/filesystem_json_pref_store.h"
#include "components/prefs/pref_notifier_impl.h"
#include "components/prefs/pref_registry.h"
#include "components/prefs/pref_service.h"
#include "components/prefs/pref_value_store.h"
#include "components/prefs/value_map_pref_store.h"
#include "components/prefs/writeable_pref_store.h"
#include "services/shell/public/cpp/connector.h"
namespace filesystem {
namespace {
// Do-nothing default implementation.
void DoNothingHandleReadError(PersistentPrefStore::PrefReadError error) {}
} // namespace
std::unique_ptr<PrefService> CreatePrefService(shell::Connector* connector,
PrefRegistry* pref_registry) {
filesystem::mojom::FileSystemPtr filesystem;
connector->ConnectToInterface("mojo:filesystem", &filesystem);
scoped_refptr<FilesystemJsonPrefStore> user_prefs =
new FilesystemJsonPrefStore("preferences.json", std::move(filesystem),
nullptr /* TODO(erg): pref filter */);
PrefNotifierImpl* pref_notifier = new PrefNotifierImpl();
std::unique_ptr<PrefService> pref_service(new PrefService(
pref_notifier,
new PrefValueStore(nullptr, nullptr, nullptr, nullptr, user_prefs.get(),
nullptr, pref_registry->defaults().get(),
pref_notifier),
user_prefs.get(), pref_registry, base::Bind(&DoNothingHandleReadError),
true /* async */));
return pref_service;
}
} // namespace filesystem