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

Commit 1d5156d9 authored by Matías Hernández's avatar Matías Hernández
Browse files

Fix EventConditionProvider for secondary users (and HSUM)

The trackers were always being attached to the calendars of the primary user.

Fixes: 366141808
Test: atest EventConditionProviderTest + manually on HSUM device
Flag: android.app.modes_hsum
Change-Id: I31fd191f6cdbd2aca7ea4de6beb5510254fc5c14
parent f8afa218
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -47,6 +47,16 @@ flag {
  bug: "360862012"
}

flag {
  name: "modes_hsum"
  namespace: "systemui"
  description: "Fixes for modes (and DND/Zen in general) with HSUM or secondary users"
  bug: "366203070"
  metadata {
    purpose: PURPOSE_BUGFIX
  }
}

flag {
  name: "api_tvextender"
  is_exported: true
+6 −0
Original line number Diff line number Diff line
@@ -32,6 +32,8 @@ import android.util.ArraySet;
import android.util.Log;
import android.util.Slog;

import com.android.internal.annotations.VisibleForTesting;

import java.io.PrintWriter;
import java.util.Date;
import java.util.Objects;
@@ -296,4 +298,8 @@ public class CalendarTracker {
        void onChanged();
    }

    @VisibleForTesting // (otherwise = NONE)
    public int getUserId() {
        return mUserContext.getUserId();
    }
}
+4 −7
Original line number Diff line number Diff line
@@ -169,16 +169,15 @@ public class ConditionProviders extends ManagedServices {
        for (int i = 0; i < mSystemConditionProviders.size(); i++) {
            mSystemConditionProviders.valueAt(i).onBootComplete();
        }
        if (mCallback != null) {
            mCallback.onBootComplete();
        }
    }

    @Override
    public void onUserSwitched(int user) {
        super.onUserSwitched(user);
        if (mCallback != null) {
            mCallback.onUserSwitched();
        if (android.app.Flags.modesHsum()) {
            for (int i = 0; i < mSystemConditionProviders.size(); i++) {
                mSystemConditionProviders.valueAt(i).onUserSwitched(UserHandle.of(user));
            }
        }
    }

@@ -515,10 +514,8 @@ public class ConditionProviders extends ManagedServices {
    }

    public interface Callback {
        void onBootComplete();
        void onServiceAdded(ComponentName component);
        void onConditionChanged(Uri id, Condition condition);
        void onUserSwitched();
    }

}
+6 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.Uri;
import android.os.UserHandle;
import android.service.notification.Condition;
import android.service.notification.ZenModeConfig;
import android.text.format.DateUtils;
@@ -64,6 +65,11 @@ public class CountdownConditionProvider extends SystemConditionProviderService {
        // noop
    }

    @Override
    public void onUserSwitched(UserHandle user) {
        // Nothing to do because countdown conditions are not tied to any user data.
    }

    @Override
    public void dump(PrintWriter pw, DumpFilter filter) {
        pw.println("    CountdownConditionProvider:");
+6 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.server.notification;

import android.net.Uri;
import android.os.UserHandle;
import android.service.notification.ZenModeConfig;

import java.io.PrintWriter;
@@ -39,6 +40,11 @@ public class CustomManualConditionProvider extends SystemConditionProviderServic
        // Nothing to do.
    }

    @Override
    public void onUserSwitched(UserHandle user) {
        // Nothing to do because we won't ever call notifyConditions.
    }

    @Override
    public void onConnected() {
        // No need to keep subscriptions because we won't ever call notifyConditions
Loading