blob: 34f441510a7e0225f710ad4703320c92c65dab08 [file] [log] [blame]
/*
* Copyright (C) 2021 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.systemui.flags;
import android.content.Context;
import android.util.FeatureFlagUtils;
import android.util.Log;
import android.widget.Toast;
import com.android.systemui.dagger.SysUISingleton;
import javax.inject.Inject;
/**
* Class to manage simple DeviceConfig-based feature flags.
*
* See {@link Flags} for instructions on defining new flags.
*/
@SysUISingleton
public class FeatureFlags {
private final FlagReader mFlagReader;
private final Context mContext;
@Inject
public FeatureFlags(FlagReader flagReader, Context context) {
mFlagReader = flagReader;
mContext = context;
}
/**
* @param flag The {@link BooleanFlag} of interest.
* @return The value of the flag.
*/
public boolean isEnabled(BooleanFlag flag) {
return mFlagReader.isEnabled(flag);
}
public void assertLegacyPipelineEnabled() {
if (isNewNotifPipelineRenderingEnabled()) {
throw new IllegalStateException("Old pipeline code running w/ new pipeline enabled");
}
}
public boolean checkLegacyPipelineEnabled() {
if (!isNewNotifPipelineRenderingEnabled()) {
return true;
}
Log.d("NotifPipeline", "Old pipeline code running w/ new pipeline enabled",
new Exception());
Toast.makeText(mContext, "Old pipeline code running!", Toast.LENGTH_SHORT).show();
return false;
}
public boolean isNewNotifPipelineEnabled() {
return isEnabled(Flags.NEW_NOTIFICATION_PIPELINE);
}
public boolean isNewNotifPipelineRenderingEnabled() {
return isEnabled(Flags.NEW_NOTIFICATION_PIPELINE_RENDERING);
}
/** */
public boolean useNewLockscreenAnimations() {
return isEnabled(Flags.LOCKSCREEN_ANIMATIONS);
}
public boolean isPeopleTileEnabled() {
return isEnabled(Flags.PEOPLE_TILE);
}
public boolean isMonetEnabled() {
return isEnabled(Flags.MONET);
}
public boolean isPMLiteEnabled() {
return isEnabled(Flags.POWER_MENU_LITE);
}
public boolean isChargingRippleEnabled() {
return isEnabled(Flags.CHARGING_RIPPLE);
}
public boolean isOngoingCallStatusBarChipEnabled() {
return isEnabled(Flags.ONGOING_CALL_STATUS_BAR_CHIP);
}
public boolean isOngoingCallInImmersiveEnabled() {
return isOngoingCallStatusBarChipEnabled() && isEnabled(Flags.ONGOING_CALL_IN_IMMERSIVE);
}
public boolean isOngoingCallInImmersiveChipTapEnabled() {
return isOngoingCallInImmersiveEnabled()
&& isEnabled(Flags.ONGOING_CALL_IN_IMMERSIVE_CHIP_TAP);
}
public boolean isSmartspaceEnabled() {
return isEnabled(Flags.SMARTSPACE);
}
public boolean isSmartspaceDedupingEnabled() {
return isSmartspaceEnabled() && isEnabled(Flags.SMARTSPACE_DEDUPING);
}
public boolean isNewKeyguardSwipeAnimationEnabled() {
return isEnabled(Flags.NEW_UNLOCK_SWIPE_ANIMATION);
}
public boolean isSmartSpaceSharedElementTransitionEnabled() {
return isEnabled(Flags.SMARTSPACE_SHARED_ELEMENT_TRANSITION_ENABLED);
}
/** Whether or not to use the provider model behavior for the status bar icons */
public boolean isCombinedStatusBarSignalIconsEnabled() {
return isEnabled(Flags.COMBINED_STATUS_BAR_SIGNAL_ICONS);
}
/** System setting for provider model behavior */
public boolean isProviderModelSettingEnabled() {
return FeatureFlagUtils.isEnabled(mContext, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL);
}
/**
* Use the new version of the user switcher
*/
public boolean useNewUserSwitcher() {
return isEnabled(Flags.NEW_USER_SWITCHER);
}
/**
* Use the new single view QS headers
*/
public boolean useCombinedQSHeaders() {
return isEnabled(Flags.COMBINED_QS_HEADERS);
}
/** static method for the system setting */
public static boolean isProviderModelSettingEnabled(Context context) {
return FeatureFlagUtils.isEnabled(context, FeatureFlagUtils.SETTINGS_PROVIDER_MODEL);
}
}