void FeatureState::UserDisable(const char* aMessage, const nsACString& aFailureId) { AssertInitialized(); SetUser(FeatureStatus::Disabled, aMessage); SetFailureId(aFailureId); }
void FeatureState::SetRuntime(FeatureStatus aStatus, const char* aMessage) { AssertInitialized(); mRuntime.Set(aStatus, aMessage); }
const char* FeatureState::GetFailureMessage() const { AssertInitialized(); MOZ_ASSERT(!IsEnabled()); if (mRuntime.mStatus != FeatureStatus::Unused && IsFeatureStatusFailure(mRuntime.mStatus)) { return mRuntime.mMessage; } if (mEnvironment.mStatus != FeatureStatus::Unused && IsFeatureStatusFailure(mEnvironment.mStatus)) { return mEnvironment.mMessage; } if (mUser.mStatus != FeatureStatus::Unused && IsFeatureStatusFailure(mUser.mStatus)) { return mUser.mMessage; } MOZ_ASSERT(IsFeatureStatusFailure(mDefault.mStatus)); return mDefault.mMessage; }
void FeatureState::SetFailed(FeatureStatus aStatus, const char* aMessage, const nsACString& aFailureId) { AssertInitialized(); // We should never bother setting a runtime status to "enabled," since it could // override an explicit user decision to disable it. MOZ_ASSERT(IsFeatureStatusFailure(aStatus)); SetRuntime(aStatus, aMessage); SetFailureId(aFailureId); }
void FeatureState::ForEachStatusChange(const StatusIterCallback& aCallback) const { AssertInitialized(); aCallback("default", mDefault.mStatus, mDefault.MessageOrNull()); if (mUser.IsInitialized()) { aCallback("user", mUser.mStatus, mUser.Message()); } if (mEnvironment.IsInitialized()) { aCallback("env", mEnvironment.mStatus, mEnvironment.Message()); } if (mRuntime.IsInitialized()) { aCallback("runtime", mRuntime.mStatus, mRuntime.Message()); } }
FeatureStatus FeatureState::GetValue() const { AssertInitialized(); if (mRuntime.mStatus != FeatureStatus::Unused) { return mRuntime.mStatus; } if (mUser.mStatus == FeatureStatus::ForceEnabled) { return FeatureStatus::ForceEnabled; } if (mEnvironment.mStatus != FeatureStatus::Unused) { return mEnvironment.mStatus; } if (mUser.mStatus != FeatureStatus::Unused) { return mUser.mStatus; } return mDefault.mStatus; }
void FeatureState::UserForceEnable(const char* aMessage) { AssertInitialized(); SetUser(FeatureStatus::ForceEnabled, aMessage); }
void FeatureState::UserEnable(const char* aMessage) { AssertInitialized(); SetUser(FeatureStatus::Available, aMessage); }
bool FeatureState::IsForcedOnByUser() const { AssertInitialized(); return mUser.mStatus == FeatureStatus::ForceEnabled; }
bool FeatureState::DisabledByDefault() const { AssertInitialized(); return mDefault.mStatus != FeatureStatus::Available; }