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

Commit 8cba2593 authored by Matías Hernández's avatar Matías Hernández
Browse files

Log the user-modified fields of Zen Rules

Bug: 308672510
Test: atest ZenModeHelperTest
Change-Id: Icec475c2acee080ed38b9130804f3ff9eb1c2684
parent b738e563
Loading
Loading
Loading
Loading
+9 −2
Original line number Diff line number Diff line
@@ -2040,7 +2040,10 @@ public class ZenModeHelper {
                        /* optional LoggedZenMode zen_mode = 4 */ ROOT_CONFIG,
                        /* optional string id = 5 */ "", // empty for root config
                        /* optional int32 uid = 6 */ Process.SYSTEM_UID, // system owns root config
                        /* optional DNDPolicyProto policy = 7 */ config.toZenPolicy().toProto()));
                        /* optional DNDPolicyProto policy = 7 */ config.toZenPolicy().toProto(),
                        /* optional int32 rule_modified_fields = 8 */ 0,
                        /* optional int32 policy_modified_fields = 9 */ 0,
                        /* optional int32 device_effects_modified_fields = 10 */ 0));
                if (config.manualRule != null) {
                    ruleToProtoLocked(user, config.manualRule, true, events);
                }
@@ -2082,7 +2085,11 @@ public class ZenModeHelper {
                /* optional android.stats.dnd.ZenMode zen_mode = 4 */ rule.zenMode,
                /* optional string id = 5 */ id,
                /* optional int32 uid = 6 */ getPackageUid(pkg, user),
                /* optional DNDPolicyProto policy = 7 */ policyProto));
                /* optional DNDPolicyProto policy = 7 */ policyProto,
                /* optional int32 rule_modified_fields = 8 */ rule.userModifiedFields,
                /* optional int32 policy_modified_fields = 9 */ rule.zenPolicyUserModifiedFields,
                /* optional int32 device_effects_modified_fields = 10 */
                rule.zenDeviceEffectsUserModifiedFields));
    }

    private int getPackageUid(String pkg, int user) {
+22 −0
Original line number Diff line number Diff line
@@ -1180,6 +1180,28 @@ public class ZenModeHelperTest extends UiServiceTestCase {
        assertTrue("couldn't find custom rule", foundCustomEvent);
    }

    @Test
    @EnableFlags(Flags.FLAG_MODES_API)
    public void testProtoWithAutoRuleWithModifiedFields() throws Exception {
        setupZenConfig();
        mZenModeHelper.mConfig.automaticRules = new ArrayMap<>();
        ZenRule rule = createCustomAutomaticRule(ZEN_MODE_IMPORTANT_INTERRUPTIONS, CUSTOM_RULE_ID);
        rule.userModifiedFields = AutomaticZenRule.FIELD_NAME;
        rule.zenPolicyUserModifiedFields = ZenPolicy.FIELD_PRIORITY_CATEGORY_MEDIA;
        rule.zenDeviceEffectsUserModifiedFields = ZenDeviceEffects.FIELD_GRAYSCALE;
        mZenModeHelper.mConfig.automaticRules.put(rule.id, rule);

        List<StatsEvent> events = new ArrayList<>();
        mZenModeHelper.pullRules(events);

        assertThat(events).hasSize(2); // Global config + 1 automatic rule
        DNDModeProto ruleProto = StatsEventTestUtils.convertToAtom(events.get(1)).getDndModeRule();
        assertThat(ruleProto.getRuleModifiedFields()).isEqualTo(rule.userModifiedFields);
        assertThat(ruleProto.getPolicyModifiedFields()).isEqualTo(rule.zenPolicyUserModifiedFields);
        assertThat(ruleProto.getDeviceEffectsModifiedFields()).isEqualTo(
                rule.zenDeviceEffectsUserModifiedFields);
    }

    @Test
    public void ruleUidsCached() throws Exception {
        setupZenConfig();