Merge "Fix monkey bug 2512055"
diff --git a/api/current.xml b/api/current.xml
index 701586e..e6f3788 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -87668,6 +87668,17 @@
visibility="public"
>
</field>
+<field name="TYPE_WIMAX"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="6"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
</class>
<class name="Credentials"
extends="java.lang.Object"
@@ -143010,6 +143021,17 @@
visibility="public"
>
</field>
+<field name="NETWORK_TYPE_IDEN"
+ type="int"
+ transient="false"
+ volatile="false"
+ value="11"
+ static="true"
+ final="true"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</field>
<field name="NETWORK_TYPE_UMTS"
type="int"
transient="false"
diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java
index a6668e7..280ded6 100644
--- a/core/java/android/net/ConnectivityManager.java
+++ b/core/java/android/net/ConnectivityManager.java
@@ -184,9 +184,15 @@
* will route over this interface if a default route exists.
*/
public static final int TYPE_MOBILE_HIPRI = 5;
- /** {@hide} */
+ /**
+ * The Default WiMAX data connection. When active, all data traffic
+ * will use this connection by default. Should not coexist with other
+ * default connections.
+ */
+ public static final int TYPE_WIMAX = 6;
+ /** {@hide} TODO: Need to adjust this for WiMAX. */
public static final int MAX_RADIO_TYPE = TYPE_WIFI;
- /** {@hide} */
+ /** {@hide} TODO: Need to adjust this for WiMAX. */
public static final int MAX_NETWORK_TYPE = TYPE_MOBILE_HIPRI;
public static final int DEFAULT_NETWORK_PREFERENCE = TYPE_WIFI;
diff --git a/core/java/android/pim/vcard/VCardEntryCommitter.java b/core/java/android/pim/vcard/VCardEntryCommitter.java
index 2f99e4a..59a2baf 100644
--- a/core/java/android/pim/vcard/VCardEntryCommitter.java
+++ b/core/java/android/pim/vcard/VCardEntryCommitter.java
@@ -58,12 +58,6 @@
mTimeToCommit += System.currentTimeMillis() - start;
}
- // TODO: Compatibility function to not break the build. Will be removed shortly
- @Deprecated
- public Uri getLastCreatedUri() {
- return mCreatedUris.size() == 0 ? null : mCreatedUris.get(mCreatedUris.size() - 1);
- }
-
/**
* Returns the list of created Uris. This list should not be modified by the caller as it is
* not a clone.
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java
index a07397f..ec7424ba 100644
--- a/core/java/android/widget/AbsListView.java
+++ b/core/java/android/widget/AbsListView.java
@@ -1988,7 +1988,6 @@
}
}
}
- mLastTouchMode = isInTouchMode ? TOUCH_MODE_ON : TOUCH_MODE_OFF;
}
@Override
diff --git a/core/java/android/widget/AutoCompleteTextView.java b/core/java/android/widget/AutoCompleteTextView.java
index 65f7cdb..1156e15 100644
--- a/core/java/android/widget/AutoCompleteTextView.java
+++ b/core/java/android/widget/AutoCompleteTextView.java
@@ -17,11 +17,9 @@
package android.widget;
import android.content.Context;
-import android.content.res.Configuration;
import android.content.res.TypedArray;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
-import android.graphics.drawable.GradientDrawable.Orientation;
import android.text.Editable;
import android.text.Selection;
import android.text.TextUtils;
@@ -611,8 +609,7 @@
&& !mDropDownAlwaysVisible) {
// special case for the back key, we do not even try to send it
// to the drop down list but instead, consume it immediately
- if (event.getAction() == KeyEvent.ACTION_DOWN
- && event.getRepeatCount() == 0) {
+ if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
getKeyDispatcherState().startTracking(event, this);
return true;
} else if (event.getAction() == KeyEvent.ACTION_UP) {
@@ -660,10 +657,19 @@
&& keyCode != KeyEvent.KEYCODE_DPAD_CENTER))) {
int curIndex = mDropDownList.getSelectedItemPosition();
boolean consumed;
+
final boolean below = !mPopup.isAboveAnchor();
- if ((below && keyCode == KeyEvent.KEYCODE_DPAD_UP && curIndex <= 0) ||
- (!below && keyCode == KeyEvent.KEYCODE_DPAD_DOWN && curIndex >=
- mDropDownList.getAdapter().getCount() - 1)) {
+
+ final ListAdapter adapter = mDropDownList.getAdapter();
+ final boolean allEnabled = adapter.areAllItemsEnabled();
+
+ final int firstItem = allEnabled ? 0 :
+ mDropDownList.lookForSelectablePosition(0, true);
+ final int lastItem = allEnabled ? adapter.getCount() - 1 :
+ mDropDownList.lookForSelectablePosition(adapter.getCount() - 1, false);
+
+ if ((below && keyCode == KeyEvent.KEYCODE_DPAD_UP && curIndex <= firstItem) ||
+ (!below && keyCode == KeyEvent.KEYCODE_DPAD_DOWN && curIndex >= lastItem)) {
// When the selection is at the top, we block the key
// event to prevent focus from moving.
clearListSelection();
@@ -703,11 +709,11 @@
if (below && keyCode == KeyEvent.KEYCODE_DPAD_DOWN) {
// when the selection is at the bottom, we block the
// event to avoid going to the next focusable widget
- Adapter adapter = mDropDownList.getAdapter();
- if (adapter != null && curIndex == adapter.getCount() - 1) {
+ if (curIndex == lastItem) {
return true;
}
- } else if (!below && keyCode == KeyEvent.KEYCODE_DPAD_UP && curIndex == 0) {
+ } else if (!below && keyCode == KeyEvent.KEYCODE_DPAD_UP &&
+ curIndex == firstItem) {
return true;
}
}
diff --git a/core/java/android/widget/ImageView.java b/core/java/android/widget/ImageView.java
index c81a907..c77416b 100644
--- a/core/java/android/widget/ImageView.java
+++ b/core/java/android/widget/ImageView.java
@@ -769,8 +769,8 @@
} else if (ScaleType.CENTER == mScaleType) {
// Center bitmap in view, no scaling.
mDrawMatrix = mMatrix;
- mDrawMatrix.setTranslate((vwidth - dwidth) * 0.5f,
- (vheight - dheight) * 0.5f);
+ mDrawMatrix.setTranslate((int) ((vwidth - dwidth) * 0.5f + 0.5f),
+ (int) ((vheight - dheight) * 0.5f + 0.5f));
} else if (ScaleType.CENTER_CROP == mScaleType) {
mDrawMatrix = mMatrix;
@@ -786,7 +786,7 @@
}
mDrawMatrix.setScale(scale, scale);
- mDrawMatrix.postTranslate(dx, dy);
+ mDrawMatrix.postTranslate((int) (dx + 0.5f), (int) (dy + 0.5f));
} else if (ScaleType.CENTER_INSIDE == mScaleType) {
mDrawMatrix = mMatrix;
float scale;
@@ -800,8 +800,8 @@
(float) vheight / (float) dheight);
}
- dx = (vwidth - dwidth * scale) * 0.5f;
- dy = (vheight - dheight * scale) * 0.5f;
+ dx = (int) ((vwidth - dwidth * scale) * 0.5f + 0.5f);
+ dy = (int) ((vheight - dheight * scale) * 0.5f + 0.5f);
mDrawMatrix.setScale(scale, scale);
mDrawMatrix.postTranslate(dx, dy);
diff --git a/core/java/com/android/internal/content/SelectionBuilder.java b/core/java/com/android/internal/content/SelectionBuilder.java
index 0e29411..b194756 100644
--- a/core/java/com/android/internal/content/SelectionBuilder.java
+++ b/core/java/com/android/internal/content/SelectionBuilder.java
@@ -47,7 +47,7 @@
* Append the given selection clause to the internal state. Each clause is
* surrounded with parenthesis and combined using {@code AND}.
*/
- public SelectionBuilder append(String selection, String... selectionArgs) {
+ public SelectionBuilder append(String selection, Object... selectionArgs) {
if (TextUtils.isEmpty(selection)) {
if (selectionArgs != null && selectionArgs.length > 0) {
throw new IllegalArgumentException(
@@ -63,8 +63,12 @@
}
mSelection.append("(").append(selection).append(")");
- for (String arg : selectionArgs) {
- mSelectionArgs.add(arg);
+ if (selectionArgs != null) {
+ for (Object arg : selectionArgs) {
+ // TODO: switch to storing direct Object instances once
+ // http://b/2464440 is fixed
+ mSelectionArgs.add(String.valueOf(arg));
+ }
}
return this;
diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java
index efd025a..9b7f487 100644
--- a/core/java/com/android/internal/widget/LockPatternUtils.java
+++ b/core/java/com/android/internal/widget/LockPatternUtils.java
@@ -47,6 +47,7 @@
public class LockPatternUtils {
private static final String TAG = "LockPatternUtils";
+ private static final boolean LDEBUG = false;
private static final String LOCK_PATTERN_FILE = "/system/gesture.key";
private static final String LOCK_PASSWORD_FILE = "/system/password.key";
@@ -126,7 +127,6 @@
public LockPatternUtils(Context context) {
mContext = context;
mContentResolver = context.getContentResolver();
- mDevicePolicyManager = getDevicePolicyManager();
// Initialize the location of gesture lock file
if (sLockPatternFilename == null) {
sLockPatternFilename = android.os.Environment.getDataDirectory()
diff --git a/core/res/res/drawable-hdpi/stat_sys_tether_active.png b/core/res/res/drawable-hdpi/stat_sys_tether_active.png
deleted file mode 100755
index 4c14c07..0000000
--- a/core/res/res/drawable-hdpi/stat_sys_tether_active.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-hdpi/stat_sys_tether_general.png b/core/res/res/drawable-hdpi/stat_sys_tether_general.png
index e43fbae..c42b00c 100644
--- a/core/res/res/drawable-hdpi/stat_sys_tether_general.png
+++ b/core/res/res/drawable-hdpi/stat_sys_tether_general.png
Binary files differ
diff --git a/core/res/res/drawable-mdpi/stat_sys_tether_active.png b/core/res/res/drawable-mdpi/stat_sys_tether_active.png
deleted file mode 100644
index 2d0da4c..0000000
--- a/core/res/res/drawable-mdpi/stat_sys_tether_active.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/stat_sys_tether_general.png b/core/res/res/drawable-mdpi/stat_sys_tether_general.png
index efb64ad..3688803 100644
--- a/core/res/res/drawable-mdpi/stat_sys_tether_general.png
+++ b/core/res/res/drawable-mdpi/stat_sys_tether_general.png
Binary files differ
diff --git a/opengl/java/android/opengl/GLSurfaceView.java b/opengl/java/android/opengl/GLSurfaceView.java
index 882cbc5..3f029a6 100644
--- a/opengl/java/android/opengl/GLSurfaceView.java
+++ b/opengl/java/android/opengl/GLSurfaceView.java
@@ -977,15 +977,22 @@
* @return false if the context has been lost.
*/
public boolean swap() {
- mEgl.eglSwapBuffers(mEglDisplay, mEglSurface);
+ if (! mEgl.eglSwapBuffers(mEglDisplay, mEglSurface)) {
- /*
- * Always check for EGL_CONTEXT_LOST, which means the context
- * and all associated data were lost (For instance because
- * the device went to sleep). We need to sleep until we
- * get a new surface.
- */
- return mEgl.eglGetError() != EGL11.EGL_CONTEXT_LOST;
+ /*
+ * Check for EGL_CONTEXT_LOST, which means the context
+ * and all associated data were lost (For instance because
+ * the device went to sleep). We need to sleep until we
+ * get a new surface.
+ */
+ int error = mEgl.eglGetError();
+ if (error == EGL11.EGL_CONTEXT_LOST) {
+ return false;
+ } else {
+ throwEglException("eglSwapBuffers", error);
+ }
+ }
+ return true;
}
public void destroySurface() {
@@ -1010,7 +1017,11 @@
}
private void throwEglException(String function) {
- throw new RuntimeException(function + " failed: " + mEgl.eglGetError());
+ throwEglException(function, mEgl.eglGetError());
+ }
+
+ private void throwEglException(String function, int error) {
+ throw new RuntimeException(function + " failed: " + error);
}
EGL10 mEgl;
diff --git a/packages/TtsService/src/android/tts/SynthProxy.java b/packages/TtsService/src/android/tts/SynthProxy.java
index cd46c05..cece94e 100755
--- a/packages/TtsService/src/android/tts/SynthProxy.java
+++ b/packages/TtsService/src/android/tts/SynthProxy.java
@@ -36,9 +36,9 @@
// Such a huge filter gain is justified by how much energy in the low frequencies is "wasted" at
// the output of the synthesis. The low shelving filter removes it, leaving room for
// amplification.
- private final static float PICO_FILTER_GAIN = 4.0f; // linear gain
- private final static float PICO_FILTER_LOWSHELF_ATTENUATION = -16.0f; // in dB
- private final static float PICO_FILTER_TRANSITION_FREQ = 1000.0f; // in Hz
+ private final static float PICO_FILTER_GAIN = 5.0f; // linear gain
+ private final static float PICO_FILTER_LOWSHELF_ATTENUATION = -18.0f; // in dB
+ private final static float PICO_FILTER_TRANSITION_FREQ = 1100.0f; // in Hz
private final static float PICO_FILTER_SHELF_SLOPE = 1.0f; // Q
//
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index a6b1d93..ae5b1de 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -389,6 +389,8 @@
public static final int NETWORK_TYPE_HSUPA = 9;
/** Current network is HSPA */
public static final int NETWORK_TYPE_HSPA = 10;
+ /** Current network is iDen */
+ public static final int NETWORK_TYPE_IDEN = 11;
/**
* Returns a constant indicating the radio technology (network type)
diff --git a/tests/BrowserTestPlugin/jni/main.cpp b/tests/BrowserTestPlugin/jni/main.cpp
index 87ddbc4..402a7e2 100644
--- a/tests/BrowserTestPlugin/jni/main.cpp
+++ b/tests/BrowserTestPlugin/jni/main.cpp
@@ -142,7 +142,7 @@
if (browser->version >= 14) {
instance->pdata = browser->createobject (instance, getPluginClass());
obj = static_cast<PluginObject*>(instance->pdata);
- bzero(obj, sizeof(*obj));
+ memset(obj, 0, sizeof(*obj));
} else {
return NPERR_GENERIC_ERROR;
}
diff --git a/tests/framework-tests/src/com/android/internal/policy/impl/LockPatternKeyguardViewTest.java b/tests/framework-tests/src/com/android/internal/policy/impl/LockPatternKeyguardViewTest.java
index fd05fed..1e57bd2 100644
--- a/tests/framework-tests/src/com/android/internal/policy/impl/LockPatternKeyguardViewTest.java
+++ b/tests/framework-tests/src/com/android/internal/policy/impl/LockPatternKeyguardViewTest.java
@@ -18,6 +18,7 @@
import android.content.Context;
import com.android.internal.telephony.IccCard;
+import android.content.res.Configuration;
import android.test.AndroidTestCase;
import android.view.View;
import android.view.KeyEvent;
@@ -39,8 +40,6 @@
private static class MockUpdateMonitor extends KeyguardUpdateMonitor {
public IccCard.State simState = IccCard.State.READY;
- public boolean inPortrait = false;
- public boolean keyboardOpen = false;
private MockUpdateMonitor(Context context) {
super(context);
@@ -50,26 +49,6 @@
public IccCard.State getSimState() {
return simState;
}
-
- @Override
- public boolean isInPortrait() {
- return inPortrait;
- }
-
- @Override
- public boolean isKeyboardOpen() {
- return keyboardOpen;
- }
-
- @Override
- boolean queryInPortrait() {
- return inPortrait;
- }
-
- @Override
- boolean queryKeyboardOpen() {
- return keyboardOpen;
- }
}
private static class MockLockPatternUtils extends LockPatternUtils {
@@ -115,7 +94,7 @@
public boolean needsInput() {
return false;
}
-
+
/** {@inheritDoc} */
public void onPause() {
mOnPauseCount++;
@@ -202,7 +181,7 @@
}
public void keyguardDoneDrawing() {
-
+
}
public int getPokeWakelockCount() {
@@ -293,7 +272,7 @@
// should have poked the wakelock to turn on the screen
assertEquals(1, mKeyguardViewCallback.getPokeWakelockCount());
-
+
// shouldn't be any additional views created
assertEquals(1, mLPKV.getInjectedLockScreens().size());
assertEquals(1, mLPKV.getInjectedUnlockScreens().size());
@@ -317,7 +296,7 @@
assertEquals(1, lockScreen.getOnResumeCount());
// simulate screen asking to be recreated
- mLPKV.mKeyguardScreenCallback.recreateMe();
+ mLPKV.mKeyguardScreenCallback.recreateMe(new Configuration());
// should have been recreated
assertEquals(2, mLPKV.getInjectedLockScreens().size());