Skip to content

Commit 46bbe84

Browse files
committed
Fix permitted keyboard does not persist in TestDPC
The reason is because initIsComponentEnabledList is run before mPermittedPackageNames is set. Change initIsComponentEnabledList to setIsComponentEnabledList, and subclass calls setIsComponentEnabledList when the list is ready. Bug: 26556732 Change-Id: I19d7ae0b0117f8a5f9e29ac4a4b2a862f8f0c85a
1 parent 07a6b2e commit 46bbe84

File tree

4 files changed

+24
-13
lines changed

4 files changed

+24
-13
lines changed

app/src/main/java/com/afwsamples/testdpc/common/ToggleComponentsArrayAdapter.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import com.afwsamples.testdpc.R;
3636

3737
import java.util.ArrayList;
38+
import java.util.Arrays;
3839
import java.util.List;
3940

4041
/**
@@ -47,14 +48,15 @@ public abstract class ToggleComponentsArrayAdapter extends ArrayAdapter<ResolveI
4748

4849
protected PackageManager mPackageManager;
4950
protected DevicePolicyManager mDevicePolicyManager;
50-
protected ArrayList<Boolean> mIsComponentCheckedList = new ArrayList<Boolean>();
51+
protected List<Boolean> mIsComponentCheckedList;
5152

5253
public ToggleComponentsArrayAdapter(Context context, int resource, List<ResolveInfo> objects) {
5354
super(context, resource, objects);
5455
mPackageManager = context.getPackageManager();
5556
mDevicePolicyManager = (DevicePolicyManager) context.getSystemService(
5657
Context.DEVICE_POLICY_SERVICE);
57-
initIsComponentEnabledList();
58+
// Init mIsComponentCheckedList
59+
mIsComponentCheckedList = new ArrayList<>(Arrays.asList(new Boolean[objects.size()]));
5860
}
5961

6062
/**
@@ -127,9 +129,11 @@ public void onItemClick(AdapterView<?> parent, View view, int position, long id)
127129
protected abstract ApplicationInfo getApplicationInfo(int position);
128130

129131
/**
130-
* Initializes the {@link ToggleComponentsArrayAdapter#mIsComponentCheckedList}.
132+
* Update {@link ToggleComponentsArrayAdapter#mIsComponentCheckedList}.
131133
*/
132-
protected abstract void initIsComponentEnabledList();
134+
protected void setIsComponentEnabledList(List<Boolean> isComponentEnabledList) {
135+
mIsComponentCheckedList = isComponentEnabledList;
136+
}
133137

134138
/**
135139
* Checks whether an activity or service is enabled.

app/src/main/java/com/afwsamples/testdpc/policy/AvailableComponentsInfoArrayAdapter.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ public AvailableComponentsInfoArrayAdapter(Context context,
4040
List<ResolveInfo> resolveInfoList, List<String> permittedPackageNames) {
4141
super(context, R.id.pkg_name, resolveInfoList);
4242
mPermittedPackageNames = permittedPackageNames;
43+
setIsComponentEnabledList(createIsComponentEnabledList());
4344
}
4445

4546
/**
@@ -96,12 +97,13 @@ protected Drawable getApplicationIcon(ApplicationInfo applicationInfo) {
9697
}
9798
}
9899

99-
@Override
100-
protected void initIsComponentEnabledList() {
100+
private List<Boolean> createIsComponentEnabledList() {
101+
List<Boolean> isComponentEnabledList = new ArrayList<>();
101102
int size = getCount();
102103
for (int i = 0; i < size; i++) {
103-
mIsComponentCheckedList.add(isComponentEnabled(getItem(i)));
104+
isComponentEnabledList.add(isComponentEnabled(getItem(i)));
104105
}
106+
return isComponentEnabledList;
105107
}
106108

107109
@Override

app/src/main/java/com/afwsamples/testdpc/policy/blockuninstallation/BlockUninstallationInfoArrayAdapter.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import com.afwsamples.testdpc.R;
2929
import com.afwsamples.testdpc.common.ToggleComponentsArrayAdapter;
3030

31+
import java.util.ArrayList;
3132
import java.util.List;
3233

3334
/**
@@ -38,6 +39,7 @@ public class BlockUninstallationInfoArrayAdapter extends ToggleComponentsArrayAd
3839
public BlockUninstallationInfoArrayAdapter(Context context, int resource,
3940
List<ResolveInfo> resolveInfoList) {
4041
super(context, resource, resolveInfoList);
42+
setIsComponentEnabledList(createIsComponentEnabledList());
4143
}
4244

4345
@Override
@@ -76,12 +78,13 @@ protected ApplicationInfo getApplicationInfo(int position) {
7678
return null;
7779
}
7880

79-
@Override
80-
protected void initIsComponentEnabledList() {
81+
private List<Boolean> createIsComponentEnabledList() {
82+
List<Boolean> isComponentEnabledList = new ArrayList<>();
8183
int size = getCount();
8284
for (int i = 0; i < size; i++) {
83-
mIsComponentCheckedList.add(isComponentEnabled(getItem(i)));
85+
isComponentEnabledList.add(isComponentEnabled(getItem(i)));
8486
}
87+
return isComponentEnabledList;
8588
}
8689

8790
@Override

app/src/main/java/com/afwsamples/testdpc/policy/locktask/LockTaskAppInfoArrayAdapter.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ public class LockTaskAppInfoArrayAdapter extends ToggleComponentsArrayAdapter {
3535

3636
public LockTaskAppInfoArrayAdapter(Context context, int resource, List<ResolveInfo> objects) {
3737
super(context, resource, objects);
38+
setIsComponentEnabledList(createIsComponentEnabledList());
3839
}
3940

4041
@Override
@@ -66,12 +67,13 @@ protected ApplicationInfo getApplicationInfo(int position) {
6667
return getItem(position).activityInfo.applicationInfo;
6768
}
6869

69-
@Override
70-
protected void initIsComponentEnabledList() {
70+
private List<Boolean> createIsComponentEnabledList() {
71+
List<Boolean> isComponentEnabledList = new ArrayList<>();
7172
int size = getCount();
7273
for (int i = 0; i < size; i++) {
73-
mIsComponentCheckedList.add(isComponentEnabled(getItem(i)));
74+
isComponentEnabledList.add(isComponentEnabled(getItem(i)));
7475
}
76+
return isComponentEnabledList;
7577
}
7678

7779
@Override

0 commit comments

Comments
 (0)