diff options
| author | 2021-02-22 15:35:18 +0000 | |
|---|---|---|
| committer | 2021-02-22 15:35:18 +0000 | |
| commit | 0622a76d72899da9af3e3a9c21c17caa40d49d60 (patch) | |
| tree | baab73c887ba2dea5a712ac8fb7134085d25d564 | |
| parent | 349c0395546d07b684afad67620df595bbd4ae6b (diff) | |
| parent | df7e381902480b55098b4a07fca1637dee31616b (diff) | |
Merge "Move static calls in TunerService to use deps" into sc-dev
6 files changed, 84 insertions, 90 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFooterViewController.java b/packages/SystemUI/src/com/android/systemui/qs/QSFooterViewController.java index 8110fda1330c..16e519657a41 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSFooterViewController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSFooterViewController.java @@ -95,7 +95,6 @@ public class QSFooterViewController extends ViewController<QSFooterView> impleme mActivityStarter.postQSRunnableDismissingKeyguard(() -> { if (isTunerEnabled()) { mTunerService.showResetRequest( - mUserTracker.getUserHandle(), () -> { // Relaunch settings so that the tuner disappears. startSettingsActivity(); @@ -103,7 +102,7 @@ public class QSFooterViewController extends ViewController<QSFooterView> impleme } else { Toast.makeText(getContext(), R.string.tuner_toast, Toast.LENGTH_LONG).show(); - mTunerService.setTunerEnabled(mUserTracker.getUserHandle(), true); + mTunerService.setTunerEnabled(true); } startSettingsActivity(); @@ -238,6 +237,6 @@ public class QSFooterViewController extends ViewController<QSFooterView> impleme } private boolean isTunerEnabled() { - return mTunerService.isTunerEnabled(mUserTracker.getUserHandle()); + return mTunerService.isTunerEnabled(); } } diff --git a/packages/SystemUI/src/com/android/systemui/tuner/TunerActivity.java b/packages/SystemUI/src/com/android/systemui/tuner/TunerActivity.java index 78341edefbb2..5b66216f41be 100644 --- a/packages/SystemUI/src/com/android/systemui/tuner/TunerActivity.java +++ b/packages/SystemUI/src/com/android/systemui/tuner/TunerActivity.java @@ -43,11 +43,13 @@ public class TunerActivity extends Activity implements private static final String TAG_TUNER = "tuner"; private final DemoModeController mDemoModeController; + private final TunerService mTunerService; @Inject - TunerActivity(DemoModeController demoModeController) { + TunerActivity(DemoModeController demoModeController, TunerService tunerService) { super(); mDemoModeController = demoModeController; + mTunerService = tunerService; } protected void onCreate(Bundle savedInstanceState) { @@ -67,7 +69,7 @@ public class TunerActivity extends Activity implements "com.android.settings.action.DEMO_MODE"); final PreferenceFragment fragment = showDemoMode ? new DemoModeFragment(mDemoModeController) - : new TunerFragment(); + : new TunerFragment(mTunerService); getFragmentManager().beginTransaction().replace(R.id.content_frame, fragment, TAG_TUNER).commit(); } diff --git a/packages/SystemUI/src/com/android/systemui/tuner/TunerFragment.java b/packages/SystemUI/src/com/android/systemui/tuner/TunerFragment.java index 4c724aeea9ae..989462a9fd34 100644 --- a/packages/SystemUI/src/com/android/systemui/tuner/TunerFragment.java +++ b/packages/SystemUI/src/com/android/systemui/tuner/TunerFragment.java @@ -15,7 +15,7 @@ */ package com.android.systemui.tuner; -import android.app.ActivityManager; +import android.annotation.SuppressLint; import android.app.AlertDialog; import android.app.Dialog; import android.app.DialogFragment; @@ -23,7 +23,6 @@ import android.content.DialogInterface; import android.hardware.display.AmbientDisplayConfiguration; import android.os.Build; import android.os.Bundle; -import android.os.UserHandle; import android.provider.Settings; import android.view.Menu; import android.view.MenuInflater; @@ -56,6 +55,15 @@ public class TunerFragment extends PreferenceFragment { private static final int MENU_REMOVE = Menu.FIRST + 1; + private final TunerService mTunerService; + + // We are the only ones who ever call this constructor, so don't worry about the warning + @SuppressLint("ValidFragment") + public TunerFragment(TunerService tunerService) { + super(); + mTunerService = tunerService; + } + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -124,13 +132,9 @@ public class TunerFragment extends PreferenceFragment { getActivity().finish(); return true; case MENU_REMOVE: - UserHandle user = new UserHandle(ActivityManager.getCurrentUser()); - TunerService.showResetRequest(getContext(), user, new Runnable() { - @Override - public void run() { - if (getActivity() != null) { - getActivity().finish(); - } + mTunerService.showResetRequest(() -> { + if (getActivity() != null) { + getActivity().finish(); } }); return true; diff --git a/packages/SystemUI/src/com/android/systemui/tuner/TunerService.java b/packages/SystemUI/src/com/android/systemui/tuner/TunerService.java index b67574d1c4de..5d09e064604a 100644 --- a/packages/SystemUI/src/com/android/systemui/tuner/TunerService.java +++ b/packages/SystemUI/src/com/android/systemui/tuner/TunerService.java @@ -15,19 +15,10 @@ package com.android.systemui.tuner; import android.content.BroadcastReceiver; -import android.content.ComponentName; import android.content.Context; -import android.content.DialogInterface; -import android.content.DialogInterface.OnClickListener; import android.content.Intent; -import android.content.pm.PackageManager; -import android.content.pm.PackageManager.NameNotFoundException; -import android.os.UserHandle; -import android.provider.Settings; import com.android.systemui.Dependency; -import com.android.systemui.R; -import com.android.systemui.statusbar.phone.SystemUIDialog; public abstract class TunerService { @@ -47,6 +38,16 @@ public abstract class TunerService { public abstract void addTunable(Tunable tunable, String... keys); public abstract void removeTunable(Tunable tunable); + /** + * Sets the state of the {@link TunerActivity} component for the current user + */ + public abstract void setTunerEnabled(boolean enabled); + + /** + * Returns true if the tuner is enabled for the current user. + */ + public abstract boolean isTunerEnabled(); + public interface Tunable { void onTuningChanged(String key, String newValue); } @@ -55,38 +56,6 @@ public abstract class TunerService { mContext = context; } - private static Context userContext(Context context, UserHandle user) { - try { - return context.createPackageContextAsUser(context.getPackageName(), 0, user); - } catch (NameNotFoundException e) { - return context; - } - } - - /** Enables or disables the tuner for the supplied user. */ - public void setTunerEnabled(UserHandle user, boolean enabled) { - setTunerEnabled(mContext, user, enabled); - } - - public static final void setTunerEnabled(Context context, UserHandle user, boolean enabled) { - userContext(context, user).getPackageManager().setComponentEnabledSetting( - new ComponentName(context, TunerActivity.class), - enabled ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED - : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, - PackageManager.DONT_KILL_APP); - } - - /** Returns true if the tuner is enabled for the supplied user. */ - public boolean isTunerEnabled(UserHandle user) { - return isTunerEnabled(mContext, user); - } - - public static final boolean isTunerEnabled(Context context, UserHandle user) { - return userContext(context, user).getPackageManager().getComponentEnabledSetting( - new ComponentName(context, TunerActivity.class)) - == PackageManager.COMPONENT_ENABLED_STATE_ENABLED; - } - public static class ClearReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { @@ -97,35 +66,7 @@ public abstract class TunerService { } /** */ - public void showResetRequest(UserHandle user, final Runnable onDisabled) { - showResetRequest(mContext, user, onDisabled); - } - - public static final void showResetRequest(final Context context, UserHandle user, - final Runnable onDisabled) { - SystemUIDialog dialog = new SystemUIDialog(context); - dialog.setShowForAllUsers(true); - dialog.setMessage(R.string.remove_from_settings_prompt); - dialog.setButton(DialogInterface.BUTTON_NEGATIVE, context.getString(R.string.cancel), - (OnClickListener) null); - dialog.setButton(DialogInterface.BUTTON_POSITIVE, - context.getString(R.string.guest_exit_guest_dialog_remove), new OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - // Tell the tuner (in main SysUI process) to clear all its settings. - context.sendBroadcast(new Intent(TunerService.ACTION_CLEAR)); - // Disable access to tuner. - TunerService.setTunerEnabled(context, user, false); - // Make them sit through the warning dialog again. - Settings.Secure.putInt(context.getContentResolver(), - TunerFragment.SETTING_SEEN_TUNER_WARNING, 0); - if (onDisabled != null) { - onDisabled.run(); - } - } - }); - dialog.show(); - } + public abstract void showResetRequest(Runnable onDisabled); public static boolean parseIntegerSwitch(String value, boolean defaultValue) { try { diff --git a/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java b/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java index 027c282ba352..e9e4380859b7 100644 --- a/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java +++ b/packages/SystemUI/src/com/android/systemui/tuner/TunerServiceImpl.java @@ -15,8 +15,12 @@ */ package com.android.systemui.tuner; +import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.pm.PackageManager; import android.content.pm.UserInfo; import android.database.ContentObserver; import android.net.Uri; @@ -32,13 +36,14 @@ import android.util.ArraySet; import com.android.internal.util.ArrayUtils; import com.android.systemui.DejankUtils; -import com.android.systemui.broadcast.BroadcastDispatcher; +import com.android.systemui.R; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.demomode.DemoModeController; import com.android.systemui.qs.QSTileHost; import com.android.systemui.settings.UserTracker; import com.android.systemui.statusbar.phone.StatusBarIconController; +import com.android.systemui.statusbar.phone.SystemUIDialog; import com.android.systemui.util.leak.LeakDetector; import java.util.HashSet; @@ -83,6 +88,7 @@ public class TunerServiceImpl extends TunerService { private int mCurrentUser; private UserTracker.Callback mCurrentUserTracker; private UserTracker mUserTracker; + private final ComponentName mTunerComponent; /** */ @@ -92,7 +98,6 @@ public class TunerServiceImpl extends TunerService { @Main Handler mainHandler, LeakDetector leakDetector, DemoModeController demoModeController, - BroadcastDispatcher broadcastDispatcher, UserTracker userTracker) { super(context); mContext = context; @@ -100,6 +105,7 @@ public class TunerServiceImpl extends TunerService { mLeakDetector = leakDetector; mDemoModeController = demoModeController; mUserTracker = userTracker; + mTunerComponent = new ComponentName(mContext, TunerActivity.class); for (UserInfo user : UserManager.get(mContext).getUsers()) { mCurrentUser = user.getUserHandle().getIdentifier(); @@ -142,7 +148,7 @@ public class TunerServiceImpl extends TunerService { } } if (oldVersion < 2) { - setTunerEnabled(mContext, mUserTracker.getUserHandle(), false); + setTunerEnabled(false); } // 3 Removed because of a revert. if (oldVersion < 4) { @@ -269,6 +275,46 @@ public class TunerServiceImpl extends TunerService { } } + + @Override + public void setTunerEnabled(boolean enabled) { + mUserTracker.getUserContext().getPackageManager().setComponentEnabledSetting( + mTunerComponent, + enabled ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED + : PackageManager.COMPONENT_ENABLED_STATE_DISABLED, + PackageManager.DONT_KILL_APP + ); + } + + @Override + public boolean isTunerEnabled() { + return mUserTracker.getUserContext().getPackageManager().getComponentEnabledSetting( + mTunerComponent) == PackageManager.COMPONENT_ENABLED_STATE_ENABLED; + } + + @Override + public void showResetRequest(Runnable onDisabled) { + SystemUIDialog dialog = new SystemUIDialog(mContext); + dialog.setShowForAllUsers(true); + dialog.setMessage(R.string.remove_from_settings_prompt); + dialog.setButton(DialogInterface.BUTTON_NEGATIVE, mContext.getString(R.string.cancel), + (DialogInterface.OnClickListener) null); + dialog.setButton(DialogInterface.BUTTON_POSITIVE, + mContext.getString(R.string.guest_exit_guest_dialog_remove), (d, which) -> { + // Tell the tuner (in main SysUI process) to clear all its settings. + mContext.sendBroadcast(new Intent(TunerService.ACTION_CLEAR)); + // Disable access to tuner. + setTunerEnabled(false); + // Make them sit through the warning dialog again. + Secure.putInt(mContext.getContentResolver(), + TunerFragment.SETTING_SEEN_TUNER_WARNING, 0); + if (onDisabled != null) { + onDisabled.run(); + } + }); + dialog.show(); + } + private class Observer extends ContentObserver { public Observer() { super(new Handler(Looper.getMainLooper())); diff --git a/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeTunerService.java b/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeTunerService.java index 97d4aa7e4d19..7d8a28812fde 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeTunerService.java +++ b/packages/SystemUI/tests/src/com/android/systemui/utils/leaks/FakeTunerService.java @@ -14,7 +14,6 @@ package com.android.systemui.utils.leaks; -import android.os.UserHandle; import android.testing.LeakCheck; import com.android.systemui.tuner.TunerService; @@ -78,12 +77,15 @@ public class FakeTunerService extends TunerService { } @Override - public void setTunerEnabled(UserHandle user, boolean enabled) { + public void setTunerEnabled(boolean enabled) { mEnabled = enabled; } @Override - public boolean isTunerEnabled(UserHandle user) { + public boolean isTunerEnabled() { return mEnabled; } + + @Override + public void showResetRequest(Runnable onDisabled) {} } |