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

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

Merge "Move static calls in TunerService to use deps" into sc-dev

parents 349c0395 df7e3819
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -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();
    }
}
+4 −2
Original line number Diff line number Diff line
@@ -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();
        }
+13 −9
Original line number Diff line number Diff line
@@ -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,14 +132,10 @@ 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() {
                mTunerService.showResetRequest(() -> {
                    if (getActivity() != null) {
                        getActivity().finish();
                    }
                    }
                });
                return true;
        }
+11 −70
Original line number Diff line number Diff line
@@ -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 {
+49 −3
Original line number Diff line number Diff line
@@ -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()));
Loading