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

Commit ee7139a8 authored by Chaohui Wang's avatar Chaohui Wang
Browse files

Remove injecting developer options into Settings itself

- It can improve performance because we use less injected item
- Also use RestrictedPreference instead just checking restrictions,
  so we follow policy transparency.

Note: Renamed DevelopmentSettingsDashboardActivity to
DevelopmentSettingsActivity,
because DevelopmentSettingsDashboardActivity could in disabled state
even after Settings upgrades, use a new name to prevent this issue.

Bug: 311604902
Test: manual - turn on / off Developer Options
Test: unit test
Change-Id: I17be117ae59e59410687e6d08fd5edd034d0508f
parent c9ccf861
Loading
Loading
Loading
Loading
+2 −30
Original line number Diff line number Diff line
@@ -2864,11 +2864,10 @@
        </activity>

        <activity
            android:name="Settings$DevelopmentSettingsDashboardActivity"
            android:name="Settings$DevelopmentSettingsActivity"
            android:label="@string/development_settings_title"
            android:icon="@drawable/ic_settings_development"
            android:exported="true"
            android:enabled="false">
            android:exported="true">
            <intent-filter android:priority="1">
                <action android:name="android.settings.APPLICATION_DEVELOPMENT_SETTINGS" />
                <action android:name="com.android.settings.APPLICATION_DEVELOPMENT_SETTINGS" />
@@ -2879,35 +2878,8 @@
                <action android:name="com.android.settings.action.SETTINGS" />
                <action android:name="com.android.intent.action.SHOW_CONTRAST_DIALOG" />
            </intent-filter>
            <meta-data android:name="com.android.settings.order" android:value="-40"/>
            <meta-data android:name="com.android.settings.category"
                       android:value="com.android.settings.category.ia.system" />
            <meta-data android:name="com.android.settings.summary"
                       android:resource="@string/summary_empty"/>
            <meta-data android:name="com.android.settings.icon"
                       android:resource="@drawable/ic_settings_development" />
            <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
                       android:value="com.android.settings.development.DevelopmentSettingsDashboardFragment" />
            <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
                       android:value="@string/menu_key_system"/>
            <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
                       android:value="true" />
        </activity>

        <!-- The opposite of DevelopmentSettingsActivity, it's no-op and only enabled when the real
             activity is disabled to be CTS compliant. -->
        <activity
            android:name=".development.DevelopmentSettingsDisabledActivity"
            android:icon="@drawable/ic_settings_development"
            android:label="@string/development_settings_title"
            android:excludeFromRecents="true"
            android:exported="true"
            android:theme="@style/Transparent">
            <intent-filter android:priority="-1">
                <action android:name="android.settings.APPLICATION_DEVELOPMENT_SETTINGS" />
                <action android:name="com.android.settings.APPLICATION_DEVELOPMENT_SETTINGS" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

        <activity
+5 −0
Original line number Diff line number Diff line
@@ -100,6 +100,11 @@
        android:fragment="com.android.settings.users.UserSettings"
        settings:controller="com.android.settings.users.MultiUserPreferenceController"/>

    <com.android.settings.spa.preference.ComposePreference
        android:key="developer_options"
        android:order="-40"
        settings:controller="com.android.settings.system.DeveloperOptionsController"/>

    <Preference
        android:key="reset_dashboard"
        android:title="@string/reset_dashboard_title"
+1 −1
Original line number Diff line number Diff line
@@ -134,7 +134,7 @@ public class Settings extends SettingsActivity {
    public static class HighPowerApplicationsActivity extends SettingsActivity { /* empty */ }
    public static class BackgroundCheckSummaryActivity extends SettingsActivity { /* empty */ }
    public static class StorageUseActivity extends SettingsActivity { /* empty */ }
    public static class DevelopmentSettingsDashboardActivity extends SettingsActivity { /* empty */ }
    public static class DevelopmentSettingsActivity extends SettingsActivity { /* empty */ }
    public static class AccessibilitySettingsActivity extends SettingsActivity { /* empty */ }
    public static class AccessibilityDetailsSettingsActivity extends SettingsActivity { /* empty */ }
    public static class CaptioningSettingsActivity extends SettingsActivity { /* empty */ }
+0 −22
Original line number Diff line number Diff line
@@ -48,7 +48,6 @@ import androidx.annotation.VisibleForTesting;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import androidx.preference.Preference;
import androidx.preference.PreferenceFragmentCompat;
import androidx.preference.PreferenceManager;
@@ -70,7 +69,6 @@ import com.android.settings.wfd.WifiDisplaySettings;
import com.android.settings.widget.SettingsMainSwitchBar;
import com.android.settingslib.core.instrumentation.Instrumentable;
import com.android.settingslib.core.instrumentation.SharedPreferencesLogger;
import com.android.settingslib.development.DevelopmentSettingsEnabler;
import com.android.settingslib.drawer.DashboardCategory;

import com.google.android.setupcompat.util.WizardManagerHelper;
@@ -174,8 +172,6 @@ public class SettingsActivity extends SettingsBaseActivity
    private CharSequence mInitialTitle;
    private int mInitialTitleResId;

    private BroadcastReceiver mDevelopmentSettingsListener;

    private boolean mBatteryPresent = true;
    private BroadcastReceiver mBatteryInfoReceiver = new BroadcastReceiver() {
        @Override
@@ -614,15 +610,6 @@ public class SettingsActivity extends SettingsBaseActivity
        super.onResume();
        setActionBarStatus();

        mDevelopmentSettingsListener = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                updateTilesList();
            }
        };
        LocalBroadcastManager.getInstance(this).registerReceiver(mDevelopmentSettingsListener,
                new IntentFilter(DevelopmentSettingsEnabler.DEVELOPMENT_SETTINGS_CHANGED_ACTION));

        registerReceiver(mBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

        updateTilesList();
@@ -631,8 +618,6 @@ public class SettingsActivity extends SettingsBaseActivity
    @Override
    protected void onPause() {
        super.onPause();
        LocalBroadcastManager.getInstance(this).unregisterReceiver(mDevelopmentSettingsListener);
        mDevelopmentSettingsListener = null;
        unregisterReceiver(mBatteryInfoReceiver);
    }

@@ -781,13 +766,6 @@ public class SettingsActivity extends SettingsBaseActivity
                Utils.isBandwidthControlEnabled(), isAdmin)
                || somethingChanged;

        final boolean showDev = DevelopmentSettingsEnabler.isDevelopmentSettingsEnabled(this)
                && !Utils.isMonkeyRunning();
        somethingChanged = setTileEnabled(changedList, new ComponentName(packageName,
                        Settings.DevelopmentSettingsDashboardActivity.class.getName()),
                showDev, isAdmin)
                || somethingChanged;

        somethingChanged = setTileEnabled(changedList, new ComponentName(packageName,
                        Settings.WifiDisplaySettingsActivity.class.getName()),
                WifiDisplaySettings.isAvailable(this), isAdmin)
+7 −0
Original line number Diff line number Diff line
@@ -47,6 +47,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.Toast;

import androidx.annotation.VisibleForTesting;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
@@ -230,6 +231,12 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra
            getActivity().finish();
            return;
        }
        Context context = requireContext();
        if (!DevelopmentSettingsEnabler.isDevelopmentSettingsEnabled(context)) {
            Toast.makeText(context, R.string.dev_settings_disabled_warning, Toast.LENGTH_SHORT)
                    .show();
            finish();
        }
    }

    @Override
Loading