blob: 4bc3916c9eb907a3d4a69b0c6dfc64e46e0a2e58 [file] [log] [blame]
// 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 CHROME_BROWSER_ASH_MAHI_MAHI_AVAILABILITY_H_
#define CHROME_BROWSER_ASH_MAHI_MAHI_AVAILABILITY_H_
#include <optional>
#include "base/types/expected.h"
namespace ash::mahi_availability {
enum class Error { kMantaFeatureBitNotReady };
// Check whether Mahi is allowed. This function checks following restrictions:
// * age: if not demo mode, the account must not hit minor restrictions
// * country: the country code must be in the allow list.
// * If not in demo mode, guest session is not allowed.
//
// This check reads a bit loaded as an async operation:
// `CanAccessMantaFeaturesWithoutMinorRestrictions`.
// `Error::kMantaFeatureBitNotRead` is returned if the bit is not ready yet.
base::expected<bool, Error> CanUseMahiService();
// Check if the mahi feature is available to use. It can be unavailable if the
// mahi feature flag is disabled, or the age and country requirements are not
// met.
//
// This check reads a bit loaded as an async operation via `CanUseMahiService`.
// `Error::kMantaFeatureBitNotReady` is returned if the bit is not ready yet.
base::expected<bool, Error> IsMahiAvailable();
} // namespace ash::mahi_availability
#endif // CHROME_BROWSER_ASH_MAHI_MAHI_AVAILABILITY_H_