Merge "SettingsLib: Add an API method to query whether a package is a system module." into qt-dev
diff --git a/packages/SettingsLib/src/com/android/settingslib/applications/AppUtils.java b/packages/SettingsLib/src/com/android/settingslib/applications/AppUtils.java
index 42afb69..c4ff719 100644
--- a/packages/SettingsLib/src/com/android/settingslib/applications/AppUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/applications/AppUtils.java
@@ -132,4 +132,12 @@
.isHiddenModule(packageName);
}
+ /**
+ * Returns a boolean indicating whether a given package is a system module.
+ */
+ public static boolean isSystemModule(Context context, String packageName) {
+ return ApplicationsState.getInstance((Application) context.getApplicationContext())
+ .isSystemModule(packageName);
+ }
+
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java
index 5eaa163..f9df5a3 100644
--- a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java
+++ b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java
@@ -139,7 +139,8 @@
String mCurComputingSizePkg;
int mCurComputingSizeUserId;
boolean mSessionsChanged;
- final HashSet<String> mHiddenModules = new HashSet<>();
+ // Maps all installed modules on the system to whether they're hidden or not.
+ final HashMap<String, Boolean> mSystemModules = new HashMap<>();
// Temporary for dispatching session callbacks. Only touched by main thread.
final ArrayList<WeakReference<Session>> mActiveSessions = new ArrayList<>();
@@ -212,9 +213,7 @@
final List<ModuleInfo> moduleInfos = mPm.getInstalledModules(0 /* flags */);
for (ModuleInfo info : moduleInfos) {
- if (info.isHidden()) {
- mHiddenModules.add(info.getPackageName());
- }
+ mSystemModules.put(info.getPackageName(), info.isHidden());
}
/**
@@ -426,7 +425,16 @@
}
boolean isHiddenModule(String packageName) {
- return mHiddenModules.contains(packageName);
+ Boolean isHidden = mSystemModules.get(packageName);
+ if (isHidden == null) {
+ return false;
+ }
+
+ return isHidden;
+ }
+
+ boolean isSystemModule(String packageName) {
+ return mSystemModules.containsKey(packageName);
}
void doPauseIfNeededLocked() {
@@ -688,7 +696,10 @@
Log.i(TAG, "Looking up entry of pkg " + info.packageName + ": " + entry);
}
if (entry == null) {
- if (mHiddenModules.contains(info.packageName)) {
+ if (isHiddenModule(info.packageName)) {
+ if (DEBUG) {
+ Log.i(TAG, "No AppEntry for " + info.packageName + " (hidden module)");
+ }
return null;
}
if (DEBUG) {