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 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef COMPONENTS_USER_EDUCATION_WEBUI_WHATS_NEW_STORAGE_SERVICE_H_
#define COMPONENTS_USER_EDUCATION_WEBUI_WHATS_NEW_STORAGE_SERVICE_H_
#include <set>
#include "base/values.h"
namespace whats_new {
// Virtual interface for supplying the WhatsNewRegistry with a store.
// Keeps track of the order in which WhatsNewModules have been enabled
// as well as during which milestone a WhatsNewEdition was shown to the user.
class WhatsNewStorageService {
public:
WhatsNewStorageService() = default;
virtual ~WhatsNewStorageService() = default;
// Disallow copy and assign.
WhatsNewStorageService(const WhatsNewStorageService&) = delete;
WhatsNewStorageService& operator=(const WhatsNewStorageService&) = delete;
// Read-only access.
virtual const base::Value::List& ReadModuleData() const = 0;
virtual const base::Value::Dict& ReadEditionData() const = 0;
virtual std::optional<int> ReadVersionData() const = 0;
// Get the version this edition was used. Return nullopt if unused.
virtual std::optional<int> GetUsedVersion(
std::string_view edition_name) const = 0;
// Find the name of the edition used for the current version, if any.
virtual std::optional<std::string_view> FindEditionForCurrentVersion()
const = 0;
// Find the module's position in the queue of enabled modules.
// Returns -1 if the module is not in the queue.
virtual int GetModuleQueuePosition(std::string_view module_name) const = 0;
// Returns whether an edition has ever been used for version.
virtual bool IsUsedEdition(std::string_view edition_name) const = 0;
// Returns whether a version page was shown for the current milestone.
virtual bool WasVersionPageUsedForCurrentMilestone() const = 0;
// Add a module to the ordered list of enabled modules.
virtual void SetModuleEnabled(std::string_view module_name) = 0;
// Set a "used version" for an edition.
virtual void SetEditionUsed(std::string_view edition_name) = 0;
// Record that a version page was shown for this milestone.
virtual void SetVersionUsed() = 0;
// Clear module from stored data.
virtual void ClearModules(std::set<std::string_view> modules_to_clear) = 0;
// Clear edition from stored data.
virtual void ClearEditions(std::set<std::string_view> editions_to_clear) = 0;
// Reset all stored data for manual testing.
// This should only be called from the internal testing page.
virtual void Reset() = 0;
};
} // namespace whats_new
#endif // COMPONENTS_USER_EDUCATION_WEBUI_WHATS_NEW_STORAGE_SERVICE_H_
|