Merge change 602 into donut
* changes:
Bug fix(1807910): media recorder crash due to the use of locked camera object (last part) - remove an unused Camera constructor - add a check on the argument in Camera::create() method
diff --git a/api/current.xml b/api/current.xml
index 0a96169..1bf1d5a9 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -2616,6 +2616,17 @@
visibility="public"
>
</field>
+<field name="density"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="16843372"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="dependency"
type="int"
transient="false"
@@ -31651,6 +31662,17 @@
visibility="public"
>
</field>
+<field name="supportsDensities"
+ type="int[]"
+ transient="false"
+ volatile="false"
+ value="null"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="taskAffinity"
type="java.lang.String"
transient="false"
@@ -33641,6 +33663,17 @@
visibility="public"
>
</field>
+<field name="GET_SUPPORTS_DENSITIES"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="32768"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="GET_UNINSTALLED_PACKAGES"
type="int"
transient="false"
diff --git a/core/java/android/content/pm/ApplicationInfo.java b/core/java/android/content/pm/ApplicationInfo.java
index 8d727ed..173057c 100644
--- a/core/java/android/content/pm/ApplicationInfo.java
+++ b/core/java/android/content/pm/ApplicationInfo.java
@@ -161,6 +161,14 @@
*/
public int uid;
+
+ /**
+ * The list of densities in DPI that application supprots. This
+ * field is only set if the {@link PackageManager#GET_SUPPORTS_DENSITIES} flag was
+ * used when retrieving the structure.
+ */
+ public int[] supportsDensities;
+
/**
* When false, indicates that all components within this application are
* considered disabled, regardless of their individually set enabled status.
@@ -181,8 +189,9 @@
pw.println(prefix + "sharedLibraryFiles=" + sharedLibraryFiles);
pw.println(prefix + "dataDir=" + dataDir);
pw.println(prefix + "enabled=" + enabled);
- pw.println(prefix+"manageSpaceActivityName="+manageSpaceActivityName);
- pw.println(prefix+"description=0x"+Integer.toHexString(descriptionRes));
+ pw.println(prefix + "manageSpaceActivityName="+manageSpaceActivityName);
+ pw.println(prefix + "description=0x"+Integer.toHexString(descriptionRes));
+ pw.println(prefix + "supportsDensities=" + supportsDensities);
super.dumpBack(pw, prefix);
}
@@ -228,6 +237,7 @@
enabled = orig.enabled;
manageSpaceActivityName = orig.manageSpaceActivityName;
descriptionRes = orig.descriptionRes;
+ supportsDensities = orig.supportsDensities;
}
@@ -257,6 +267,7 @@
dest.writeInt(enabled ? 1 : 0);
dest.writeString(manageSpaceActivityName);
dest.writeInt(descriptionRes);
+ dest.writeIntArray(supportsDensities);
}
public static final Parcelable.Creator<ApplicationInfo> CREATOR
@@ -285,8 +296,9 @@
enabled = source.readInt() != 0;
manageSpaceActivityName = source.readString();
descriptionRes = source.readInt();
+ supportsDensities = source.createIntArray();
}
-
+
/**
* Retrieve the textual description of the application. This
* will call back on the given PackageManager to load the description from
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index 3e94734..9e06666 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -166,6 +166,12 @@
public static final int GET_CONFIGURATIONS = 0x00004000;
/**
+ * {@link ApplicationInfo} flag: return the
+ * {@link ApplicationInfo#supportsDensities} that the package supports.
+ */
+ public static final int GET_SUPPORTS_DENSITIES = 0x00008000;
+
+ /**
* Permission check result: this is returned by {@link #checkPermission}
* if the permission has been granted to the given package.
*/
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index 963d311..f9c4984 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -45,6 +45,7 @@
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.Iterator;
+import java.util.List;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
@@ -771,6 +772,14 @@
pkg.usesLibraries.toArray(pkg.usesLibraryFiles);
}
+ int size = pkg.supportsDensityList.size();
+ if (size > 0) {
+ int densities[] = pkg.supportsDensities = new int[size];
+ List<Integer> densityList = pkg.supportsDensityList;
+ for (int i = 0; i < size; i++) {
+ densities[i] = densityList.get(i);
+ }
+ }
return pkg;
}
@@ -1222,6 +1231,21 @@
XmlUtils.skipCurrentTag(parser);
+ } else if (tagName.equals("supports-density")) {
+ sa = res.obtainAttributes(attrs,
+ com.android.internal.R.styleable.AndroidManifestSupportsDensity);
+
+ int density = sa.getInteger(
+ com.android.internal.R.styleable.AndroidManifestSupportsDensity_density, -1);
+
+ sa.recycle();
+
+ if (density != -1 && !owner.supportsDensityList.contains(density)) {
+ owner.supportsDensityList.add(density);
+ }
+
+ XmlUtils.skipCurrentTag(parser);
+
} else {
if (!RIGID_PARSER) {
Log.w(TAG, "Problem in package " + mArchiveSourcePath + ":");
@@ -2103,6 +2127,9 @@
// We store the application meta-data independently to avoid multiple unwanted references
public Bundle mAppMetaData = null;
+ public final ArrayList<Integer> supportsDensityList = new ArrayList<Integer>();
+ public int[] supportsDensities = null;
+
// If this is a 3rd party app, this is the path of the zip file.
public String mPath;
@@ -2276,6 +2303,10 @@
&& p.usesLibraryFiles != null) {
return true;
}
+ if ((flags & PackageManager.GET_SUPPORTS_DENSITIES) != 0
+ && p.supportsDensities != null) {
+ return true;
+ }
return false;
}
@@ -2293,6 +2324,9 @@
if ((flags & PackageManager.GET_SHARED_LIBRARY_FILES) != 0) {
ai.sharedLibraryFiles = p.usesLibraryFiles;
}
+ if ((flags & PackageManager.GET_SUPPORTS_DENSITIES) != 0) {
+ ai.supportsDensities = p.supportsDensities;
+ }
return ai;
}
diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java
index b87cc42..34e65ad 100644
--- a/core/java/android/view/WindowManager.java
+++ b/core/java/android/view/WindowManager.java
@@ -953,7 +953,20 @@
sb.append('}');
return sb.toString();
}
-
+
+ void scaleUp(float scale) {
+ if (scale != 1.0f) {
+ x *= scale;
+ y *= scale;
+ if (width > 0) {
+ width *= scale;
+ }
+ if (height > 0) {
+ height *= scale;
+ }
+ }
+ }
+
private CharSequence mTitle = "";
}
}
diff --git a/core/res/res/drawable/search_plate_global.9.png b/core/res/res/drawable/search_plate_global.9.png
index 126054b..1cad902 100644
--- a/core/res/res/drawable/search_plate_global.9.png
+++ b/core/res/res/drawable/search_plate_global.9.png
Binary files differ
diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml
index 093ddd3..54da326 100644
--- a/core/res/res/values/attrs_manifest.xml
+++ b/core/res/res/values/attrs_manifest.xml
@@ -769,6 +769,15 @@
<attr name="name" />
</declare-styleable>
+ <!-- The <code>supports-density</code> specifies a screen density that this
+ package supports. Application can specify multiple densities it supports.
+ <p>This appears as a child tag of the
+ {@link #AndroidManifestApplication application} tag. -->
+ <declare-styleable name="AndroidManifestSupportsDensity" parent="AndroidManifestApplication">
+ <!-- Required value of the density in dip (device independent pixel). -->
+ <attr name="density" format="integer" />
+ </declare-styleable>
+
<!-- The <code>provider</code> tag declares a
{@link android.content.ContentProvider} class that is available
as part of the package's application components, supplying structured
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index d84778e..5b5e5c2 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -1093,6 +1093,7 @@
<public type="attr" name="tension" id="0x0101026a" />
<public type="attr" name="extraTension" id="0x0101026b" />
+ <public type="attr" name="density" id="0x0101026c" />
<public type="anim" name="anticipate_interpolator" id="0x010a0007" />
<public type="anim" name="overshoot_interpolator" id="0x010a0008" />
@@ -1103,8 +1104,3 @@
<public type="drawable" name="stat_sys_vp_phone_call_on_hold" id="0x0108022e" />
</resources>
-
-
-
-
-