diff options
author | Kenny Root <kroot@google.com> | 2011-08-10 14:28:13 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-08-10 14:28:13 -0700 |
commit | 4a51773e4aa6b447e9cbf70030eaf92e4e6d7b90 (patch) | |
tree | 97fc0de169fc471c910909ee941405e21b56e5f3 /core | |
parent | e963ebdb443e400161e01ae744bb3296c86a5483 (diff) | |
parent | d2d2925ff7ae9456c1c6c9147b1b9fd9a99ea607 (diff) | |
download | frameworks_base-4a51773e4aa6b447e9cbf70030eaf92e4e6d7b90.zip frameworks_base-4a51773e4aa6b447e9cbf70030eaf92e4e6d7b90.tar.gz frameworks_base-4a51773e4aa6b447e9cbf70030eaf92e4e6d7b90.tar.bz2 |
Merge "Eliminate warnings from PackageParser"
Diffstat (limited to 'core')
-rw-r--r-- | core/java/android/content/IntentFilter.java | 2 | ||||
-rw-r--r-- | core/java/android/content/pm/PackageParser.java | 215 |
2 files changed, 117 insertions, 100 deletions
diff --git a/core/java/android/content/IntentFilter.java b/core/java/android/content/IntentFilter.java index f3b1d94..f9b3fd5 100644 --- a/core/java/android/content/IntentFilter.java +++ b/core/java/android/content/IntentFilter.java @@ -996,6 +996,8 @@ public class IntentFilter implements Parcelable { /** * Return an iterator over the filter's categories. + * + * @return Iterator if this filter has categories or {@code null} if none. */ public final Iterator<String> categoriesIterator() { return mCategories != null ? mCategories.iterator() : null; diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java index 22fdc98..5f4625b 100644 --- a/core/java/android/content/pm/PackageParser.java +++ b/core/java/android/content/pm/PackageParser.java @@ -24,13 +24,12 @@ import android.content.res.Configuration; import android.content.res.Resources; import android.content.res.TypedArray; import android.content.res.XmlResourceParser; -import android.os.Binder; import android.os.Build; import android.os.Bundle; import android.os.PatternMatcher; import android.util.AttributeSet; import android.util.DisplayMetrics; -import android.util.Log; +import android.util.Slog; import android.util.TypedValue; import com.android.internal.util.XmlUtils; import org.xmlpull.v1.XmlPullParser; @@ -48,6 +47,7 @@ import java.util.Enumeration; import java.util.Iterator; import java.util.jar.JarEntry; import java.util.jar.JarFile; +import java.util.jar.Manifest; /** * Package archive parsing @@ -55,6 +55,10 @@ import java.util.jar.JarFile; * {@hide} */ public class PackageParser { + private static final boolean DEBUG_JAR = false; + private static final boolean DEBUG_PARSER = false; + private static final boolean DEBUG_BACKUP = false; + /** @hide */ public static class NewPermissionInfo { public final String name; @@ -342,10 +346,10 @@ public class PackageParser { is.close(); return je != null ? je.getCertificates() : null; } catch (IOException e) { - Log.w(TAG, "Exception reading " + je.getName() + " in " + Slog.w(TAG, "Exception reading " + je.getName() + " in " + jarFile.getName(), e); } catch (RuntimeException e) { - Log.w(TAG, "Exception reading " + je.getName() + " in " + Slog.w(TAG, "Exception reading " + je.getName() + " in " + jarFile.getName(), e); } return null; @@ -369,7 +373,7 @@ public class PackageParser { mArchiveSourcePath = sourceFile.getPath(); if (!sourceFile.isFile()) { - Log.w(TAG, "Skipping dir: " + mArchiveSourcePath); + Slog.w(TAG, "Skipping dir: " + mArchiveSourcePath); mParseError = PackageManager.INSTALL_PARSE_FAILED_NOT_APK; return null; } @@ -378,14 +382,14 @@ public class PackageParser { if ((flags&PARSE_IS_SYSTEM) == 0) { // We expect to have non-.apk files in the system dir, // so don't warn about them. - Log.w(TAG, "Skipping non-package file: " + mArchiveSourcePath); + Slog.w(TAG, "Skipping non-package file: " + mArchiveSourcePath); } mParseError = PackageManager.INSTALL_PARSE_FAILED_NOT_APK; return null; } - if ((flags&PARSE_CHATTY) != 0 && false) Log.d( - TAG, "Scanning package: " + mArchiveSourcePath); + if (DEBUG_JAR) + Slog.d(TAG, "Scanning package: " + mArchiveSourcePath); XmlResourceParser parser = null; AssetManager assmgr = null; @@ -401,10 +405,10 @@ public class PackageParser { parser = assmgr.openXmlResourceParser(cookie, "AndroidManifest.xml"); assetError = false; } else { - Log.w(TAG, "Failed adding asset path:"+mArchiveSourcePath); + Slog.w(TAG, "Failed adding asset path:"+mArchiveSourcePath); } } catch (Exception e) { - Log.w(TAG, "Unable to read AndroidManifest.xml of " + Slog.w(TAG, "Unable to read AndroidManifest.xml of " + mArchiveSourcePath, e); } if (assetError) { @@ -426,9 +430,9 @@ public class PackageParser { if (pkg == null) { if (errorException != null) { - Log.w(TAG, mArchiveSourcePath, errorException); + Slog.w(TAG, mArchiveSourcePath, errorException); } else { - Log.w(TAG, mArchiveSourcePath + " (at " + Slog.w(TAG, mArchiveSourcePath + " (at " + parser.getPositionDescription() + "): " + errorText[0]); } @@ -483,20 +487,20 @@ public class PackageParser { JarEntry jarEntry = jarFile.getJarEntry("AndroidManifest.xml"); certs = loadCertificates(jarFile, jarEntry, readBuffer); if (certs == null) { - Log.e(TAG, "Package " + pkg.packageName + Slog.e(TAG, "Package " + pkg.packageName + " has no certificates at entry " + jarEntry.getName() + "; ignoring!"); jarFile.close(); mParseError = PackageManager.INSTALL_PARSE_FAILED_NO_CERTIFICATES; return false; } - if (false) { - Log.i(TAG, "File " + mArchiveSourcePath + ": entry=" + jarEntry + if (DEBUG_JAR) { + Slog.i(TAG, "File " + mArchiveSourcePath + ": entry=" + jarEntry + " certs=" + (certs != null ? certs.length : 0)); if (certs != null) { final int N = certs.length; for (int i=0; i<N; i++) { - Log.i(TAG, " Public key: " + Slog.i(TAG, " Public key: " + certs[i].getPublicKey().getEncoded() + " " + certs[i].getPublicKey()); } @@ -504,20 +508,21 @@ public class PackageParser { } } else { - Enumeration entries = jarFile.entries(); + Enumeration<JarEntry> entries = jarFile.entries(); while (entries.hasMoreElements()) { - JarEntry je = (JarEntry)entries.nextElement(); + final JarEntry je = entries.nextElement(); if (je.isDirectory()) continue; if (je.getName().startsWith("META-INF/")) continue; - Certificate[] localCerts = loadCertificates(jarFile, je, + + final Certificate[] localCerts = loadCertificates(jarFile, je, readBuffer); - if (false) { - Log.i(TAG, "File " + mArchiveSourcePath + " entry " + je.getName() + if (DEBUG_JAR) { + Slog.i(TAG, "File " + mArchiveSourcePath + " entry " + je.getName() + ": certs=" + certs + " (" + (certs != null ? certs.length : 0) + ")"); } if (localCerts == null) { - Log.e(TAG, "Package " + pkg.packageName + Slog.e(TAG, "Package " + pkg.packageName + " has no certificates at entry " + je.getName() + "; ignoring!"); jarFile.close(); @@ -537,7 +542,7 @@ public class PackageParser { } } if (!found || certs.length != localCerts.length) { - Log.e(TAG, "Package " + pkg.packageName + Slog.e(TAG, "Package " + pkg.packageName + " has mismatched certificates at entry " + je.getName() + "; ignoring!"); jarFile.close(); @@ -562,21 +567,21 @@ public class PackageParser { certs[i].getEncoded()); } } else { - Log.e(TAG, "Package " + pkg.packageName + Slog.e(TAG, "Package " + pkg.packageName + " has no certificates; ignoring!"); mParseError = PackageManager.INSTALL_PARSE_FAILED_NO_CERTIFICATES; return false; } } catch (CertificateEncodingException e) { - Log.w(TAG, "Exception reading " + mArchiveSourcePath, e); + Slog.w(TAG, "Exception reading " + mArchiveSourcePath, e); mParseError = PackageManager.INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING; return false; } catch (IOException e) { - Log.w(TAG, "Exception reading " + mArchiveSourcePath, e); + Slog.w(TAG, "Exception reading " + mArchiveSourcePath, e); mParseError = PackageManager.INSTALL_PARSE_FAILED_CERTIFICATE_ENCODING; return false; } catch (RuntimeException e) { - Log.w(TAG, "Exception reading " + mArchiveSourcePath, e); + Slog.w(TAG, "Exception reading " + mArchiveSourcePath, e); mParseError = PackageManager.INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION; return false; } @@ -607,7 +612,7 @@ public class PackageParser { parser = assmgr.openXmlResourceParser(cookie, "AndroidManifest.xml"); } catch (Exception e) { if (assmgr != null) assmgr.close(); - Log.w(TAG, "Unable to read AndroidManifest.xml of " + Slog.w(TAG, "Unable to read AndroidManifest.xml of " + packageFilePath, e); return null; } @@ -617,15 +622,15 @@ public class PackageParser { try { packageLite = parsePackageLite(parser, attrs, flags, errors); } catch (IOException e) { - Log.w(TAG, packageFilePath, e); + Slog.w(TAG, packageFilePath, e); } catch (XmlPullParserException e) { - Log.w(TAG, packageFilePath, e); + Slog.w(TAG, packageFilePath, e); } finally { if (parser != null) parser.close(); if (assmgr != null) assmgr.close(); } if (packageLite == null) { - Log.e(TAG, "parsePackageLite error: " + errors[0]); + Slog.e(TAG, "parsePackageLite error: " + errors[0]); return null; } return packageLite; @@ -662,17 +667,17 @@ public class PackageParser { throws IOException, XmlPullParserException { int type; - while ((type=parser.next()) != parser.START_TAG - && type != parser.END_DOCUMENT) { + while ((type = parser.next()) != XmlPullParser.START_TAG + && type != XmlPullParser.END_DOCUMENT) { ; } - if (type != parser.START_TAG) { + if (type != XmlPullParser.START_TAG) { outError[0] = "No start tag found"; return null; } - if ((flags&PARSE_CHATTY) != 0 && false) Log.v( - TAG, "Root element name: '" + parser.getName() + "'"); + if (DEBUG_PARSER) + Slog.v(TAG, "Root element name: '" + parser.getName() + "'"); if (!parser.getName().equals("manifest")) { outError[0] = "No <manifest> tag"; return null; @@ -697,17 +702,17 @@ public class PackageParser { throws IOException, XmlPullParserException { int type; - while ((type=parser.next()) != parser.START_TAG - && type != parser.END_DOCUMENT) { + while ((type = parser.next()) != XmlPullParser.START_TAG + && type != XmlPullParser.END_DOCUMENT) { ; } - if (type != parser.START_TAG) { + if (type != XmlPullParser.START_TAG) { outError[0] = "No start tag found"; return null; } - if ((flags&PARSE_CHATTY) != 0 && false) Log.v( - TAG, "Root element name: '" + parser.getName() + "'"); + if (DEBUG_PARSER) + Slog.v(TAG, "Root element name: '" + parser.getName() + "'"); if (!parser.getName().equals("manifest")) { outError[0] = "No <manifest> tag"; return null; @@ -806,9 +811,9 @@ public class PackageParser { int anyDensity = 1; int outerDepth = parser.getDepth(); - while ((type=parser.next()) != parser.END_DOCUMENT - && (type != parser.END_TAG || parser.getDepth() > outerDepth)) { - if (type == parser.END_TAG || type == parser.TEXT) { + while ((type = parser.next()) != XmlPullParser.END_DOCUMENT + && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) { + if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) { continue; } @@ -820,7 +825,7 @@ public class PackageParser { mParseError = PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED; return null; } else { - Log.w(TAG, "<manifest> has more than one <application>"); + Slog.w(TAG, "<manifest> has more than one <application>"); XmlUtils.skipCurrentTag(parser); continue; } @@ -1118,7 +1123,7 @@ public class PackageParser { return null; } else { - Log.w(TAG, "Unknown element under <manifest>: " + parser.getName() + Slog.w(TAG, "Unknown element under <manifest>: " + parser.getName() + " at " + mArchiveSourcePath + " " + parser.getPositionDescription()); XmlUtils.skipCurrentTag(parser); @@ -1152,7 +1157,7 @@ public class PackageParser { } } if (implicitPerms != null) { - Log.i(TAG, implicitPerms.toString()); + Slog.i(TAG, implicitPerms.toString()); } if (supportsSmallScreens < 0 || (supportsSmallScreens > 0 @@ -1504,8 +1509,8 @@ public class PackageParser { com.android.internal.R.styleable.AndroidManifestApplication_backupAgent, 0); if (backupAgent != null) { ai.backupAgentName = buildClassName(pkgName, backupAgent, outError); - if (false) { - Log.v(TAG, "android:backupAgent = " + ai.backupAgentName + if (DEBUG_BACKUP) { + Slog.v(TAG, "android:backupAgent = " + ai.backupAgentName + " from " + pkgName + "+" + backupAgent); } @@ -1663,9 +1668,9 @@ public class PackageParser { final int innerDepth = parser.getDepth(); int type; - while ((type=parser.next()) != parser.END_DOCUMENT - && (type != parser.END_TAG || parser.getDepth() > innerDepth)) { - if (type == parser.END_TAG || type == parser.TEXT) { + while ((type = parser.next()) != XmlPullParser.END_DOCUMENT + && (type != XmlPullParser.END_TAG || parser.getDepth() > innerDepth)) { + if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) { continue; } @@ -1767,7 +1772,7 @@ public class PackageParser { } else { if (!RIGID_PARSER) { - Log.w(TAG, "Unknown element under <application>: " + tagName + Slog.w(TAG, "Unknown element under <application>: " + tagName + " at " + mArchiveSourcePath + " " + parser.getPositionDescription()); XmlUtils.skipCurrentTag(parser); @@ -1990,7 +1995,7 @@ public class PackageParser { return null; } if (intent.countActions() == 0) { - Log.w(TAG, "No actions in intent filter at " + Slog.w(TAG, "No actions in intent filter at " + mArchiveSourcePath + " " + parser.getPositionDescription()); } else { @@ -2003,25 +2008,26 @@ public class PackageParser { } } else { if (!RIGID_PARSER) { - Log.w(TAG, "Problem in package " + mArchiveSourcePath + ":"); + Slog.w(TAG, "Problem in package " + mArchiveSourcePath + ":"); if (receiver) { - Log.w(TAG, "Unknown element under <receiver>: " + parser.getName() + Slog.w(TAG, "Unknown element under <receiver>: " + parser.getName() + " at " + mArchiveSourcePath + " " + parser.getPositionDescription()); } else { - Log.w(TAG, "Unknown element under <activity>: " + parser.getName() + Slog.w(TAG, "Unknown element under <activity>: " + parser.getName() + " at " + mArchiveSourcePath + " " + parser.getPositionDescription()); } XmlUtils.skipCurrentTag(parser); continue; - } - if (receiver) { - outError[0] = "Bad element under <receiver>: " + parser.getName(); } else { - outError[0] = "Bad element under <activity>: " + parser.getName(); + if (receiver) { + outError[0] = "Bad element under <receiver>: " + parser.getName(); + } else { + outError[0] = "Bad element under <activity>: " + parser.getName(); + } + return null; } - return null; } } @@ -2146,7 +2152,7 @@ public class PackageParser { return null; } if (intent.countActions() == 0) { - Log.w(TAG, "No actions in intent filter at " + Slog.w(TAG, "No actions in intent filter at " + mArchiveSourcePath + " " + parser.getPositionDescription()); } else { @@ -2159,14 +2165,15 @@ public class PackageParser { } } else { if (!RIGID_PARSER) { - Log.w(TAG, "Unknown element under <activity-alias>: " + parser.getName() + Slog.w(TAG, "Unknown element under <activity-alias>: " + parser.getName() + " at " + mArchiveSourcePath + " " + parser.getPositionDescription()); XmlUtils.skipCurrentTag(parser); continue; + } else { + outError[0] = "Bad element under <activity-alias>: " + parser.getName(); + return null; } - outError[0] = "Bad element under <activity-alias>: " + parser.getName(); - return null; } } @@ -2335,14 +2342,15 @@ public class PackageParser { outInfo.info.grantUriPermissions = true; } else { if (!RIGID_PARSER) { - Log.w(TAG, "Unknown element under <path-permission>: " + Slog.w(TAG, "Unknown element under <path-permission>: " + parser.getName() + " at " + mArchiveSourcePath + " " + parser.getPositionDescription()); XmlUtils.skipCurrentTag(parser); continue; + } else { + outError[0] = "No path, pathPrefix, or pathPattern for <path-permission>"; + return false; } - outError[0] = "No path, pathPrefix, or pathPattern for <path-permission>"; - return false; } XmlUtils.skipCurrentTag(parser); @@ -2377,14 +2385,15 @@ public class PackageParser { if (!havePerm) { if (!RIGID_PARSER) { - Log.w(TAG, "No readPermission or writePermssion for <path-permission>: " + Slog.w(TAG, "No readPermission or writePermssion for <path-permission>: " + parser.getName() + " at " + mArchiveSourcePath + " " + parser.getPositionDescription()); XmlUtils.skipCurrentTag(parser); continue; + } else { + outError[0] = "No readPermission or writePermssion for <path-permission>"; + return false; } - outError[0] = "No readPermission or writePermssion for <path-permission>"; - return false; } String path = sa.getNonConfigurationString( @@ -2423,7 +2432,7 @@ public class PackageParser { } } else { if (!RIGID_PARSER) { - Log.w(TAG, "No path, pathPrefix, or pathPattern for <path-permission>: " + Slog.w(TAG, "No path, pathPrefix, or pathPattern for <path-permission>: " + parser.getName() + " at " + mArchiveSourcePath + " " + parser.getPositionDescription()); XmlUtils.skipCurrentTag(parser); @@ -2436,15 +2445,15 @@ public class PackageParser { } else { if (!RIGID_PARSER) { - Log.w(TAG, "Unknown element under <provider>: " + Slog.w(TAG, "Unknown element under <provider>: " + parser.getName() + " at " + mArchiveSourcePath + " " + parser.getPositionDescription()); XmlUtils.skipCurrentTag(parser); continue; + } else { + outError[0] = "Bad element under <provider>: " + parser.getName(); + return false; } - outError[0] = "Bad element under <provider>: " - + parser.getName(); - return false; } } return true; @@ -2534,15 +2543,15 @@ public class PackageParser { } } else { if (!RIGID_PARSER) { - Log.w(TAG, "Unknown element under <service>: " + Slog.w(TAG, "Unknown element under <service>: " + parser.getName() + " at " + mArchiveSourcePath + " " + parser.getPositionDescription()); XmlUtils.skipCurrentTag(parser); continue; + } else { + outError[0] = "Bad element under <service>: " + parser.getName(); + return null; } - outError[0] = "Bad element under <service>: " - + parser.getName(); - return null; } } @@ -2573,15 +2582,15 @@ public class PackageParser { } } else { if (!RIGID_PARSER) { - Log.w(TAG, "Unknown element under " + tag + ": " + Slog.w(TAG, "Unknown element under " + tag + ": " + parser.getName() + " at " + mArchiveSourcePath + " " + parser.getPositionDescription()); XmlUtils.skipCurrentTag(parser); continue; + } else { + outError[0] = "Bad element under " + tag + ": " + parser.getName(); + return false; } - outError[0] = "Bad element under " + tag + ": " - + parser.getName(); - return false; } } return true; @@ -2612,12 +2621,12 @@ public class PackageParser { TypedValue v = sa.peekValue( com.android.internal.R.styleable.AndroidManifestMetaData_resource); if (v != null && v.resourceId != 0) { - //Log.i(TAG, "Meta data ref " + name + ": " + v); + //Slog.i(TAG, "Meta data ref " + name + ": " + v); data.putInt(name, v.resourceId); } else { v = sa.peekValue( com.android.internal.R.styleable.AndroidManifestMetaData_value); - //Log.i(TAG, "Meta data " + name + ": " + v); + //Slog.i(TAG, "Meta data " + name + ": " + v); if (v != null) { if (v.type == TypedValue.TYPE_STRING) { CharSequence cs = v.coerceToString(); @@ -2631,7 +2640,7 @@ public class PackageParser { data.putFloat(name, v.getFloat()); } else { if (!RIGID_PARSER) { - Log.w(TAG, "<meta-data> only supports string, integer, float, color, boolean, and resource reference types: " + Slog.w(TAG, "<meta-data> only supports string, integer, float, color, boolean, and resource reference types: " + parser.getName() + " at " + mArchiveSourcePath + " " + parser.getPositionDescription()); } else { @@ -2683,9 +2692,9 @@ public class PackageParser { int outerDepth = parser.getDepth(); int type; - while ((type=parser.next()) != parser.END_DOCUMENT - && (type != parser.END_TAG || parser.getDepth() > outerDepth)) { - if (type == parser.END_TAG || type == parser.TEXT) { + while ((type = parser.next()) != XmlPullParser.END_DOCUMENT + && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) { + if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) { continue; } @@ -2762,7 +2771,7 @@ public class PackageParser { sa.recycle(); XmlUtils.skipCurrentTag(parser); } else if (!RIGID_PARSER) { - Log.w(TAG, "Unknown element under <intent-filter>: " + Slog.w(TAG, "Unknown element under <intent-filter>: " + parser.getName() + " at " + mArchiveSourcePath + " " + parser.getPositionDescription()); XmlUtils.skipCurrentTag(parser); @@ -2773,14 +2782,20 @@ public class PackageParser { } outInfo.hasDefault = outInfo.hasCategory(Intent.CATEGORY_DEFAULT); - if (false) { - String cats = ""; - Iterator<String> it = outInfo.categoriesIterator(); - while (it != null && it.hasNext()) { - cats += " " + it.next(); - } - System.out.println("Intent d=" + - outInfo.hasDefault + ", cat=" + cats); + + if (DEBUG_PARSER) { + final StringBuilder cats = new StringBuilder("Intent d="); + cats.append(outInfo.hasDefault); + cats.append(", cat="); + + final Iterator<String> it = outInfo.categoriesIterator(); + if (it != null) { + while (it.hasNext()) { + cats.append(' '); + cats.append(it.next()); + } + } + Slog.d(TAG, cats.toString()); } return true; |