Merge "Explode WindowManagerService."
diff --git a/api/current.xml b/api/current.xml
index 553676c..4e45471 100644
--- a/api/current.xml
+++ b/api/current.xml
@@ -119000,6 +119000,17 @@
  visibility="public"
 >
 </method>
+<method name="getAuthUserName"
+ return="java.lang.String"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+</method>
 <method name="getAutoRegistration"
  return="boolean"
  abstract="false"
@@ -119202,6 +119213,19 @@
  visibility="public"
 >
 </method>
+<method name="setAuthUserName"
+ return="android.net.sip.SipProfile.Builder"
+ abstract="false"
+ native="false"
+ synchronized="false"
+ static="false"
+ final="false"
+ deprecated="not deprecated"
+ visibility="public"
+>
+<parameter name="name" type="java.lang.String">
+</parameter>
+</method>
 <method name="setAutoRegistration"
  return="android.net.sip.SipProfile.Builder"
  abstract="false"
diff --git a/core/java/android/webkit/ZoomManager.java b/core/java/android/webkit/ZoomManager.java
index 9d472e0..d7a6a53 100644
--- a/core/java/android/webkit/ZoomManager.java
+++ b/core/java/android/webkit/ZoomManager.java
@@ -361,6 +361,7 @@
 
     // returns TRUE if zoom out succeeds and FALSE if no zoom changes.
     private boolean zoom(float zoomMultiplier) {
+        mInitialZoomOverview = false;
         // TODO: alternatively we can disallow this during draw history mode
         mWebView.switchOutDrawHistory();
         // Center zooming to the center of the screen.
@@ -378,6 +379,7 @@
      * @return true if the new scale triggered an animation and false otherwise.
      */
     public boolean startZoomAnimation(float scale, boolean reflowText) {
+        mInitialZoomOverview = false;
         float oldScale = mActualScale;
         mInitialScrollX = mWebView.getScrollX();
         mInitialScrollY = mWebView.getScrollY();
@@ -421,6 +423,7 @@
      * in progress by calling isFixedLengthAnimationInProgress().
      */
     public void animateZoom(Canvas canvas) {
+        mInitialZoomOverview = false;
         if (mZoomScale == 0) {
             Log.w(LOGTAG, "A WebView is attempting to perform a fixed length "
                     + "zoom animation when no zoom is in progress");
@@ -568,6 +571,8 @@
      *   C. If the page is in overmode then change to the default scale.
      */
     public void handleDoubleTap(float lastTouchX, float lastTouchY) {
+        // User takes action, set initial zoom overview to false.
+        mInitialZoomOverview = false;
         WebSettings settings = mWebView.getSettings();
         if (!isDoubleTapEnabled()) {
             return;
@@ -706,6 +711,7 @@
     private class ScaleDetectorListener implements ScaleGestureDetector.OnScaleGestureListener {
 
         public boolean onScaleBegin(ScaleGestureDetector detector) {
+            mInitialZoomOverview = false;
             dismissZoomPicker();
             mWebView.mViewManager.startZoom();
             mWebView.onPinchToZoomAnimationStart();
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 993af31..d90d5be 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -4403,12 +4403,8 @@
                                     (mCurrentAlpha * Color.alpha(cursorcolor)) / 255);
                         }
                         mHighlightPaint.setStyle(Paint.Style.STROKE);
-
-                        if (mCursorCount > 0) {
-                            drawCursor = true;
-                        } else {
-                            highlight = mHighlightPath;
-                        }
+                        highlight = mHighlightPath;
+                        drawCursor = true;
                     }
                 } else {
                     if (mHighlightPathBogus) {
@@ -4491,7 +4487,12 @@
             mCorrectionHighlighter.draw(canvas, cursorOffsetVertical);
         }
 
-        if (drawCursor) drawCursor(canvas, cursorOffsetVertical);
+        if (drawCursor) {
+            drawCursor(canvas, cursorOffsetVertical);
+            // Rely on the drawable entirely, do not draw the cursor line.
+            // Has to be done after the IMM related code above which relies on the highlight.
+            highlight = null;
+        }
 
         layout.draw(canvas, highlight, mHighlightPaint, cursorOffsetVertical);
 
diff --git a/core/tests/coretests/src/android/database/sqlite/SQLiteCursorTest.java b/core/tests/coretests/src/android/database/sqlite/SQLiteCursorTest.java
index 963c8ed..f6b1d04 100644
--- a/core/tests/coretests/src/android/database/sqlite/SQLiteCursorTest.java
+++ b/core/tests/coretests/src/android/database/sqlite/SQLiteCursorTest.java
@@ -22,7 +22,6 @@
 import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.LargeTest;
 import android.test.suitebuilder.annotation.SmallTest;
-import android.test.suitebuilder.annotation.Suppress;
 import android.util.Log;
 
 import java.io.File;
@@ -55,7 +54,6 @@
         super.tearDown();
     }
 
-    @Suppress
     @SmallTest
     public void testQueryObjReassignment() {
         mDatabase.enableWriteAheadLogging();
diff --git a/core/tests/coretests/src/android/database/sqlite/SQLiteDatabaseTest.java b/core/tests/coretests/src/android/database/sqlite/SQLiteDatabaseTest.java
index 4516510..39258ae 100644
--- a/core/tests/coretests/src/android/database/sqlite/SQLiteDatabaseTest.java
+++ b/core/tests/coretests/src/android/database/sqlite/SQLiteDatabaseTest.java
@@ -74,7 +74,6 @@
         mDatabase.setVersion(CURRENT_DATABASE_VERSION);
     }
 
-    @Suppress
     @SmallTest
     public void testEnableWriteAheadLogging() {
         mDatabase.disableWriteAheadLogging();
@@ -87,7 +86,6 @@
         assertEquals(pool, mDatabase.mConnectionPool);
     }
 
-    @Suppress
     @SmallTest
     public void testDisableWriteAheadLogging() {
         mDatabase.execSQL("create table test (i int);");
@@ -104,7 +102,6 @@
         assertFalse(db.isOpen());
     }
 
-    @Suppress
     @SmallTest
     public void testCursorsWithClosedDbConnAfterDisableWriteAheadLogging() {
         mDatabase.disableWriteAheadLogging();
@@ -141,7 +138,6 @@
     /**
      * a transaction should be started before a standalone-update/insert/delete statement
      */
-    @Suppress
     @SmallTest
     public void testStartXactBeforeUpdateSql() throws InterruptedException {
         runTestForStartXactBeforeUpdateSql(INSERT);
@@ -753,7 +749,6 @@
      *
      * @throws InterruptedException
      */
-    @Suppress
     @SmallTest
     public void testTransactionAndWalInterplay1() throws InterruptedException {
         createTableAndClearCache();
@@ -812,7 +807,6 @@
      * instead of mDatabase.beginTransactionNonExclusive(), use execSQL("BEGIN transaction")
      * and instead of mDatabase.endTransaction(), use execSQL("END");
      */
-    @Suppress
     @SmallTest
     public void testTransactionAndWalInterplay2() throws InterruptedException {
         createTableAndClearCache();
@@ -869,7 +863,6 @@
      * instead of committing the data, do rollback and make sure the data seen by the query
      * within the transaction is now gone.
      */
-    @Suppress
     @SmallTest
     public void testTransactionAndWalInterplay3() {
         createTableAndClearCache();
diff --git a/voip/java/android/net/sip/SipProfile.java b/voip/java/android/net/sip/SipProfile.java
index c7e18df..34d91dd 100644
--- a/voip/java/android/net/sip/SipProfile.java
+++ b/voip/java/android/net/sip/SipProfile.java
@@ -150,9 +150,8 @@
         /**
          * Sets the username used for authentication.
          *
-         * @param name auth. name of the profile
+         * @param name authentication username of the profile
          * @return this builder object
-         * @hide // TODO: remove when we make it public
          */
         public Builder setAuthUserName(String name) {
             mProfile.mAuthUserName = name;
@@ -391,10 +390,10 @@
 
     /**
      * Gets the username for authentication. If it is null, then the username
-     * should be used in authentication instead.
+     * is used in authentication instead.
      *
-     * @return the auth. username
-     * @hide // TODO: remove when we make it public
+     * @return the authentication username
+     * @see #getUserName
      */
     public String getAuthUserName() {
         return mAuthUserName;