52 lines
1.7 KiB
C++
52 lines
1.7 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set ts=2 et sw=2 tw=80: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
// This is a cut down version of base/feature_list.h.
|
|
// This just returns the default state for a feature.
|
|
|
|
#ifndef BASE_FEATURE_LIST_H_
|
|
#define BASE_FEATURE_LIST_H_
|
|
|
|
#include "base/macros.h"
|
|
|
|
namespace base {
|
|
|
|
// Specifies whether a given feature is enabled or disabled by default.
|
|
enum FeatureState {
|
|
FEATURE_DISABLED_BY_DEFAULT,
|
|
FEATURE_ENABLED_BY_DEFAULT,
|
|
};
|
|
|
|
// The Feature struct is used to define the default state for a feature. See
|
|
// comment below for more details. There must only ever be one struct instance
|
|
// for a given feature name - generally defined as a constant global variable or
|
|
// file static. It should never be used as a constexpr as it breaks
|
|
// pointer-based identity lookup.
|
|
struct BASE_EXPORT Feature {
|
|
// The name of the feature. This should be unique to each feature and is used
|
|
// for enabling/disabling features via command line flags and experiments.
|
|
// It is strongly recommended to use CamelCase style for feature names, e.g.
|
|
// "MyGreatFeature".
|
|
const char* const name;
|
|
|
|
// The default state (i.e. enabled or disabled) for this feature.
|
|
const FeatureState default_state;
|
|
};
|
|
|
|
class BASE_EXPORT FeatureList {
|
|
public:
|
|
static bool IsEnabled(const Feature& feature) {
|
|
return feature.default_state == FEATURE_ENABLED_BY_DEFAULT;
|
|
}
|
|
|
|
static FeatureList* GetInstance() { return nullptr; }
|
|
|
|
DISALLOW_COPY_AND_ASSIGN(FeatureList);
|
|
};
|
|
|
|
} // namespace base
|
|
|
|
#endif // BASE_FEATURE_LIST_H_
|