Move TestModeBuilder to SettingsLib

This will allow us to use it from both settings and systemui.

Bug: 346519570
Test: builds
Flag: TEST_ONLY
Change-Id: I3b5ea50458f28d55db275cbd9de93f55f522d5c7
This commit is contained in:
Ioana Alexandru
2024-07-09 18:57:33 +02:00
parent dc5469cf24
commit 457277d6f5
31 changed files with 35 additions and 178 deletions

View File

@@ -34,6 +34,7 @@ import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.service.notification.ConditionProviderService;
import com.android.settingslib.notification.modes.TestModeBuilder;
import com.android.settingslib.notification.modes.ZenMode;
import org.junit.Before;

View File

@@ -33,6 +33,7 @@ import android.service.notification.ZenPolicy;
import androidx.preference.TwoStatePreference;
import com.android.settingslib.notification.modes.TestModeBuilder;
import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.notification.modes.ZenModesBackend;

View File

@@ -30,6 +30,7 @@ import android.provider.Settings;
import androidx.fragment.app.Fragment;
import androidx.preference.Preference;
import com.android.settingslib.notification.modes.TestModeBuilder;
import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.notification.modes.ZenModesBackend;

View File

@@ -1,178 +0,0 @@
/*
* Copyright (C) 2024 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.settings.notification.modes;
import android.app.AutomaticZenRule;
import android.app.NotificationManager;
import android.content.ComponentName;
import android.net.Uri;
import android.service.notification.Condition;
import android.service.notification.ZenDeviceEffects;
import android.service.notification.ZenModeConfig;
import android.service.notification.ZenPolicy;
import androidx.annotation.DrawableRes;
import androidx.annotation.Nullable;
import com.android.settingslib.notification.modes.ZenMode;
import java.util.Random;
class TestModeBuilder {
private String mId;
private AutomaticZenRule mRule;
private ZenModeConfig.ZenRule mConfigZenRule;
public static final ZenMode EXAMPLE = new TestModeBuilder().build();
TestModeBuilder() {
// Reasonable defaults
int id = new Random().nextInt(1000);
mId = "rule_" + id;
mRule = new AutomaticZenRule.Builder("Test Rule #" + id, Uri.parse("rule://" + id))
.setPackage("some_package")
.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_PRIORITY)
.setZenPolicy(new ZenPolicy.Builder().disallowAllSounds().build())
.build();
mConfigZenRule = new ZenModeConfig.ZenRule();
mConfigZenRule.enabled = true;
mConfigZenRule.pkg = "some_package";
}
TestModeBuilder(ZenMode previous) {
mId = previous.getId();
mRule = previous.getRule();
mConfigZenRule = new ZenModeConfig.ZenRule();
mConfigZenRule.enabled = previous.getRule().isEnabled();
mConfigZenRule.pkg = previous.getRule().getPackageName();
setActive(previous.isActive());
}
TestModeBuilder setId(String id) {
mId = id;
return this;
}
TestModeBuilder setAzr(AutomaticZenRule rule) {
mRule = rule;
mConfigZenRule.pkg = rule.getPackageName();
mConfigZenRule.conditionId = rule.getConditionId();
mConfigZenRule.enabled = rule.isEnabled();
return this;
}
TestModeBuilder setConfigZenRule(ZenModeConfig.ZenRule configZenRule) {
mConfigZenRule = configZenRule;
return this;
}
TestModeBuilder setName(String name) {
mRule.setName(name);
mConfigZenRule.name = name;
return this;
}
TestModeBuilder setPackage(String pkg) {
mRule.setPackageName(pkg);
mConfigZenRule.pkg = pkg;
return this;
}
TestModeBuilder setOwner(ComponentName owner) {
mRule.setOwner(owner);
mConfigZenRule.component = owner;
return this;
}
TestModeBuilder setConfigurationActivity(ComponentName configActivity) {
mRule.setConfigurationActivity(configActivity);
mConfigZenRule.configurationActivity = configActivity;
return this;
}
TestModeBuilder setConditionId(Uri conditionId) {
mRule.setConditionId(conditionId);
mConfigZenRule.conditionId = conditionId;
return this;
}
TestModeBuilder setType(@AutomaticZenRule.Type int type) {
mRule.setType(type);
mConfigZenRule.type = type;
return this;
}
TestModeBuilder setInterruptionFilter(
@NotificationManager.InterruptionFilter int interruptionFilter) {
mRule.setInterruptionFilter(interruptionFilter);
mConfigZenRule.zenMode = NotificationManager.zenModeFromInterruptionFilter(
interruptionFilter, NotificationManager.INTERRUPTION_FILTER_PRIORITY);
return this;
}
TestModeBuilder setZenPolicy(@Nullable ZenPolicy policy) {
mRule.setZenPolicy(policy);
mConfigZenRule.zenPolicy = policy;
return this;
}
TestModeBuilder setDeviceEffects(@Nullable ZenDeviceEffects deviceEffects) {
mRule.setDeviceEffects(deviceEffects);
mConfigZenRule.zenDeviceEffects = deviceEffects;
return this;
}
TestModeBuilder setEnabled(boolean enabled) {
mRule.setEnabled(enabled);
mConfigZenRule.enabled = enabled;
return this;
}
TestModeBuilder setManualInvocationAllowed(boolean allowed) {
mRule.setManualInvocationAllowed(allowed);
mConfigZenRule.allowManualInvocation = allowed;
return this;
}
TestModeBuilder setTriggerDescription(@Nullable String triggerDescription) {
mRule.setTriggerDescription(triggerDescription);
mConfigZenRule.triggerDescription = triggerDescription;
return this;
}
TestModeBuilder setIconResId(@DrawableRes int iconResId) {
mRule.setIconResId(iconResId);
return this;
}
TestModeBuilder setActive(boolean active) {
if (active) {
mConfigZenRule.enabled = true;
mConfigZenRule.condition = new Condition(mRule.getConditionId(), "...",
Condition.STATE_TRUE);
} else {
mConfigZenRule.condition = null;
}
return this;
}
ZenMode build() {
return new ZenMode(mId, mRule, mConfigZenRule);
}
}

View File

@@ -42,6 +42,7 @@ import androidx.fragment.app.Fragment;
import com.android.settings.SettingsActivity;
import com.android.settingslib.applications.ApplicationsState;
import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.notification.modes.TestModeBuilder;
import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.notification.modes.ZenModesBackend;
import com.android.settingslib.widget.SelectorWithWidgetPreference;

View File

@@ -37,6 +37,7 @@ import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
import androidx.preference.TwoStatePreference;
import com.android.settingslib.notification.modes.TestModeBuilder;
import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.notification.modes.ZenModesBackend;
import com.android.settingslib.widget.SelectorWithWidgetPreference;

View File

@@ -35,6 +35,7 @@ import android.widget.Button;
import androidx.fragment.app.Fragment;
import com.android.settingslib.notification.modes.TestModeBuilder;
import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.notification.modes.ZenModesBackend;
import com.android.settingslib.widget.LayoutPreference;

View File

@@ -27,6 +27,8 @@ import android.platform.test.flag.junit.SetFlagsRule;
import androidx.preference.Preference;
import com.android.settingslib.notification.modes.TestModeBuilder;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;

View File

@@ -29,6 +29,7 @@ import android.service.notification.ZenDeviceEffects;
import androidx.preference.TwoStatePreference;
import com.android.settingslib.notification.modes.TestModeBuilder;
import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.notification.modes.ZenModesBackend;

View File

@@ -27,6 +27,7 @@ import android.platform.test.flag.junit.SetFlagsRule;
import androidx.preference.Preference;
import com.android.settingslib.notification.modes.TestModeBuilder;
import com.android.settingslib.notification.modes.ZenModesBackend;
import org.junit.Before;

View File

@@ -28,6 +28,7 @@ import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settingslib.notification.modes.TestModeBuilder;
import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.widget.LayoutPreference;

View File

@@ -34,6 +34,7 @@ import androidx.fragment.app.testing.FragmentScenario;
import androidx.lifecycle.Lifecycle;
import com.android.internal.R;
import com.android.settingslib.notification.modes.TestModeBuilder;
import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.notification.modes.ZenModesBackend;

View File

@@ -28,6 +28,7 @@ import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
import com.android.settings.R;
import com.android.settingslib.notification.modes.TestModeBuilder;
import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.widget.LayoutPreference;

View File

@@ -27,6 +27,7 @@ import android.service.notification.ZenModeConfig;
import androidx.preference.TwoStatePreference;
import androidx.test.core.app.ApplicationProvider;
import com.android.settingslib.notification.modes.TestModeBuilder;
import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.notification.modes.ZenModesBackend;

View File

@@ -32,6 +32,7 @@ import androidx.preference.PreferenceScreen;
import androidx.recyclerview.widget.RecyclerView;
import com.android.settings.R;
import com.android.settingslib.notification.modes.TestModeBuilder;
import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.widget.LayoutPreference;

View File

@@ -27,6 +27,8 @@ import android.platform.test.flag.junit.SetFlagsRule;
import androidx.preference.Preference;
import com.android.settingslib.notification.modes.TestModeBuilder;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;

View File

@@ -39,6 +39,7 @@ import androidx.lifecycle.Lifecycle;
import androidx.test.ext.junit.rules.ActivityScenarioRule;
import com.android.internal.R;
import com.android.settingslib.notification.modes.TestModeBuilder;
import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.notification.modes.ZenModesBackend;

View File

@@ -27,6 +27,8 @@ import android.platform.test.flag.junit.SetFlagsRule;
import androidx.preference.Preference;
import com.android.settingslib.notification.modes.TestModeBuilder;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;

View File

@@ -40,6 +40,7 @@ import android.service.notification.ZenPolicy;
import androidx.preference.TwoStatePreference;
import com.android.settingslib.notification.modes.TestModeBuilder;
import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.notification.modes.ZenModesBackend;

View File

@@ -27,6 +27,8 @@ import android.platform.test.flag.junit.SetFlagsRule;
import androidx.preference.Preference;
import com.android.settingslib.notification.modes.TestModeBuilder;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;

View File

@@ -32,6 +32,7 @@ import android.service.notification.ZenPolicy;
import androidx.preference.TwoStatePreference;
import com.android.settingslib.notification.modes.TestModeBuilder;
import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.notification.modes.ZenModesBackend;

View File

@@ -27,6 +27,8 @@ import android.platform.test.flag.junit.SetFlagsRule;
import androidx.preference.Preference;
import com.android.settingslib.notification.modes.TestModeBuilder;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;

View File

@@ -51,6 +51,7 @@ import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
import com.android.settingslib.notification.modes.TestModeBuilder;
import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.notification.modes.ZenModesBackend;
import com.android.settingslib.widget.SelectorWithWidgetPreference;

View File

@@ -34,6 +34,7 @@ import android.service.notification.ZenPolicy;
import androidx.preference.TwoStatePreference;
import com.android.settingslib.notification.modes.TestModeBuilder;
import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.notification.modes.ZenModesBackend;

View File

@@ -39,6 +39,7 @@ import androidx.preference.DropDownPreference;
import androidx.preference.PreferenceCategory;
import androidx.test.core.app.ApplicationProvider;
import com.android.settingslib.notification.modes.TestModeBuilder;
import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.notification.modes.ZenModesBackend;

View File

@@ -36,6 +36,7 @@ import androidx.fragment.app.Fragment;
import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R;
import com.android.settingslib.notification.modes.TestModeBuilder;
import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.notification.modes.ZenModesBackend;

View File

@@ -49,6 +49,7 @@ import com.android.settings.R;
import com.android.settings.SettingsActivity;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settingslib.PrimarySwitchPreference;
import com.android.settingslib.notification.modes.TestModeBuilder;
import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.notification.modes.ZenModesBackend;

View File

@@ -37,6 +37,7 @@ import androidx.fragment.app.testing.EmptyFragmentActivity;
import androidx.test.ext.junit.rules.ActivityScenarioRule;
import com.android.settings.notification.modes.ZenModesListAddModePreferenceController.ModeType;
import com.android.settingslib.notification.modes.TestModeBuilder;
import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.notification.modes.ZenModesBackend;

View File

@@ -21,6 +21,7 @@ import static com.google.common.truth.Truth.assertThat;
import android.content.Context;
import android.service.notification.ZenModeConfig;
import com.android.settingslib.notification.modes.TestModeBuilder;
import com.android.settingslib.notification.modes.ZenMode;
import org.junit.Before;

View File

@@ -37,6 +37,7 @@ import androidx.preference.PreferenceGroup;
import androidx.preference.PreferenceManager;
import androidx.preference.PreferenceScreen;
import com.android.settingslib.notification.modes.TestModeBuilder;
import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.notification.modes.ZenModesBackend;
import com.android.settingslib.search.SearchIndexableRaw;

View File

@@ -39,6 +39,7 @@ import android.service.notification.ZenDeviceEffects;
import android.service.notification.ZenModeConfig;
import android.service.notification.ZenPolicy;
import com.android.settingslib.notification.modes.TestModeBuilder;
import com.android.settingslib.notification.modes.ZenMode;
import org.junit.Before;