Loading res/values/strings.xml +0 −6 Original line number Diff line number Diff line Loading @@ -9702,12 +9702,6 @@ <!-- [CHAR_LIMIT=60] Label for special access screen --> <string name="special_access">Special app access</string> <!-- Summary for special access settings [CHAR_LIMIT=NONE] --> <plurals name="special_access_summary"> <item quantity="one">1 app can use unrestricted data</item> <item quantity="other"><xliff:g id="count" example="10">%d</xliff:g> apps can use unrestricted data</item> </plurals> <!-- Title for the See more preference item in Special app access settings [CHAR LIMIT=30] --> <string name="special_access_more">See more</string> res/xml/apps.xml +1 −2 Original line number Diff line number Diff line Loading @@ -105,7 +105,6 @@ android:key="special_access" android:fragment="com.android.settings.applications.specialaccess.SpecialAccessSettings" android:title="@string/special_access" android:order="20" settings:controller="com.android.settings.applications.SpecialAppAccessPreferenceController"/> android:order="20"/> </PreferenceScreen> src/com/android/settings/applications/AppDashboardFragment.java +0 −1 Original line number Diff line number Diff line Loading @@ -66,7 +66,6 @@ public class AppDashboardFragment extends DashboardFragment { @Override public void onAttach(Context context) { super.onAttach(context); use(SpecialAppAccessPreferenceController.class).setSession(getSettingsLifecycle()); mAppsPreferenceController = use(AppsPreferenceController.class); mAppsPreferenceController.setFragment(this /* fragment */); getSettingsLifecycle().addObserver(mAppsPreferenceController); Loading src/com/android/settings/applications/SpecialAppAccessPreferenceController.javadeleted 100644 → 0 +0 −154 Original line number Diff line number Diff line /* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the specific language governing * permissions and limitations under the License. */ package com.android.settings.applications; import android.app.Application; import android.content.Context; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settings.datausage.AppStateDataUsageBridge; import com.android.settings.datausage.AppStateDataUsageBridge.DataUsageState; import com.android.settings.datausage.DataSaverBackend; import com.android.settingslib.applications.ApplicationsState; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnDestroy; import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStop; import java.util.ArrayList; public class SpecialAppAccessPreferenceController extends BasePreferenceController implements AppStateBaseBridge.Callback, ApplicationsState.Callbacks, LifecycleObserver, OnStart, OnStop, OnDestroy { @VisibleForTesting ApplicationsState.Session mSession; private final ApplicationsState mApplicationsState; private final AppStateDataUsageBridge mDataUsageBridge; private final DataSaverBackend mDataSaverBackend; private Preference mPreference; private boolean mExtraLoaded; public SpecialAppAccessPreferenceController(Context context, String key) { super(context, key); mApplicationsState = ApplicationsState.getInstance( (Application) context.getApplicationContext()); mDataSaverBackend = new DataSaverBackend(context); mDataUsageBridge = new AppStateDataUsageBridge(mApplicationsState, this, mDataSaverBackend); } public void setSession(Lifecycle lifecycle) { mSession = mApplicationsState.newSession(this, lifecycle); } @Override public int getAvailabilityStatus() { return AVAILABLE; } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreference = screen.findPreference(getPreferenceKey()); } @Override public void onStart() { mDataUsageBridge.resume(true /* forceLoadAllApps */); } @Override public void onStop() { mDataUsageBridge.pause(); } @Override public void onDestroy() { mDataUsageBridge.release(); } @Override public void updateState(Preference preference) { updateSummary(); } @Override public void onExtraInfoUpdated() { mExtraLoaded = true; updateSummary(); } private void updateSummary() { if (!mExtraLoaded || mPreference == null) { return; } final ArrayList<ApplicationsState.AppEntry> allApps = mSession.getAllApps(); int count = 0; for (ApplicationsState.AppEntry entry : allApps) { if (!ApplicationsState.FILTER_DOWNLOADED_AND_LAUNCHER.filterApp(entry)) { continue; } if (entry.extraInfo instanceof DataUsageState && ((DataUsageState) entry.extraInfo).isDataSaverAllowlisted) { count++; } } mPreference.setSummary(mContext.getResources().getQuantityString( R.plurals.special_access_summary, count, count)); } @Override public void onRunningStateChanged(boolean running) { } @Override public void onPackageListChanged() { } @Override public void onRebuildComplete(ArrayList<ApplicationsState.AppEntry> apps) { } @Override public void onPackageIconChanged() { } @Override public void onPackageSizeChanged(String packageName) { } @Override public void onAllSizesComputed() { } @Override public void onLauncherInfoChanged() { // when the value of the AppEntry.hasLauncherEntry was changed. updateSummary(); } @Override public void onLoadEntriesCompleted() { } } src/com/android/settings/applications/specialaccess/DataSaverController.javadeleted 100644 → 0 +0 −36 Original line number Diff line number Diff line /* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.applications.specialaccess; import android.content.Context; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; public class DataSaverController extends BasePreferenceController { public DataSaverController(Context context, String key) { super(context, key); } @AvailabilityStatus public int getAvailabilityStatus() { return mContext.getResources().getBoolean(R.bool.config_show_data_saver) ? AVAILABLE : UNSUPPORTED_ON_DEVICE; } } Loading
res/values/strings.xml +0 −6 Original line number Diff line number Diff line Loading @@ -9702,12 +9702,6 @@ <!-- [CHAR_LIMIT=60] Label for special access screen --> <string name="special_access">Special app access</string> <!-- Summary for special access settings [CHAR_LIMIT=NONE] --> <plurals name="special_access_summary"> <item quantity="one">1 app can use unrestricted data</item> <item quantity="other"><xliff:g id="count" example="10">%d</xliff:g> apps can use unrestricted data</item> </plurals> <!-- Title for the See more preference item in Special app access settings [CHAR LIMIT=30] --> <string name="special_access_more">See more</string>
res/xml/apps.xml +1 −2 Original line number Diff line number Diff line Loading @@ -105,7 +105,6 @@ android:key="special_access" android:fragment="com.android.settings.applications.specialaccess.SpecialAccessSettings" android:title="@string/special_access" android:order="20" settings:controller="com.android.settings.applications.SpecialAppAccessPreferenceController"/> android:order="20"/> </PreferenceScreen>
src/com/android/settings/applications/AppDashboardFragment.java +0 −1 Original line number Diff line number Diff line Loading @@ -66,7 +66,6 @@ public class AppDashboardFragment extends DashboardFragment { @Override public void onAttach(Context context) { super.onAttach(context); use(SpecialAppAccessPreferenceController.class).setSession(getSettingsLifecycle()); mAppsPreferenceController = use(AppsPreferenceController.class); mAppsPreferenceController.setFragment(this /* fragment */); getSettingsLifecycle().addObserver(mAppsPreferenceController); Loading
src/com/android/settings/applications/SpecialAppAccessPreferenceController.javadeleted 100644 → 0 +0 −154 Original line number Diff line number Diff line /* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the specific language governing * permissions and limitations under the License. */ package com.android.settings.applications; import android.app.Application; import android.content.Context; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; import com.android.settings.datausage.AppStateDataUsageBridge; import com.android.settings.datausage.AppStateDataUsageBridge.DataUsageState; import com.android.settings.datausage.DataSaverBackend; import com.android.settingslib.applications.ApplicationsState; import com.android.settingslib.core.lifecycle.Lifecycle; import com.android.settingslib.core.lifecycle.LifecycleObserver; import com.android.settingslib.core.lifecycle.events.OnDestroy; import com.android.settingslib.core.lifecycle.events.OnStart; import com.android.settingslib.core.lifecycle.events.OnStop; import java.util.ArrayList; public class SpecialAppAccessPreferenceController extends BasePreferenceController implements AppStateBaseBridge.Callback, ApplicationsState.Callbacks, LifecycleObserver, OnStart, OnStop, OnDestroy { @VisibleForTesting ApplicationsState.Session mSession; private final ApplicationsState mApplicationsState; private final AppStateDataUsageBridge mDataUsageBridge; private final DataSaverBackend mDataSaverBackend; private Preference mPreference; private boolean mExtraLoaded; public SpecialAppAccessPreferenceController(Context context, String key) { super(context, key); mApplicationsState = ApplicationsState.getInstance( (Application) context.getApplicationContext()); mDataSaverBackend = new DataSaverBackend(context); mDataUsageBridge = new AppStateDataUsageBridge(mApplicationsState, this, mDataSaverBackend); } public void setSession(Lifecycle lifecycle) { mSession = mApplicationsState.newSession(this, lifecycle); } @Override public int getAvailabilityStatus() { return AVAILABLE; } @Override public void displayPreference(PreferenceScreen screen) { super.displayPreference(screen); mPreference = screen.findPreference(getPreferenceKey()); } @Override public void onStart() { mDataUsageBridge.resume(true /* forceLoadAllApps */); } @Override public void onStop() { mDataUsageBridge.pause(); } @Override public void onDestroy() { mDataUsageBridge.release(); } @Override public void updateState(Preference preference) { updateSummary(); } @Override public void onExtraInfoUpdated() { mExtraLoaded = true; updateSummary(); } private void updateSummary() { if (!mExtraLoaded || mPreference == null) { return; } final ArrayList<ApplicationsState.AppEntry> allApps = mSession.getAllApps(); int count = 0; for (ApplicationsState.AppEntry entry : allApps) { if (!ApplicationsState.FILTER_DOWNLOADED_AND_LAUNCHER.filterApp(entry)) { continue; } if (entry.extraInfo instanceof DataUsageState && ((DataUsageState) entry.extraInfo).isDataSaverAllowlisted) { count++; } } mPreference.setSummary(mContext.getResources().getQuantityString( R.plurals.special_access_summary, count, count)); } @Override public void onRunningStateChanged(boolean running) { } @Override public void onPackageListChanged() { } @Override public void onRebuildComplete(ArrayList<ApplicationsState.AppEntry> apps) { } @Override public void onPackageIconChanged() { } @Override public void onPackageSizeChanged(String packageName) { } @Override public void onAllSizesComputed() { } @Override public void onLauncherInfoChanged() { // when the value of the AppEntry.hasLauncherEntry was changed. updateSummary(); } @Override public void onLoadEntriesCompleted() { } }
src/com/android/settings/applications/specialaccess/DataSaverController.javadeleted 100644 → 0 +0 −36 Original line number Diff line number Diff line /* * Copyright (C) 2017 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.applications.specialaccess; import android.content.Context; import com.android.settings.R; import com.android.settings.core.BasePreferenceController; public class DataSaverController extends BasePreferenceController { public DataSaverController(Context context, String key) { super(context, key); } @AvailabilityStatus public int getAvailabilityStatus() { return mContext.getResources().getBoolean(R.bool.config_show_data_saver) ? AVAILABLE : UNSUPPORTED_ON_DEVICE; } }