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

Commit 5e3e630d authored by Tom O'Neill's avatar Tom O'Neill Committed by Android (Google) Code Review
Browse files

Merge "Injected settings no longer include summaries"

parents 8d2e9a08 248ada68
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -12493,7 +12493,7 @@ package android.location {
    ctor public SettingInjectorService(java.lang.String);
    ctor public SettingInjectorService(java.lang.String);
    method public final android.os.IBinder onBind(android.content.Intent);
    method public final android.os.IBinder onBind(android.content.Intent);
    method protected abstract boolean onGetEnabled();
    method protected abstract boolean onGetEnabled();
    method protected abstract java.lang.String onGetSummary();
    method protected deprecated java.lang.String onGetSummary();
    method public final void onStart(android.content.Intent, int);
    method public final void onStart(android.content.Intent, int);
    method public final int onStartCommand(android.content.Intent, int, int);
    method public final int onStartCommand(android.content.Intent, int, int);
    field public static final java.lang.String ACTION_INJECTED_SETTING_CHANGED = "android.location.InjectedSettingChanged";
    field public static final java.lang.String ACTION_INJECTED_SETTING_CHANGED = "android.location.InjectedSettingChanged";
+20 −35
Original line number Original line Diff line number Diff line
@@ -26,7 +26,7 @@ import android.os.RemoteException;
import android.util.Log;
import android.util.Log;


/**
/**
 * Dynamically specifies the summary (subtitle) and enabled status of a preference injected into
 * Dynamically specifies the enabled status of a preference injected into
 * the list of app settings displayed by the system settings app
 * the list of app settings displayed by the system settings app
 * <p/>
 * <p/>
 * For use only by apps that are included in the system image, for preferences that affect multiple
 * For use only by apps that are included in the system image, for preferences that affect multiple
@@ -71,13 +71,12 @@ import android.util.Log;
 * </ul>
 * </ul>
 *
 *
 * To ensure a good user experience, your {@link android.app.Application#onCreate()},
 * To ensure a good user experience, your {@link android.app.Application#onCreate()},
 * {@link #onGetSummary()}, and {@link #onGetEnabled()} methods must all be fast. If any are slow,
 * and {@link #onGetEnabled()} methods must all be fast. If either is slow,
 * it can delay the display of settings values for other apps as well. Note further that all are
 * it can delay the display of settings values for other apps as well. Note further that these
 * called on your app's UI thread.
 * methods are called on your app's UI thread.
 * <p/>
 * <p/>
 * For compactness, only one copy of a given setting should be injected. If each account has a
 * For compactness, only one copy of a given setting should be injected. If each account has a
 * distinct value for the setting, then the {@link #onGetSummary()} value should represent a summary
 * distinct value for the setting, then only {@code settingsActivity} should display the value for
 * of the state across all of the accounts and {@code settingsActivity} should display the value for
 * each account.
 * each account.
 */
 */
public abstract class SettingInjectorService extends Service {
public abstract class SettingInjectorService extends Service {
@@ -108,14 +107,6 @@ public abstract class SettingInjectorService extends Service {
    public static final String ACTION_INJECTED_SETTING_CHANGED =
    public static final String ACTION_INJECTED_SETTING_CHANGED =
            "android.location.InjectedSettingChanged";
            "android.location.InjectedSettingChanged";


    /**
     * Name of the bundle key for the string specifying the summary for the setting (e.g., "ON" or
     * "OFF").
     *
     * @hide
     */
    public static final String SUMMARY_KEY = "summary";

    /**
    /**
     * Name of the bundle key for the string specifying whether the setting is currently enabled.
     * Name of the bundle key for the string specifying whether the setting is currently enabled.
     *
     *
@@ -160,42 +151,31 @@ public abstract class SettingInjectorService extends Service {


    private void onHandleIntent(Intent intent) {
    private void onHandleIntent(Intent intent) {


        String summary;
        try {
            summary = onGetSummary();
        } catch (RuntimeException e) {
            // Exception. Send status anyway, so that settings injector can immediately start
            // loading the status of the next setting.
            sendStatus(intent, null, true);
            throw e;
        }

        boolean enabled;
        boolean enabled;
        try {
        try {
            enabled = onGetEnabled();
            enabled = onGetEnabled();
        } catch (RuntimeException e) {
        } catch (RuntimeException e) {
            // Exception. Send status anyway, so that settings injector can immediately start
            // Exception. Send status anyway, so that settings injector can immediately start
            // loading the status of the next setting.
            // loading the status of the next setting.
            sendStatus(intent, summary, true);
            sendStatus(intent, true);
            throw e;
            throw e;
        }
        }


        sendStatus(intent, summary, enabled);
        sendStatus(intent, enabled);
    }
    }


    /**
    /**
     * Send the summary and enabled values back to the caller via the messenger encoded in the
     * Send the enabled values back to the caller via the messenger encoded in the
     * intent.
     * intent.
     */
     */
    private void sendStatus(Intent intent, String summary, boolean enabled) {
    private void sendStatus(Intent intent, boolean enabled) {
        Message message = Message.obtain();
        Message message = Message.obtain();
        Bundle bundle = new Bundle();
        Bundle bundle = new Bundle();
        bundle.putString(SUMMARY_KEY, summary);
        bundle.putBoolean(ENABLED_KEY, enabled);
        bundle.putBoolean(ENABLED_KEY, enabled);
        message.setData(bundle);
        message.setData(bundle);


        if (Log.isLoggable(TAG, Log.DEBUG)) {
        if (Log.isLoggable(TAG, Log.DEBUG)) {
            Log.d(TAG, mName + ": received " + intent + ", summary=" + summary
            Log.d(TAG, mName + ": received " + intent
                    + ", enabled=" + enabled + ", sending message: " + message);
                    + ", enabled=" + enabled + ", sending message: " + message);
        }
        }


@@ -208,13 +188,18 @@ public abstract class SettingInjectorService extends Service {
    }
    }


    /**
    /**
     * Returns the {@link android.preference.Preference#getSummary()} value (allowed to be null or
     * This method is no longer called, because status values are no longer shown for any injected
     * empty). Should not perform unpredictably-long operations such as network access--see the
     * setting.
     * running-time comments in the class-level javadoc.
     *
     *
     * @return the {@link android.preference.Preference#getSummary()} value
     * @return ignored
     *
     * @deprecated not called any more
     */
     */
    protected abstract String onGetSummary();
    @Deprecated
    protected String onGetSummary() {
        // Do not delete until no callers have @Override annotations for this method
        return null;
    }


    /**
    /**
     * Returns the {@link android.preference.Preference#isEnabled()} value. Should not perform
     * Returns the {@link android.preference.Preference#isEnabled()} value. Should not perform