diff options
-rw-r--r-- | api/current.xml | 15 | ||||
-rw-r--r-- | core/java/android/app/ApplicationContext.java | 4 | ||||
-rw-r--r-- | core/java/android/content/pm/IPackageManager.aidl | 2 | ||||
-rw-r--r-- | core/java/android/content/pm/PackageInfo.java | 14 | ||||
-rw-r--r-- | core/java/android/content/pm/PackageManager.java | 4 | ||||
-rw-r--r-- | core/java/android/content/pm/PackageParser.java | 16 | ||||
-rw-r--r-- | core/java/android/content/pm/ThemeInfo.java | 18 | ||||
-rw-r--r-- | services/java/com/android/server/PackageManagerService.java | 7 | ||||
-rw-r--r-- | test-runner/android/test/mock/MockPackageManager.java | 2 |
9 files changed, 41 insertions, 41 deletions
diff --git a/api/current.xml b/api/current.xml index 8aaebb4..de34947 100644 --- a/api/current.xml +++ b/api/current.xml @@ -32216,10 +32216,11 @@ visibility="public" > </field> -<field name="themeInfo" - type="android.content.pm.ThemeInfo" +<field name="themeInfos" + type="android.content.pm.ThemeInfo[]" transient="false" volatile="false" + value="null" static="false" final="false" deprecated="not deprecated" @@ -32768,8 +32769,8 @@ <parameter name="flags" type="int"> </parameter> </method> -<method name="getInstalledThemes" - return="java.util.List<android.content.pm.ThemeInfo>" +<method name="getInstalledThemePackages" + return="java.util.List<android.content.pm.PackageInfo>" abstract="true" native="false" synchronized="false" @@ -35020,7 +35021,7 @@ visibility="public" > </field> -<field name="themePackage" +<field name="themeName" type="java.lang.String" transient="false" volatile="false" @@ -101092,8 +101093,8 @@ <parameter name="flags" type="int"> </parameter> </method> -<method name="getInstalledThemes" - return="java.util.List<android.content.pm.ThemeInfo>" +<method name="getInstalledThemePackages" + return="java.util.List<android.content.pm.PackageInfo>" abstract="false" native="false" synchronized="false" diff --git a/core/java/android/app/ApplicationContext.java b/core/java/android/app/ApplicationContext.java index 9368b37..0f1194f 100644 --- a/core/java/android/app/ApplicationContext.java +++ b/core/java/android/app/ApplicationContext.java @@ -1757,9 +1757,9 @@ class ApplicationContext extends Context { } @Override - public List<ThemeInfo> getInstalledThemes() { + public List<PackageInfo> getInstalledThemePackages() { try { - return mPM.getInstalledThemes(); + return mPM.getInstalledThemePackages(); } catch (RemoteException e) { throw new RuntimeException("Package manager has died", e); } diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl index 4084206..5258186 100644 --- a/core/java/android/content/pm/IPackageManager.aidl +++ b/core/java/android/content/pm/IPackageManager.aidl @@ -101,7 +101,7 @@ interface IPackageManager { List<PackageInfo> getInstalledPackages(int flags); - List<ThemeInfo> getInstalledThemes(); + List<PackageInfo> getInstalledThemePackages(); List<ApplicationInfo> getInstalledApplications(int flags); diff --git a/core/java/android/content/pm/PackageInfo.java b/core/java/android/content/pm/PackageInfo.java index c77c01d..bf25078 100644 --- a/core/java/android/content/pm/PackageInfo.java +++ b/core/java/android/content/pm/PackageInfo.java @@ -131,7 +131,7 @@ public class PackageInfo implements Parcelable { public boolean isThemeApk = false; // ThemeInfo - public ThemeInfo themeInfo; + public ThemeInfo [] themeInfos; public PackageInfo() { } @@ -168,12 +168,7 @@ public class PackageInfo implements Parcelable { dest.writeStringArray(requestedPermissions); dest.writeTypedArray(signatures, parcelableFlags); dest.writeTypedArray(configPreferences, parcelableFlags); - if (themeInfo != null) { - dest.writeInt(1); - themeInfo.writeToParcel(dest, parcelableFlags); - } else { - dest.writeInt(0); - } + dest.writeTypedArray(themeInfos, parcelableFlags); } public static final Parcelable.Creator<PackageInfo> CREATOR @@ -207,9 +202,6 @@ public class PackageInfo implements Parcelable { requestedPermissions = source.createStringArray(); signatures = source.createTypedArray(Signature.CREATOR); configPreferences = source.createTypedArray(ConfigurationInfo.CREATOR); - int hasThemeInfo = source.readInt(); - if (hasThemeInfo != 0) { - themeInfo = ThemeInfo.CREATOR.createFromParcel(source); - } + themeInfos = source.createTypedArray(ThemeInfo.CREATOR); } } diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java index 4b91d7a..55396eb 100644 --- a/core/java/android/content/pm/PackageManager.java +++ b/core/java/android/content/pm/PackageManager.java @@ -726,11 +726,11 @@ public abstract class PackageManager { * Return a List of all theme packages that are installed * on the device. * - * @return A List of ThemeInfo objects, one for each theme package + * @return A List of PackageInfo objects, one for each theme package * that is installed on the device. * */ - public abstract List<ThemeInfo> getInstalledThemes(); + public abstract List<PackageInfo> getInstalledThemePackages(); /** * Check whether a particular package has been granted a particular diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index 837df24..ba85ec3 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -104,7 +104,15 @@ public class PackageParser { pi.sharedUserId = p.mSharedUserId; pi.sharedUserLabel = p.mSharedUserLabel; pi.isThemeApk = p.mIsThemeApk; - pi.themeInfo = p.mThemeInfo; + if (pi.isThemeApk) { + int N = p.mThemeInfos.size(); + if (N > 0) { + pi.themeInfos = new ThemeInfo[N]; + for (int i = 0; i < N; i++) { + pi.themeInfos[i] = p.mThemeInfos.get(i); + } + } + } pi.applicationInfo = p.applicationInfo; if ((flags&PackageManager.GET_GIDS) != 0) { pi.gids = gids; @@ -705,7 +713,7 @@ public class PackageParser { // Just skip this tag XmlUtils.skipCurrentTag(parser); continue; - } else if (tagName.equals("themeapk")) { + } else if (tagName.equals("theme")) { // this is a theme apk. // TODO: // The actions listed below should be implemented @@ -722,7 +730,7 @@ public class PackageParser { // from the appropriate store(s) on the apk un-install. // 4. For actions 1&2 remove the resources from resource/file cache. pkg.mIsThemeApk = true; - pkg.mThemeInfo = new ThemeInfo(attrs); + pkg.mThemeInfos.add(new ThemeInfo(attrs)); } else if (RIGID_PARSER) { outError[0] = "Bad element under <manifest>: " + parser.getName(); @@ -2084,7 +2092,7 @@ public class PackageParser { public boolean mIsThemeApk = false; // Theme info - public ThemeInfo mThemeInfo; + public final ArrayList<ThemeInfo> mThemeInfos = new ArrayList<ThemeInfo>(0); // Additional data supplied by callers. public Object mExtras; diff --git a/core/java/android/content/pm/ThemeInfo.java b/core/java/android/content/pm/ThemeInfo.java index e614947..a9e15a0 100644 --- a/core/java/android/content/pm/ThemeInfo.java +++ b/core/java/android/content/pm/ThemeInfo.java @@ -14,10 +14,10 @@ import android.util.AttributeSet; /** * Overall information about "theme" package. This corresponds - * to the information collected from AndroidManifest.xml (themeapk tag). + * to the information collected from AndroidManifest.xml (theme tag). * - * Below is an example of themeapk tag - * <themeapk + * Below is an example of theme tag + * <theme * pluto:themeName="Pluto Default" * pluto:themeThumbprint="@drawable/app_thumbnail" * pluto:themeAuthor="John Doe" @@ -79,12 +79,12 @@ public final class ThemeInfo implements Parcelable { public int theme = -1; /** - * The name of the theme package. + * The name of the theme (as displayed by UI). * * @see themeName attribute * */ - public String themePackage; + public String themeName; /** * The name of the call ringtone audio file. @@ -228,7 +228,7 @@ public final class ThemeInfo implements Parcelable { switch (index) { case THEME_PACKAGE_INDEX: // theme name - themePackage = attrs.getAttributeValue(i); + themeName = attrs.getAttributeValue(i); break; case THUMBNAIL_INDEX: @@ -279,7 +279,7 @@ public final class ThemeInfo implements Parcelable { } } if (numberOfCompulsoryAttributes < compulsoryAttributes.length) { - throw new XmlPullParserException("Not all compulsory attributes are specified in <themeapk>"); + throw new XmlPullParserException("Not all compulsory attributes are specified in <theme>"); } } @@ -311,7 +311,7 @@ public final class ThemeInfo implements Parcelable { dest.writeString(favesAppImageName); dest.writeInt(thumbnail); dest.writeInt(theme); - dest.writeString(themePackage); + dest.writeString(themeName); dest.writeString(ringtoneName); dest.writeString(notificationRingtoneName); dest.writeString(author); @@ -335,7 +335,7 @@ public final class ThemeInfo implements Parcelable { favesAppImageName = source.readString(); thumbnail = source.readInt(); theme = source.readInt(); - themePackage = source.readString(); + themeName = source.readString(); ringtoneName = source.readString(); notificationRingtoneName = source.readString(); author = source.readString(); diff --git a/services/java/com/android/server/PackageManagerService.java b/services/java/com/android/server/PackageManagerService.java index a3d2ce2..7d8cd73 100644 --- a/services/java/com/android/server/PackageManagerService.java +++ b/services/java/com/android/server/PackageManagerService.java @@ -45,7 +45,6 @@ import android.content.pm.InstrumentationInfo; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; import android.content.pm.PackageStats; -import android.content.pm.ThemeInfo; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DEFAULT; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_DISABLED; import static android.content.pm.PackageManager.COMPONENT_ENABLED_STATE_ENABLED; @@ -1557,15 +1556,15 @@ class PackageManagerService extends IPackageManager.Stub { return finalList; } - public List<ThemeInfo> getInstalledThemes() { + public List<PackageInfo> getInstalledThemePackages() { // Returns a list of theme APKs. - ArrayList<ThemeInfo> finalList = new ArrayList<ThemeInfo>(); + ArrayList<PackageInfo> finalList = new ArrayList<PackageInfo>(); List<PackageInfo> installedPackagesList = getInstalledPackages(0); Iterator<PackageInfo> i = installedPackagesList.iterator(); while (i.hasNext()) { final PackageInfo pi = i.next(); if (pi != null && pi.isThemeApk) { - finalList.add(pi.themeInfo); + finalList.add(pi); } } return finalList; diff --git a/test-runner/android/test/mock/MockPackageManager.java b/test-runner/android/test/mock/MockPackageManager.java index 7d0dbfb..8e631b0 100644 --- a/test-runner/android/test/mock/MockPackageManager.java +++ b/test-runner/android/test/mock/MockPackageManager.java @@ -121,7 +121,7 @@ public class MockPackageManager extends PackageManager { } @Override - public List<ThemeInfo> getInstalledThemes() { + public List<PackageInfo> getInstalledThemePackages() { throw new UnsupportedOperationException(); } |