Loading src/com/android/settings/fuelgauge/RestrictedAppDetails.java +6 −6 Original line number Diff line number Diff line Loading @@ -20,11 +20,9 @@ import android.app.AppOpsManager; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.UserHandle; import android.support.v14.preference.PreferenceFragment; import android.support.v14.preference.SwitchPreference; import android.support.v7.preference.CheckBoxPreference; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceGroup; Loading @@ -36,9 +34,7 @@ import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.Utils; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.fuelgauge.anomaly.Anomaly; import com.android.settings.fuelgauge.anomaly.AnomalyDialogFragment; import com.android.settings.fuelgauge.anomaly.AnomalyPreference; import com.android.settings.widget.AppCheckBoxPreference; import com.android.settingslib.core.AbstractPreferenceController; import java.util.List; Loading Loading @@ -120,7 +116,7 @@ public class RestrictedAppDetails extends DashboardFragment { final Context context = getPrefContext(); for (int i = 0, size = mPackageOpsList.size(); i < size; i++) { final CheckBoxPreference checkBoxPreference = new CheckBoxPreference(context); final CheckBoxPreference checkBoxPreference = new AppCheckBoxPreference(context); final AppOpsManager.PackageOps packageOps = mPackageOpsList.get(i); try { final ApplicationInfo applicationInfo = mPackageManager.getApplicationInfo( Loading @@ -128,6 +124,10 @@ public class RestrictedAppDetails extends DashboardFragment { checkBoxPreference.setChecked(true); checkBoxPreference.setTitle(mPackageManager.getApplicationLabel(applicationInfo)); checkBoxPreference.setKey(packageOps.getPackageName()); checkBoxPreference.setIcon( Utils.getBadgedIcon(mIconDrawableFactory, mPackageManager, packageOps.getPackageName(), UserHandle.getUserId(packageOps.getUid()))); checkBoxPreference.setOnPreferenceChangeListener((pref, value) -> { // change the toggle final int mode = (Boolean) value ? AppOpsManager.MODE_IGNORED Loading src/com/android/settings/widget/AppCheckBoxPreference.java 0 → 100644 +38 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 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.widget; import android.content.Context; import android.support.v7.preference.CheckBoxPreference; import android.util.AttributeSet; import com.android.settings.R; /** * {@link CheckBoxPreference} that used only to display app */ public class AppCheckBoxPreference extends CheckBoxPreference { public AppCheckBoxPreference(Context context, AttributeSet attrs) { super(context, attrs); setLayoutResource(R.layout.preference_app); } public AppCheckBoxPreference(Context context) { super(context); setLayoutResource(R.layout.preference_app); } } tests/robotests/src/com/android/settings/fuelgauge/RestrictedAppDetailsTest.java +4 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.content.pm.PackageManager; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceCategory; import android.support.v7.preference.PreferenceManager; import android.util.IconDrawableFactory; import com.android.settings.TestConfig; Loading @@ -53,6 +54,8 @@ public class RestrictedAppDetailsTest { private PackageManager mPackageManager; @Mock private ApplicationInfo mApplicationInfo; @Mock private IconDrawableFactory mIconDrawableFactory; @Mock(answer = Answers.RETURNS_DEEP_STUBS) private PreferenceManager mPreferenceManager; private RestrictedAppDetails mFragment; Loading @@ -68,6 +71,7 @@ public class RestrictedAppDetailsTest { doReturn(mPreferenceManager).when(mFragment).getPreferenceManager(); doReturn(mContext).when(mPreferenceManager).getContext(); mFragment.mPackageManager = mPackageManager; mFragment.mIconDrawableFactory = mIconDrawableFactory; mFragment.mPackageOpsList = new ArrayList<>(); mFragment.mPackageOpsList.add( new AppOpsManager.PackageOps(PACKAGE_NAME, UID, null /* entries */)); Loading tests/robotests/src/com/android/settings/widget/AppCheckBoxPreferenceTest.java 0 → 100644 +53 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 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.widget; import static com.google.common.truth.Truth.assertThat; import android.content.Context; import com.android.settings.R; import com.android.settings.TestConfig; import com.android.settings.testutils.SettingsRobolectricTestRunner; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class AppCheckBoxPreferenceTest { private Context mContext; private AppCheckBoxPreference mPreference; private AppCheckBoxPreference mAttrPreference; @Before public void setUp() { mContext = RuntimeEnvironment.application; mPreference = new AppCheckBoxPreference(mContext); mAttrPreference = new AppCheckBoxPreference(mContext, null /* attrs */); } @Test public void testGetLayoutResource() { assertThat(mPreference.getLayoutResource()).isEqualTo(R.layout.preference_app); assertThat(mAttrPreference.getLayoutResource()).isEqualTo(R.layout.preference_app); } } Loading
src/com/android/settings/fuelgauge/RestrictedAppDetails.java +6 −6 Original line number Diff line number Diff line Loading @@ -20,11 +20,9 @@ import android.app.AppOpsManager; import android.content.Context; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.os.UserHandle; import android.support.v14.preference.PreferenceFragment; import android.support.v14.preference.SwitchPreference; import android.support.v7.preference.CheckBoxPreference; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceGroup; Loading @@ -36,9 +34,7 @@ import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.Utils; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.fuelgauge.anomaly.Anomaly; import com.android.settings.fuelgauge.anomaly.AnomalyDialogFragment; import com.android.settings.fuelgauge.anomaly.AnomalyPreference; import com.android.settings.widget.AppCheckBoxPreference; import com.android.settingslib.core.AbstractPreferenceController; import java.util.List; Loading Loading @@ -120,7 +116,7 @@ public class RestrictedAppDetails extends DashboardFragment { final Context context = getPrefContext(); for (int i = 0, size = mPackageOpsList.size(); i < size; i++) { final CheckBoxPreference checkBoxPreference = new CheckBoxPreference(context); final CheckBoxPreference checkBoxPreference = new AppCheckBoxPreference(context); final AppOpsManager.PackageOps packageOps = mPackageOpsList.get(i); try { final ApplicationInfo applicationInfo = mPackageManager.getApplicationInfo( Loading @@ -128,6 +124,10 @@ public class RestrictedAppDetails extends DashboardFragment { checkBoxPreference.setChecked(true); checkBoxPreference.setTitle(mPackageManager.getApplicationLabel(applicationInfo)); checkBoxPreference.setKey(packageOps.getPackageName()); checkBoxPreference.setIcon( Utils.getBadgedIcon(mIconDrawableFactory, mPackageManager, packageOps.getPackageName(), UserHandle.getUserId(packageOps.getUid()))); checkBoxPreference.setOnPreferenceChangeListener((pref, value) -> { // change the toggle final int mode = (Boolean) value ? AppOpsManager.MODE_IGNORED Loading
src/com/android/settings/widget/AppCheckBoxPreference.java 0 → 100644 +38 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 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.widget; import android.content.Context; import android.support.v7.preference.CheckBoxPreference; import android.util.AttributeSet; import com.android.settings.R; /** * {@link CheckBoxPreference} that used only to display app */ public class AppCheckBoxPreference extends CheckBoxPreference { public AppCheckBoxPreference(Context context, AttributeSet attrs) { super(context, attrs); setLayoutResource(R.layout.preference_app); } public AppCheckBoxPreference(Context context) { super(context); setLayoutResource(R.layout.preference_app); } }
tests/robotests/src/com/android/settings/fuelgauge/RestrictedAppDetailsTest.java +4 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import android.content.pm.PackageManager; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceCategory; import android.support.v7.preference.PreferenceManager; import android.util.IconDrawableFactory; import com.android.settings.TestConfig; Loading @@ -53,6 +54,8 @@ public class RestrictedAppDetailsTest { private PackageManager mPackageManager; @Mock private ApplicationInfo mApplicationInfo; @Mock private IconDrawableFactory mIconDrawableFactory; @Mock(answer = Answers.RETURNS_DEEP_STUBS) private PreferenceManager mPreferenceManager; private RestrictedAppDetails mFragment; Loading @@ -68,6 +71,7 @@ public class RestrictedAppDetailsTest { doReturn(mPreferenceManager).when(mFragment).getPreferenceManager(); doReturn(mContext).when(mPreferenceManager).getContext(); mFragment.mPackageManager = mPackageManager; mFragment.mIconDrawableFactory = mIconDrawableFactory; mFragment.mPackageOpsList = new ArrayList<>(); mFragment.mPackageOpsList.add( new AppOpsManager.PackageOps(PACKAGE_NAME, UID, null /* entries */)); Loading
tests/robotests/src/com/android/settings/widget/AppCheckBoxPreferenceTest.java 0 → 100644 +53 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 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.widget; import static com.google.common.truth.Truth.assertThat; import android.content.Context; import com.android.settings.R; import com.android.settings.TestConfig; import com.android.settings.testutils.SettingsRobolectricTestRunner; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RuntimeEnvironment; import org.robolectric.annotation.Config; @RunWith(SettingsRobolectricTestRunner.class) @Config(manifest = TestConfig.MANIFEST_PATH, sdk = TestConfig.SDK_VERSION) public class AppCheckBoxPreferenceTest { private Context mContext; private AppCheckBoxPreference mPreference; private AppCheckBoxPreference mAttrPreference; @Before public void setUp() { mContext = RuntimeEnvironment.application; mPreference = new AppCheckBoxPreference(mContext); mAttrPreference = new AppCheckBoxPreference(mContext, null /* attrs */); } @Test public void testGetLayoutResource() { assertThat(mPreference.getLayoutResource()).isEqualTo(R.layout.preference_app); assertThat(mAttrPreference.getLayoutResource()).isEqualTo(R.layout.preference_app); } }