nimbus/stateful/
firefox_labs.rs

1// This Source Code Form is subject to the terms of the Mozilla Public
2// License, v. 2.0. If a copy of the MPL was not distributed with this
3// file, You can obtain one at https://mozilla.org/MPL/2.0/.
4
5use crate::enrollment::EnrollmentChangeEvent;
6
7pub const FIREFOX_LABS_FEEDBACK_URL_KEY: &str = "feedback";
8
9#[cfg_attr(test, derive(Debug, PartialEq, Eq))]
10pub struct FirefoxLabsMetadata {
11    pub slug: String,
12    pub enrolled: bool,
13    pub title_string_id: String,
14    pub description_string_id: String,
15    pub feedback_url: Option<String>,
16    pub requires_restart: bool,
17}
18
19#[cfg_attr(test, derive(Debug, PartialEq, Eq))]
20pub struct FirefoxLabsEnrollResult {
21    pub status: FirefoxLabsEnrollStatus,
22    pub enrollment_change_events: Vec<EnrollmentChangeEvent>,
23}
24
25#[derive(Eq, PartialEq)]
26#[cfg_attr(test, derive(Debug))]
27pub enum FirefoxLabsEnrollStatus {
28    Enrolled,
29    AlreadyEnrolled,
30    NoExperiment,
31    NotFirefoxLabsOptIn,
32    FeatureConflict,
33    Error,
34}
35
36#[cfg_attr(test, derive(Debug, PartialEq, Eq))]
37pub struct FirefoxLabsUnenrollResult {
38    pub status: FirefoxLabsUnenrollStatus,
39    pub enrollment_change_events: Vec<EnrollmentChangeEvent>,
40}
41
42#[derive(Eq, PartialEq)]
43#[cfg_attr(test, derive(Debug))]
44pub enum FirefoxLabsUnenrollStatus {
45    Unenrolled,
46    AlreadyUnenrolled,
47    NoExperiment,
48    NotFirefoxLabsOptIn,
49    Error,
50}