1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
// Copyright 2012 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef CHROME_BROWSER_ASH_SETTINGS_STUB_CROS_SETTINGS_PROVIDER_H_
#define CHROME_BROWSER_ASH_SETTINGS_STUB_CROS_SETTINGS_PROVIDER_H_
#include <string>
#include <string_view>
#include <vector>
#include "base/functional/callback.h"
#include "chromeos/ash/components/settings/cros_settings_provider.h"
#include "chromeos/ash/components/settings/fake_cros_settings_provider.h"
#include "components/prefs/pref_value_map.h"
namespace ash {
// CrosSettingsProvider implementation that stores settings in memory unsigned.
class StubCrosSettingsProvider : public CrosSettingsProvider {
public:
explicit StubCrosSettingsProvider(
const NotifyObserversCallback& notify_cb = {});
StubCrosSettingsProvider(const StubCrosSettingsProvider&) = delete;
StubCrosSettingsProvider& operator=(const StubCrosSettingsProvider&) = delete;
~StubCrosSettingsProvider() override;
// CrosSettingsProvider implementation.
const base::Value* Get(std::string_view path) const override;
TrustedStatus PrepareTrustedValues(base::OnceClosure* callback) override;
bool HandlesSetting(std::string_view path) const override;
void SetTrustedStatus(TrustedStatus status);
void SetCurrentUserIsOwner(bool owner);
bool current_user_is_owner() const { return current_user_is_owner_; }
// Sets in-memory setting at |path| to value |in_value|.
void Set(const std::string& path, const base::Value& in_value);
// Convenience forms of Set(). These methods will replace any existing value
// at that |path|, even if it has a different type.
void SetBoolean(const std::string& path, bool in_value);
void SetInteger(const std::string& path, int in_value);
void SetDouble(const std::string& path, double in_value);
void SetString(const std::string& path, const std::string& in_value);
private:
// Initializes settings to their defaults.
void SetDefaults();
// Called when the value in `fake_provider_` is updated.
void OnValueChanged(const std::string& path);
// Some tests imply that calling Set() as non-owner doesn't change the actual
// value but still trigger a notification. For such cases, it is possible to
// emulate this behavior by changing the ownership status to non-owner with
// |SetCurrentUserIsOwner(false)|.
bool current_user_is_owner_ = true;
// TODO(crbug.com/402266244): Migrated StubCrosSettingsProvider into
// FakeCrosSettingsProvider.
FakeCrosSettingsProvider fake_provider_;
};
} // namespace ash
#endif // CHROME_BROWSER_ASH_SETTINGS_STUB_CROS_SETTINGS_PROVIDER_H_
|