chromium/components/user_education/common/feature_promo_handle.h

// Copyright 2022 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_COMMON_FEATURE_PROMO_HANDLE_H_
#define COMPONENTS_USER_EDUCATION_COMMON_FEATURE_PROMO_HANDLE_H_

#include "base/feature_list.h"
#include "base/memory/raw_ptr.h"
#include "base/memory/weak_ptr.h"

namespace user_education {

class FeaturePromoController;

// Represents a promo that has been continued after its bubble has been
// hidden, as a result of calling CloseBubbleAndContinuePromo().
//
// The promo is considered still active until the handle is released or
// destroyed and no other promos will be allowed to show.
//
// FeaturePromoHandle is a value-typed, movable smart reference; default
// constructed instances are falsy (i.e. operator bool and is_valid() return
// false), as are any instances that have been moved or released.
class [[nodiscard]] FeaturePromoHandle {};

}  // namespace user_education

#endif  // COMPONENTS_USER_EDUCATION_COMMON_FEATURE_PROMO_HANDLE_H_