Merge change 25810 into eclair
* changes:
Fix pause-wait dial string conversion error
diff --git a/api/current.xml b/api/current.xml
index 612b305..b38176d 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -77640,8 +77640,8 @@
<parameter name="tag" type="java.lang.String">
</parameter>
</method>
-<method name="getDateTime"
- return="long"
+<method name="getAttributeInt"
+ return="int"
abstract="false"
native="false"
synchronized="false"
@@ -77650,9 +77650,13 @@
deprecated="not deprecated"
visibility="public"
>
+<parameter name="tag" type="java.lang.String">
+</parameter>
+<parameter name="defaultValue" type="int">
+</parameter>
</method>
<method name="getLatLong"
- return="float[]"
+ return="boolean"
abstract="false"
native="false"
synchronized="false"
@@ -77661,17 +77665,8 @@
deprecated="not deprecated"
visibility="public"
>
-</method>
-<method name="getOrientationString"
- return="java.lang.String"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
+<parameter name="output" type="float[]">
+</parameter>
</method>
<method name="getThumbnail"
return="byte[]"
@@ -77684,17 +77679,6 @@
visibility="public"
>
</method>
-<method name="getWhiteBalanceString"
- return="java.lang.String"
- abstract="false"
- native="false"
- synchronized="false"
- static="false"
- final="false"
- deprecated="not deprecated"
- visibility="public"
->
-</method>
<method name="hasThumbnail"
return="boolean"
abstract="false"
diff --git a/core/java/android/bluetooth/BluetoothAdapter.java b/core/java/android/bluetooth/BluetoothAdapter.java
index 96a927b..1fc22fe 100644
--- a/core/java/android/bluetooth/BluetoothAdapter.java
+++ b/core/java/android/bluetooth/BluetoothAdapter.java
@@ -573,6 +573,7 @@
/**
* Validate a Bluetooth address, such as "00:43:A8:23:10:F0"
+ * <p>Alphabetic characters must be uppercase to be valid.
*
* @param address Bluetooth address as string
* @return true if the address is valid, false otherwise
@@ -586,8 +587,9 @@
switch (i % 3) {
case 0:
case 1:
- if (Character.digit(c, 16) != -1) {
- break; // hex character, OK
+ if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'F')) {
+ // hex character, OK
+ break;
}
return false;
case 2:
diff --git a/core/java/android/provider/ContactsContract.java b/core/java/android/provider/ContactsContract.java
index 93ee3ba..a84fba0 100644
--- a/core/java/android/provider/ContactsContract.java
+++ b/core/java/android/provider/ContactsContract.java
@@ -682,7 +682,8 @@
* definition and some generic columns. Each data type can define the meaning for each of
* the generic columns.
*/
- public static final class Data implements BaseColumns, DataColumns {
+ public static final class Data implements BaseColumns, DataColumns, RawContactsColumns,
+ ContactsColumns, SyncColumns {
/**
* This utility class cannot be instantiated
*/
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 920bcc7..1d41df2 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -3599,6 +3599,14 @@
"search_per_source_concurrent_query_limit";
/**
+ * Flag for allowing ActivityManagerService to send ACTION_APP_ERROR intents
+ * on application crashes and ANRs. If this is disabled, the crash/ANR dialog
+ * will never display the "Report" button.
+ * Type: int ( 0 = disallow, 1 = allow )
+ */
+ public static final String SEND_ACTION_APP_ERROR = "send_action_app_error";
+
+ /**
* @deprecated
* @hide
*/
diff --git a/core/java/android/webkit/HTML5VideoViewProxy.java b/core/java/android/webkit/HTML5VideoViewProxy.java
index c10355c..8b783e8 100644
--- a/core/java/android/webkit/HTML5VideoViewProxy.java
+++ b/core/java/android/webkit/HTML5VideoViewProxy.java
@@ -36,10 +36,12 @@
import android.os.Message;
import android.util.Log;
import android.view.MotionEvent;
+import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.ViewManager.ChildView;
import android.widget.AbsoluteLayout;
+import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.MediaController;
import android.widget.VideoView;
@@ -90,6 +92,10 @@
// The VideoView instance. This is a singleton for now, at least until
// http://b/issue?id=1973663 is fixed.
private static VideoView mVideoView;
+ // The progress view.
+ private static View mProgressView;
+ // The container for the progress view and video view
+ private static FrameLayout mLayout;
private static final WebChromeClient.CustomViewCallback mCallback =
new WebChromeClient.CustomViewCallback() {
@@ -101,7 +107,13 @@
// is invoked.
mCurrentProxy.playbackEnded();
mCurrentProxy = null;
+ mLayout.removeView(mVideoView);
mVideoView = null;
+ if (mProgressView != null) {
+ mLayout.removeView(mProgressView);
+ mProgressView = null;
+ }
+ mLayout = null;
}
};
@@ -113,6 +125,13 @@
return;
}
mCurrentProxy = proxy;
+ // Create a FrameLayout that will contain the VideoView and the
+ // progress view (if any).
+ mLayout = new FrameLayout(proxy.getContext());
+ FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(
+ ViewGroup.LayoutParams.WRAP_CONTENT,
+ ViewGroup.LayoutParams.WRAP_CONTENT,
+ Gravity.CENTER);
mVideoView = new VideoView(proxy.getContext());
mVideoView.setWillNotDraw(false);
mVideoView.setMediaController(new MediaController(proxy.getContext()));
@@ -120,8 +139,15 @@
mVideoView.setOnCompletionListener(proxy);
mVideoView.setOnPreparedListener(proxy);
mVideoView.seekTo(time);
+ mLayout.addView(mVideoView, layoutParams);
+ mProgressView = client.getVideoLoadingProgressView();
+ if (mProgressView != null) {
+ mLayout.addView(mProgressView, layoutParams);
+ mProgressView.setVisibility(View.VISIBLE);
+ }
+ mLayout.setVisibility(View.VISIBLE);
mVideoView.start();
- client.onShowCustomView(mVideoView, mCallback);
+ client.onShowCustomView(mLayout, mCallback);
}
public static void seek(int time, HTML5VideoViewProxy proxy) {
@@ -135,11 +161,20 @@
mVideoView.pause();
}
}
+
+ public static void onPrepared() {
+ if (mProgressView != null) {
+ mProgressView.setVisibility(View.GONE);
+ mLayout.removeView(mProgressView);
+ mProgressView = null;
+ }
+ }
}
// A bunch event listeners for our VideoView
// MediaPlayer.OnPreparedListener
public void onPrepared(MediaPlayer mp) {
+ VideoPlayer.onPrepared();
Message msg = Message.obtain(mWebCoreHandler, PREPARED);
Map<String, Object> map = new HashMap<String, Object>();
map.put("dur", new Integer(mp.getDuration()));
@@ -166,6 +201,13 @@
switch (msg.what) {
case INIT: {
mPosterView = new ImageView(mWebView.getContext());
+ WebChromeClient client = mWebView.getWebChromeClient();
+ if (client != null) {
+ Bitmap poster = client.getDefaultVideoPoster();
+ if (poster != null) {
+ mPosterView.setImageBitmap(poster);
+ }
+ }
mChildView.mView = mPosterView;
break;
}
diff --git a/core/java/android/webkit/WebChromeClient.java b/core/java/android/webkit/WebChromeClient.java
index 6421fe7..0e08514 100644
--- a/core/java/android/webkit/WebChromeClient.java
+++ b/core/java/android/webkit/WebChromeClient.java
@@ -273,4 +273,26 @@
* @hide pending API council.
*/
public void addMessageToConsole(String message, int lineNumber, String sourceID) {}
+
+ /**
+ * Ask the host application for an icon to represent a <video> element.
+ * This icon will be used if the Web page did not specify a poster attribute.
+ *
+ * @return Bitmap The icon or null if no such icon is available.
+ * @hide pending API Council approval
+ */
+ public Bitmap getDefaultVideoPoster() {
+ return null;
+ }
+
+ /**
+ * Ask the host application for a custom progress view to show while
+ * a <video> is loading.
+ *
+ * @return View The progress view.
+ * @hide pending API Council approval
+ */
+ public View getVideoLoadingProgressView() {
+ return null;
+ }
}
diff --git a/core/java/android/widget/FasttrackBadgeWidget.java b/core/java/android/widget/FasttrackBadgeWidget.java
index 9d2307f..331659c 100644
--- a/core/java/android/widget/FasttrackBadgeWidget.java
+++ b/core/java/android/widget/FasttrackBadgeWidget.java
@@ -25,9 +25,9 @@
import android.net.Uri;
import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.FastTrack;
+import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.Intents;
import android.provider.ContactsContract.PhoneLookup;
-import android.provider.ContactsContract.RawContacts;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.util.AttributeSet;
import android.view.View;
@@ -55,7 +55,7 @@
static final private int TOKEN_PHONE_LOOKUP_AND_TRIGGER = 3;
static final String[] EMAIL_LOOKUP_PROJECTION = new String[] {
- RawContacts.CONTACT_ID,
+ Data.CONTACT_ID,
Contacts.LOOKUP_KEY,
};
static int EMAIL_ID_COLUMN_INDEX = 0;
diff --git a/core/res/res/drawable-hdpi/dark_header.9.png b/core/res/res/drawable-hdpi/dark_header.9.png
index a2fa569..3e63fa6 100644
--- a/core/res/res/drawable-hdpi/dark_header.9.png
+++ b/core/res/res/drawable-hdpi/dark_header.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/divider_horizontal_bright.9.png b/core/res/res/drawable-hdpi/divider_horizontal_bright.9.png
index c7803a2..99a67b9 100644
--- a/core/res/res/drawable-hdpi/divider_horizontal_bright.9.png
+++ b/core/res/res/drawable-hdpi/divider_horizontal_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/divider_horizontal_bright_opaque.9.png b/core/res/res/drawable-hdpi/divider_horizontal_bright_opaque.9.png
index d8d8aa9..cfe258b 100644
--- a/core/res/res/drawable-hdpi/divider_horizontal_bright_opaque.9.png
+++ b/core/res/res/drawable-hdpi/divider_horizontal_bright_opaque.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/divider_horizontal_dark.9.png b/core/res/res/drawable-hdpi/divider_horizontal_dark.9.png
index 63859f7..30a68d0 100644
--- a/core/res/res/drawable-hdpi/divider_horizontal_dark.9.png
+++ b/core/res/res/drawable-hdpi/divider_horizontal_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/divider_horizontal_dark_opaque.9.png b/core/res/res/drawable-hdpi/divider_horizontal_dark_opaque.9.png
index ced2832..8f35315 100644
--- a/core/res/res/drawable-hdpi/divider_horizontal_dark_opaque.9.png
+++ b/core/res/res/drawable-hdpi/divider_horizontal_dark_opaque.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/divider_vertical_bright.9.png b/core/res/res/drawable-hdpi/divider_vertical_bright.9.png
index 1035656..99a67b9 100644
--- a/core/res/res/drawable-hdpi/divider_vertical_bright.9.png
+++ b/core/res/res/drawable-hdpi/divider_vertical_bright.9.png
Binary files differ
diff --git a/core/res/res/drawable/divider_vertical_bright_opaque.9.png b/core/res/res/drawable-hdpi/divider_vertical_bright_opaque.9.png
similarity index 100%
rename from core/res/res/drawable/divider_vertical_bright_opaque.9.png
rename to core/res/res/drawable-hdpi/divider_vertical_bright_opaque.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/divider_vertical_dark.9.png b/core/res/res/drawable-hdpi/divider_vertical_dark.9.png
new file mode 100644
index 0000000..30a68d0
--- /dev/null
+++ b/core/res/res/drawable-hdpi/divider_vertical_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable/divider_vertical_dark_opaque.9.png b/core/res/res/drawable-hdpi/divider_vertical_dark_opaque.9.png
similarity index 100%
rename from core/res/res/drawable/divider_vertical_dark_opaque.9.png
rename to core/res/res/drawable-hdpi/divider_vertical_dark_opaque.9.png
Binary files differ
diff --git a/core/res/res/drawable-hdpi/light_header.9.png b/core/res/res/drawable-hdpi/light_header.9.png
index 27db59d..6fc53ca 100644
--- a/core/res/res/drawable-hdpi/light_header.9.png
+++ b/core/res/res/drawable-hdpi/light_header.9.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/dark_header.9.png b/core/res/res/drawable-mdpi/dark_header.9.png
index 7242b61..f4a14f1d 100644
--- a/core/res/res/drawable-mdpi/dark_header.9.png
+++ b/core/res/res/drawable-mdpi/dark_header.9.png
Binary files differ
diff --git a/core/res/res/drawable/divider_vertical_bright_opaque.9.png b/core/res/res/drawable-mdpi/divider_vertical_bright_opaque.9.png
similarity index 100%
copy from core/res/res/drawable/divider_vertical_bright_opaque.9.png
copy to core/res/res/drawable-mdpi/divider_vertical_bright_opaque.9.png
Binary files differ
diff --git a/core/res/res/drawable/divider_vertical_dark.9.png b/core/res/res/drawable-mdpi/divider_vertical_dark.9.png
similarity index 100%
rename from core/res/res/drawable/divider_vertical_dark.9.png
rename to core/res/res/drawable-mdpi/divider_vertical_dark.9.png
Binary files differ
diff --git a/core/res/res/drawable/divider_vertical_dark_opaque.9.png b/core/res/res/drawable-mdpi/divider_vertical_dark_opaque.9.png
similarity index 100%
copy from core/res/res/drawable/divider_vertical_dark_opaque.9.png
copy to core/res/res/drawable-mdpi/divider_vertical_dark_opaque.9.png
Binary files differ
diff --git a/core/res/res/layout/tab_indicator.xml b/core/res/res/layout/tab_indicator.xml
index e3ea555..71e4001 100644
--- a/core/res/res/layout/tab_indicator.xml
+++ b/core/res/res/layout/tab_indicator.xml
@@ -18,8 +18,8 @@
android:layout_width="0dip"
android:layout_height="64dip"
android:layout_weight="1"
- android:layout_marginLeft="-4px"
- android:layout_marginRight="-4px"
+ android:layout_marginLeft="-3dip"
+ android:layout_marginRight="-3dip"
android:orientation="vertical"
android:background="@android:drawable/tab_indicator">
diff --git a/core/res/res/values/colors.xml b/core/res/res/values/colors.xml
index c967c4c..2f09aca 100644
--- a/core/res/res/values/colors.xml
+++ b/core/res/res/values/colors.xml
@@ -19,7 +19,7 @@
-->
<resources>
<drawable name="screen_background_light">#ffffffff</drawable>
- <drawable name="screen_background_dark">#ff202020</drawable>
+ <drawable name="screen_background_dark">#ff1a1a1a</drawable>
<drawable name="status_bar_closed_default_background">#ff000000</drawable>
<drawable name="status_bar_opened_default_background">#ff000000</drawable>
<drawable name="search_bar_default_color">#ff000000</drawable>
@@ -36,7 +36,7 @@
<color name="white">#ffffffff</color>
<color name="black">#ff000000</color>
<color name="transparent">#00000000</color>
- <color name="background_dark">#ff202020</color>
+ <color name="background_dark">#ff1a1a1a</color>
<color name="bright_foreground_dark">#ffffffff</color>
<color name="bright_foreground_dark_disabled">#80ffffff</color>
<color name="bright_foreground_dark_inverse">#ff000000</color>
diff --git a/media/java/android/media/ExifInterface.java b/media/java/android/media/ExifInterface.java
index 73b6483..29409ab 100644
--- a/media/java/android/media/ExifInterface.java
+++ b/media/java/android/media/ExifInterface.java
@@ -63,12 +63,12 @@
private String mFilename;
private HashMap<String, String> mAttributes;
- private boolean mHasThumbnail = false;
+ private boolean mHasThumbnail;
// Because the underlying implementation (jhead) uses static variables,
// there can only be one user at a time for the native functions (and
// they cannot keep state in the native code across function calls). We
- // use sLock the serialize the accesses.
+ // use sLock to serialize the accesses.
private static Object sLock = new Object();
/**
@@ -81,7 +81,7 @@
/**
* Returns the value of the specified tag or {@code null} if there
- * is no such tag in the file.
+ * is no such tag in the JPEG file.
*
* @param tag the name of the tag.
*/
@@ -90,6 +90,24 @@
}
/**
+ * Returns the integer value of the specified tag. If there is no such tag
+ * in the JPEG file or the value cannot be parsed as integer, return
+ * @{code defaultValue}.
+ *
+ * @param tag the name of the tag.
+ * @param defaultValue the value to return if the tag is not available.
+ */
+ public int getAttributeInt(String tag, int defaultValue) {
+ String value = mAttributes.get(tag);
+ if (value == null) return defaultValue;
+ try {
+ return Integer.valueOf(value);
+ } catch (NumberFormatException ex) {
+ return defaultValue;
+ }
+ }
+
+ /**
* Set the value of the specified tag.
*
* @param tag the name of the tag.
@@ -109,7 +127,7 @@
* This function also initialize mHasThumbnail to indicate whether the
* file has a thumbnail inside.
*/
- private void loadAttributes() {
+ private void loadAttributes() throws IOException {
// format of string passed from native C code:
// "attrCnt attr1=valueLen value1attr2=value2Len value2..."
// example:
@@ -153,9 +171,9 @@
/**
* Save the tag data into the JPEG file. This is expensive because it involves
* copying all the JPG data from one file to another and deleting the old file
- * and renaming the other. It's best to use {@link #setAttribute(String,String)} to set all
- * attributes to write and make a single call rather than multiple calls for
- * each attribute.
+ * and renaming the other. It's best to use {@link #setAttribute(String,String)}
+ * to set all attributes to write and make a single call rather than multiple
+ * calls for each attribute.
*/
public void saveAttributes() throws IOException {
// format of string passed to native C code:
@@ -195,6 +213,8 @@
/**
* Returns the thumbnail inside the JPEG file, or {@code null} if there is no thumbnail.
+ * The returned data is in JPEG format and can be decoded using
+ * {@link android.graphics.BitmapFactory#decodeByteArray(byte[],int,int)}
*/
public byte[] getThumbnail() {
synchronized (sLock) {
@@ -203,98 +223,23 @@
}
/**
- * Returns a human-readable string describing the white balance value. Returns empty
- * string if there is no white balance value or it is not recognized.
+ * Stores the latitude and longitude value in a float array. The first element is
+ * the latitude, and the second element is the longitude. Returns false if the
+ * Exif tags are not available.
*/
- public String getWhiteBalanceString() {
- String value = getAttribute(TAG_WHITE_BALANCE);
- if (value == null) return "";
-
- int whitebalance;
- try {
- whitebalance = Integer.parseInt(value);
- } catch (NumberFormatException ex) {
- return "";
- }
-
- switch (whitebalance) {
- case WHITEBALANCE_AUTO:
- return "Auto";
- case WHITEBALANCE_MANUAL:
- return "Manual";
- default:
- return "";
- }
- }
-
- /**
- * Returns a human-readable string describing the orientation value. Returns empty
- * string if there is no orientation value or it it not recognized.
- */
- public String getOrientationString() {
- // TODO: this function needs to be localized.
- String value = getAttribute(TAG_ORIENTATION);
- if (value == null) return "";
-
- int orientation;
- try {
- orientation = Integer.parseInt(value);
- } catch (NumberFormatException ex) {
- return "";
- }
-
- String orientationString;
- switch (orientation) {
- case ORIENTATION_NORMAL:
- orientationString = "Normal";
- break;
- case ORIENTATION_FLIP_HORIZONTAL:
- orientationString = "Flipped horizontal";
- break;
- case ORIENTATION_ROTATE_180:
- orientationString = "Rotated 180 degrees";
- break;
- case ORIENTATION_FLIP_VERTICAL:
- orientationString = "Upside down mirror";
- break;
- case ORIENTATION_TRANSPOSE:
- orientationString = "Transposed";
- break;
- case ORIENTATION_ROTATE_90:
- orientationString = "Rotated 90 degrees";
- break;
- case ORIENTATION_TRANSVERSE:
- orientationString = "Transversed";
- break;
- case ORIENTATION_ROTATE_270:
- orientationString = "Rotated 270 degrees";
- break;
- default:
- orientationString = "Undefined";
- break;
- }
- return orientationString;
- }
-
- /**
- * Returns the latitude and longitude value in a float array. The first element is
- * the latitude, and the second element is the longitude.
- */
- public float[] getLatLong() {
+ public boolean getLatLong(float output[]) {
String latValue = mAttributes.get(ExifInterface.TAG_GPS_LATITUDE);
String latRef = mAttributes.get(ExifInterface.TAG_GPS_LATITUDE_REF);
String lngValue = mAttributes.get(ExifInterface.TAG_GPS_LONGITUDE);
String lngRef = mAttributes.get(ExifInterface.TAG_GPS_LONGITUDE_REF);
- float[] latlng = null;
- if (latValue != null && latRef != null
- && lngValue != null && lngRef != null) {
- latlng = new float[2];
- latlng[0] = convertRationalLatLonToFloat(latValue, latRef);
- latlng[1] = convertRationalLatLonToFloat(lngValue, lngRef);
+ if (latValue != null && latRef != null && lngValue != null && lngRef != null) {
+ output[0] = convertRationalLatLonToFloat(latValue, latRef);
+ output[1] = convertRationalLatLonToFloat(lngValue, lngRef);
+ return true;
+ } else {
+ return false;
}
-
- return latlng;
}
private static SimpleDateFormat sFormatter =
@@ -303,6 +248,7 @@
/**
* Returns number of milliseconds since Jan. 1, 1970, midnight GMT.
* Returns -1 if the date time information if not available.
+ * @hide
*/
public long getDateTime() {
String dateTimeString = mAttributes.get(TAG_DATETIME);
diff --git a/media/java/android/media/MediaScanner.java b/media/java/android/media/MediaScanner.java
index d9127e7..37a3bd5 100644
--- a/media/java/android/media/MediaScanner.java
+++ b/media/java/android/media/MediaScanner.java
@@ -726,8 +726,8 @@
// exif is null
}
if (exif != null) {
- float[] latlng = exif.getLatLong();
- if (latlng != null) {
+ float[] latlng = new float[2];
+ if (exif.getLatLong(latlng)) {
values.put(Images.Media.LATITUDE, latlng[0]);
values.put(Images.Media.LONGITUDE, latlng[1]);
}
diff --git a/services/java/com/android/server/am/ActivityManagerService.java b/services/java/com/android/server/am/ActivityManagerService.java
index 6dfd781..4db5239 100644
--- a/services/java/com/android/server/am/ActivityManagerService.java
+++ b/services/java/com/android/server/am/ActivityManagerService.java
@@ -8431,6 +8431,13 @@
}
private ComponentName getErrorReportReceiver(ProcessRecord app) {
+ // check if error reporting is enabled in Gservices
+ int enabled = Settings.Gservices.getInt(mContext.getContentResolver(),
+ Settings.Gservices.SEND_ACTION_APP_ERROR, 0);
+ if (enabled == 0) {
+ return null;
+ }
+
IPackageManager pm = ActivityThread.getPackageManager();
try {
diff --git a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java
index 8d2785a..5581a24 100644
--- a/telephony/java/com/android/internal/telephony/DataConnectionTracker.java
+++ b/telephony/java/com/android/internal/telephony/DataConnectionTracker.java
@@ -127,7 +127,7 @@
/** Retry configuration for secondary networks: 4 tries in 20 sec */
protected static final String SECONDARY_DATA_RETRY_CONFIG =
- "max_retries=3; 5000, 5000, 5000";
+ "max_retries=3, 5000, 5000, 5000";
/** Slow poll when attempting connection recovery. */
protected static final int POLL_NETSTAT_SLOW_MILLIS = 5000;
diff --git a/tests/AndroidTests/Android.mk b/tests/AndroidTests/Android.mk
index f5e49d7..ced796a 100644
--- a/tests/AndroidTests/Android.mk
+++ b/tests/AndroidTests/Android.mk
@@ -8,7 +8,7 @@
LOCAL_STATIC_JAVA_LIBRARIES := googlelogin-client
# Resource unit tests use a private locale
-LOCAL_AAPT_FLAGS = -c xx_YY -c cs
+LOCAL_AAPT_FLAGS = -c xx_YY -c cs -c 160dpi -c 32dpi -c 240dpi
LOCAL_SRC_FILES := \
$(call all-subdir-java-files) \