Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 80a2b709 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Ensure zen SystemConditions are subscribed"

parents 64094484 2f43b64a
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ package com.android.server.notification;
import android.content.ComponentName;
import android.net.Uri;
import android.service.notification.Condition;
import android.service.notification.IConditionListener;
import android.service.notification.IConditionProvider;
import android.service.notification.ZenModeConfig;
import android.service.notification.ZenModeConfig.ZenRule;
@@ -27,6 +26,8 @@ import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Log;

import com.android.internal.annotations.VisibleForTesting;

import java.io.PrintWriter;
import java.util.Objects;

@@ -36,7 +37,9 @@ public class ZenModeConditions implements ConditionProviders.Callback {

    private final ZenModeHelper mHelper;
    private final ConditionProviders mConditionProviders;
    private final ArrayMap<Uri, ComponentName> mSubscriptions = new ArrayMap<>();

    @VisibleForTesting
    protected final ArrayMap<Uri, ComponentName> mSubscriptions = new ArrayMap<>();

    private boolean mFirstEvaluation = true;

@@ -152,7 +155,8 @@ public class ZenModeConditions implements ConditionProviders.Callback {
        if (current != null) {
            current.add(id);
        }
        if (processSubscriptions && trigger != null && trigger.equals(rule.component)) {
        if (processSubscriptions && ((trigger != null && trigger.equals(rule.component))
                || isSystemCondition)) {
            if (DEBUG) Log.d(TAG, "Subscribing to " + rule.component);
            if (mConditionProviders.subscribeIfNecessary(rule.component, rule.conditionId)) {
                synchronized (mSubscriptions) {
+1 −1
Original line number Diff line number Diff line
@@ -102,7 +102,7 @@ public class ZenModeHelper {
    private final ZenModeFiltering mFiltering;
    protected final RingerModeDelegate mRingerModeDelegate = new
            RingerModeDelegate();
    private final ZenModeConditions mConditions;
    @VisibleForTesting protected final ZenModeConditions mConditions;
    private final SparseArray<ZenModeConfig> mConfigs = new SparseArray<>();
    private final Metrics mMetrics = new Metrics();
    private final ConditionProviders.Config mServiceConfig;
+32 −2
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.app.AppGlobals;
import android.app.AppOpsManager;
import android.app.NotificationManager;
import android.content.ComponentName;
@@ -49,8 +50,10 @@ import android.media.AudioManager;
import android.media.AudioManagerInternal;
import android.media.VolumePolicy;
import android.media.AudioSystem;
import android.net.Uri;
import android.provider.Settings;
import android.provider.Settings.Global;
import android.service.notification.Condition;
import android.service.notification.ZenModeConfig;
import android.service.notification.ZenModeConfig.ScheduleInfo;
import android.test.suitebuilder.annotation.SmallTest;
@@ -61,6 +64,7 @@ import android.util.Xml;

import com.android.internal.R;
import com.android.internal.messages.nano.SystemMessageProto.SystemMessage;
import com.android.server.notification.ManagedServices.UserProfiles;
import com.android.internal.util.FastXmlSerializer;
import com.android.server.UiServiceTestCase;

@@ -82,7 +86,7 @@ import java.io.ByteArrayOutputStream;
@TestableLooper.RunWithLooper
public class ZenModeHelperTest extends UiServiceTestCase {

    @Mock ConditionProviders mConditionProviders;
    ConditionProviders mConditionProviders;
    @Mock NotificationManager mNotificationManager;
    @Mock private Resources mResources;
    private TestableLooper mTestableLooper;
@@ -102,6 +106,9 @@ public class ZenModeHelperTest extends UiServiceTestCase {
        when(mResources.getString(R.string.zen_mode_default_events_name)).thenReturn("events");
        when(mContext.getSystemService(NotificationManager.class)).thenReturn(mNotificationManager);

        mConditionProviders = new ConditionProviders(mContext, new UserProfiles(),
                AppGlobals.getPackageManager());
        mConditionProviders.addSystemProvider(new CountdownConditionProvider());
        mZenModeHelperSpy = spy(new ZenModeHelper(mContext, mTestableLooper.getLooper(),
                mConditionProviders));
    }
@@ -887,7 +894,6 @@ public class ZenModeHelperTest extends UiServiceTestCase {
        setupZenConfigMaintained();
    }


    @Test
    public void testReadXmlDefaultRulesExist() throws Exception {
        setupZenConfig();
@@ -943,6 +949,30 @@ public class ZenModeHelperTest extends UiServiceTestCase {
        setupZenConfigMaintained();
    }

    @Test
    public void testCountdownConditionSubscription() throws Exception {
        ZenModeConfig config = new ZenModeConfig();
        mZenModeHelperSpy.mConfig = config;
        mZenModeHelperSpy.mConditions.evaluateConfig(mZenModeHelperSpy.mConfig, null, true);
        assertEquals(0, mZenModeHelperSpy.mConditions.mSubscriptions.size());

        mZenModeHelperSpy.mConfig.manualRule = new ZenModeConfig.ZenRule();
        Uri conditionId = ZenModeConfig.toCountdownConditionId(9000000, false);
        mZenModeHelperSpy.mConfig.manualRule.conditionId = conditionId;
        mZenModeHelperSpy.mConfig.manualRule.component = new ComponentName("android",
                CountdownConditionProvider.class.getName());
        mZenModeHelperSpy.mConfig.manualRule.condition = new Condition(conditionId, "", "", "", 0,
                Condition.STATE_TRUE, Condition.FLAG_RELEVANT_NOW);
        mZenModeHelperSpy.mConfig.manualRule.enabled = true;
        ZenModeConfig originalConfig = mZenModeHelperSpy.mConfig.copy();

        mZenModeHelperSpy.mConditions.evaluateConfig(mZenModeHelperSpy.mConfig, null, true);

        assertEquals(true, ZenModeConfig.isValidCountdownConditionId(conditionId));
        assertEquals(originalConfig, mZenModeHelperSpy.mConfig);
        assertEquals(1, mZenModeHelperSpy.mConditions.mSubscriptions.size());
    }

    private void setupZenConfig() {
        mZenModeHelperSpy.mZenMode = Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS;
        mZenModeHelperSpy.mConfig.allowAlarms = false;